@@ -61,6 +61,9 @@ export default class RaftChannelPhoneBLE implements RaftChannel {
61
61
private _requestedBatchAckSize = 10 ;
62
62
private _requestedFileBlockSize = 500 ;
63
63
64
+ // Connected device UUID
65
+ private _connectedDeviceServiceUUID ?: string ;
66
+
64
67
constructor ( ) {
65
68
RaftLog . debug ( 'BLEChannel constructor' ) ;
66
69
@@ -79,6 +82,10 @@ export default class RaftChannelPhoneBLE implements RaftChannel {
79
82
} , true ) ;
80
83
}
81
84
85
+ setConnectedDeviceUUID ( serviceUUID : string ) {
86
+ this . _connectedDeviceServiceUUID = serviceUUID ;
87
+ }
88
+
82
89
getBleManager ( ) : BleManager {
83
90
return _bleManager ;
84
91
}
@@ -204,7 +211,9 @@ export default class RaftChannelPhoneBLE implements RaftChannel {
204
211
*
205
212
*/
206
213
async connect ( discoveredDevice : DiscoveredDevice ) : Promise < boolean > {
207
- RaftLog . debug ( 'BLEChannel requested connection' ) ;
214
+ RaftLog . debug ( 'BLEChannel requested connection ' + JSON . stringify ( discoveredDevice ) ) ;
215
+ this . _connectedDeviceServiceUUID = discoveredDevice . serviceUUIDs ? discoveredDevice . serviceUUIDs [ 0 ] : undefined ;
216
+
208
217
this . _retryConnectionIfLost = false ;
209
218
this . _bleScanner . scanningStop ( ) ;
210
219
@@ -352,9 +361,13 @@ export default class RaftChannelPhoneBLE implements RaftChannel {
352
361
}
353
362
// Monitor the inbound characteristic
354
363
try {
355
- if ( this . _bleDevice && this . _bleDevice . serviceUUIDs ) {
364
+ if ( this . _bleDevice ) {
365
+ if ( ! this . _connectedDeviceServiceUUID ) {
366
+ RaftLog . error ( 'BLEChannel _configDeviceConnection - no connected device service UUID' ) ;
367
+ return false ;
368
+ }
356
369
this . _bleSubscrOnRx = this . _bleDevice . monitorCharacteristicForService (
357
- this . _bleDevice . serviceUUIDs [ 0 ] ,
370
+ this . _connectedDeviceServiceUUID ,
358
371
this . _respUUID ,
359
372
( error : BleError | null , characteristic : Characteristic | null ) => {
360
373
this . _onMsgRx ( error , characteristic ) ;
@@ -520,8 +533,12 @@ export default class RaftChannelPhoneBLE implements RaftChannel {
520
533
const msgFrameBase64 = RaftUtils . btoa ( msg ) ;
521
534
522
535
try {
523
- await this . _bleDevice . writeCharacteristicWithoutResponseForService (
524
- this . _bleDevice . serviceUUIDs ? this . _bleDevice . serviceUUIDs [ 0 ] : this . _serviceUUIDs [ 0 ] ,
536
+ if ( ! this . _connectedDeviceServiceUUID ) {
537
+ RaftLog . error ( 'BLEChannel sendTxMsg - no connected device service UUID' ) ;
538
+ return false ;
539
+ }
540
+ await this . _bleDevice ! . writeCharacteristicWithoutResponseForService (
541
+ this . _connectedDeviceServiceUUID ,
525
542
this . _cmdUUID ,
526
543
msgFrameBase64 ! ,
527
544
) ;
@@ -559,8 +576,12 @@ export default class RaftChannelPhoneBLE implements RaftChannel {
559
576
const msgFrameBase64 = RaftUtils . btoa ( msg ) ;
560
577
561
578
try {
579
+ if ( ! this . _connectedDeviceServiceUUID ) {
580
+ RaftLog . error ( 'BLEChannel sendTxMsgNoAwait - no connected device service UUID' ) ;
581
+ return false ;
582
+ }
562
583
this . _bleDevice ! . writeCharacteristicWithoutResponseForService (
563
- this . _bleDevice . serviceUUIDs ? this . _bleDevice . serviceUUIDs [ 0 ] : this . _serviceUUIDs [ 0 ] ,
584
+ this . _connectedDeviceServiceUUID ,
564
585
this . _cmdUUID ,
565
586
msgFrameBase64 ! ,
566
587
) ;
0 commit comments