@robdobsn/raftjs 1.7.1 → 1.7.3

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 (205) hide show
  1. package/dist/web/RaftAttributeHandler.js +5 -5
  2. package/dist/web/RaftAttributeHandler.js.map +1 -1
  3. package/dist/web/RaftChannel.d.ts +2 -0
  4. package/dist/web/RaftChannelBLE.web.d.ts +2 -0
  5. package/dist/web/RaftChannelBLE.web.js +10 -0
  6. package/dist/web/RaftChannelBLE.web.js.map +1 -1
  7. package/dist/{react-native/RaftChannelWebSocket.d.ts → web/RaftChannelSimulated.d.ts} +9 -5
  8. package/dist/web/RaftChannelSimulated.js +418 -0
  9. package/dist/web/RaftChannelSimulated.js.map +1 -0
  10. package/dist/web/RaftChannelWebSerial.d.ts +2 -0
  11. package/dist/web/RaftChannelWebSerial.js +10 -0
  12. package/dist/web/RaftChannelWebSerial.js.map +1 -1
  13. package/dist/web/RaftChannelWebSocket.d.ts +2 -0
  14. package/dist/web/RaftChannelWebSocket.js +10 -0
  15. package/dist/web/RaftChannelWebSocket.js.map +1 -1
  16. package/dist/web/RaftConnector.js +5 -0
  17. package/dist/web/RaftConnector.js.map +1 -1
  18. package/dist/web/RaftDeviceInfo.d.ts +1 -1
  19. package/dist/web/RaftMsgHandler.d.ts +5 -0
  20. package/dist/web/RaftMsgHandler.js +32 -0
  21. package/dist/web/RaftMsgHandler.js.map +1 -1
  22. package/dist/web/main.d.ts +1 -0
  23. package/dist/web/main.js +3 -1
  24. package/dist/web/main.js.map +1 -1
  25. package/package.json +5 -2
  26. package/.editorconfig +0 -14
  27. package/.gitattributes +0 -11
  28. package/.nvmrc +0 -1
  29. package/TODO.md +0 -1
  30. package/dist/react-native/RaftAttributeHandler.d.ts +0 -12
  31. package/dist/react-native/RaftAttributeHandler.js +0 -249
  32. package/dist/react-native/RaftAttributeHandler.js.map +0 -1
  33. package/dist/react-native/RaftChannel.d.ts +0 -18
  34. package/dist/react-native/RaftChannel.js +0 -12
  35. package/dist/react-native/RaftChannel.js.map +0 -1
  36. package/dist/react-native/RaftChannelBLE.native.d.ts +0 -93
  37. package/dist/react-native/RaftChannelBLE.native.js +0 -472
  38. package/dist/react-native/RaftChannelBLE.native.js.map +0 -1
  39. package/dist/react-native/RaftChannelBLE.web.d.ts +0 -38
  40. package/dist/react-native/RaftChannelBLE.web.js +0 -290
  41. package/dist/react-native/RaftChannelBLE.web.js.map +0 -1
  42. package/dist/react-native/RaftChannelBLEFactory.d.ts +0 -10
  43. package/dist/react-native/RaftChannelBLEFactory.js +0 -17
  44. package/dist/react-native/RaftChannelBLEFactory.js.map +0 -1
  45. package/dist/react-native/RaftChannelBLEScanner.native.d.ts +0 -18
  46. package/dist/react-native/RaftChannelBLEScanner.native.js +0 -138
  47. package/dist/react-native/RaftChannelBLEScanner.native.js.map +0 -1
  48. package/dist/react-native/RaftChannelWebSerial.d.ts +0 -37
  49. package/dist/react-native/RaftChannelWebSerial.js +0 -319
  50. package/dist/react-native/RaftChannelWebSerial.js.map +0 -1
  51. package/dist/react-native/RaftChannelWebSocket.js +0 -197
  52. package/dist/react-native/RaftChannelWebSocket.js.map +0 -1
  53. package/dist/react-native/RaftCommsStats.d.ts +0 -39
  54. package/dist/react-native/RaftCommsStats.js +0 -128
  55. package/dist/react-native/RaftCommsStats.js.map +0 -1
  56. package/dist/react-native/RaftConnEvents.d.ts +0 -39
  57. package/dist/react-native/RaftConnEvents.js +0 -54
  58. package/dist/react-native/RaftConnEvents.js.map +0 -1
  59. package/dist/react-native/RaftConnector.d.ts +0 -245
  60. package/dist/react-native/RaftConnector.js +0 -616
  61. package/dist/react-native/RaftConnector.js.map +0 -1
  62. package/dist/react-native/RaftCustomAttrHandler.d.ts +0 -4
  63. package/dist/react-native/RaftCustomAttrHandler.js +0 -50
  64. package/dist/react-native/RaftCustomAttrHandler.js.map +0 -1
  65. package/dist/react-native/RaftDeviceInfo.d.ts +0 -63
  66. package/dist/react-native/RaftDeviceInfo.js +0 -36
  67. package/dist/react-native/RaftDeviceInfo.js.map +0 -1
  68. package/dist/react-native/RaftDeviceManager.d.ts +0 -40
  69. package/dist/react-native/RaftDeviceManager.js +0 -499
  70. package/dist/react-native/RaftDeviceManager.js.map +0 -1
  71. package/dist/react-native/RaftDeviceMgrIF.d.ts +0 -15
  72. package/dist/react-native/RaftDeviceMgrIF.js +0 -11
  73. package/dist/react-native/RaftDeviceMgrIF.js.map +0 -1
  74. package/dist/react-native/RaftDeviceMsg.d.ts +0 -9
  75. package/dist/react-native/RaftDeviceMsg.js +0 -11
  76. package/dist/react-native/RaftDeviceMsg.js.map +0 -1
  77. package/dist/react-native/RaftDeviceStates.d.ts +0 -37
  78. package/dist/react-native/RaftDeviceStates.js +0 -60
  79. package/dist/react-native/RaftDeviceStates.js.map +0 -1
  80. package/dist/react-native/RaftFileHandler.d.ts +0 -52
  81. package/dist/react-native/RaftFileHandler.js +0 -502
  82. package/dist/react-native/RaftFileHandler.js.map +0 -1
  83. package/dist/react-native/RaftLog.d.ts +0 -22
  84. package/dist/react-native/RaftLog.js +0 -63
  85. package/dist/react-native/RaftLog.js.map +0 -1
  86. package/dist/react-native/RaftMiniHDLC.d.ts +0 -18
  87. package/dist/react-native/RaftMiniHDLC.js +0 -383
  88. package/dist/react-native/RaftMiniHDLC.js.map +0 -1
  89. package/dist/react-native/RaftMsgHandler.d.ts +0 -57
  90. package/dist/react-native/RaftMsgHandler.js +0 -479
  91. package/dist/react-native/RaftMsgHandler.js.map +0 -1
  92. package/dist/react-native/RaftMsgTrackInfo.d.ts +0 -17
  93. package/dist/react-native/RaftMsgTrackInfo.js +0 -42
  94. package/dist/react-native/RaftMsgTrackInfo.js.map +0 -1
  95. package/dist/react-native/RaftProtocolDefs.d.ts +0 -30
  96. package/dist/react-native/RaftProtocolDefs.js +0 -48
  97. package/dist/react-native/RaftProtocolDefs.js.map +0 -1
  98. package/dist/react-native/RaftStreamHandler.d.ts +0 -38
  99. package/dist/react-native/RaftStreamHandler.js +0 -257
  100. package/dist/react-native/RaftStreamHandler.js.map +0 -1
  101. package/dist/react-native/RaftStruct.d.ts +0 -3
  102. package/dist/react-native/RaftStruct.js +0 -208
  103. package/dist/react-native/RaftStruct.js.map +0 -1
  104. package/dist/react-native/RaftSysTypeManager.d.ts +0 -14
  105. package/dist/react-native/RaftSysTypeManager.js +0 -53
  106. package/dist/react-native/RaftSysTypeManager.js.map +0 -1
  107. package/dist/react-native/RaftSystemType.d.ts +0 -28
  108. package/dist/react-native/RaftSystemType.js +0 -3
  109. package/dist/react-native/RaftSystemType.js.map +0 -1
  110. package/dist/react-native/RaftSystemUtils.d.ts +0 -136
  111. package/dist/react-native/RaftSystemUtils.js +0 -410
  112. package/dist/react-native/RaftSystemUtils.js.map +0 -1
  113. package/dist/react-native/RaftTypes.d.ts +0 -194
  114. package/dist/react-native/RaftTypes.js +0 -153
  115. package/dist/react-native/RaftTypes.js.map +0 -1
  116. package/dist/react-native/RaftUpdateEvents.d.ts +0 -33
  117. package/dist/react-native/RaftUpdateEvents.js +0 -46
  118. package/dist/react-native/RaftUpdateEvents.js.map +0 -1
  119. package/dist/react-native/RaftUpdateManager.d.ts +0 -61
  120. package/dist/react-native/RaftUpdateManager.js +0 -621
  121. package/dist/react-native/RaftUpdateManager.js.map +0 -1
  122. package/dist/react-native/RaftUtils.d.ts +0 -126
  123. package/dist/react-native/RaftUtils.js +0 -467
  124. package/dist/react-native/RaftUtils.js.map +0 -1
  125. package/dist/react-native/RaftWifiTypes.d.ts +0 -23
  126. package/dist/react-native/RaftWifiTypes.js +0 -43
  127. package/dist/react-native/RaftWifiTypes.js.map +0 -1
  128. package/dist/react-native/main.d.ts +0 -24
  129. package/dist/react-native/main.js +0 -49
  130. package/dist/react-native/main.js.map +0 -1
  131. package/eslint.config.mjs +0 -33
  132. package/examples/dashboard/package.json +0 -36
  133. package/examples/dashboard/src/CommandPanel.tsx +0 -147
  134. package/examples/dashboard/src/ConnManager.ts +0 -164
  135. package/examples/dashboard/src/DeviceActionsForm.tsx +0 -133
  136. package/examples/dashboard/src/DeviceAttrsForm.tsx +0 -49
  137. package/examples/dashboard/src/DeviceLineChart.tsx +0 -163
  138. package/examples/dashboard/src/DevicePanel.tsx +0 -166
  139. package/examples/dashboard/src/DevicesPanel.tsx +0 -58
  140. package/examples/dashboard/src/DispLedGrid.tsx +0 -110
  141. package/examples/dashboard/src/DispOneLed.tsx +0 -20
  142. package/examples/dashboard/src/LatencyTest.ts +0 -130
  143. package/examples/dashboard/src/LatencyTestPanel.tsx +0 -92
  144. package/examples/dashboard/src/Main.tsx +0 -234
  145. package/examples/dashboard/src/SettingsManager.ts +0 -67
  146. package/examples/dashboard/src/SettingsScreen.tsx +0 -174
  147. package/examples/dashboard/src/StatusPanel.tsx +0 -71
  148. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +0 -163
  149. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +0 -91
  150. package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +0 -30
  151. package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +0 -91
  152. package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +0 -70
  153. package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +0 -33
  154. package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +0 -342
  155. package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +0 -170
  156. package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +0 -123
  157. package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +0 -207
  158. package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +0 -464
  159. package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +0 -146
  160. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +0 -97
  161. package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +0 -371
  162. package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +0 -20
  163. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +0 -119
  164. package/examples/dashboard/src/index.html +0 -15
  165. package/examples/dashboard/src/index.tsx +0 -13
  166. package/examples/dashboard/src/styles.css +0 -408
  167. package/examples/dashboard/tsconfig.json +0 -18
  168. package/jest.config.js +0 -11
  169. package/src/RaftAttributeHandler.ts +0 -298
  170. package/src/RaftChannel.ts +0 -30
  171. package/src/RaftChannelBLE.native.ts +0 -604
  172. package/src/RaftChannelBLE.web.ts +0 -359
  173. package/src/RaftChannelBLEFactory.ts +0 -13
  174. package/src/RaftChannelBLEScanner.native.ts +0 -184
  175. package/src/RaftChannelWebSerial.ts +0 -408
  176. package/src/RaftChannelWebSocket.ts +0 -245
  177. package/src/RaftCommsStats.ts +0 -142
  178. package/src/RaftConnEvents.ts +0 -58
  179. package/src/RaftConnector.ts +0 -739
  180. package/src/RaftCustomAttrHandler.ts +0 -54
  181. package/src/RaftDeviceInfo.ts +0 -102
  182. package/src/RaftDeviceManager.ts +0 -607
  183. package/src/RaftDeviceMgrIF.ts +0 -33
  184. package/src/RaftDeviceMsg.ts +0 -20
  185. package/src/RaftDeviceStates.ts +0 -92
  186. package/src/RaftFileHandler.ts +0 -668
  187. package/src/RaftLog.ts +0 -70
  188. package/src/RaftMiniHDLC.ts +0 -396
  189. package/src/RaftMsgHandler.ts +0 -777
  190. package/src/RaftMsgTrackInfo.ts +0 -51
  191. package/src/RaftProtocolDefs.ts +0 -46
  192. package/src/RaftStreamHandler.ts +0 -328
  193. package/src/RaftStruct.ts +0 -209
  194. package/src/RaftSysTypeManager.ts +0 -60
  195. package/src/RaftSystemType.ts +0 -32
  196. package/src/RaftSystemUtils.ts +0 -487
  197. package/src/RaftTypes.ts +0 -278
  198. package/src/RaftUpdateEvents.ts +0 -48
  199. package/src/RaftUpdateManager.ts +0 -781
  200. package/src/RaftUtils.ts +0 -494
  201. package/src/RaftWifiTypes.ts +0 -36
  202. package/src/main.ts +0 -37
  203. package/testdata/TestDeviceTypeRecs.json +0 -492
  204. package/tsconfig.json +0 -30
  205. package/tsconfig.react-native.json +0 -29
@@ -1,616 +0,0 @@
1
- "use strict";
2
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
- //
4
- // RaftConnector
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 RaftMsgHandler_1 = tslib_1.__importDefault(require("./RaftMsgHandler"));
14
- const RaftChannelWebSocket_1 = tslib_1.__importDefault(require("./RaftChannelWebSocket"));
15
- const RaftChannelWebSerial_1 = tslib_1.__importDefault(require("./RaftChannelWebSerial"));
16
- const RaftCommsStats_1 = tslib_1.__importDefault(require("./RaftCommsStats"));
17
- const RaftTypes_1 = require("./RaftTypes");
18
- const RaftSystemUtils_1 = tslib_1.__importDefault(require("./RaftSystemUtils"));
19
- const RaftFileHandler_1 = tslib_1.__importDefault(require("./RaftFileHandler"));
20
- const RaftStreamHandler_1 = tslib_1.__importDefault(require("./RaftStreamHandler"));
21
- const RaftLog_1 = tslib_1.__importDefault(require("./RaftLog"));
22
- const RaftConnEvents_1 = require("./RaftConnEvents");
23
- const RaftUpdateEvents_1 = require("./RaftUpdateEvents");
24
- const RaftUpdateManager_1 = tslib_1.__importDefault(require("./RaftUpdateManager"));
25
- const RaftChannelBLEFactory_1 = require("./RaftChannelBLEFactory");
26
- class RaftConnector {
27
- /**
28
- * RaftConnector constructor
29
- * @param getSystemTypeCB - callback to get system type
30
- */
31
- constructor(getSystemTypeCB = null) {
32
- // Get system type callback
33
- this._getSystemTypeCB = null;
34
- // System type
35
- this._systemType = null;
36
- // Channel
37
- this._raftChannel = null;
38
- // Channel connection method and locator
39
- this._channelConnMethod = "";
40
- this._channelConnLocator = "";
41
- // Comms stats
42
- this._commsStats = new RaftCommsStats_1.default();
43
- // Message handler
44
- this._raftMsgHandler = new RaftMsgHandler_1.default(this._commsStats);
45
- // RaftSystem
46
- this._raftSystemUtils = new RaftSystemUtils_1.default(this._raftMsgHandler);
47
- // Connection performance checker
48
- this._testConnPerfBlockSize = 500;
49
- this._testConnPerfNumBlocks = 50;
50
- this._connPerfRsltDelayMs = 4000;
51
- // Retry connection if lost
52
- this._retryIfLostEnabled = true;
53
- this._retryIfLostForSecs = 10;
54
- this._retryIfLostIsConnected = false;
55
- this._retryIfLostDisconnectTime = null;
56
- this._retryIfLostRetryDelayMs = 500;
57
- // File handler
58
- this._raftFileHandler = new RaftFileHandler_1.default(this._raftMsgHandler, this._commsStats);
59
- // Stream handler
60
- this._raftStreamHandler = new RaftStreamHandler_1.default(this._raftMsgHandler, this._commsStats, this);
61
- // Event listener
62
- this._onEventFn = null;
63
- // Update manager
64
- this._raftUpdateManager = null;
65
- // Get system type callback
66
- this._getSystemTypeCB = getSystemTypeCB;
67
- // Debug
68
- RaftLog_1.default.debug('RaftConnector starting up');
69
- }
70
- /**
71
- * Configure the file handler
72
- * @param fileBlockSize - size of file blocks to send
73
- * @param batchAckSize - number of blocks to send before waiting for ack
74
- * @returns void
75
- */
76
- configureFileHandler(fileBlockSize, batchAckSize) {
77
- this._raftFileHandler.setRequestedFileBlockSize(fileBlockSize);
78
- this._raftFileHandler.setRequestedBatchAckSize(batchAckSize);
79
- }
80
- /**
81
- * Set event listener
82
- * @param onEventFn - event listener
83
- * @returns void
84
- * */
85
- setEventListener(onEventFn) {
86
- this._onEventFn = onEventFn;
87
- }
88
- /**
89
- * isConnected
90
- * @returns boolean - true if connected
91
- * */
92
- isConnected() {
93
- // Check if connected
94
- const isConnected = this._retryIfLostIsConnected || (this._raftChannel ? this._raftChannel.isConnected() : false);
95
- return isConnected;
96
- }
97
- /**
98
- * Set try to reconnect if connection lost
99
- * @param enableRetry - true to enable retry
100
- * @param retryForSecs - retry for this many seconds
101
- * @returns void
102
- * */
103
- setRetryConnectionIfLost(enableRetry, retryForSecs) {
104
- this._retryIfLostEnabled = enableRetry;
105
- this._retryIfLostForSecs = retryForSecs;
106
- if (!this._retryIfLostEnabled) {
107
- this._retryIfLostIsConnected = false;
108
- }
109
- RaftLog_1.default.debug(`setRetryConnectionIfLost ${enableRetry} retry for ${retryForSecs}`);
110
- }
111
- /**
112
- * Get Raft system type (the type of hardware connected to - determined using the getSystemInfo API)
113
- * @returns RaftSystemType | null - Raft system type
114
- * */
115
- getSystemType() {
116
- return this._systemType;
117
- }
118
- /**
119
- * Get connection method
120
- * @returns string - connection method
121
- * */
122
- getConnMethod() {
123
- return this._channelConnMethod;
124
- }
125
- /**
126
- * Get connection locator
127
- * @returns string | object - connection locator
128
- * */
129
- getConnLocator() {
130
- return this._raftChannel ? this._raftChannel.getConnectedLocator() : null;
131
- }
132
- /**
133
- * Get Raft channel (this is the channel used for commuinications with the Raft application)
134
- * @returns RaftChannel | null - Raft channel
135
- * */
136
- getRaftChannel() {
137
- return this._raftChannel;
138
- }
139
- /**
140
- * Get Raft system utils (access to system information and control)
141
- * @returns RaftSystemUtils - Raft system utils
142
- * */
143
- getRaftSystemUtils() {
144
- return this._raftSystemUtils;
145
- }
146
- /**
147
- * Get communication stats
148
- * @returns RaftCommsStats - communication stats
149
- * */
150
- getCommsStats() {
151
- return this._commsStats;
152
- }
153
- /**
154
- * Get Raft message handler (to allow message sending and receiving)
155
- * @returns RaftMsgHandler - Raft message handler
156
- * */
157
- getRaftMsgHandler() {
158
- return this._raftMsgHandler;
159
- }
160
- /**
161
- * Pause connection
162
- * @param pause - true to pause, false to resume
163
- */
164
- pauseConnection(pause = true) {
165
- if (this._raftChannel)
166
- this._raftChannel.pauseConnection(pause);
167
- }
168
- /**
169
- * Initialize the Raft channel
170
- */
171
- async initializeChannel(method) {
172
- // Initialize raft channel
173
- if (method === 'WebBLE' || method === 'PhoneBLE') {
174
- const RaftChannelBLE = (0, RaftChannelBLEFactory_1.createBLEChannel)();
175
- this._raftChannel = new RaftChannelBLE();
176
- this._channelConnMethod = method;
177
- }
178
- else if (method === 'WebSocket' || method === 'wifi') {
179
- this._raftChannel = new RaftChannelWebSocket_1.default();
180
- this._channelConnMethod = 'WebSocket';
181
- }
182
- else if (method === 'WebSerial') {
183
- this._raftChannel = new RaftChannelWebSerial_1.default();
184
- this._channelConnMethod = 'WebSerial';
185
- }
186
- else {
187
- RaftLog_1.default.error('Unknown method: ' + method);
188
- return false;
189
- }
190
- // Check channel established
191
- if (this._raftChannel !== null) {
192
- // Set message handler
193
- this._raftChannel.setMsgHandler(this._raftMsgHandler);
194
- this._raftChannel.setOnConnEvent(this.onConnEvent.bind(this));
195
- // Message handling in and out
196
- this._raftMsgHandler.registerForResults(this);
197
- this._raftMsgHandler.registerMsgSender(this._raftChannel);
198
- return true;
199
- }
200
- else {
201
- this._channelConnMethod = "";
202
- return false;
203
- }
204
- }
205
- /**
206
- * Connect to a Raft device
207
- *
208
- * @param {string | object} locator - either a string (WebSocket URL or serial port) or an object (WebBLE)
209
- * @returns Promise<boolean>
210
- *
211
- */
212
- async connect(locator) {
213
- if (!this._raftChannel) {
214
- RaftLog_1.default.error('Raft channel is not initialized.');
215
- return false;
216
- }
217
- // Store locator
218
- this._channelConnLocator = locator;
219
- // Connect
220
- let connOk = false;
221
- try {
222
- // Event
223
- this.onConnEvent(RaftConnEvents_1.RaftConnEvent.CONN_CONNECTING);
224
- // Connect
225
- connOk = await this._connectToChannel();
226
- }
227
- catch (err) {
228
- RaftLog_1.default.error('RaftConnector.connect - error: ' + err);
229
- }
230
- if (connOk) {
231
- // Get system type
232
- if (this._getSystemTypeCB) {
233
- // Get system type
234
- this._systemType = await this._getSystemTypeCB(this._raftSystemUtils);
235
- // Set defaults
236
- if (this._systemType) {
237
- this._raftSystemUtils.setDefaultWiFiHostname(this._systemType.defaultWiFiHostname);
238
- }
239
- }
240
- // Setup system type
241
- if (this._systemType) {
242
- this._systemType.setup(this._raftSystemUtils, this._onEventFn);
243
- }
244
- // Check if subscription required
245
- if (this._systemType &&
246
- this._systemType.subscribeForUpdates &&
247
- this._raftChannel.requiresSubscription()) {
248
- try {
249
- // Subscription
250
- await this._systemType.subscribeForUpdates(this._raftSystemUtils, true);
251
- RaftLog_1.default.info(`connect subscribed for updates`);
252
- }
253
- catch (error) {
254
- RaftLog_1.default.warn(`connect subscribe for updates failed ${error}`);
255
- }
256
- }
257
- // Send connected event
258
- this.onConnEvent(RaftConnEvents_1.RaftConnEvent.CONN_CONNECTED);
259
- }
260
- else {
261
- // Failed Event
262
- this.onConnEvent(RaftConnEvents_1.RaftConnEvent.CONN_CONNECTION_FAILED);
263
- // configure file handler
264
- this.configureFileHandler(this._raftChannel.fhFileBlockSize(), this._raftChannel.fhBatchAckSize());
265
- }
266
- return connOk;
267
- }
268
- async disconnect() {
269
- // Disconnect
270
- this._retryIfLostIsConnected = false;
271
- if (this._raftChannel) {
272
- // Check if there is a RICREST command to send before disconnecting
273
- const ricRestCommand = this._raftChannel.ricRestCmdBeforeDisconnect();
274
- if (ricRestCommand) {
275
- console.log(`sending RICREST command before disconnect: ${ricRestCommand}`);
276
- await this.sendRICRESTMsg(ricRestCommand, {});
277
- }
278
- // Pause a little before disconnecting
279
- await new Promise(resolve => setTimeout(resolve, 1000));
280
- // await this.sendRICRESTMsg("bledisc", {});
281
- await this._raftChannel.disconnect();
282
- this._raftChannel = null;
283
- }
284
- }
285
- // Mark: Tx Message handling -----------------------------------------------------------------------------------------
286
- /**
287
- *
288
- * sendRICRESTMsg
289
- * @param commandName command API string
290
- * @param params parameters (simple name value pairs only) to parameterize trajectory
291
- * @returns Promise<RaftOKFail>
292
- *
293
- */
294
- async sendRICRESTMsg(commandName, params, bridgeID = undefined) {
295
- try {
296
- // Format the paramList as query string
297
- const paramEntries = Object.entries(params);
298
- let paramQueryStr = '';
299
- for (const param of paramEntries) {
300
- if (paramQueryStr.length > 0)
301
- paramQueryStr += '&';
302
- paramQueryStr += param[0] + '=' + param[1];
303
- }
304
- // Format the url to send
305
- if (paramQueryStr.length > 0)
306
- commandName += '?' + paramQueryStr;
307
- return await this._raftMsgHandler.sendRICRESTURL(commandName, bridgeID);
308
- }
309
- catch (error) {
310
- RaftLog_1.default.warn(`sendRICRESTMsg failed ${error}`);
311
- return { rslt: 'fail' };
312
- }
313
- }
314
- // Mark: Rx Message handling -----------------------------------------------------------------------------------------
315
- /**
316
- * onRxReply - handle a reply message
317
- * @param msgHandle number indicating the message that is being replied to (from the original message)
318
- * @param msgRsltCode result code
319
- * @param msgRsltJsonObj result object
320
- */
321
- onRxReply(msgHandle, msgRsltCode, msgRsltJsonObj) {
322
- RaftLog_1.default.verbose(`onRxReply msgHandle ${msgHandle} rsltCode ${msgRsltCode} obj ${JSON.stringify(msgRsltJsonObj)}`);
323
- }
324
- /**
325
- * onRxUnnumberedMsg - handle an unnumbered message
326
- * @param msgRsltJsonObj result object
327
- */
328
- onRxUnnumberedMsg(msgRsltJsonObj) {
329
- RaftLog_1.default.verbose(`onRxUnnumberedMsg rsltCode obj ${JSON.stringify(msgRsltJsonObj)}`);
330
- // Inform the file handler
331
- if ('okto' in msgRsltJsonObj) {
332
- this._raftFileHandler.onOktoMsg(msgRsltJsonObj.okto);
333
- }
334
- else if ('sokto' in msgRsltJsonObj) {
335
- this._raftStreamHandler.onSoktoMsg(msgRsltJsonObj.sokto);
336
- }
337
- }
338
- /**
339
- * onRxFileBlock - handle a file block
340
- * @param filePos file position
341
- * @param fileBlockData file block data
342
- */
343
- onRxFileBlock(filePos, fileBlockData) {
344
- // RaftLog.info(`onRxFileBlock filePos ${filePos} fileBlockData ${RaftUtils.bufferToHex(fileBlockData)}`);
345
- this._raftFileHandler.onFileBlock(filePos, fileBlockData);
346
- }
347
- // Mark: Handling of other message types -----------------------------------------------------------------------------------------
348
- /**
349
- * onRxOtherMsgType - handle other message types
350
- * @param payload message payload
351
- * @param frameTimeMs time of frame
352
- */
353
- onRxOtherMsgType(payload, _frameTimeMs) {
354
- // RaftLog.debug(`onRxOtherMsgType payload ${RaftUtils.bufferToHex(payload)}`);
355
- RaftLog_1.default.verbose(`onRxOtherMsgType payloadLen ${payload.length}`);
356
- // Handle other messages
357
- if (this._systemType && this._systemType.rxOtherMsgType) {
358
- this._systemType.rxOtherMsgType(payload, _frameTimeMs);
359
- }
360
- }
361
- // Mark: File sending --------------------------------------------------------------------------------
362
- /**
363
- * sendFile - send a file
364
- * @param fileName name of file to send
365
- * @param fileContents file contents
366
- * @param progressCallback callback to receive progress updates
367
- * @returns Promise<boolean> - true if file sent successfully
368
- */
369
- async sendFile(fileName, fileContents, progressCallback) {
370
- return this._raftFileHandler.fileSend(fileName, RaftTypes_1.RaftFileSendType.NORMAL_FILE, "fs", fileContents, progressCallback);
371
- }
372
- // Mark: Streaming --------------------------------------------------------------------------------
373
- /**
374
- * streamAudio - stream audio
375
- * @param streamContents audio data
376
- * @param clearExisting true to clear existing audio
377
- * @param duration duration of audio
378
- */
379
- streamAudio(streamContents, clearExisting, duration) {
380
- if (this._raftStreamHandler && this.isConnected()) {
381
- this._raftStreamHandler.streamAudio(streamContents, clearExisting, duration);
382
- }
383
- }
384
- /**
385
- * isStreamStarting - check if stream is starting
386
- */
387
- isStreamStarting() {
388
- return this._raftStreamHandler.isStreamStarting();
389
- }
390
- // Mark: File system --------------------------------------------------------------------------------
391
- /**
392
- * fsGetContents - get file contents
393
- * @param fileName name of file to get
394
- * @param fileSource source of file to get (e.g. "fs" or "bridgeserial1", if omitted defaults to "fs")
395
- * @param progressCallback callback to receive progress updates
396
- * @returns Promise<RaftFileDownloadResult>
397
- */
398
- async fsGetContents(fileName, fileSource, progressCallback) {
399
- return await this._raftFileHandler.fileReceive(fileName, fileSource, progressCallback);
400
- }
401
- /**
402
- * setLegacySoktoMode - set legacy sokto mode
403
- * @param legacyMode true to set legacy mode
404
- */
405
- setLegacySoktoMode(legacyMode) {
406
- return this._raftStreamHandler.setLegacySoktoMode(legacyMode);
407
- }
408
- // Mark: Bridge serial --------------------------------------------------------------------------------
409
- /**
410
- * createCommsBridge - create a comms bridge
411
- * @param bridgeSource source of bridge (e.g. "Serial1")
412
- * @param bridgeName name of bridge
413
- * @param idleCloseSecs idle close time seconds
414
- * @returns Promise<RaftBridgeSetupResp>
415
- */
416
- async createCommsBridge(bridgeSource, bridgeName, idleCloseSecs = 0) {
417
- return await this._raftMsgHandler.createCommsBridge(bridgeSource, bridgeName, idleCloseSecs);
418
- }
419
- // Mark: Connection performance--------------------------------------------------------------------------
420
- /**
421
- * ParkMiller random number generator
422
- * @param seed
423
- * @returns number
424
- */
425
- parkmiller_next(seed) {
426
- const hi = Math.round(16807 * (seed & 0xffff));
427
- let lo = Math.round(16807 * (seed >> 16));
428
- lo += (hi & 0x7fff) << 16;
429
- lo += hi >> 15;
430
- if (lo > 0x7fffffff)
431
- lo -= 0x7fffffff;
432
- return lo;
433
- }
434
- /**
435
- * checkConnPerformance - check connection performance
436
- * @returns Promise<number | undefined> - connection performance
437
- */
438
- async checkConnPerformance() {
439
- // Sends a magic sequence of bytes followed by blocks of random data
440
- // these will be ignored by the Raft library (as it recognises magic sequence)
441
- // and is used performance evaluation
442
- let prbsState = 1;
443
- const testData = new Uint8Array(this._testConnPerfBlockSize);
444
- for (let i = 0; i < this._testConnPerfNumBlocks; i++) {
445
- testData.set([0, (i >> 24) & 0xff, (i >> 16) & 0xff, (i >> 8) & 0xff, i & 0xff, 0x1f, 0x9d, 0xf4, 0x7a, 0xb5]);
446
- for (let j = 10; j < this._testConnPerfBlockSize; j++) {
447
- prbsState = this.parkmiller_next(prbsState);
448
- testData[j] = prbsState & 0xff;
449
- }
450
- if (this._raftChannel) {
451
- await this._raftChannel.sendTxMsg(testData, false);
452
- }
453
- }
454
- // Wait a little to allow the Raft app to process the data
455
- await new Promise(resolve => setTimeout(resolve, this._connPerfRsltDelayMs));
456
- // Get performance
457
- const blePerf = await this._raftSystemUtils.getSysModInfoBLEMan();
458
- if (blePerf) {
459
- console.log(`checkConnPerformance result rate = ${blePerf.tBPS}BytesPS`);
460
- return blePerf.tBPS;
461
- }
462
- else {
463
- throw new Error('checkConnPerformance: failed to get BLE performance');
464
- }
465
- }
466
- // Mark: Connection event --------------------------------------------------------------------------
467
- /**
468
- * onConnEvent - handle connection event
469
- * @param eventEnum connection event enumeration
470
- * @param data data associated with event
471
- * @returns void
472
- */
473
- onConnEvent(eventEnum, data = undefined) {
474
- // Handle information clearing on disconnect
475
- switch (eventEnum) {
476
- case RaftConnEvents_1.RaftConnEvent.CONN_DISCONNECTED:
477
- // Disconnect time
478
- this._retryIfLostDisconnectTime = Date.now();
479
- // Check if retry required
480
- if (this._retryIfLostIsConnected && this._retryIfLostEnabled) {
481
- // Indicate connection disrupted
482
- if (this._onEventFn) {
483
- this._onEventFn("conn", RaftConnEvents_1.RaftConnEvent.CONN_ISSUE_DETECTED, RaftConnEvents_1.RaftConnEventNames[RaftConnEvents_1.RaftConnEvent.CONN_ISSUE_DETECTED]);
484
- }
485
- // Retry connection
486
- this._retryConnection();
487
- // Don't allow disconnection to propagate until retries have occurred
488
- return;
489
- }
490
- // Invalidate connection details
491
- this._raftSystemUtils.invalidate();
492
- // Invalidate system-type info
493
- if (this._systemType && this._systemType.stateIsInvalid) {
494
- this._systemType.stateIsInvalid();
495
- }
496
- break;
497
- }
498
- // Notify
499
- if (this._onEventFn) {
500
- this._onEventFn("conn", eventEnum, RaftConnEvents_1.RaftConnEventNames[eventEnum], data);
501
- }
502
- }
503
- /**
504
- * Retry connection
505
- */
506
- _retryConnection() {
507
- // Check timeout
508
- if ((this._retryIfLostDisconnectTime !== null) &&
509
- (Date.now() - this._retryIfLostDisconnectTime < this._retryIfLostForSecs * 1000)) {
510
- // Set timer to try to reconnect
511
- setTimeout(async () => {
512
- // Try to connect
513
- const isConn = await this._connectToChannel();
514
- if (!isConn) {
515
- this._retryConnection();
516
- }
517
- else {
518
- // No longer retrying
519
- this._retryIfLostDisconnectTime = null;
520
- // Indicate connection problem resolved
521
- if (this._onEventFn) {
522
- this._onEventFn("conn", RaftConnEvents_1.RaftConnEvent.CONN_ISSUE_RESOLVED, RaftConnEvents_1.RaftConnEventNames[RaftConnEvents_1.RaftConnEvent.CONN_ISSUE_RESOLVED]);
523
- }
524
- }
525
- }, this._retryIfLostRetryDelayMs);
526
- }
527
- else {
528
- // No longer connected after retry timeout
529
- this._retryIfLostIsConnected = false;
530
- // Indicate disconnection
531
- if (this._onEventFn) {
532
- this._onEventFn("conn", RaftConnEvents_1.RaftConnEvent.CONN_DISCONNECTED, RaftConnEvents_1.RaftConnEventNames[RaftConnEvents_1.RaftConnEvent.CONN_DISCONNECTED]);
533
- }
534
- // Invalidate connection details
535
- this._raftSystemUtils.invalidate();
536
- // Invalidate system-type info
537
- if (this._systemType && this._systemType.stateIsInvalid) {
538
- this._systemType.stateIsInvalid();
539
- }
540
- }
541
- }
542
- /**
543
- * Connect to channel
544
- * @returns Promise<boolean> - true if connected
545
- */
546
- async _connectToChannel() {
547
- // Connect
548
- try {
549
- if (this._raftChannel) {
550
- const connected = await this._raftChannel.connect(this._channelConnLocator, this._systemType ? this._systemType.connectorOptions : {});
551
- if (connected) {
552
- this._retryIfLostIsConnected = true;
553
- return true;
554
- }
555
- }
556
- }
557
- catch (error) {
558
- RaftLog_1.default.error(`RaftConnector.connect() error: ${error}`);
559
- }
560
- return false;
561
- }
562
- // Mark: OTA Update -----------------------------------------------------------------------------------------
563
- /**
564
- * onUpdateEvent - handle update event
565
- * @param eventEnum
566
- * @param data
567
- */
568
- _onUpdateEvent(eventEnum, data = undefined) {
569
- // Notify
570
- if (this._onEventFn) {
571
- this._onEventFn("ota", eventEnum, RaftUpdateEvents_1.RaftUpdateEventNames[eventEnum], data);
572
- }
573
- }
574
- /**
575
- * otaUpdateCheck - check for OTA update
576
- * @returns Promise<RaftUpdateEvent> - update event
577
- * */
578
- async otaUpdateCheck() {
579
- if (!this._raftUpdateManager)
580
- return RaftUpdateEvents_1.RaftUpdateEvent.UPDATE_NOT_CONFIGURED;
581
- return await this._raftUpdateManager.checkForUpdate(this._raftSystemUtils.getCachedSystemInfo());
582
- }
583
- /**
584
- * otaUpdateStart - start OTA update
585
- * @returns Promise<RaftUpdateEvent> - update event
586
- * */
587
- async otaUpdateStart() {
588
- if (!this._raftUpdateManager)
589
- return RaftUpdateEvents_1.RaftUpdateEvent.UPDATE_NOT_CONFIGURED;
590
- return await this._raftUpdateManager.firmwareUpdate();
591
- }
592
- /**
593
- * otaUpdateCancel - cancel OTA update
594
- * @returns Promise<void>
595
- * */
596
- async otaUpdateCancel() {
597
- if (!this._raftUpdateManager)
598
- return;
599
- return await this._raftUpdateManager.firmwareUpdateCancel();
600
- }
601
- /**
602
- * setupUpdateManager - setup the update manager
603
- * @param appVersion - app version
604
- * @param appUpdateURL - app update URL
605
- * @param firmwareBaseURL - firmware base URL
606
- * @param fileDownloader - file downloader
607
- * @returns void
608
- * */
609
- setupUpdateManager(appVersion, appUpdateURL, firmwareBaseURL, fileDownloader) {
610
- // Setup update manager
611
- const firmwareTypeStrForMainFw = 'main';
612
- this._raftUpdateManager = new RaftUpdateManager_1.default(this._systemType, this._raftMsgHandler, this._raftFileHandler, this._raftSystemUtils, this._onUpdateEvent.bind(this), firmwareTypeStrForMainFw, appVersion, fileDownloader, appUpdateURL, firmwareBaseURL, this._raftChannel);
613
- }
614
- }
615
- exports.default = RaftConnector;
616
- //# sourceMappingURL=RaftConnector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RaftConnector.js","sourceRoot":"","sources":["../../src/RaftConnector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { DeviceTypePollRespMetadata } from "./RaftDeviceInfo";
2
- export default class CustomAttrHandler {
3
- handleAttr(pollRespMetadata: DeviceTypePollRespMetadata, msgBuffer: Uint8Array, msgBufIdx: number): number[][];
4
- }