@robdobsn/raftjs 1.7.8 → 1.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/.editorconfig +14 -0
  2. package/.gitattributes +11 -0
  3. package/.nvmrc +1 -0
  4. package/TODO.md +1 -0
  5. package/dist/react-native/RaftAttributeHandler.d.ts +14 -0
  6. package/dist/react-native/RaftAttributeHandler.js +375 -0
  7. package/dist/react-native/RaftAttributeHandler.js.map +1 -0
  8. package/dist/react-native/RaftChannel.d.ts +20 -0
  9. package/dist/react-native/RaftChannel.js +12 -0
  10. package/dist/react-native/RaftChannel.js.map +1 -0
  11. package/dist/react-native/RaftChannelBLE.native.d.ts +95 -0
  12. package/dist/react-native/RaftChannelBLE.native.js +483 -0
  13. package/dist/react-native/RaftChannelBLE.native.js.map +1 -0
  14. package/dist/react-native/RaftChannelBLE.web.d.ts +40 -0
  15. package/dist/react-native/RaftChannelBLE.web.js +302 -0
  16. package/dist/react-native/RaftChannelBLE.web.js.map +1 -0
  17. package/dist/react-native/RaftChannelBLEFactory.d.ts +10 -0
  18. package/dist/react-native/RaftChannelBLEFactory.js +17 -0
  19. package/dist/react-native/RaftChannelBLEFactory.js.map +1 -0
  20. package/dist/react-native/RaftChannelBLEScanner.native.d.ts +18 -0
  21. package/dist/react-native/RaftChannelBLEScanner.native.js +138 -0
  22. package/dist/react-native/RaftChannelBLEScanner.native.js.map +1 -0
  23. package/dist/react-native/RaftChannelSimulated.d.ts +42 -0
  24. package/dist/react-native/RaftChannelSimulated.js +1000 -0
  25. package/dist/react-native/RaftChannelSimulated.js.map +1 -0
  26. package/dist/react-native/RaftChannelWebSerial.d.ts +39 -0
  27. package/dist/react-native/RaftChannelWebSerial.js +329 -0
  28. package/dist/react-native/RaftChannelWebSerial.js.map +1 -0
  29. package/dist/react-native/RaftChannelWebSocket.d.ts +30 -0
  30. package/dist/react-native/RaftChannelWebSocket.js +222 -0
  31. package/dist/react-native/RaftChannelWebSocket.js.map +1 -0
  32. package/dist/react-native/RaftCommsStats.d.ts +39 -0
  33. package/dist/react-native/RaftCommsStats.js +128 -0
  34. package/dist/react-native/RaftCommsStats.js.map +1 -0
  35. package/dist/react-native/RaftConnEvents.d.ts +39 -0
  36. package/dist/react-native/RaftConnEvents.js +54 -0
  37. package/dist/react-native/RaftConnEvents.js.map +1 -0
  38. package/dist/react-native/RaftConnector.d.ts +248 -0
  39. package/dist/react-native/RaftConnector.js +658 -0
  40. package/dist/react-native/RaftConnector.js.map +1 -0
  41. package/dist/react-native/RaftCustomAttrHandler.d.ts +6 -0
  42. package/dist/react-native/RaftCustomAttrHandler.js +93 -0
  43. package/dist/react-native/RaftCustomAttrHandler.js.map +1 -0
  44. package/dist/react-native/RaftDeviceInfo.d.ts +71 -0
  45. package/dist/react-native/RaftDeviceInfo.js +50 -0
  46. package/dist/react-native/RaftDeviceInfo.js.map +1 -0
  47. package/dist/react-native/RaftDeviceManager.d.ts +61 -0
  48. package/dist/react-native/RaftDeviceManager.js +665 -0
  49. package/dist/react-native/RaftDeviceManager.js.map +1 -0
  50. package/dist/react-native/RaftDeviceMgrIF.d.ts +15 -0
  51. package/dist/react-native/RaftDeviceMgrIF.js +11 -0
  52. package/dist/react-native/RaftDeviceMgrIF.js.map +1 -0
  53. package/dist/react-native/RaftDeviceMsg.d.ts +9 -0
  54. package/dist/react-native/RaftDeviceMsg.js +11 -0
  55. package/dist/react-native/RaftDeviceMsg.js.map +1 -0
  56. package/dist/react-native/RaftDeviceStates.d.ts +37 -0
  57. package/dist/react-native/RaftDeviceStates.js +60 -0
  58. package/dist/react-native/RaftDeviceStates.js.map +1 -0
  59. package/dist/react-native/RaftFileHandler.d.ts +52 -0
  60. package/dist/react-native/RaftFileHandler.js +502 -0
  61. package/dist/react-native/RaftFileHandler.js.map +1 -0
  62. package/dist/react-native/RaftLog.d.ts +22 -0
  63. package/dist/react-native/RaftLog.js +63 -0
  64. package/dist/react-native/RaftLog.js.map +1 -0
  65. package/dist/react-native/RaftMiniHDLC.d.ts +18 -0
  66. package/dist/react-native/RaftMiniHDLC.js +383 -0
  67. package/dist/react-native/RaftMiniHDLC.js.map +1 -0
  68. package/dist/react-native/RaftMsgHandler.d.ts +62 -0
  69. package/dist/react-native/RaftMsgHandler.js +511 -0
  70. package/dist/react-native/RaftMsgHandler.js.map +1 -0
  71. package/dist/react-native/RaftMsgTrackInfo.d.ts +17 -0
  72. package/dist/react-native/RaftMsgTrackInfo.js +42 -0
  73. package/dist/react-native/RaftMsgTrackInfo.js.map +1 -0
  74. package/dist/react-native/RaftProtocolDefs.d.ts +30 -0
  75. package/dist/react-native/RaftProtocolDefs.js +48 -0
  76. package/dist/react-native/RaftProtocolDefs.js.map +1 -0
  77. package/dist/react-native/RaftStreamHandler.d.ts +38 -0
  78. package/dist/react-native/RaftStreamHandler.js +258 -0
  79. package/dist/react-native/RaftStreamHandler.js.map +1 -0
  80. package/dist/react-native/RaftStruct.d.ts +3 -0
  81. package/dist/react-native/RaftStruct.js +258 -0
  82. package/dist/react-native/RaftStruct.js.map +1 -0
  83. package/dist/react-native/RaftSysTypeManager.d.ts +16 -0
  84. package/dist/react-native/RaftSysTypeManager.js +78 -0
  85. package/dist/react-native/RaftSysTypeManager.js.map +1 -0
  86. package/dist/react-native/RaftSystemType.d.ts +30 -0
  87. package/dist/react-native/RaftSystemType.js +3 -0
  88. package/dist/react-native/RaftSystemType.js.map +1 -0
  89. package/dist/react-native/RaftSystemUtils.d.ts +136 -0
  90. package/dist/react-native/RaftSystemUtils.js +412 -0
  91. package/dist/react-native/RaftSystemUtils.js.map +1 -0
  92. package/dist/react-native/RaftTypes.d.ts +195 -0
  93. package/dist/react-native/RaftTypes.js +153 -0
  94. package/dist/react-native/RaftTypes.js.map +1 -0
  95. package/dist/react-native/RaftUpdateEvents.d.ts +33 -0
  96. package/dist/react-native/RaftUpdateEvents.js +46 -0
  97. package/dist/react-native/RaftUpdateEvents.js.map +1 -0
  98. package/dist/react-native/RaftUpdateManager.d.ts +61 -0
  99. package/dist/react-native/RaftUpdateManager.js +621 -0
  100. package/dist/react-native/RaftUpdateManager.js.map +1 -0
  101. package/dist/react-native/RaftUtils.d.ts +128 -0
  102. package/dist/react-native/RaftUtils.js +487 -0
  103. package/dist/react-native/RaftUtils.js.map +1 -0
  104. package/dist/react-native/RaftWifiTypes.d.ts +23 -0
  105. package/dist/react-native/RaftWifiTypes.js +43 -0
  106. package/dist/react-native/RaftWifiTypes.js.map +1 -0
  107. package/dist/react-native/main.d.ts +26 -0
  108. package/dist/react-native/main.js +51 -0
  109. package/dist/react-native/main.js.map +1 -0
  110. package/dist/web/RaftAttributeHandler.js +9 -6
  111. package/dist/web/RaftAttributeHandler.js.map +1 -1
  112. package/dist/web/RaftChannelBLE.web.js +8 -6
  113. package/dist/web/RaftChannelBLE.web.js.map +1 -1
  114. package/dist/web/RaftChannelSimulated.d.ts +10 -0
  115. package/dist/web/RaftChannelSimulated.js +662 -80
  116. package/dist/web/RaftChannelSimulated.js.map +1 -1
  117. package/dist/web/RaftChannelWebSerial.js +2 -2
  118. package/dist/web/RaftChannelWebSerial.js.map +1 -1
  119. package/dist/web/RaftChannelWebSocket.js +16 -1
  120. package/dist/web/RaftChannelWebSocket.js.map +1 -1
  121. package/dist/web/RaftConnector.d.ts +2 -0
  122. package/dist/web/RaftConnector.js +38 -15
  123. package/dist/web/RaftConnector.js.map +1 -1
  124. package/dist/web/RaftCustomAttrHandler.d.ts +2 -0
  125. package/dist/web/RaftCustomAttrHandler.js +54 -26
  126. package/dist/web/RaftCustomAttrHandler.js.map +1 -1
  127. package/dist/web/RaftDeviceInfo.d.ts +3 -1
  128. package/dist/web/RaftDeviceInfo.js +17 -3
  129. package/dist/web/RaftDeviceInfo.js.map +1 -1
  130. package/dist/web/RaftDeviceManager.d.ts +22 -1
  131. package/dist/web/RaftDeviceManager.js +210 -44
  132. package/dist/web/RaftDeviceManager.js.map +1 -1
  133. package/dist/web/RaftDeviceStates.d.ts +1 -1
  134. package/dist/web/RaftDeviceStates.js +2 -2
  135. package/dist/web/RaftDeviceStates.js.map +1 -1
  136. package/dist/web/RaftMsgHandler.js.map +1 -1
  137. package/dist/web/RaftStreamHandler.js +2 -1
  138. package/dist/web/RaftStreamHandler.js.map +1 -1
  139. package/dist/web/RaftStruct.js +197 -147
  140. package/dist/web/RaftStruct.js.map +1 -1
  141. package/dist/web/RaftUpdateManager.js +1 -1
  142. package/dist/web/RaftUpdateManager.js.map +1 -1
  143. package/dist/web/RaftUtils.d.ts +2 -0
  144. package/dist/web/RaftUtils.js +20 -0
  145. package/dist/web/RaftUtils.js.map +1 -1
  146. package/dist/web/main.d.ts +1 -0
  147. package/dist/web/main.js.map +1 -1
  148. package/eslint.config.mjs +33 -0
  149. package/examples/dashboard/package.json +36 -0
  150. package/examples/dashboard/src/CommandPanel.tsx +147 -0
  151. package/examples/dashboard/src/ConnManager.ts +166 -0
  152. package/examples/dashboard/src/DeviceActionsForm.tsx +133 -0
  153. package/examples/dashboard/src/DeviceAttrsForm.tsx +49 -0
  154. package/examples/dashboard/src/DeviceLineChart.tsx +163 -0
  155. package/examples/dashboard/src/DevicePanel.tsx +171 -0
  156. package/examples/dashboard/src/DevicesPanel.tsx +58 -0
  157. package/examples/dashboard/src/DispLedGrid.tsx +110 -0
  158. package/examples/dashboard/src/DispOneLed.tsx +20 -0
  159. package/examples/dashboard/src/LatencyTest.ts +130 -0
  160. package/examples/dashboard/src/LatencyTestPanel.tsx +92 -0
  161. package/examples/dashboard/src/Main.tsx +234 -0
  162. package/examples/dashboard/src/SettingsManager.ts +67 -0
  163. package/examples/dashboard/src/SettingsScreen.tsx +174 -0
  164. package/examples/dashboard/src/StatusPanel.tsx +71 -0
  165. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +162 -0
  166. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +91 -0
  167. package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +30 -0
  168. package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +91 -0
  169. package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +70 -0
  170. package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +33 -0
  171. package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +342 -0
  172. package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +170 -0
  173. package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +123 -0
  174. package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +207 -0
  175. package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +464 -0
  176. package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +146 -0
  177. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +97 -0
  178. package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +371 -0
  179. package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +20 -0
  180. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +119 -0
  181. package/examples/dashboard/src/index.html +15 -0
  182. package/examples/dashboard/src/index.tsx +13 -0
  183. package/examples/dashboard/src/styles.css +408 -0
  184. package/examples/dashboard/tsconfig.json +18 -0
  185. package/jest.config.js +11 -0
  186. package/package.json +4 -7
  187. package/src/RaftAttributeHandler.ts +450 -0
  188. package/src/RaftChannel.ts +32 -0
  189. package/src/RaftChannelBLE.native.ts +617 -0
  190. package/src/RaftChannelBLE.web.ts +374 -0
  191. package/src/RaftChannelBLEFactory.ts +13 -0
  192. package/src/RaftChannelBLEScanner.native.ts +184 -0
  193. package/src/RaftChannelSimulated.ts +1176 -0
  194. package/src/RaftChannelWebSerial.ts +420 -0
  195. package/src/RaftChannelWebSocket.ts +272 -0
  196. package/src/RaftCommsStats.ts +142 -0
  197. package/src/RaftConnEvents.ts +58 -0
  198. package/src/RaftConnector.ts +785 -0
  199. package/src/RaftCustomAttrHandler.ts +117 -0
  200. package/src/RaftDeviceInfo.ts +125 -0
  201. package/src/RaftDeviceManager.ts +844 -0
  202. package/src/RaftDeviceMgrIF.ts +33 -0
  203. package/src/RaftDeviceMsg.ts +20 -0
  204. package/src/RaftDeviceStates.ts +92 -0
  205. package/src/RaftFileHandler.ts +668 -0
  206. package/src/RaftLog.ts +70 -0
  207. package/src/RaftMiniHDLC.ts +396 -0
  208. package/src/RaftMsgHandler.ts +812 -0
  209. package/src/RaftMsgTrackInfo.ts +51 -0
  210. package/src/RaftProtocolDefs.ts +46 -0
  211. package/src/RaftStreamHandler.ts +329 -0
  212. package/src/RaftStruct.ts +282 -0
  213. package/src/RaftSysTypeManager.ts +87 -0
  214. package/src/RaftSystemType.ts +34 -0
  215. package/src/RaftSystemUtils.ts +489 -0
  216. package/src/RaftTypes.ts +279 -0
  217. package/src/RaftUpdateEvents.ts +48 -0
  218. package/src/RaftUpdateManager.ts +781 -0
  219. package/src/RaftUtils.ts +514 -0
  220. package/src/RaftWifiTypes.ts +36 -0
  221. package/src/main.ts +39 -0
  222. package/testdata/TestDeviceTypeRecs.json +492 -0
  223. package/tsconfig.json +30 -0
  224. package/tsconfig.react-native.json +29 -0
@@ -0,0 +1,483 @@
1
+ "use strict";
2
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
+ //
4
+ // RaftChannelPhoneBLE
5
+ // Part of RaftJS
6
+ //
7
+ // Rob Dobson & Chris Greening 2020-2024
8
+ // (C) 2020-2024 All rights reserved
9
+ //
10
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const tslib_1 = require("tslib");
13
+ const react_native_ble_plx_1 = require("react-native-ble-plx");
14
+ const RaftConnEvents_1 = require("./RaftConnEvents");
15
+ const RaftLog_1 = tslib_1.__importDefault(require("./RaftLog"));
16
+ const RaftUtils_1 = tslib_1.__importDefault(require("./RaftUtils"));
17
+ const RaftChannelBLEScanner_native_1 = tslib_1.__importDefault(require("./RaftChannelBLEScanner.native"));
18
+ const _bleManager = new react_native_ble_plx_1.BleManager();
19
+ class RaftChannelPhoneBLE {
20
+ constructor() {
21
+ // Conn event fn
22
+ this._onConnEvent = null;
23
+ // Default command and response UUIDs
24
+ this._cmdUUID = 'aa76677e-9cfd-4626-a510-0d305be57c8e';
25
+ this._respUUID = 'aa76677e-9cfd-4626-a510-0d305be57c8f';
26
+ this._serviceUUIDs = ['aa76677e-9cfd-4626-a510-0d305be57c8d', 'da903f65-d5c2-4f4d-a065-d1aade7af874'];
27
+ // Device to connect to using BLE
28
+ this._deviceToConnectTo = null;
29
+ // Handle BLE disconnection through retry
30
+ // May be set after connection checking (e.g. using LEDs)
31
+ this._retryConnectionIfLost = false;
32
+ this.RECONNECT_ATTEMPTS_AFTER_CONN_LOST = 20;
33
+ // BLE connection
34
+ this._bleSubscrOnRx = null;
35
+ this._bleSubscrOnDisconnect = null;
36
+ this._bleSubscrOnStateChange = null;
37
+ this._bleDevice = null;
38
+ // MTU (Maximum Transmission Unit) size to request
39
+ this.MTU_SIZE_TO_REQUEST = 512;
40
+ // Message handler
41
+ this._raftMsgHandler = null;
42
+ // Last message tx time
43
+ this._msgTxTimeLast = Date.now();
44
+ this._msgTxMinTimeBetweenMs = 15;
45
+ this.maxRetries = 1;
46
+ // File Handler parameters
47
+ this._requestedBatchAckSize = 10;
48
+ this._requestedFileBlockSize = 500;
49
+ RaftLog_1.default.debug('BLEChannel constructor');
50
+ // _bleManager.setLogLevel(LogLevel.Verbose);
51
+ // Scanner
52
+ this._bleScanner = new RaftChannelBLEScanner_native_1.default(_bleManager, this._serviceUUIDs, this.scanningEvent.bind(this));
53
+ // Listen for BLE state changes
54
+ this._bleSubscrOnStateChange = _bleManager.onStateChange(state => {
55
+ this._onBLEStateChange(state);
56
+ }, true);
57
+ }
58
+ setConnectedDeviceUUID(serviceUUID) {
59
+ this._connectedDeviceServiceUUID = serviceUUID;
60
+ }
61
+ getBleManager() {
62
+ return _bleManager;
63
+ }
64
+ fhBatchAckSize() { return this._requestedBatchAckSize; }
65
+ fhFileBlockSize() { return this._requestedFileBlockSize; }
66
+ pauseConnection(pause) { RaftLog_1.default.verbose(`pauseConnection ${pause} - no effect for this channel type`); return; }
67
+ // isConnected
68
+ isConnected() {
69
+ return this._bleDevice !== null;
70
+ }
71
+ setOnConnEvent(connEventFn) {
72
+ this._onConnEvent = connEventFn;
73
+ }
74
+ requiresSubscription() {
75
+ return true;
76
+ }
77
+ isEnabled() {
78
+ return true;
79
+ }
80
+ // Set message handler
81
+ setMsgHandler(raftMsgHandler) {
82
+ this._raftMsgHandler = raftMsgHandler;
83
+ }
84
+ setRetryConnectionIfLost(retry) {
85
+ RaftLog_1.default.debug(`BLEChannel setRetryConnectionIfLost ${retry}`);
86
+ this._retryConnectionIfLost = retry;
87
+ }
88
+ async discoveryStart(uuids, tries = 10) {
89
+ if (tries <= 0) {
90
+ RaftLog_1.default.debug(`BLEChannel discoveryStart failed`);
91
+ return false;
92
+ }
93
+ // Disconnect any existing connection
94
+ // await this.disconnect();
95
+ // wait until the bt is powered on
96
+ const state = await _bleManager.state();
97
+ if (state !== react_native_ble_plx_1.State.PoweredOn) {
98
+ RaftLog_1.default.debug(`BLEChannel discoveryStart waiting for BLE powered on`);
99
+ await new Promise(resolve => setTimeout(resolve, 500));
100
+ return this.discoveryStart(uuids, tries - 1);
101
+ }
102
+ // Start scanning
103
+ await this._bleScanner.scanningStart(uuids);
104
+ // Event
105
+ RaftLog_1.default.debug(`BLEChannel discoveryStart emitting BLE_SCANNING_STARTED`);
106
+ this.emit(RaftConnEvents_1.RaftConnEvent.BLE_SCANNING_STARTED);
107
+ return true;
108
+ }
109
+ discoveryCancel() {
110
+ // Stop scanning
111
+ this._bleScanner.scanningStop();
112
+ }
113
+ _onBLEStateChange(state) {
114
+ RaftLog_1.default.debug('BLEChannel state change ' + state);
115
+ if (state === react_native_ble_plx_1.State.PoweredOn) {
116
+ this.emit(RaftConnEvents_1.RaftConnEvent.BLE_BLUETOOTH_STATE, {
117
+ btEnabled: true,
118
+ });
119
+ RaftLog_1.default.debug('BLEChannel BLE powered on');
120
+ }
121
+ else if (state === react_native_ble_plx_1.State.PoweredOff) {
122
+ this.emit(RaftConnEvents_1.RaftConnEvent.BLE_BLUETOOTH_STATE, {
123
+ btEnabled: false,
124
+ });
125
+ }
126
+ }
127
+ // Get connected locator
128
+ getConnectedLocator() {
129
+ return this._bleDevice || '';
130
+ }
131
+ /**
132
+ * Get RIC connection status
133
+ *
134
+ * @returns boolean (true if connected)
135
+ *
136
+ */
137
+ async getIsConnected(forceCheck = false) {
138
+ var _a;
139
+ if (this._bleDevice === null) {
140
+ return false;
141
+ }
142
+ if (!forceCheck) {
143
+ return true;
144
+ }
145
+ return await ((_a = this._bleDevice) === null || _a === void 0 ? void 0 : _a.isConnected());
146
+ }
147
+ /**
148
+ * Get the RSSI of the currently connected device
149
+ *
150
+ * @return number (or null if not connected)
151
+ *
152
+ */
153
+ async readRSSI() {
154
+ if (this._bleDevice) {
155
+ const updatedDevice = await this._bleDevice.readRSSI();
156
+ if (updatedDevice.rssi !== null) {
157
+ return updatedDevice.rssi;
158
+ }
159
+ }
160
+ // is this a sensible default? should show up as a very weak signal
161
+ return -200;
162
+ }
163
+ /**
164
+ * Connect to a RIC
165
+ *
166
+ * @returns boolean (true if connected)
167
+ *
168
+ */
169
+ async connect(discoveredDevice) {
170
+ RaftLog_1.default.debug('BLEChannel requested connection ' + JSON.stringify(discoveredDevice));
171
+ this._connectedDeviceServiceUUID = discoveredDevice.serviceUUIDs ? discoveredDevice.serviceUUIDs[0] : undefined;
172
+ this._retryConnectionIfLost = false;
173
+ this._bleScanner.scanningStop();
174
+ // Now connecting
175
+ this.emit(RaftConnEvents_1.RaftConnEvent.CONN_CONNECTING, { deviceId: discoveredDevice.id });
176
+ // Connect
177
+ this._deviceToConnectTo = discoveredDevice;
178
+ const connOk = await this._configDeviceConnection();
179
+ // Check if ok
180
+ if (!connOk) {
181
+ // Emit failure
182
+ this.emit(RaftConnEvents_1.RaftConnEvent.CONN_CONNECTION_FAILED);
183
+ return false;
184
+ }
185
+ // Emit success
186
+ this.emit(RaftConnEvents_1.RaftConnEvent.CONN_CONNECTED, {
187
+ deviceId: this._deviceToConnectTo.id,
188
+ name: this._deviceToConnectTo.name,
189
+ });
190
+ return true;
191
+ }
192
+ /**
193
+ * Disconnect from RIC
194
+ *
195
+ * @returns None
196
+ *
197
+ */
198
+ async disconnect() {
199
+ RaftLog_1.default.debug('BLEChannel disconnect requested');
200
+ this._retryConnectionIfLost = false;
201
+ RaftLog_1.default.debug(`this._ricToConnectTo ${this._deviceToConnectTo}`);
202
+ const connectedRIC = this._deviceToConnectTo;
203
+ this._deviceToConnectTo = null;
204
+ // this._invalidateConnectionInfo(); // //
205
+ // Remove disconnect subscription so it doesn't try to reconnect
206
+ if (this._bleSubscrOnDisconnect) {
207
+ this._bleSubscrOnDisconnect.remove();
208
+ this._bleSubscrOnDisconnect = null;
209
+ }
210
+ // Disconnect from the connected device
211
+ const connMarties = await _bleManager.connectedDevices(this._serviceUUIDs);
212
+ if (connMarties.length == 0) {
213
+ RaftLog_1.default.debug('BLEChannel disconnect - no devices connected');
214
+ }
215
+ else {
216
+ for (const connRIC of connMarties) {
217
+ RaftLog_1.default.debug(`Found connected device ${connRIC.id}`);
218
+ RaftLog_1.default.debug(`ID to disconnect ${connectedRIC === null || connectedRIC === void 0 ? void 0 : connectedRIC.id}`);
219
+ if ((connectedRIC === null || connectedRIC === void 0 ? void 0 : connectedRIC.id) === connRIC.id) {
220
+ await _bleManager.cancelDeviceConnection(connRIC.id);
221
+ }
222
+ }
223
+ }
224
+ // Emit disconnected event
225
+ this.emit(RaftConnEvents_1.RaftConnEvent.CONN_DISCONNECTED);
226
+ RaftLog_1.default.debug('BLEChannel disconnect clearing connected device');
227
+ this._bleDevice = null;
228
+ }
229
+ /**
230
+ * Configure device connection
231
+ *
232
+ * @returns None
233
+ *
234
+ */
235
+ async _configDeviceConnection() {
236
+ // Check there is a RIC to connect to
237
+ if (this._deviceToConnectTo === null) {
238
+ return false;
239
+ }
240
+ let deviceConnected = null;
241
+ for (let connRetry = 0; connRetry < 5; connRetry++) {
242
+ try {
243
+ deviceConnected = await _bleManager.connectToDevice(this._deviceToConnectTo.id, {
244
+ timeout: 3000,
245
+ });
246
+ // this.handleLostDevice(); // //
247
+ break;
248
+ }
249
+ catch (error) {
250
+ RaftLog_1.default.debug(`BLEChannel configDeviceConnection failed at attempt ${connRetry + 1} error ${error}`);
251
+ deviceConnected = null;
252
+ }
253
+ }
254
+ if (deviceConnected === null) {
255
+ return false;
256
+ }
257
+ // Increase MTU size
258
+ try {
259
+ if (deviceConnected) {
260
+ const updatedDevice = await deviceConnected.requestMTU(this.MTU_SIZE_TO_REQUEST);
261
+ RaftLog_1.default.debug(`BLEChannel configDeviceConnection requestMTU ${this.MTU_SIZE_TO_REQUEST}, actualMTU ${updatedDevice.mtu}`);
262
+ }
263
+ }
264
+ catch (error) {
265
+ RaftLog_1.default.debug(`BLEChannel configDeviceConnection requestMTU failed error ${error}`);
266
+ return false;
267
+ }
268
+ // Request high-priority connection
269
+ try {
270
+ await _bleManager.requestConnectionPriorityForDevice(this._deviceToConnectTo.id, react_native_ble_plx_1.ConnectionPriority.High);
271
+ RaftLog_1.default.debug(`BLEChannel configDeviceConnection request ConnPriority.High`);
272
+ }
273
+ catch (error) {
274
+ RaftLog_1.default.debug(`BLEChannel configDeviceConnection requestConnectionPriorityForDevice failed ${error}`);
275
+ return false;
276
+ }
277
+ // Discover services and characteristics
278
+ try {
279
+ if (deviceConnected) {
280
+ this._bleDevice =
281
+ await deviceConnected.discoverAllServicesAndCharacteristics();
282
+ }
283
+ }
284
+ catch (error) {
285
+ RaftLog_1.default.debug(`BLEChannel configDeviceConnection discoverAllServicesAndCharacteristics failed error ${error}`);
286
+ return false;
287
+ }
288
+ // Monitor the inbound characteristic
289
+ try {
290
+ if (this._bleDevice) {
291
+ if (!this._connectedDeviceServiceUUID) {
292
+ RaftLog_1.default.warn('BLEChannel _configDeviceConnection - no connected device service UUID');
293
+ return false;
294
+ }
295
+ this._bleSubscrOnRx = this._bleDevice.monitorCharacteristicForService(this._connectedDeviceServiceUUID, this._respUUID, (error, characteristic) => {
296
+ this._onMsgRx(error, characteristic);
297
+ });
298
+ }
299
+ }
300
+ catch (error) {
301
+ RaftLog_1.default.debug(`BLEChannel configDeviceConnection monitorCharacteristicForService failed ${error}`);
302
+ return false;
303
+ }
304
+ // Deal with future disconnections
305
+ this._handleLostConnections();
306
+ return true;
307
+ }
308
+ /**
309
+ * Handle lost connections
310
+ *
311
+ * @returns None
312
+ *
313
+ */
314
+ _handleLostConnections() {
315
+ // Check device ok
316
+ if (this._bleDevice === null) {
317
+ return;
318
+ }
319
+ // Attach a disconnected listener
320
+ this._bleSubscrOnDisconnect = _bleManager.onDeviceDisconnected(this._bleDevice.id, async () => {
321
+ var _a, _b, _c, _d;
322
+ // this._storeConnectionInfo(); // //
323
+ // this._invalidateConnectionInfo(); // //
324
+ RaftLog_1.default.warn(`onDeviceDisconnected BLEManager says device disconnected`);
325
+ // this.emit(RaftConnEvent.CONN_ISSUE_DETECTED);
326
+ this.emit(RaftConnEvents_1.RaftConnEvent.CONN_DISCONNECTED);
327
+ try {
328
+ if (this._bleSubscrOnRx) {
329
+ this._bleSubscrOnRx.remove();
330
+ this._bleSubscrOnRx = null;
331
+ }
332
+ if (this._bleSubscrOnDisconnect) {
333
+ this._bleSubscrOnDisconnect.remove();
334
+ this._bleSubscrOnDisconnect = null;
335
+ }
336
+ // Debug
337
+ RaftLog_1.default.debug(`connection subscriptions removed`);
338
+ // Device now null
339
+ RaftLog_1.default.debug(`onDisconnect clearing connected device`);
340
+ // this._ghostBleDevice = this._bleDevice; // //
341
+ this._bleDevice = null;
342
+ }
343
+ catch (error) {
344
+ RaftLog_1.default.debug(`Error in onDisconnected ${error}`);
345
+ }
346
+ // Attempt reconnection
347
+ for (let reconnAttempt = 0; reconnAttempt < this.RECONNECT_ATTEMPTS_AFTER_CONN_LOST; reconnAttempt++) {
348
+ // Check if scan in progress - and stop reconn attempts if so
349
+ const scanInProgress = this._bleScanner.isScanInProgress();
350
+ RaftLog_1.default.debug(`onDeviceDisconnected considering reconnection RICToConnectTo ${(_a = this._deviceToConnectTo) === null || _a === void 0 ? void 0 : _a.name} scanInProgress ${scanInProgress} retryConnectionIfLost ${this._retryConnectionIfLost}`);
351
+ if (!this._retryConnectionIfLost ||
352
+ scanInProgress ||
353
+ !this._deviceToConnectTo) {
354
+ RaftLog_1.default.debug(`onDeviceDisconnected DISCONNECTED_RIC RICToConnectTo ${(_b = this._deviceToConnectTo) === null || _b === void 0 ? void 0 : _b.name} scanInProgress ${scanInProgress} retryConnectionIfLost ${this._retryConnectionIfLost}`);
355
+ if (this._retryConnectionIfLost) {
356
+ // this.emit(RaftConnEvent.BLE_DISCONNECTED_RIC);
357
+ }
358
+ else {
359
+ // this.emit(RaftConnEvent.BLE_CONNECTING_RIC_FAIL);
360
+ }
361
+ break;
362
+ }
363
+ if (await this._configDeviceConnection()) {
364
+ RaftLog_1.default.debug(`onDeviceDisconnected successful reconn RICToConnectTo ${(_c = this._deviceToConnectTo) === null || _c === void 0 ? void 0 : _c.name}`);
365
+ // Indicate connection issue resolved
366
+ // this.emit(RaftConnEvent.CONN_ISSUE_RESOLVED);
367
+ // await this.ricConnector.retrieveMartySystemInfo();
368
+ return;
369
+ }
370
+ RaftLog_1.default.debug(`onDeviceDisconnected retrying reconn RICToConnectTo ${(_d = this._deviceToConnectTo) === null || _d === void 0 ? void 0 : _d.name}`);
371
+ }
372
+ });
373
+ }
374
+ getMTU() {
375
+ var _a;
376
+ return (_a = this._bleDevice) === null || _a === void 0 ? void 0 : _a.mtu;
377
+ }
378
+ emit(event, data) {
379
+ if (this._onConnEvent) {
380
+ this._onConnEvent(event, data);
381
+ }
382
+ }
383
+ _onMsgRx(error, characteristic) {
384
+ if (error) {
385
+ // this.emit(maybe dont want to emit here - just add to comms stats?);
386
+ // this.reportError(error.message);
387
+ return;
388
+ }
389
+ // Extract message
390
+ const msgFrameBase64 = characteristic.value;
391
+ const rxFrame = RaftUtils_1.default.atob(msgFrameBase64);
392
+ // Debug
393
+ // RaftLog.debug('_onMsgRx from BLE ' + RaftUtils.bufferToHex(rxFrame));
394
+ // Send
395
+ if (rxFrame !== null && this._raftMsgHandler) {
396
+ this._raftMsgHandler.handleNewRxMsg(rxFrame);
397
+ }
398
+ }
399
+ async scanningEvent(event, data) {
400
+ if (this._onConnEvent) {
401
+ this._onConnEvent(event, data);
402
+ }
403
+ }
404
+ async sendTxMsg(msg) {
405
+ // Check valid
406
+ if (this._bleDevice === null) {
407
+ return false;
408
+ }
409
+ for (let retryIdx = 0; retryIdx < this.maxRetries; retryIdx++) {
410
+ // Check for min time between messages
411
+ while (Date.now() - this._msgTxTimeLast < this._msgTxMinTimeBetweenMs) {
412
+ await new Promise(resolve => setTimeout(resolve, 5));
413
+ }
414
+ this._msgTxTimeLast = Date.now();
415
+ // Convert to Base64
416
+ const msgFrameBase64 = RaftUtils_1.default.btoa(msg);
417
+ try {
418
+ if (!this._connectedDeviceServiceUUID) {
419
+ RaftLog_1.default.warn('BLEChannel sendTxMsg - no connected device service UUID');
420
+ return false;
421
+ }
422
+ await this._bleDevice.writeCharacteristicWithoutResponseForService(this._connectedDeviceServiceUUID, this._cmdUUID, msgFrameBase64);
423
+ return true;
424
+ }
425
+ catch (_a) {
426
+ if (retryIdx === this.maxRetries - 1) {
427
+ RaftLog_1.default.debug(`sendTxMsg failed after ${this.maxRetries} attempts`);
428
+ return false;
429
+ }
430
+ RaftLog_1.default.debug(`sendTxMsg failed, retrying`);
431
+ }
432
+ }
433
+ return false;
434
+ }
435
+ async sendTxMsgNoAwait(msg) {
436
+ // Check valid
437
+ if (this._bleDevice === null) {
438
+ return false;
439
+ }
440
+ // Retry upto maxRetries
441
+ for (let retryIdx = 0; retryIdx < this.maxRetries; retryIdx++) {
442
+ // Check for min time between messages
443
+ while (Date.now() - this._msgTxTimeLast < this._msgTxMinTimeBetweenMs) {
444
+ await new Promise(resolve => setTimeout(resolve, 5));
445
+ }
446
+ this._msgTxTimeLast = Date.now();
447
+ // Convert to Base64
448
+ const msgFrameBase64 = RaftUtils_1.default.btoa(msg);
449
+ try {
450
+ if (!this._connectedDeviceServiceUUID) {
451
+ RaftLog_1.default.warn('BLEChannel sendTxMsgNoAwait - no connected device service UUID');
452
+ return false;
453
+ }
454
+ this._bleDevice.writeCharacteristicWithoutResponseForService(this._connectedDeviceServiceUUID, this._cmdUUID, msgFrameBase64);
455
+ return true;
456
+ }
457
+ catch (_a) {
458
+ if (retryIdx === this.maxRetries - 1) {
459
+ RaftLog_1.default.debug(`sendTxMsgNoAwait failed after ${this.maxRetries} attempts`);
460
+ return false;
461
+ }
462
+ RaftLog_1.default.debug(`sendTxMsgNoAwait failed, retrying`);
463
+ }
464
+ }
465
+ return false;
466
+ }
467
+ // RICREST command before disconnect
468
+ ricRestCmdBeforeDisconnect() {
469
+ return "bledisconnect";
470
+ }
471
+ // Method used for testing and simulation should never be called
472
+ sendTxMsgRaw() {
473
+ RaftLog_1.default.debug(`sendTxMsgRaw - not implemented`);
474
+ return false;
475
+ }
476
+ // Method used for testing and simulation should never be called
477
+ sendTxMsgRawAndWaitForReply() {
478
+ RaftLog_1.default.debug(`sendTxMsgRawAndWaitForReply - not implemented`);
479
+ return null;
480
+ }
481
+ }
482
+ exports.default = RaftChannelPhoneBLE;
483
+ //# sourceMappingURL=RaftChannelBLE.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftChannelBLE.native.js","sourceRoot":"","sources":["../../src/RaftChannelBLE.native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import RaftChannel from "./RaftChannel";
2
+ import { RaftConnEventFn } from "./RaftConnEvents";
3
+ import RaftMsgHandler from "./RaftMsgHandler";
4
+ import { ConnectorOptions } from "./RaftSystemType";
5
+ export default class RaftChannelBLE implements RaftChannel {
6
+ _cmdUUID: string;
7
+ _respUUID: string;
8
+ _serviceUUIDs: string[];
9
+ private _bleDevice;
10
+ private _characteristicTx;
11
+ private _characteristicRx;
12
+ private _raftMsgHandler;
13
+ private _onConnEvent;
14
+ private _msgTxTimeLast;
15
+ private _msgTxMinTimeBetweenMs;
16
+ private readonly maxRetries;
17
+ private _isConnected;
18
+ private readonly _maxConnRetries;
19
+ private _eventListenerFn;
20
+ private _requestedBatchAckSize;
21
+ private _requestedFileBlockSize;
22
+ fhBatchAckSize(): number;
23
+ fhFileBlockSize(): number;
24
+ setMsgHandler(raftMsgHandler: RaftMsgHandler): void;
25
+ requiresSubscription(): boolean;
26
+ ricRestCmdBeforeDisconnect(): string | null;
27
+ isEnabled(): boolean;
28
+ isConnected(): boolean;
29
+ setOnConnEvent(connEventFn: RaftConnEventFn): void;
30
+ onDisconnected(event: Event): void;
31
+ getConnectedLocator(): string | object;
32
+ connect(locator: string | object, _connectorOptions: ConnectorOptions): Promise<boolean>;
33
+ disconnect(): Promise<void>;
34
+ pauseConnection(pause: boolean): void;
35
+ _onMsgRx(event: Event): void;
36
+ sendTxMsg(msg: Uint8Array): Promise<boolean>;
37
+ sendTxMsgNoAwait(msg: Uint8Array): Promise<boolean>;
38
+ sendTxMsgRaw(): boolean;
39
+ sendTxMsgRawAndWaitForReply<T>(): T;
40
+ }