@@ -689,6 +689,7 @@ public void monitorCharacteristicForDevice(String deviceIdentifier,
689
689
String serviceUUID ,
690
690
String characteristicUUID ,
691
691
String transactionId ,
692
+ String subscriptionType ,
692
693
OnEventCallback <Characteristic > onEventCallback ,
693
694
OnErrorCallback onErrorCallback ) {
694
695
final Characteristic characteristic = getCharacteristicOrEmitError (
@@ -697,13 +698,14 @@ public void monitorCharacteristicForDevice(String deviceIdentifier,
697
698
return ;
698
699
}
699
700
700
- safeMonitorCharacteristicForDevice (characteristic , transactionId , onEventCallback , onErrorCallback );
701
+ safeMonitorCharacteristicForDevice (characteristic , transactionId , subscriptionType , onEventCallback , onErrorCallback );
701
702
}
702
703
703
704
@ Override
704
705
public void monitorCharacteristicForService (int serviceIdentifier ,
705
706
String characteristicUUID ,
706
707
String transactionId ,
708
+ String subscriptionType ,
707
709
OnEventCallback <Characteristic > onEventCallback ,
708
710
OnErrorCallback onErrorCallback ) {
709
711
final Characteristic characteristic = getCharacteristicOrEmitError (
@@ -712,19 +714,19 @@ public void monitorCharacteristicForService(int serviceIdentifier,
712
714
return ;
713
715
}
714
716
715
- safeMonitorCharacteristicForDevice (characteristic , transactionId , onEventCallback , onErrorCallback );
717
+ safeMonitorCharacteristicForDevice (characteristic , transactionId , subscriptionType , onEventCallback , onErrorCallback );
716
718
}
717
719
718
720
@ Override
719
- public void monitorCharacteristic (int characteristicIdentifier , String transactionId ,
721
+ public void monitorCharacteristic (int characteristicIdentifier , String transactionId , String subscriptionType ,
720
722
OnEventCallback <Characteristic > onEventCallback ,
721
723
OnErrorCallback onErrorCallback ) {
722
724
final Characteristic characteristic = getCharacteristicOrEmitError (characteristicIdentifier , onErrorCallback );
723
725
if (characteristic == null ) {
724
726
return ;
725
727
}
726
728
727
- safeMonitorCharacteristicForDevice (characteristic , transactionId , onEventCallback , onErrorCallback );
729
+ safeMonitorCharacteristicForDevice (characteristic , transactionId , subscriptionType , onEventCallback , onErrorCallback );
728
730
}
729
731
730
732
@ Override
@@ -1439,6 +1441,7 @@ private void safeWriteCharacteristicForDevice(final Characteristic characteristi
1439
1441
1440
1442
private void safeMonitorCharacteristicForDevice (final Characteristic characteristic ,
1441
1443
final String transactionId ,
1444
+ final String subscriptionType ,
1442
1445
final OnEventCallback <Characteristic > onEventCallback ,
1443
1446
final OnErrorCallback onErrorCallback ) {
1444
1447
final RxBleConnection connection = getConnectionOrEmitError (characteristic .getDeviceId (), onErrorCallback );
@@ -1453,12 +1456,15 @@ private void safeMonitorCharacteristicForDevice(final Characteristic characteris
1453
1456
NotificationSetupMode setupMode = cccDescriptor != null
1454
1457
? NotificationSetupMode .QUICK_SETUP
1455
1458
: NotificationSetupMode .COMPAT ;
1456
- if (characteristic .isNotifiable ()) {
1457
- return connection .setupNotification (characteristic .gattCharacteristic , setupMode );
1458
- }
1459
-
1460
- if (characteristic .isIndicatable ()) {
1461
- return connection .setupIndication (characteristic .gattCharacteristic , setupMode );
1459
+
1460
+ if ("notification" .equals (subscriptionType ) && characteristic .isNotifiable ()) {
1461
+ return connection .setupNotification (characteristic .gattCharacteristic , setupMode );
1462
+ } else if ("indication" .equals (subscriptionType ) && characteristic .isIndicatable ()) {
1463
+ return connection .setupIndication (characteristic .gattCharacteristic , setupMode );
1464
+ } else if (characteristic .isNotifiable ()) {
1465
+ return connection .setupNotification (characteristic .gattCharacteristic , setupMode );
1466
+ } else if (characteristic .isIndicatable ()) {
1467
+ return connection .setupIndication (characteristic .gattCharacteristic , setupMode );
1462
1468
}
1463
1469
1464
1470
return Observable .error (new CannotMonitorCharacteristicException (characteristic ));
0 commit comments