@robdobsn/raftjs 1.8.5 → 1.11.5

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 (240) 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 +1001 -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 +257 -0
  39. package/dist/react-native/RaftConnector.js +671 -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 +73 -0
  48. package/dist/react-native/RaftDeviceManager.js +812 -0
  49. package/dist/react-native/RaftDeviceManager.js.map +1 -0
  50. package/dist/react-native/RaftDeviceMgrIF.d.ts +19 -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 +55 -0
  57. package/dist/react-native/RaftDeviceStates.js +81 -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/RaftPublish.d.ts +2 -0
  78. package/dist/react-native/RaftPublish.js +81 -0
  79. package/dist/react-native/RaftPublish.js.map +1 -0
  80. package/dist/react-native/RaftStreamHandler.d.ts +49 -0
  81. package/dist/react-native/RaftStreamHandler.js +324 -0
  82. package/dist/react-native/RaftStreamHandler.js.map +1 -0
  83. package/dist/react-native/RaftStruct.d.ts +3 -0
  84. package/dist/react-native/RaftStruct.js +258 -0
  85. package/dist/react-native/RaftStruct.js.map +1 -0
  86. package/dist/react-native/RaftSysTypeManager.d.ts +16 -0
  87. package/dist/react-native/RaftSysTypeManager.js +78 -0
  88. package/dist/react-native/RaftSysTypeManager.js.map +1 -0
  89. package/dist/react-native/RaftSystemType.d.ts +30 -0
  90. package/dist/react-native/RaftSystemType.js +3 -0
  91. package/dist/react-native/RaftSystemType.js.map +1 -0
  92. package/dist/react-native/RaftSystemUtils.d.ts +152 -0
  93. package/dist/react-native/RaftSystemUtils.js +463 -0
  94. package/dist/react-native/RaftSystemUtils.js.map +1 -0
  95. package/dist/react-native/RaftTypes.d.ts +216 -0
  96. package/dist/react-native/RaftTypes.js +153 -0
  97. package/dist/react-native/RaftTypes.js.map +1 -0
  98. package/dist/react-native/RaftUpdateEvents.d.ts +33 -0
  99. package/dist/react-native/RaftUpdateEvents.js +46 -0
  100. package/dist/react-native/RaftUpdateEvents.js.map +1 -0
  101. package/dist/react-native/RaftUpdateManager.d.ts +61 -0
  102. package/dist/react-native/RaftUpdateManager.js +621 -0
  103. package/dist/react-native/RaftUpdateManager.js.map +1 -0
  104. package/dist/react-native/RaftUtils.d.ts +128 -0
  105. package/dist/react-native/RaftUtils.js +487 -0
  106. package/dist/react-native/RaftUtils.js.map +1 -0
  107. package/dist/react-native/RaftWifiTypes.d.ts +23 -0
  108. package/dist/react-native/RaftWifiTypes.js +43 -0
  109. package/dist/react-native/RaftWifiTypes.js.map +1 -0
  110. package/dist/react-native/main.d.ts +27 -0
  111. package/dist/react-native/main.js +52 -0
  112. package/dist/react-native/main.js.map +1 -0
  113. package/dist/web/RaftAttributeHandler.js +1 -1
  114. package/dist/web/RaftAttributeHandler.js.map +1 -1
  115. package/dist/web/RaftChannelBLE.web.js +8 -6
  116. package/dist/web/RaftChannelBLE.web.js.map +1 -1
  117. package/dist/web/RaftChannelSimulated.d.ts +10 -0
  118. package/dist/web/RaftChannelSimulated.js +665 -82
  119. package/dist/web/RaftChannelSimulated.js.map +1 -1
  120. package/dist/web/RaftChannelWebSerial.js +2 -2
  121. package/dist/web/RaftChannelWebSerial.js.map +1 -1
  122. package/dist/web/RaftChannelWebSocket.js +16 -1
  123. package/dist/web/RaftChannelWebSocket.js.map +1 -1
  124. package/dist/web/RaftConnector.d.ts +12 -1
  125. package/dist/web/RaftConnector.js +45 -9
  126. package/dist/web/RaftConnector.js.map +1 -1
  127. package/dist/web/RaftCustomAttrHandler.d.ts +2 -0
  128. package/dist/web/RaftCustomAttrHandler.js +54 -26
  129. package/dist/web/RaftCustomAttrHandler.js.map +1 -1
  130. package/dist/web/RaftDeviceInfo.d.ts +3 -1
  131. package/dist/web/RaftDeviceInfo.js +17 -3
  132. package/dist/web/RaftDeviceInfo.js.map +1 -1
  133. package/dist/web/RaftDeviceManager.d.ts +32 -2
  134. package/dist/web/RaftDeviceManager.js +307 -74
  135. package/dist/web/RaftDeviceManager.js.map +1 -1
  136. package/dist/web/RaftDeviceMgrIF.d.ts +5 -1
  137. package/dist/web/RaftDeviceStates.d.ts +20 -2
  138. package/dist/web/RaftDeviceStates.js +25 -4
  139. package/dist/web/RaftDeviceStates.js.map +1 -1
  140. package/dist/web/RaftMsgHandler.js.map +1 -1
  141. package/dist/web/RaftPublish.d.ts +2 -0
  142. package/dist/web/RaftPublish.js +81 -0
  143. package/dist/web/RaftPublish.js.map +1 -0
  144. package/dist/web/RaftStreamHandler.d.ts +11 -0
  145. package/dist/web/RaftStreamHandler.js +68 -1
  146. package/dist/web/RaftStreamHandler.js.map +1 -1
  147. package/dist/web/RaftStruct.js +197 -147
  148. package/dist/web/RaftStruct.js.map +1 -1
  149. package/dist/web/RaftSystemUtils.d.ts +17 -1
  150. package/dist/web/RaftSystemUtils.js +51 -0
  151. package/dist/web/RaftSystemUtils.js.map +1 -1
  152. package/dist/web/RaftTypes.d.ts +21 -0
  153. package/dist/web/RaftTypes.js.map +1 -1
  154. package/dist/web/RaftUpdateManager.js +1 -1
  155. package/dist/web/RaftUpdateManager.js.map +1 -1
  156. package/dist/web/RaftUtils.d.ts +2 -0
  157. package/dist/web/RaftUtils.js +20 -0
  158. package/dist/web/RaftUtils.js.map +1 -1
  159. package/dist/web/main.d.ts +2 -0
  160. package/dist/web/main.js +1 -0
  161. package/dist/web/main.js.map +1 -1
  162. package/eslint.config.mjs +33 -0
  163. package/examples/dashboard/package.json +36 -0
  164. package/examples/dashboard/src/CommandPanel.tsx +147 -0
  165. package/examples/dashboard/src/ConnManager.ts +166 -0
  166. package/examples/dashboard/src/DeviceActionsForm.tsx +133 -0
  167. package/examples/dashboard/src/DeviceAttrsForm.tsx +49 -0
  168. package/examples/dashboard/src/DeviceLineChart.tsx +163 -0
  169. package/examples/dashboard/src/DevicePanel.tsx +247 -0
  170. package/examples/dashboard/src/DeviceStatsPanel.tsx +65 -0
  171. package/examples/dashboard/src/DevicesPanel.tsx +69 -0
  172. package/examples/dashboard/src/DispLedGrid.tsx +110 -0
  173. package/examples/dashboard/src/DispOneLed.tsx +20 -0
  174. package/examples/dashboard/src/LatencyTest.ts +130 -0
  175. package/examples/dashboard/src/LatencyTestPanel.tsx +92 -0
  176. package/examples/dashboard/src/Main.tsx +234 -0
  177. package/examples/dashboard/src/SettingsManager.ts +67 -0
  178. package/examples/dashboard/src/SettingsScreen.tsx +179 -0
  179. package/examples/dashboard/src/StatusPanel.tsx +71 -0
  180. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +170 -0
  181. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +125 -0
  182. package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +38 -0
  183. package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +125 -0
  184. package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +70 -0
  185. package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +33 -0
  186. package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +342 -0
  187. package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +170 -0
  188. package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +123 -0
  189. package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +207 -0
  190. package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +464 -0
  191. package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +146 -0
  192. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +105 -0
  193. package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +371 -0
  194. package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +20 -0
  195. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +119 -0
  196. package/examples/dashboard/src/index.html +15 -0
  197. package/examples/dashboard/src/index.tsx +13 -0
  198. package/examples/dashboard/src/styles.css +570 -0
  199. package/examples/dashboard/tsconfig.json +18 -0
  200. package/jest.config.js +11 -0
  201. package/package.json +49 -52
  202. package/src/RaftAttributeHandler.ts +450 -0
  203. package/src/RaftChannel.ts +32 -0
  204. package/src/RaftChannelBLE.native.ts +617 -0
  205. package/src/RaftChannelBLE.web.ts +374 -0
  206. package/src/RaftChannelBLEFactory.ts +13 -0
  207. package/src/RaftChannelBLEScanner.native.ts +184 -0
  208. package/src/RaftChannelSimulated.ts +1177 -0
  209. package/src/RaftChannelWebSerial.ts +420 -0
  210. package/src/RaftChannelWebSocket.ts +272 -0
  211. package/src/RaftCommsStats.ts +142 -0
  212. package/src/RaftConnEvents.ts +58 -0
  213. package/src/RaftConnector.ts +806 -0
  214. package/src/RaftCustomAttrHandler.ts +117 -0
  215. package/src/RaftDeviceInfo.ts +125 -0
  216. package/src/RaftDeviceManager.ts +1014 -0
  217. package/src/RaftDeviceMgrIF.ts +37 -0
  218. package/src/RaftDeviceMsg.ts +20 -0
  219. package/src/RaftDeviceStates.ts +122 -0
  220. package/src/RaftFileHandler.ts +668 -0
  221. package/src/RaftLog.ts +70 -0
  222. package/src/RaftMiniHDLC.ts +396 -0
  223. package/src/RaftMsgHandler.ts +812 -0
  224. package/src/RaftMsgTrackInfo.ts +51 -0
  225. package/src/RaftProtocolDefs.ts +46 -0
  226. package/src/RaftPublish.ts +92 -0
  227. package/src/RaftStreamHandler.ts +412 -0
  228. package/src/RaftStruct.ts +282 -0
  229. package/src/RaftSysTypeManager.ts +87 -0
  230. package/src/RaftSystemType.ts +34 -0
  231. package/src/RaftSystemUtils.ts +548 -0
  232. package/src/RaftTypes.ts +306 -0
  233. package/src/RaftUpdateEvents.ts +48 -0
  234. package/src/RaftUpdateManager.ts +781 -0
  235. package/src/RaftUtils.ts +514 -0
  236. package/src/RaftWifiTypes.ts +36 -0
  237. package/src/main.ts +40 -0
  238. package/testdata/TestDeviceTypeRecs.json +492 -0
  239. package/tsconfig.json +30 -0
  240. package/tsconfig.react-native.json +29 -0
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
+ //
4
+ // RaftStruct
5
+ // Part of RaftJS
6
+ //
7
+ // Rob Dobson 2024
8
+ // (C) 2024 All rights reserved
9
+ //
10
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.structUnpack = structUnpack;
13
+ exports.structSizeOf = structSizeOf;
14
+ exports.structPack = structPack;
15
+ function parseFormatInstructions(format) {
16
+ const instructions = [];
17
+ let idx = 0;
18
+ while (idx < format.length) {
19
+ const char = format[idx];
20
+ // Endianness specifiers
21
+ if (char === "<" || char === ">") {
22
+ instructions.push({ kind: "endian", littleEndian: char === "<" });
23
+ idx++;
24
+ continue;
25
+ }
26
+ // Ignore whitespace
27
+ if (/\s/.test(char)) {
28
+ idx++;
29
+ continue;
30
+ }
31
+ // Attribute code
32
+ const code = char;
33
+ idx++;
34
+ // Check for repeat count using [N] syntax
35
+ let repeat = 1;
36
+ if (idx < format.length && format[idx] === "[") {
37
+ const endIdx = format.indexOf("]", idx + 1);
38
+ if (endIdx === -1) {
39
+ throw new Error(`Invalid format string: missing closing ] in "${format}"`);
40
+ }
41
+ const repeatStr = format.slice(idx + 1, endIdx);
42
+ repeat = parseInt(repeatStr, 10);
43
+ if (!Number.isFinite(repeat) || repeat <= 0) {
44
+ throw new Error(`Invalid repeat count "${repeatStr}" in format string "${format}"`);
45
+ }
46
+ idx = endIdx + 1;
47
+ }
48
+ instructions.push({ kind: "spec", code, repeat });
49
+ }
50
+ return instructions;
51
+ }
52
+ function structUnpack(format, data) {
53
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
54
+ const results = [];
55
+ let offset = 0;
56
+ let littleEndian = false;
57
+ const instructions = parseFormatInstructions(format);
58
+ for (const instruction of instructions) {
59
+ if (instruction.kind === "endian") {
60
+ littleEndian = instruction.littleEndian;
61
+ continue;
62
+ }
63
+ const { code, repeat } = instruction;
64
+ for (let count = 0; count < repeat; count++) {
65
+ switch (code) {
66
+ case "x": // Padding byte
67
+ offset += 1;
68
+ break;
69
+ case "c": // Char
70
+ case "B": // Unsigned 8-bit integer
71
+ case "?": // Boolean (stored as uint8)
72
+ results.push(view.getUint8(offset));
73
+ offset += 1;
74
+ break;
75
+ case "b": // Signed 8-bit integer
76
+ results.push(view.getInt8(offset));
77
+ offset += 1;
78
+ break;
79
+ case "h": // Signed 16-bit integer
80
+ results.push(view.getInt16(offset, littleEndian));
81
+ offset += 2;
82
+ break;
83
+ case "H": // Unsigned 16-bit integer
84
+ results.push(view.getUint16(offset, littleEndian));
85
+ offset += 2;
86
+ break;
87
+ case "i": // Signed 32-bit integer
88
+ case "l": // Signed 32-bit integer
89
+ results.push(view.getInt32(offset, littleEndian));
90
+ offset += 4;
91
+ break;
92
+ case "I": // Unsigned 32-bit integer
93
+ case "L": // Unsigned 32-bit integer
94
+ results.push(view.getUint32(offset, littleEndian));
95
+ offset += 4;
96
+ break;
97
+ // case "q": // Signed 64-bit integer
98
+ // results.push(Number(view.getBigInt64(offset, littleEndian)));
99
+ // offset += 8;
100
+ // break;
101
+ // case "Q": // Unsigned 64-bit integer
102
+ // results.push(Number(view.getBigUint64(offset, littleEndian)));
103
+ // offset += 8;
104
+ // break;
105
+ case "f": // 32-bit float
106
+ results.push(view.getFloat32(offset, littleEndian));
107
+ offset += 4;
108
+ break;
109
+ case "d": // 64-bit float
110
+ results.push(view.getFloat64(offset, littleEndian));
111
+ offset += 8;
112
+ break;
113
+ default:
114
+ throw new Error(`Unknown format character: ${code}`);
115
+ }
116
+ }
117
+ }
118
+ return results;
119
+ }
120
+ function structSizeOf(format) {
121
+ let size = 0;
122
+ const instructions = parseFormatInstructions(format);
123
+ for (const instruction of instructions) {
124
+ if (instruction.kind === "endian") {
125
+ continue;
126
+ }
127
+ const { code, repeat } = instruction;
128
+ let unitSize;
129
+ switch (code) {
130
+ case "x": // Padding byte
131
+ case "c": // Char
132
+ case "b": // Signed 8-bit integer
133
+ case "B": // Unsigned 8-bit integer
134
+ case "?": // Boolean (uint8)
135
+ unitSize = 1;
136
+ break;
137
+ case "h": // Signed 16-bit integer
138
+ case "H": // Unsigned 16-bit integer
139
+ unitSize = 2;
140
+ break;
141
+ case "i": // Signed 32-bit integer
142
+ case "I": // Unsigned 32-bit integer
143
+ case "l": // Signed 32-bit integer
144
+ case "L": // Unsigned 32-bit integer
145
+ unitSize = 4;
146
+ break;
147
+ // case "q": // Signed 64-bit integer
148
+ // case "Q": // Unsigned 64-bit integer
149
+ // unitSize = 8;
150
+ // break;
151
+ case "f": // 32-bit float
152
+ unitSize = 4;
153
+ break;
154
+ case "d": // 64-bit float
155
+ unitSize = 8;
156
+ break;
157
+ default:
158
+ throw new Error(`Unknown format character: ${code}`);
159
+ }
160
+ size += unitSize * repeat;
161
+ }
162
+ return size;
163
+ }
164
+ function structPack(format, values) {
165
+ const size = structSizeOf(format);
166
+ const buffer = new ArrayBuffer(size);
167
+ const view = new DataView(buffer);
168
+ let offset = 0;
169
+ let littleEndian = false;
170
+ const instructions = parseFormatInstructions(format);
171
+ let valueIdx = 0;
172
+ for (const instruction of instructions) {
173
+ if (instruction.kind === "endian") {
174
+ littleEndian = instruction.littleEndian;
175
+ continue;
176
+ }
177
+ const { code, repeat } = instruction;
178
+ for (let count = 0; count < repeat; count++) {
179
+ switch (code) {
180
+ case "x": // Padding byte
181
+ offset += 1;
182
+ break;
183
+ case "c": // Char
184
+ case "b": // Signed 8-bit integer
185
+ if (valueIdx >= values.length) {
186
+ throw new Error("Insufficient values provided for structPack");
187
+ }
188
+ view.setInt8(offset, values[valueIdx++]);
189
+ offset += 1;
190
+ break;
191
+ case "B": // Unsigned 8-bit integer
192
+ case "?": // Boolean (uint8)
193
+ if (valueIdx >= values.length) {
194
+ throw new Error("Insufficient values provided for structPack");
195
+ }
196
+ view.setUint8(offset, values[valueIdx++]);
197
+ offset += 1;
198
+ break;
199
+ case "h": // Signed 16-bit integer
200
+ if (valueIdx >= values.length) {
201
+ throw new Error("Insufficient values provided for structPack");
202
+ }
203
+ view.setInt16(offset, values[valueIdx++], littleEndian);
204
+ offset += 2;
205
+ break;
206
+ case "H": // Unsigned 16-bit integer
207
+ if (valueIdx >= values.length) {
208
+ throw new Error("Insufficient values provided for structPack");
209
+ }
210
+ view.setUint16(offset, values[valueIdx++], littleEndian);
211
+ offset += 2;
212
+ break;
213
+ case "i": // Signed 32-bit integer
214
+ case "l": // Signed 32-bit integer
215
+ if (valueIdx >= values.length) {
216
+ throw new Error("Insufficient values provided for structPack");
217
+ }
218
+ view.setInt32(offset, values[valueIdx++], littleEndian);
219
+ offset += 4;
220
+ break;
221
+ case "I": // Unsigned 32-bit integer
222
+ case "L": // Unsigned 32-bit integer
223
+ if (valueIdx >= values.length) {
224
+ throw new Error("Insufficient values provided for structPack");
225
+ }
226
+ view.setUint32(offset, values[valueIdx++], littleEndian);
227
+ offset += 4;
228
+ break;
229
+ // case "q": // Signed 64-bit integer
230
+ // view.setBigInt64(offset, BigInt(values[valueIdx++]), littleEndian);
231
+ // offset += 8;
232
+ // break;
233
+ // case "Q": // Unsigned 64-bit integer
234
+ // view.setBigUint64(offset, BigInt(values[valueIdx++]), littleEndian);
235
+ // offset += 8;
236
+ // break;
237
+ case "f": // 32-bit float
238
+ if (valueIdx >= values.length) {
239
+ throw new Error("Insufficient values provided for structPack");
240
+ }
241
+ view.setFloat32(offset, values[valueIdx++], littleEndian);
242
+ offset += 4;
243
+ break;
244
+ case "d": // 64-bit float
245
+ if (valueIdx >= values.length) {
246
+ throw new Error("Insufficient values provided for structPack");
247
+ }
248
+ view.setFloat64(offset, values[valueIdx++], littleEndian);
249
+ offset += 8;
250
+ break;
251
+ default:
252
+ throw new Error(`Unknown format character: ${code}`);
253
+ }
254
+ }
255
+ }
256
+ return new Uint8Array(buffer);
257
+ }
258
+ //# sourceMappingURL=RaftStruct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftStruct.js","sourceRoot":"","sources":["../../src/RaftStruct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { RaftSystemType } from "./RaftSystemType";
2
+ type RaftSystemTypeCreator = () => RaftSystemType;
3
+ export default class RaftSysTypeManager {
4
+ private static _instance;
5
+ private _sysTypes;
6
+ private _defaultSysTypeFactory;
7
+ static getInstance(): RaftSysTypeManager;
8
+ addSystemType(sysType: string, factory: RaftSystemTypeCreator): void;
9
+ addDefaultSystemType(factory: RaftSystemTypeCreator): void;
10
+ createSystemType(sysType: string): RaftSystemType | null;
11
+ createDefaultSystemType(): RaftSystemType | null;
12
+ getAllServiceUUIDs(): string[];
13
+ getAllNamePrefixes(): string[];
14
+ getSystemTypeByBLENamePrefix(name: string): RaftSystemType | null;
15
+ }
16
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class RaftSysTypeManager {
4
+ constructor() {
5
+ // System type map
6
+ this._sysTypes = new Map();
7
+ this._defaultSysTypeFactory = null;
8
+ }
9
+ // Get instance (Singleton)
10
+ static getInstance() {
11
+ if (!RaftSysTypeManager._instance) {
12
+ RaftSysTypeManager._instance = new RaftSysTypeManager();
13
+ }
14
+ return RaftSysTypeManager._instance;
15
+ }
16
+ // Add a system type by name with its factory
17
+ addSystemType(sysType, factory) {
18
+ if (this._sysTypes.has(sysType)) {
19
+ throw new Error(`System type '${sysType}' is already registered.`);
20
+ }
21
+ this._sysTypes.set(sysType, factory);
22
+ }
23
+ // Set the default system type factory
24
+ addDefaultSystemType(factory) {
25
+ this._defaultSysTypeFactory = factory;
26
+ }
27
+ // Create a system type by name
28
+ createSystemType(sysType) {
29
+ const factory = this._sysTypes.get(sysType);
30
+ if (!factory) {
31
+ return null;
32
+ }
33
+ return factory();
34
+ }
35
+ // Create the default system type
36
+ createDefaultSystemType() {
37
+ if (!this._defaultSysTypeFactory) {
38
+ return null;
39
+ }
40
+ return this._defaultSysTypeFactory();
41
+ }
42
+ // Get a list of all unique BLE service UUIDs
43
+ getAllServiceUUIDs() {
44
+ const serviceUUIDs = new Set();
45
+ this._sysTypes.forEach((factory) => {
46
+ const sysType = factory();
47
+ if (!sysType.BLEServiceUUIDs) {
48
+ return;
49
+ }
50
+ sysType.BLEServiceUUIDs.forEach((uuid) => serviceUUIDs.add(uuid));
51
+ });
52
+ return Array.from(serviceUUIDs);
53
+ }
54
+ // Get a list of all device name prefixes to filter on
55
+ getAllNamePrefixes() {
56
+ const deviceNames = new Set();
57
+ this._sysTypes.forEach((factory) => {
58
+ const sysType = factory();
59
+ if (!sysType.BLEDeviceNames) {
60
+ return;
61
+ }
62
+ sysType.BLEDeviceNames.forEach((name) => deviceNames.add(name));
63
+ });
64
+ return Array.from(deviceNames);
65
+ }
66
+ // Find the system type for a given BLE device name prefix
67
+ getSystemTypeByBLENamePrefix(name) {
68
+ for (const factory of this._sysTypes.values()) {
69
+ const sysType = factory();
70
+ if (sysType.BLEDeviceNames && sysType.BLEDeviceNames.some((prefix) => name.startsWith(prefix))) {
71
+ return sysType;
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ }
77
+ exports.default = RaftSysTypeManager;
78
+ //# sourceMappingURL=RaftSysTypeManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftSysTypeManager.js","sourceRoot":"","sources":["../../src/RaftSysTypeManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import RaftDeviceMgrIF from "./RaftDeviceMgrIF";
2
+ import RaftSystemUtils from "./RaftSystemUtils";
3
+ import { RaftEventFn } from "./RaftTypes";
4
+ export type RaftSubscribeForUpdatesCBType = (systemUtils: RaftSystemUtils, enable: boolean) => Promise<void>;
5
+ export type RaftStateIsInvalidCBType = () => void;
6
+ export type RaftRxOtherMsgType = (payload: Uint8Array, _frameTimeMs: number) => void;
7
+ export interface ConnectorOptions {
8
+ wsSuffix?: string;
9
+ connTimeoutMs?: number;
10
+ bleConnItvlMs?: number;
11
+ bleUuid?: string;
12
+ }
13
+ export interface RaftSystemType {
14
+ nameForDialogs: string;
15
+ defaultWiFiHostname?: string;
16
+ BLEServiceUUIDs?: string[];
17
+ BLECmdUUID?: string;
18
+ BLERespUUID?: string;
19
+ BLEDeviceNames?: string[];
20
+ firmwareDestName?: string;
21
+ normalFileDestName?: string;
22
+ connectorOptions: ConnectorOptions;
23
+ setup: (systemUtils: RaftSystemUtils, onEvent: RaftEventFn | null) => void;
24
+ subscribeForUpdates: RaftSubscribeForUpdatesCBType | null;
25
+ stateIsInvalid: RaftStateIsInvalidCBType | null;
26
+ rxOtherMsgType: RaftRxOtherMsgType | null;
27
+ deviceMgrIF?: RaftDeviceMgrIF;
28
+ nonRaftTypeCode?: string;
29
+ }
30
+ export type RaftGetSystemTypeCBType = (systemUtils: RaftSystemUtils) => Promise<RaftSystemType | null>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=RaftSystemType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftSystemType.js","sourceRoot":"","sources":["../../src/RaftSystemType.ts"],"names":[],"mappings":""}
@@ -0,0 +1,152 @@
1
+ import { RaftWifiConnStatus } from "./RaftWifiTypes";
2
+ import RaftMsgHandler from "./RaftMsgHandler";
3
+ import { RaftFileList, RaftFriendlyName, RaftOKFail, RaftPubTopicRec, RaftSubscriptionUpdateResponse, RaftSysModInfoBLEMan, RaftSystemInfo, RaftWifiScanResults } from "./RaftTypes";
4
+ export default class RaftSystemUtils {
5
+ private _msgHandler;
6
+ private _systemInfo;
7
+ private _friendlyName;
8
+ private _wifiConnStatus;
9
+ private _defaultWiFiHostname;
10
+ private _maxSecsToWaitForWiFiConn;
11
+ private _pubTopicIdxToName;
12
+ private _pubTopicNameToIdx;
13
+ /**
14
+ * constructor
15
+ * @param raftMsgHandler
16
+ */
17
+ constructor(raftMsgHandler: RaftMsgHandler);
18
+ /**
19
+ * getMsgHandler
20
+ * @returns RaftMsgHandler
21
+ */
22
+ getMsgHandler(): RaftMsgHandler;
23
+ /**
24
+ * Update publish topic maps from topic records.
25
+ */
26
+ updatePublishTopicMap(topicRecs: Array<RaftPubTopicRec> | undefined): void;
27
+ /**
28
+ * Update publish topic maps from subscription response.
29
+ */
30
+ updatePublishTopicMapFromSubscriptionResponse(resp: RaftSubscriptionUpdateResponse | RaftOKFail | null | undefined): void;
31
+ /**
32
+ * Fetch publish topic map from firmware endpoint.
33
+ */
34
+ refreshPublishTopicMap(): Promise<boolean>;
35
+ getPublishTopicName(topicIndex: number): string | undefined;
36
+ getPublishTopicIndex(topicName: string): number | undefined;
37
+ /**
38
+ * setDefaultWiFiHostname
39
+ * @param defaultWiFiHostname
40
+ */
41
+ setDefaultWiFiHostname(defaultWiFiHostname: string): void;
42
+ /**
43
+ * getFriendlyName
44
+ *
45
+ * @returns friendly name
46
+ */
47
+ getFriendlyName(): RaftFriendlyName | null;
48
+ /**
49
+ * invalidate
50
+ */
51
+ invalidate(): void;
52
+ /**
53
+ * retrieveInfo - get system info
54
+ * @returns Promise<RaftSystemInfo>
55
+ *
56
+ */
57
+ retrieveInfo(): Promise<boolean>;
58
+ /**
59
+ *
60
+ * getSystemInfo
61
+ * @param forceGet - true to force a get from the raft app
62
+ * @returns Promise<RaftSystemInfo>
63
+ *
64
+ */
65
+ getSystemInfo(forceGet?: boolean): Promise<RaftSystemInfo>;
66
+ /**
67
+ *
68
+ * setRaftName
69
+ * @param newName name to refer to Raft - used for BLE advertising
70
+ * @returns Promise<boolean> true if successful
71
+ *
72
+ */
73
+ setRaftName(newName: string): Promise<boolean>;
74
+ /**
75
+ *
76
+ * getRaftName
77
+ * @param forceGet - true to force a get from the raft app
78
+ * @returns Promise<RaftNameResponse> (object containing rslt)
79
+ *
80
+ */
81
+ getRaftName(forceGet?: boolean): Promise<RaftFriendlyName>;
82
+ /**
83
+ *
84
+ * getFileList - get list of files on file system
85
+ * @returns Promise<RaftFileList>
86
+ *
87
+ */
88
+ getFileList(): Promise<RaftFileList>;
89
+ /**
90
+ *
91
+ * Get BLEMan sysmod info
92
+ *
93
+ * @returns RaftSysModInfoBLEMan
94
+ *
95
+ */
96
+ getSysModInfoBLEMan(): Promise<RaftSysModInfoBLEMan | null>;
97
+ /**
98
+ * Get hostname of connected WiFi
99
+ *
100
+ * @return string - hostname of connected WiFi
101
+ *
102
+ */
103
+ _getHostnameFromFriendlyName(): string;
104
+ /**
105
+ * Get Wifi connection status
106
+ *
107
+ * @return boolean - true if connected
108
+ *
109
+ */
110
+ getWiFiConnStatus(): Promise<boolean | null>;
111
+ /**
112
+ * pause Wifi connection
113
+ *
114
+ * @param boolean - true to pause, false to resume
115
+ * @return boolean - true if successful
116
+ *
117
+ */
118
+ pauseWifiConnection(pause: boolean): Promise<boolean>;
119
+ /**
120
+ * Connect to WiFi
121
+ *
122
+ * @param string - WiFi SSID
123
+ * @param string - WiFi password
124
+ * @return boolean - true if successful
125
+ *
126
+ */
127
+ wifiConnect(ssid: string, password: string): Promise<boolean>;
128
+ /**
129
+ * Disconnect WiFi
130
+ *
131
+ * @return boolean - true if successful
132
+ *
133
+ */
134
+ wifiDisconnect(): Promise<boolean>;
135
+ /**
136
+ * WiFiScan start
137
+ *
138
+ * @return boolean - true if successful
139
+ *
140
+ */
141
+ wifiScanStart(): Promise<boolean>;
142
+ /**
143
+ * WiFiScan get results
144
+ *
145
+ * @return boolean - false if unsuccessful, otherwise the results of the promise
146
+ *
147
+ */
148
+ wifiScanResults(): Promise<boolean | RaftOKFail | RaftWifiScanResults>;
149
+ getCachedSystemInfo(): RaftSystemInfo | null;
150
+ getCachedRaftName(): RaftFriendlyName | null;
151
+ getCachedWifiStatus(): RaftWifiConnStatus;
152
+ }