@@ -372,7 +372,7 @@ export default class HaritoraX extends EventEmitter {
372
372
* @example
373
373
* trackers.setTrackerSettings("rightAnkle", 1, 100, ['accel', 'gyro'], true);
374
374
**/
375
- setTrackerSettings (
375
+ async setTrackerSettings (
376
376
trackerName : string ,
377
377
sensorMode : SensorMode ,
378
378
fpsMode : FPSMode ,
@@ -388,10 +388,14 @@ export default class HaritoraX extends EventEmitter {
388
388
} ;
389
389
390
390
if ( trackerName . startsWith ( "HaritoraXW" ) ) {
391
- writeToBluetooth ( trackerName , sensorModeCharacteristic , sensorMode === 1 ? 5 : 8 ) ;
392
- writeToBluetooth ( trackerName , fpsModeCharacteristic , fpsMode === 50 ? 1 : 2 ) ;
393
- writeToBluetooth ( trackerName , correctionCharacteristic , sensorAutoCorrectionBit ) ;
394
- writeToBluetooth ( trackerName , ankleCharacteristic , ankleMotionDetection ? 1 : 0 ) ;
391
+ try {
392
+ await writeToBluetooth ( trackerName , sensorModeCharacteristic , sensorMode === 1 ? 5 : 8 ) ;
393
+ await writeToBluetooth ( trackerName , fpsModeCharacteristic , fpsMode === 50 ? 1 : 2 ) ;
394
+ await writeToBluetooth ( trackerName , correctionCharacteristic , sensorAutoCorrectionBit ) ;
395
+ await writeToBluetooth ( trackerName , ankleCharacteristic , ankleMotionDetection ? 1 : 0 ) ;
396
+ } catch ( err ) {
397
+ error ( `Error sending tracker settings: ${ err } ` ) ;
398
+ }
395
399
} else {
396
400
// GX dongle(s)
397
401
const trackerPort = com . getTrackerPort ( trackerName ) ;
@@ -401,8 +405,12 @@ export default class HaritoraX extends EventEmitter {
401
405
const hexValue = getSettingsHexValue ( sensorMode , fpsMode , sensorAutoCorrection , ankleMotionDetection ) ;
402
406
const finalValue = `${ identifierValue } ${ hexValue } ` ;
403
407
404
- writeToPort ( trackerPort , finalValue , trackerName ) ;
405
- writeToPort ( trackerPort , identifierValue , trackerName ) ;
408
+ try {
409
+ await writeToPort ( trackerPort , finalValue , trackerName ) ;
410
+ await writeToPort ( trackerPort , identifierValue , trackerName ) ;
411
+ } catch ( err ) {
412
+ error ( `Error sending tracker settings: ${ err } ` ) ;
413
+ }
406
414
}
407
415
408
416
logSettings ( trackerName , settings ) ;
@@ -434,15 +442,15 @@ export default class HaritoraX extends EventEmitter {
434
442
* trackers.setAllTrackerSettings(2, 50, ['mag'], false);
435
443
**/
436
444
437
- setAllTrackerSettings (
445
+ async setAllTrackerSettings (
438
446
sensorMode : SensorMode ,
439
447
fpsMode : FPSMode ,
440
448
sensorAutoCorrection : SensorAutoCorrection [ ] ,
441
449
ankleMotionDetection : boolean
442
450
) {
443
451
try {
444
452
if ( trackerModelEnabled === "wired" ) {
445
- handleWiredSettings ( sensorMode , fpsMode , sensorAutoCorrection , ankleMotionDetection ) ;
453
+ await handleWiredSettings ( sensorMode , fpsMode , sensorAutoCorrection , ankleMotionDetection ) ;
446
454
} else if ( trackerModelEnabled === "wireless" ) {
447
455
handleWirelessSettings ( sensorMode , fpsMode , sensorAutoCorrection , ankleMotionDetection ) ;
448
456
}
@@ -508,8 +516,12 @@ export default class HaritoraX extends EventEmitter {
508
516
error ( `Error reading characteristic: ${ err } ` ) ;
509
517
}
510
518
} else {
511
- writeToPort ( com . getTrackerPort ( trackerName ) , `s${ com . getTrackerPortId ( trackerName ) } :` , trackerName ) ;
512
- await new Promise ( ( resolve ) => setTimeout ( resolve , 200 ) ) ;
519
+ try {
520
+ await writeToPort ( com . getTrackerPort ( trackerName ) , `s${ com . getTrackerPortId ( trackerName ) } :` , trackerName ) ;
521
+ } catch ( err ) {
522
+ error ( `Error sending tracker settings: ${ err } ` ) ;
523
+ }
524
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 500 ) ) ;
513
525
( { sensorMode, fpsMode, sensorAutoCorrection, ankleMotionDetection } = getTrackerSettingsFromMap ( trackerName ) ) ;
514
526
}
515
527
} else if ( trackerModelEnabled === "wireless" && comEnabled && ! trackerName . startsWith ( "HaritoraXW" ) ) {
@@ -591,7 +603,12 @@ export default class HaritoraX extends EventEmitter {
591
603
592
604
const rawValue = `i${ trackerPortId } :` ;
593
605
594
- writeToPort ( trackerPort , rawValue , trackerName ) ;
606
+ try {
607
+ await writeToPort ( trackerPort , rawValue , trackerName ) ;
608
+ } catch ( err ) {
609
+ error ( `Error sending device info command: ${ err } ` ) ;
610
+ return null ;
611
+ }
595
612
}
596
613
597
614
if ( isWirelessBTTracker ( trackerName ) ) {
@@ -651,7 +668,12 @@ export default class HaritoraX extends EventEmitter {
651
668
652
669
const rawValue = `v${ trackerPortId } :` ;
653
670
654
- writeToPort ( trackerPort , rawValue , trackerName ) ;
671
+ try {
672
+ await writeToPort ( trackerPort , rawValue , trackerName ) ;
673
+ } catch ( err ) {
674
+ error ( `Error sending battery info command: ${ err } ` ) ;
675
+ return null ;
676
+ }
655
677
656
678
// Wait for the battery info to be sent back
657
679
await new Promise ( ( resolve ) => setTimeout ( resolve , 500 ) ) ;
@@ -849,12 +871,20 @@ export default class HaritoraX extends EventEmitter {
849
871
const commands = [ `o${ trackerPortId } :${ modifiedSettingsHex } ` , `o${ trackerPortId } :${ settingsHex } ` ] ;
850
872
851
873
for ( const command of commands ) {
852
- await writeToPort ( trackerPort , command ) ;
874
+ try {
875
+ await writeToPort ( trackerPort , command ) ;
876
+ } catch ( err ) {
877
+ error ( `Error sending power off command: ${ err } ` ) ;
878
+ return false ;
879
+ }
853
880
// Allow for small delay between commands so tracker can process the first command
854
881
await new Promise ( ( resolve ) => setTimeout ( resolve , delay ) ) ;
855
882
}
856
883
857
- log ( `Manually powered off tracker "${ trackerName } " (Port ${ trackerPort } , port id ${ trackerPortId } ). Delay between commands: ${ delay } ms.` , true ) ;
884
+ log (
885
+ `Manually powered off tracker "${ trackerName } " (Port ${ trackerPort } , port id ${ trackerPortId } ). Delay between commands: ${ delay } ms.` ,
886
+ true
887
+ ) ;
858
888
return true ;
859
889
}
860
890
@@ -1794,10 +1824,10 @@ function getSettingsHexValue(
1794
1824
return `00000${ postureDataRateBit } ${ sensorModeBit } 010${ sensorAutoCorrectionBit } 00${ ankleMotionDetectionBit } ` ;
1795
1825
}
1796
1826
1797
- function writeToBluetooth ( trackerName : string , characteristic : string , value : number ) {
1827
+ async function writeToBluetooth ( trackerName : string , characteristic : string , value : number ) {
1798
1828
try {
1799
1829
const buffer = Buffer . from ( [ value ] ) ;
1800
- bluetooth . write ( trackerName , settingsService , characteristic , buffer ) ;
1830
+ await bluetooth . write ( trackerName , settingsService , characteristic , buffer ) ;
1801
1831
if ( printWrites ) log ( `Data written to characteristic ${ characteristic } ${ trackerName } : ${ value } ` ) ;
1802
1832
} catch ( err ) {
1803
1833
error ( `Error writing to Bluetooth tracker ${ trackerName } : ${ err } ` ) ;
@@ -1908,7 +1938,7 @@ function getTrackerSettingsFromMap(trackerName: string) {
1908
1938
}
1909
1939
}
1910
1940
1911
- function handleWiredSettings (
1941
+ async function handleWiredSettings (
1912
1942
sensorMode : SensorMode ,
1913
1943
fpsMode : FPSMode ,
1914
1944
sensorAutoCorrection : SensorAutoCorrection [ ] ,
@@ -1936,7 +1966,7 @@ function handleWiredSettings(
1936
1966
for ( const port in ports ) {
1937
1967
for ( const commandKey in commands ) {
1938
1968
const command = commands [ commandKey ] ;
1939
- if ( command ) writeToPort ( port , command , "HaritoraXWired" ) ;
1969
+ if ( command ) await writeToPort ( port , command , "HaritoraXWired" ) ;
1940
1970
}
1941
1971
}
1942
1972
@@ -1948,7 +1978,7 @@ function handleWiredSettings(
1948
1978
trackerSettings . set ( "HaritoraXWired" , [ sensorMode , fpsMode , sensorAutoCorrection , ankleMotionDetection ] ) ;
1949
1979
}
1950
1980
1951
- function handleWirelessSettings (
1981
+ async function handleWirelessSettings (
1952
1982
sensorMode : SensorMode ,
1953
1983
fpsMode : FPSMode ,
1954
1984
sensorAutoCorrection : SensorAutoCorrection [ ] ,
@@ -1959,7 +1989,7 @@ function handleWirelessSettings(
1959
1989
const finalValue = `o0:${ hexValue } \no1:${ hexValue } ` ;
1960
1990
1961
1991
for ( const port in com . getActivePorts ( ) ) {
1962
- writeToPort ( port , finalValue , "HaritoraXWireless" ) ;
1992
+ await writeToPort ( port , finalValue , "HaritoraXWireless" ) ;
1963
1993
}
1964
1994
}
1965
1995
0 commit comments