Skip to content

Commit 981f8d4

Browse files
committed
Android Wear support added to UART profile
1 parent a0837c8 commit 981f8d4

File tree

111 files changed

+4757
-147
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+4757
-147
lines changed

.idea/gradle.xml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/app.iml

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,12 @@
7171
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
7272
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
7373
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
74-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/jars" />
75-
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/23.0.0/jars" />
74+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/jars" />
75+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/23.0.1/jars" />
76+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-base/7.8.0/jars" />
77+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-wearable/7.8.0/jars" />
7678
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/no.nordicsemi.android.support.v18/scanner/0.1.1/jars" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/no.nordicsemi.android/log/2.0.0/jars" />
7780
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
7881
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
7982
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
@@ -92,15 +95,18 @@
9295
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
9396
<orderEntry type="sourceFolder" forTests="false" />
9497
<orderEntry type="library" exported="" name="gson-2.3.1" level="project" />
95-
<orderEntry type="library" exported="" name="design-23.0.0" level="project" />
96-
<orderEntry type="library" exported="" name="nrf-logger-v2.0" level="project" />
98+
<orderEntry type="library" exported="" name="design-23.0.1" level="project" />
99+
<orderEntry type="library" exported="" name="appcompat-v7-23.0.1" level="project" />
97100
<orderEntry type="library" exported="" name="stax-1.2.0" level="project" />
101+
<orderEntry type="library" exported="" name="play-services-wearable-7.8.0" level="project" />
98102
<orderEntry type="library" exported="" name="scanner-0.1.1" level="project" />
99103
<orderEntry type="library" exported="" name="achartengine-1.1.0" level="project" />
100104
<orderEntry type="library" exported="" name="simple-xml-2.7.1" level="project" />
101-
<orderEntry type="library" exported="" name="appcompat-v7-23.0.0" level="project" />
102-
<orderEntry type="library" exported="" name="support-v4-23.0.0" level="project" />
103-
<orderEntry type="library" exported="" name="support-annotations-23.0.0" level="project" />
105+
<orderEntry type="library" exported="" name="log-2.0.0" level="project" />
106+
<orderEntry type="library" exported="" name="play-services-base-7.8.0" level="project" />
107+
<orderEntry type="library" exported="" name="support-v4-23.0.1" level="project" />
108+
<orderEntry type="library" exported="" name="support-annotations-23.0.1" level="project" />
109+
<orderEntry type="module" module-name="common" exported="" />
104110
<orderEntry type="module" module-name="dfu" exported="" />
105111
</component>
106112
</module>

app/build.gradle

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ apply plugin: 'com.android.application'
22

33
android {
44
compileSdkVersion 23
5-
buildToolsVersion '23.0.0'
5+
buildToolsVersion '23.0.1'
6+
67
defaultConfig {
78
applicationId "no.nordicsemi.android.nrftoolbox"
89
minSdkVersion 18
910
targetSdkVersion 23
10-
versionCode 37
11-
versionName "1.15.0"
11+
versionCode 39
12+
versionName "1.16.0"
1213
}
1314
buildTypes {
1415
release {
@@ -20,14 +21,17 @@ android {
2021

2122
dependencies {
2223
compile fileTree(dir: 'libs', include: ['*.jar'])
23-
compile 'com.android.support:appcompat-v7:23.0.0'
24-
compile 'com.android.support:design:23.0.0'
24+
compile 'com.google.android.gms:play-services-wearable:7.8.0'
25+
compile 'com.android.support:appcompat-v7:23.0.1'
26+
compile 'com.android.support:design:23.0.1'
2527
compile 'no.nordicsemi.android.support.v18:scanner:0.1.1'
28+
compile 'no.nordicsemi.android:log:2.0.0'
2629
compile('org.simpleframework:simple-xml:2.7.1') {
2730
exclude group: 'stax', module: 'stax-api'
2831
exclude group: 'xpp3', module: 'xpp3'
2932
}
30-
compile project(':dfu')
3133
compile files('libs/achartengine-1.1.0.jar')
32-
compile files('libs/nrf-logger-v2.0.jar')
34+
compile project(':dfu')
35+
compile project(':common')
36+
wearApp project(':wear')
3337
}

app/libs/nrf-logger-v2.0.jar

-28.4 KB
Binary file not shown.
-20 KB
Binary file not shown.

app/src/main/AndroidManifest.xml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,14 @@
3737
<application
3838
android:fullBackupContent="true"
3939
android:allowBackup="true"
40-
android:icon="@drawable/ic_launcher"
40+
android:icon="@mipmap/ic_launcher"
4141
android:label="@string/app_name"
4242
android:theme="@style/AppTheme" >
43+
44+
<meta-data
45+
android:name="com.google.android.gms.version"
46+
android:value="@integer/google_play_services_version" />
47+
4348
<activity
4449
android:name="no.nordicsemi.android.nrftoolbox.SplashscreenActivity"
4550
android:label="@string/app_name"
@@ -226,6 +231,11 @@
226231
<service
227232
android:name="no.nordicsemi.android.nrftoolbox.uart.UARTService"
228233
android:label="@string/uart_feature_title" />
234+
<service android:name=".wearable.MainWearableListenerService">
235+
<intent-filter>
236+
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
237+
</intent-filter>
238+
</service>
229239

230240
<provider android:name="no.nordicsemi.android.nrftoolbox.uart.UARTLocalLogContentProvider"
231241
android:authorities="no.nordicsemi.android.nrftoolbox.uart.log"

app/src/main/java/no/nordicsemi/android/nrftoolbox/bpm/BPMManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
import java.util.UUID;
3333

3434
import no.nordicsemi.android.log.Logger;
35+
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
3536
import no.nordicsemi.android.nrftoolbox.parser.BloodPressureMeasurementParser;
3637
import no.nordicsemi.android.nrftoolbox.parser.IntermediateCuffPressureParser;
37-
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
3838

3939
public class BPMManager extends BleManager<BPMManagerCallbacks> {
4040
/** Blood Pressure service UUID */

app/src/main/java/no/nordicsemi/android/nrftoolbox/csc/CSCActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
import java.util.UUID;
3737

3838
import no.nordicsemi.android.nrftoolbox.R;
39+
import no.nordicsemi.android.nrftoolbox.profile.BleProfileService;
3940
import no.nordicsemi.android.nrftoolbox.csc.settings.SettingsActivity;
4041
import no.nordicsemi.android.nrftoolbox.csc.settings.SettingsFragment;
41-
import no.nordicsemi.android.nrftoolbox.profile.BleProfileService;
4242
import no.nordicsemi.android.nrftoolbox.profile.BleProfileServiceReadyActivity;
4343

4444
public class CSCActivity extends BleProfileServiceReadyActivity<CSCService.CSCBinder> {

app/src/main/java/no/nordicsemi/android/nrftoolbox/csc/CSCManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
import java.util.UUID;
3333

3434
import no.nordicsemi.android.log.Logger;
35-
import no.nordicsemi.android.nrftoolbox.parser.CSCMeasurementParser;
3635
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
36+
import no.nordicsemi.android.nrftoolbox.parser.CSCMeasurementParser;
3737

3838
public class CSCManager extends BleManager<CSCManagerCallbacks> {
3939
/** Cycling Speed and Cadence service UUID */

app/src/main/java/no/nordicsemi/android/nrftoolbox/csc/CSCService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@
3737
import no.nordicsemi.android.log.Logger;
3838
import no.nordicsemi.android.nrftoolbox.FeaturesActivity;
3939
import no.nordicsemi.android.nrftoolbox.R;
40-
import no.nordicsemi.android.nrftoolbox.csc.settings.SettingsFragment;
4140
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
4241
import no.nordicsemi.android.nrftoolbox.profile.BleProfileService;
42+
import no.nordicsemi.android.nrftoolbox.csc.settings.SettingsFragment;
4343

4444
public class CSCService extends BleProfileService implements CSCManagerCallbacks {
4545
private static final String TAG = "CSCService";

app/src/main/java/no/nordicsemi/android/nrftoolbox/dfu/settings/SettingsFragment.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,16 @@ public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences,
6969
final boolean disabled = !preferences.getBoolean(SETTINGS_PACKET_RECEIPT_NOTIFICATION_ENABLED, true);
7070
if (disabled) {
7171
new AlertDialog.Builder(getActivity()).setMessage(R.string.dfu_settings_dfu_number_of_packets_info).setTitle(R.string.dfu_settings_dfu_information)
72-
.setNeutralButton(R.string.ok, null).show();
72+
.setPositiveButton(R.string.ok, null).show();
7373
}
7474
} else if (SETTINGS_NUMBER_OF_PACKETS.equals(key)) {
7575
updateNumberOfPacketsSummary();
7676
} else if (SETTINGS_MBR_SIZE.equals(key)) {
7777
updateMBRSize();
78+
} else if (SETTINGS_ASSUME_DFU_NODE.equals(key) && sharedPreferences.getBoolean(key, false)) {
79+
new AlertDialog.Builder(getActivity()).setMessage(R.string.dfu_settings_dfu_assume_dfu_mode_info).setTitle(R.string.dfu_settings_dfu_information)
80+
.setPositiveButton(R.string.ok, null)
81+
.show();
7882
}
7983
}
8084

@@ -93,7 +97,7 @@ private void updateNumberOfPacketsSummary() {
9397
final int valueInt = Integer.parseInt(value);
9498
if (valueInt > 200) {
9599
new AlertDialog.Builder(getActivity()).setMessage(R.string.dfu_settings_dfu_number_of_packets_info).setTitle(R.string.dfu_settings_dfu_information)
96-
.setNeutralButton(R.string.ok, null)
100+
.setPositiveButton(R.string.ok, null)
97101
.show();
98102
}
99103
}

app/src/main/java/no/nordicsemi/android/nrftoolbox/gls/GlucoseManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@
3434
import java.util.UUID;
3535

3636
import no.nordicsemi.android.log.Logger;
37+
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
3738
import no.nordicsemi.android.nrftoolbox.parser.GlucoseMeasurementContextParser;
3839
import no.nordicsemi.android.nrftoolbox.parser.GlucoseMeasurementParser;
3940
import no.nordicsemi.android.nrftoolbox.parser.RecordAccessControlPointParser;
40-
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
4141
import no.nordicsemi.android.nrftoolbox.utility.DebugLogger;
4242

4343
@SuppressWarnings("unused")

app/src/main/java/no/nordicsemi/android/nrftoolbox/hrs/HRSManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232

3333
import no.nordicsemi.android.log.Logger;
3434
import no.nordicsemi.android.nrftoolbox.R;
35+
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
3536
import no.nordicsemi.android.nrftoolbox.parser.BodySensorLocationParser;
3637
import no.nordicsemi.android.nrftoolbox.parser.HeartRateMeasurementParser;
37-
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
3838

3939
/**
4040
* HRSManager class performs BluetoothGatt operations for connection, service discovery, enabling notification and reading characteristics. All operations required to connect to device with BLE HR

app/src/main/java/no/nordicsemi/android/nrftoolbox/hts/HTSActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
import java.util.UUID;
3737

3838
import no.nordicsemi.android.nrftoolbox.R;
39+
import no.nordicsemi.android.nrftoolbox.profile.BleProfileService;
3940
import no.nordicsemi.android.nrftoolbox.hts.settings.SettingsActivity;
4041
import no.nordicsemi.android.nrftoolbox.hts.settings.SettingsFragment;
41-
import no.nordicsemi.android.nrftoolbox.profile.BleProfileService;
4242
import no.nordicsemi.android.nrftoolbox.profile.BleProfileServiceReadyActivity;
4343

4444
/**

app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@
3737
import java.util.Queue;
3838
import java.util.UUID;
3939

40-
import no.nordicsemi.android.error.GattError;
4140
import no.nordicsemi.android.log.ILogSession;
4241
import no.nordicsemi.android.log.Logger;
42+
import no.nordicsemi.android.nrftoolbox.error.GattError;
4343
import no.nordicsemi.android.nrftoolbox.utility.DebugLogger;
4444
import no.nordicsemi.android.nrftoolbox.utility.ParserUtils;
4545

@@ -52,7 +52,7 @@
5252
* leaving this to the developers.</li>
5353
* <li>The manager tries to read the Battery Level characteristic. No matter the result of this operation (for example the Battery Level characteristic may not have the READ property)
5454
* it tries to enable Battery Level notifications, to get battery updates from the device.</li>
55-
* <li>Afterwards, the manager initializes the device using given queue of commands. See {@link BleManagerGattCallback#initGatt(android.bluetooth.BluetoothGatt)} method for more details.</li>
55+
* <li>Afterwards, the manager initializes the device using given queue of commands. See {@link BleManagerGattCallback#initGatt(BluetoothGatt)} method for more details.</li>
5656
* <li>When initialization complete, the {@link BleManagerCallbacks#onDeviceReady()} callback is called.</li>
5757
* </ol>The manager also is responsible for parsing the Battery Level values and calling {@link BleManagerCallbacks#onBatteryValueReceived(int)} method.</p>
5858
* <p>Events from all profiles are being logged into the nRF Logger application,
@@ -830,7 +830,7 @@ private void nextRequest() {
830830
final Queue<Request> requests = mInitQueue;
831831

832832
// Get the first request from the queue
833-
final Request request = requests.poll();
833+
final Request request = requests != null ? requests.poll() : null;
834834

835835
// Are we done?
836836
if (request == null) {

app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleManagerCallbacks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public interface BleManagerCallbacks {
3838
public void onDeviceDisconnecting();
3939

4040
/**
41-
* Called when the device has disconnected (when the callback returned {@link BluetoothGattCallback#onConnectionStateChange(android.bluetooth.BluetoothGatt, int, int)} with state DISCONNECTED.
41+
* Called when the device has disconnected (when the callback returned {@link BluetoothGattCallback#onConnectionStateChange(BluetoothGatt, int, int)} with state DISCONNECTED.
4242
*/
4343
public void onDeviceDisconnected();
4444

app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileService.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535

3636
import no.nordicsemi.android.log.ILogSession;
3737
import no.nordicsemi.android.log.Logger;
38-
import no.nordicsemi.android.nrftoolbox.R;
3938

4039
public abstract class BleProfileService extends Service implements BleManagerCallbacks {
4140
@SuppressWarnings("unused")
@@ -132,7 +131,7 @@ public boolean isConnected() {
132131
*
133132
* @return the log session
134133
*/
135-
protected ILogSession getLogSession() {
134+
public ILogSession getLogSession() {
136135
return mLogSession;
137136
}
138137
}
@@ -278,6 +277,15 @@ public void onDeviceDisconnecting() {
278277
LocalBroadcastManager.getInstance(this).sendBroadcast(broadcast);
279278
}
280279

280+
/**
281+
* This method should return false if the service needs to do some asynchronous work after if has disconnected from the device.
282+
* In that case the {@link #stopService()} method must be called when done.
283+
* @return true (default) to automatically stop the service when device is disconnected. False otherwise.
284+
*/
285+
protected boolean stopWhenDisconnected() {
286+
return true;
287+
}
288+
281289
@Override
282290
public void onDeviceDisconnected() {
283291
mConnected = false;
@@ -288,6 +296,11 @@ public void onDeviceDisconnected() {
288296
broadcast.putExtra(EXTRA_CONNECTION_STATE, STATE_DISCONNECTED);
289297
LocalBroadcastManager.getInstance(this).sendBroadcast(broadcast);
290298

299+
if (stopWhenDisconnected())
300+
stopService();
301+
}
302+
303+
protected void stopService() {
291304
// user requested disconnection. We must stop the service
292305
Logger.v(mLogSession, "Stopping service...");
293306
stopSelf();
@@ -335,7 +348,7 @@ public void onBatteryValueReceived(final int value) {
335348

336349
@Override
337350
public void onBondingRequired() {
338-
showToast(R.string.bonding);
351+
showToast(no.nordicsemi.android.nrftoolbox.common.R.string.bonding);
339352

340353
final Intent broadcast = new Intent(BROADCAST_BOND_STATE);
341354
broadcast.putExtra(EXTRA_BOND_STATE, BluetoothDevice.BOND_BONDING);
@@ -344,7 +357,7 @@ public void onBondingRequired() {
344357

345358
@Override
346359
public void onBonded() {
347-
showToast(R.string.bonded);
360+
showToast(no.nordicsemi.android.nrftoolbox.common.R.string.bonded);
348361

349362
final Intent broadcast = new Intent(BROADCAST_BOND_STATE);
350363
broadcast.putExtra(EXTRA_BOND_STATE, BluetoothDevice.BOND_BONDED);

app/src/main/java/no/nordicsemi/android/nrftoolbox/proximity/ProximityManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
import java.util.UUID;
4141

4242
import no.nordicsemi.android.log.Logger;
43-
import no.nordicsemi.android.nrftoolbox.parser.AlertLevelParser;
4443
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
44+
import no.nordicsemi.android.nrftoolbox.parser.AlertLevelParser;
4545
import no.nordicsemi.android.nrftoolbox.utility.DebugLogger;
4646
import no.nordicsemi.android.nrftoolbox.utility.ParserUtils;
4747

app/src/main/java/no/nordicsemi/android/nrftoolbox/proximity/ProximityService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import android.media.Ringtone;
3333
import android.media.RingtoneManager;
3434
import android.net.Uri;
35+
import android.support.v4.app.NotificationManagerCompat;
3536
import android.support.v7.app.NotificationCompat;
3637

3738
import no.nordicsemi.android.log.Logger;
@@ -232,13 +233,13 @@ private void createNotification(final int messageResId, final int defaults) {
232233
builder.setContentIntent(pendingIntent);
233234
builder.setContentTitle(getString(R.string.app_name)).setContentText(getString(messageResId, getDeviceName()));
234235
builder.setSmallIcon(R.drawable.ic_stat_notify_proximity);
235-
builder.setShowWhen(defaults != 0).setDefaults(defaults).setAutoCancel(true).setOngoing(true);
236+
builder.setShowWhen(defaults != 0).setDefaults(defaults).setAutoCancel(true).setOngoing(defaults == 0); // an ongoing notification would not be shown on Android Wear
236237
builder.addAction(new NotificationCompat.Action(R.drawable.ic_action_bluetooth, getString(R.string.proximity_notification_action_disconnect), disconnectAction));
237238
if (isConnected())
238239
builder.addAction(new NotificationCompat.Action(R.drawable.ic_stat_notify_proximity, getString(isImmediateAlertOn ? R.string.proximity_action_silentme : R.string.proximity_action_findme), secondAction));
239240

240241
final Notification notification = builder.build();
241-
final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
242+
final NotificationManagerCompat nm = NotificationManagerCompat.from(this);
242243
nm.notify(NOTIFICATION_ID, notification);
243244
}
244245

app/src/main/java/no/nordicsemi/android/nrftoolbox/rsc/RSCManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
import java.util.UUID;
3333

3434
import no.nordicsemi.android.log.Logger;
35-
import no.nordicsemi.android.nrftoolbox.parser.RSCMeasurementParser;
3635
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
36+
import no.nordicsemi.android.nrftoolbox.parser.RSCMeasurementParser;
3737

3838
public class RSCManager extends BleManager<RSCManagerCallbacks> {
3939
private static final byte INSTANTANEOUS_STRIDE_LENGTH_PRESENT = 0x01; // 1 bit

app/src/main/java/no/nordicsemi/android/nrftoolbox/template/TemplateManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
import java.util.UUID;
3232

3333
import no.nordicsemi.android.log.Logger;
34-
import no.nordicsemi.android.nrftoolbox.parser.TemplateParser;
3534
import no.nordicsemi.android.nrftoolbox.profile.BleManager;
35+
import no.nordicsemi.android.nrftoolbox.parser.TemplateParser;
3636

3737
/**
3838
* Modify to template manager to match your requirements.

0 commit comments

Comments
 (0)