@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
package/.editorconfig ADDED
@@ -0,0 +1,14 @@
1
+ # http://editorconfig.org
2
+ root = true
3
+
4
+ [*]
5
+ charset = utf-8
6
+ end_of_line = lf
7
+ indent_size = 2
8
+ indent_style = space
9
+ insert_final_newline = true
10
+ trim_trailing_whitespace = true
11
+
12
+ [*.md]
13
+ max_line_length = 0
14
+ trim_trailing_whitespace = true
package/.gitattributes ADDED
@@ -0,0 +1,11 @@
1
+ # Set the default behavior, in case users don't have core.autocrlf set.
2
+ * text=auto
3
+
4
+ # Declare files that will always have LF line endings on checkout.
5
+ * text eol=lf
6
+
7
+ # Denote all files that are truly binary and should not be modified.
8
+ *.png binary
9
+ *.jpg binary
10
+ *.gif binary
11
+ *.pdf binary
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ 20.11.0
package/TODO.md ADDED
@@ -0,0 +1 @@
1
+ [] Previously there was a function called retrieveMartySystemInfo() on RICConnector - this is removed - it used to call RICSystem (now RaftSystemUtils).retrieve info and that used to ge to getHWElems() etc as the code to do that was in RICSystem. This now needs to be split out and getHWElems(), etc handled directly in the target library and not RaftJS
@@ -0,0 +1,14 @@
1
+ import { DeviceTypePollRespMetadata } from "./RaftDeviceInfo";
2
+ import { DeviceAttributesState, DeviceTimeline } from "./RaftDeviceStates";
3
+ export default class AttributeHandler {
4
+ private _customAttrHandler;
5
+ private POLL_RESULT_TIMESTAMP_SIZE;
6
+ private POLL_RESULT_WRAP_VALUE;
7
+ private POLL_RESULT_RESOLUTION_US;
8
+ processMsgAttrGroup(msgBuffer: Uint8Array, msgBufIdx: number, deviceTimeline: DeviceTimeline, pollRespMetadata: DeviceTypePollRespMetadata, devAttrsState: DeviceAttributesState, maxDataPoints: number): number;
9
+ private validateAttributes;
10
+ private processMsgAttribute;
11
+ private signExtend;
12
+ private extractTimestampAndAdvanceIdx;
13
+ private isValueInRangeString;
14
+ }
@@ -0,0 +1,375 @@
1
+ "use strict";
2
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
+ //
4
+ // RaftAttributeHandler
5
+ // Attribute handler for Raft devices
6
+ //
7
+ // Rob Dobson (C) 2024
8
+ //
9
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const tslib_1 = require("tslib");
12
+ const RaftCustomAttrHandler_1 = tslib_1.__importDefault(require("./RaftCustomAttrHandler"));
13
+ const RaftDeviceInfo_1 = require("./RaftDeviceInfo");
14
+ const RaftStruct_1 = require("./RaftStruct");
15
+ class AttributeHandler {
16
+ constructor() {
17
+ // Custom attribute handler
18
+ this._customAttrHandler = new RaftCustomAttrHandler_1.default();
19
+ // Message timestamp size
20
+ this.POLL_RESULT_TIMESTAMP_SIZE = 2;
21
+ this.POLL_RESULT_WRAP_VALUE = this.POLL_RESULT_TIMESTAMP_SIZE === 2 ? 65536 : 4294967296;
22
+ this.POLL_RESULT_RESOLUTION_US = 1000;
23
+ }
24
+ processMsgAttrGroup(msgBuffer, msgBufIdx, deviceTimeline, pollRespMetadata, devAttrsState, maxDataPoints) {
25
+ // console.log(`processMsgAttrGroup msg ${msgHexStr} timestamp ${timestamp} origTimestamp ${origTimestamp} msgBufIdx ${msgBufIdx}`)
26
+ // Extract msg timestamp
27
+ const { newBufIdx, timestampUs } = this.extractTimestampAndAdvanceIdx(msgBuffer, msgBufIdx, deviceTimeline);
28
+ if (newBufIdx < 0)
29
+ return -1;
30
+ msgBufIdx = newBufIdx;
31
+ // Start of message data
32
+ const msgDataStartIdx = msgBufIdx;
33
+ // New attribute values (in order as they appear in the attributes JSON)
34
+ let newAttrValues = [];
35
+ if ("c" in pollRespMetadata) {
36
+ // Extract attribute values using custom handler
37
+ newAttrValues = this._customAttrHandler.handleAttr(pollRespMetadata, msgBuffer, msgBufIdx);
38
+ }
39
+ else {
40
+ // console.log(`RaftAttrHdlr.processMsgAttrGroup ${JSON.stringify(pollRespMetadata)} msgBufIdx ${msgBufIdx} timestampUs ${timestampUs}`);
41
+ // Iterate over attributes
42
+ for (let attrIdx = 0; attrIdx < pollRespMetadata.a.length; attrIdx++) {
43
+ // Get the attribute definition
44
+ const attrDef = pollRespMetadata.a[attrIdx];
45
+ if (!("t" in attrDef)) {
46
+ console.warn(`DeviceManager msg unknown msgBuffer ${msgBuffer} tsUs ${timestampUs} attrDef ${JSON.stringify(attrDef)}`);
47
+ newAttrValues.push([]);
48
+ continue;
49
+ }
50
+ // console.log(`RaftAttrHdlr.processMsgAttrGroup attr ${attrDef.n} msgBufIdx ${msgBufIdx} timestampUs ${timestampUs} attrDef ${JSON.stringify(attrDef)}`);
51
+ // Process the attribute
52
+ const { values, newMsgBufIdx } = this.processMsgAttribute(attrDef, msgBuffer, msgBufIdx, msgDataStartIdx);
53
+ if (newMsgBufIdx < 0) {
54
+ newAttrValues.push([]);
55
+ continue;
56
+ }
57
+ msgBufIdx = newMsgBufIdx;
58
+ newAttrValues.push(values);
59
+ }
60
+ }
61
+ // Number of bytes in group
62
+ let pollRespSizeBytes = msgBufIdx - msgDataStartIdx;
63
+ if (pollRespSizeBytes < pollRespMetadata.b) {
64
+ pollRespSizeBytes = pollRespMetadata.b;
65
+ }
66
+ // Check if any attributes were added (in addition to timestamp)
67
+ if (newAttrValues.length === 0) {
68
+ console.warn(`DeviceManager msg attrGroup ${JSON.stringify(pollRespMetadata)} newAttrValues ${newAttrValues} is empty`);
69
+ return msgDataStartIdx + pollRespSizeBytes;
70
+ }
71
+ // All attributes must have the same number of new values
72
+ const numNewDataPoints = newAttrValues[0].length;
73
+ for (let i = 1; i < newAttrValues.length; i++) {
74
+ if (newAttrValues[i].length !== numNewDataPoints) {
75
+ console.warn(`DeviceManager msg attrGroup ${pollRespMetadata} attrName ${pollRespMetadata.a[i].n} newAttrValues ${newAttrValues} do not have the same length`);
76
+ return msgDataStartIdx + pollRespSizeBytes;
77
+ }
78
+ }
79
+ // All attributes in the schema should have values
80
+ if (newAttrValues.length !== pollRespMetadata.a.length) {
81
+ console.warn(`DeviceManager msg attrGroup ${pollRespMetadata} newAttrValues ${newAttrValues} length does not match attrGroup.a length`);
82
+ return msgDataStartIdx + pollRespSizeBytes;
83
+ }
84
+ // Add the new attribute values to the device state
85
+ for (let attrIdx = 0; attrIdx < pollRespMetadata.a.length; attrIdx++) {
86
+ // Check if attribute already exists in the device state
87
+ const attrDef = pollRespMetadata.a[attrIdx];
88
+ if (!(attrDef.n in devAttrsState)) {
89
+ devAttrsState[attrDef.n] = {
90
+ name: attrDef.n,
91
+ newAttribute: true,
92
+ newData: false,
93
+ numNewValues: 0,
94
+ values: [],
95
+ units: (0, RaftDeviceInfo_1.decodeAttrUnitsEncoding)(attrDef.u || ""),
96
+ range: attrDef.r || [0, 0],
97
+ format: ("f" in attrDef && typeof attrDef.f == "string") ? attrDef.f : "",
98
+ visibleSeries: "v" in attrDef ? attrDef.v === 0 || attrDef.v === false : ("vs" in attrDef ? (attrDef.vs === 0 || attrDef.vs === false ? false : !!attrDef.vs) : true),
99
+ visibleForm: "v" in attrDef ? attrDef.v === 0 || attrDef.v === false : ("vf" in attrDef ? (attrDef.vf === 0 || attrDef.vf === false ? false : !!attrDef.vf) : true),
100
+ };
101
+ }
102
+ // Check if any data points need to be discarded
103
+ const discardCount = Math.max(0, devAttrsState[attrDef.n].values.length + newAttrValues[attrIdx].length - maxDataPoints);
104
+ if (discardCount > 0) {
105
+ devAttrsState[attrDef.n].values.splice(0, discardCount);
106
+ }
107
+ // Add the new values
108
+ devAttrsState[attrDef.n].values.push(...newAttrValues[attrIdx]);
109
+ devAttrsState[attrDef.n].newData = newAttrValues[attrIdx].length > 0;
110
+ devAttrsState[attrDef.n].numNewValues = newAttrValues[attrIdx].length;
111
+ }
112
+ // Handle the timestamps with increments if specified
113
+ const timeIncUs = pollRespMetadata.us ? pollRespMetadata.us : 1000;
114
+ const timestampsUs = Array(numNewDataPoints).fill(0);
115
+ for (let i = 0; i < numNewDataPoints; i++) {
116
+ timestampsUs[i] = timestampUs + i * timeIncUs;
117
+ }
118
+ // Check if timeline points need to be discarded
119
+ const discardCount = Math.max(0, deviceTimeline.timestampsUs.length + timestampsUs.length - maxDataPoints);
120
+ if (discardCount > 0) {
121
+ deviceTimeline.timestampsUs.splice(0, discardCount);
122
+ }
123
+ // Add the new timestamps
124
+ deviceTimeline.timestampsUs.push(...timestampsUs);
125
+ // Validate attributes based on the vft field
126
+ this.validateAttributes(pollRespMetadata, devAttrsState, numNewDataPoints);
127
+ // Return the next message buffer index
128
+ return msgDataStartIdx + pollRespSizeBytes;
129
+ }
130
+ validateAttributes(pollRespMetadata, devAttrsState, numNewDataPoints) {
131
+ // Iterate through all attributes to find those with a vft field
132
+ for (let attrIdx = 0; attrIdx < pollRespMetadata.a.length; attrIdx++) {
133
+ const attrDef = pollRespMetadata.a[attrIdx];
134
+ // Check if this attribute has a vft field
135
+ if (!("vft" in attrDef) || !attrDef.vft) {
136
+ continue;
137
+ }
138
+ // Get the name of the validating attribute
139
+ const validatingAttrName = attrDef.vft;
140
+ // Check if the validating attribute exists in the state
141
+ if (!(validatingAttrName in devAttrsState)) {
142
+ console.debug(`Cannot validate attribute ${attrDef.n} as validating attribute ${validatingAttrName} doesn't exist`);
143
+ continue;
144
+ }
145
+ // Get the current attribute state
146
+ const currentAttr = devAttrsState[attrDef.n];
147
+ const validatingAttr = devAttrsState[validatingAttrName];
148
+ // Check if both attributes have values
149
+ if (!currentAttr.values.length || !validatingAttr.values.length) {
150
+ continue;
151
+ }
152
+ // Get the most recent values from both attributes
153
+ const numValues = currentAttr.values.length;
154
+ const startIdx = numValues - numNewDataPoints;
155
+ // Process each of the new values
156
+ for (let i = 0; i < numNewDataPoints; i++) {
157
+ const valueIdx = startIdx + i;
158
+ if (valueIdx >= 0 && valueIdx < numValues) {
159
+ // Check if the validating attribute's value is 0/false at the same index
160
+ const validatingValueIdx = validatingAttr.values.length - numNewDataPoints + i;
161
+ if (validatingValueIdx >= 0 && validatingValueIdx < validatingAttr.values.length) {
162
+ // If the validating attribute's value is 0 or false, mark the current value as invalid
163
+ if (!validatingAttr.values[validatingValueIdx]) {
164
+ currentAttr.values[valueIdx] = NaN; // Using NaN to represent invalid values
165
+ }
166
+ }
167
+ }
168
+ }
169
+ }
170
+ }
171
+ processMsgAttribute(attrDef, msgBuffer, msgBufIdx, msgDataStartIdx) {
172
+ // Current field message string index
173
+ let curFieldBufIdx = msgBufIdx;
174
+ let attrUsesAbsPos = false;
175
+ // Check for "at" field which means absolute position in the buffer
176
+ if (attrDef.at !== undefined) {
177
+ // Handle both single value and array of byte positions
178
+ if (Array.isArray(attrDef.at)) {
179
+ // Create a new buffer for non-contiguous data extraction
180
+ const elemSize = (0, RaftStruct_1.structSizeOf)(attrDef.t);
181
+ const bytesForType = new Uint8Array(elemSize);
182
+ // Zero out the buffer
183
+ bytesForType.fill(0);
184
+ // Copy bytes from the specified positions
185
+ for (let i = 0; i < attrDef.at.length && i < elemSize; i++) {
186
+ const sourceIdx = msgDataStartIdx + attrDef.at[i];
187
+ if (sourceIdx < msgBuffer.length) {
188
+ bytesForType[i] = msgBuffer[sourceIdx];
189
+ }
190
+ }
191
+ // Use this buffer for attribute extraction
192
+ msgBuffer = bytesForType;
193
+ curFieldBufIdx = 0;
194
+ }
195
+ else {
196
+ // Standard absolute position in the buffer
197
+ curFieldBufIdx = msgDataStartIdx + attrDef.at;
198
+ }
199
+ attrUsesAbsPos = true;
200
+ }
201
+ // Check if outside bounds of message
202
+ if (curFieldBufIdx >= msgBuffer.length) {
203
+ // console.warn(`DeviceManager msg outside bounds msgBuffer ${msgBuffer} attrName ${attrDef.n}`);
204
+ return { values: [], newMsgBufIdx: -1 };
205
+ }
206
+ // Attribute type
207
+ const attrTypesOnly = attrDef.t;
208
+ // Slice into buffer
209
+ const attrBuf = msgBuffer.slice(curFieldBufIdx);
210
+ // Check if a mask is used and the value is signed
211
+ const maskOnSignedValue = "m" in attrDef && (0, RaftDeviceInfo_1.isAttrTypeSigned)(attrTypesOnly);
212
+ // Extract the value using python-struct
213
+ const unpackValues = (0, RaftStruct_1.structUnpack)(maskOnSignedValue ? attrTypesOnly.toUpperCase() : attrTypesOnly, attrBuf);
214
+ let attrValues = unpackValues;
215
+ // Get number of bytes consumed
216
+ const numBytesConsumed = (0, RaftStruct_1.structSizeOf)(attrTypesOnly);
217
+ // // Check if sign extendable mask specified on signed value
218
+ // if (mmSpecifiedOnSignedValue) {
219
+ // const signBitMask = 1 << (signExtendableMaskSignPos - 1);
220
+ // const valueOnlyMask = signBitMask - 1;
221
+ // if (value & signBitMask) {
222
+ // value = (value & valueOnlyMask) - signBitMask;
223
+ // } else {
224
+ // value = value & valueOnlyMask;
225
+ // }
226
+ // }
227
+ // Check for XOR mask
228
+ if ("x" in attrDef) {
229
+ const mask = typeof attrDef.x === "string" ? parseInt(attrDef.x, 16) : attrDef.x;
230
+ attrValues = attrValues.map((value) => (value >>> 0) ^ mask);
231
+ }
232
+ // Check for AND mask
233
+ if ("m" in attrDef) {
234
+ const mask = typeof attrDef.m === "string" ? parseInt(attrDef.m, 16) : attrDef.m;
235
+ attrValues = attrValues.map((value) => (maskOnSignedValue ? this.signExtend(value, mask) : (value >>> 0) & mask));
236
+ }
237
+ // Check for a sign-bit
238
+ if ("sb" in attrDef) {
239
+ const signBitPos = attrDef.sb;
240
+ const signBitMask = 1 << signBitPos;
241
+ if ("ss" in attrDef) {
242
+ const signBitSubtract = attrDef.ss;
243
+ attrValues = attrValues.map((value) => (value & signBitMask) ? signBitSubtract - value : value);
244
+ }
245
+ else {
246
+ attrValues = attrValues.map((value) => (value & signBitMask) ? value - (signBitMask << 1) : value);
247
+ }
248
+ }
249
+ // Check for bit shift required
250
+ if ("s" in attrDef && attrDef.s) {
251
+ const bitshift = attrDef.s;
252
+ if (bitshift > 0) {
253
+ attrValues = attrValues.map((value) => (value >>> 0) >>> bitshift);
254
+ }
255
+ else if (bitshift < 0) {
256
+ attrValues = attrValues.map((value) => (value >>> 0) << -bitshift);
257
+ }
258
+ }
259
+ // Check for divisor
260
+ if ("d" in attrDef && attrDef.d) {
261
+ const divisor = attrDef.d;
262
+ attrValues = attrValues.map((value) => (value) / divisor);
263
+ }
264
+ // Check for value to add
265
+ if ("a" in attrDef && attrDef.a !== undefined) {
266
+ const addValue = attrDef.a;
267
+ attrValues = attrValues.map((value) => (value) + addValue);
268
+ }
269
+ // Apply lookup table if defined
270
+ if ("lut" in attrDef && attrDef.lut !== undefined) {
271
+ attrValues = attrValues.map((value) => {
272
+ // Skip NaN values
273
+ if (isNaN(value)) {
274
+ return value;
275
+ }
276
+ // Search through the lookup table rows for a match
277
+ let defaultValue = null;
278
+ for (const row of attrDef.lut || []) {
279
+ // Empty string means default for unmatched values
280
+ if (row.r === "") {
281
+ defaultValue = row.v;
282
+ continue;
283
+ }
284
+ // Parse the range string
285
+ if (this.isValueInRangeString(value, row.r)) {
286
+ return row.v;
287
+ }
288
+ }
289
+ // If no match found but we have a default, use it
290
+ if (defaultValue !== null) {
291
+ return defaultValue;
292
+ }
293
+ // Otherwise keep the original value
294
+ return value;
295
+ });
296
+ }
297
+ // const msgBufIdxIn = msgBufIdx;
298
+ // Move buffer position if using relative positioning
299
+ msgBufIdx += attrUsesAbsPos ? 0 : numBytesConsumed;
300
+ // console.log(`RaftAttrHdlr.processMsgAttr attr ${attrDef.n} msgBufIdx ${msgBufIdxIn} msgBufIdx ${msgBufIdx} attrUsesAbsPos ${attrUsesAbsPos} numBytesConsumed ${numBytesConsumed} attrValues ${attrValues}`);
301
+ // if (attrDef.n === "amb0") {
302
+ // console.log(`${new Date().toISOString()} ${attrDef.n} ${attrValues}`);
303
+ // }
304
+ // Return the value
305
+ return { values: attrValues, newMsgBufIdx: msgBufIdx };
306
+ }
307
+ signExtend(value, mask) {
308
+ const signBitMask = (mask + 1) >> 1;
309
+ const signBit = value & signBitMask;
310
+ if (signBit !== 0) { // If sign bit is set
311
+ const highBitsMask = ~mask & ~((mask + 1) >> 1);
312
+ value |= highBitsMask; // Apply the sign extension
313
+ }
314
+ return value;
315
+ }
316
+ extractTimestampAndAdvanceIdx(msgBuffer, msgBufIdx, timestampWrapHandler) {
317
+ // Check there are enough bytes for the timestamp
318
+ if (msgBufIdx + this.POLL_RESULT_TIMESTAMP_SIZE > msgBuffer.length) {
319
+ return { newBufIdx: -1, timestampUs: 0 };
320
+ }
321
+ // Use struct to extract the timestamp
322
+ const tsBuffer = msgBuffer.slice(msgBufIdx, msgBufIdx + this.POLL_RESULT_TIMESTAMP_SIZE);
323
+ let timestampUs;
324
+ if (this.POLL_RESULT_TIMESTAMP_SIZE === 2) {
325
+ timestampUs = (0, RaftStruct_1.structUnpack)(">H", tsBuffer)[0] * this.POLL_RESULT_RESOLUTION_US;
326
+ }
327
+ else {
328
+ timestampUs = (0, RaftStruct_1.structUnpack)(">I", tsBuffer)[0] * this.POLL_RESULT_RESOLUTION_US;
329
+ }
330
+ // Check if time is before lastReportTimeMs by more than 100ms - in which case a wrap around occurred to add on the max value
331
+ if (timestampUs + 100000 < timestampWrapHandler.lastReportTimestampUs) {
332
+ timestampWrapHandler.reportTimestampOffsetUs += this.POLL_RESULT_WRAP_VALUE * this.POLL_RESULT_RESOLUTION_US;
333
+ }
334
+ timestampWrapHandler.lastReportTimestampUs = timestampUs;
335
+ // Offset timestamp
336
+ timestampUs += timestampWrapHandler.reportTimestampOffsetUs;
337
+ // Advance the index
338
+ msgBufIdx += this.POLL_RESULT_TIMESTAMP_SIZE;
339
+ // Return the timestamp
340
+ return { newBufIdx: msgBufIdx, timestampUs: timestampUs };
341
+ }
342
+ // Helper method to check if a value is in a range string like "42,43,44-45,47"
343
+ isValueInRangeString(value, rangeStr) {
344
+ // Round to integer for comparison
345
+ const roundedValue = Math.round(value);
346
+ // Split the range string by commas
347
+ const parts = rangeStr.split(',');
348
+ for (const part of parts) {
349
+ // Check if it's a range (contains a hyphen)
350
+ if (part.includes('-')) {
351
+ const [startStr, endStr] = part.split('-');
352
+ // Handle hex values
353
+ const start = startStr.toLowerCase().startsWith('0x') ?
354
+ parseInt(startStr, 16) : parseInt(startStr, 10);
355
+ const end = endStr.toLowerCase().startsWith('0x') ?
356
+ parseInt(endStr, 16) : parseInt(endStr, 10);
357
+ if (!isNaN(start) && !isNaN(end) && roundedValue >= start && roundedValue <= end) {
358
+ return true;
359
+ }
360
+ }
361
+ // Check if it's a single value
362
+ else {
363
+ // Handle hex values
364
+ const partValue = part.toLowerCase().startsWith('0x') ?
365
+ parseInt(part, 16) : parseInt(part, 10);
366
+ if (!isNaN(partValue) && roundedValue === partValue) {
367
+ return true;
368
+ }
369
+ }
370
+ }
371
+ return false;
372
+ }
373
+ }
374
+ exports.default = AttributeHandler;
375
+ //# sourceMappingURL=RaftAttributeHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftAttributeHandler.js","sourceRoot":"","sources":["../../src/RaftAttributeHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { RaftConnEventFn } from "./RaftConnEvents";
2
+ import RaftMsgHandler from "./RaftMsgHandler";
3
+ import { ConnectorOptions } from "./RaftSystemType";
4
+ export default interface RaftChannel {
5
+ isConnected(): boolean;
6
+ connect(locator: string | object, connectorOptions: ConnectorOptions): Promise<boolean>;
7
+ disconnect(): Promise<void>;
8
+ getConnectedLocator(): string | object;
9
+ setOnConnEvent(connEventFn: RaftConnEventFn): void;
10
+ setMsgHandler(raftMsgHandler: RaftMsgHandler): void;
11
+ sendTxMsg(msg: Uint8Array, sendWithResponse: boolean): Promise<boolean>;
12
+ sendTxMsgNoAwait(msg: Uint8Array, sendWithResponse: boolean): Promise<boolean>;
13
+ sendTxMsgRaw(msg: string): boolean;
14
+ sendTxMsgRawAndWaitForReply<T>(msgPayload: Uint8Array): T;
15
+ requiresSubscription(): boolean;
16
+ ricRestCmdBeforeDisconnect(): string | null;
17
+ fhBatchAckSize(): number;
18
+ fhFileBlockSize(): number;
19
+ pauseConnection(pause: boolean): void;
20
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
+ //
4
+ // RaftChannel
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
+ //# sourceMappingURL=RaftChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftChannel.js","sourceRoot":"","sources":["../../src/RaftChannel.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,cAAc;AACd,iBAAiB;AACjB,EAAE;AACF,wCAAwC;AACxC,oCAAoC;AACpC,EAAE;AACF,iHAAiH"}
@@ -0,0 +1,95 @@
1
+ import { BleError, BleManager, Characteristic, Device, State, Subscription } from "react-native-ble-plx";
2
+ import RaftChannel from "./RaftChannel";
3
+ import { RaftConnEvent, RaftConnEventFn } from "./RaftConnEvents";
4
+ import RaftMsgHandler from "./RaftMsgHandler";
5
+ import RaftChannelBLEScanner from "./RaftChannelBLEScanner.native";
6
+ import { DiscoveredDevice } from "./RaftTypes";
7
+ export default class RaftChannelPhoneBLE implements RaftChannel {
8
+ private _onConnEvent;
9
+ _cmdUUID: string;
10
+ _respUUID: string;
11
+ _serviceUUIDs: string[];
12
+ _bleScanner: RaftChannelBLEScanner;
13
+ _deviceToConnectTo: DiscoveredDevice | null;
14
+ _retryConnectionIfLost: boolean;
15
+ RECONNECT_ATTEMPTS_AFTER_CONN_LOST: number;
16
+ _bleSubscrOnRx: Subscription | null;
17
+ _bleSubscrOnDisconnect: Subscription | null;
18
+ _bleSubscrOnStateChange: Subscription | null;
19
+ _bleDevice: Device | null;
20
+ MTU_SIZE_TO_REQUEST: number;
21
+ _raftMsgHandler: RaftMsgHandler | null;
22
+ private _msgTxTimeLast;
23
+ private _msgTxMinTimeBetweenMs;
24
+ private readonly maxRetries;
25
+ private _requestedBatchAckSize;
26
+ private _requestedFileBlockSize;
27
+ private _connectedDeviceServiceUUID?;
28
+ constructor();
29
+ setConnectedDeviceUUID(serviceUUID: string): void;
30
+ getBleManager(): BleManager;
31
+ fhBatchAckSize(): number;
32
+ fhFileBlockSize(): number;
33
+ pauseConnection(pause: boolean): void;
34
+ isConnected(): boolean;
35
+ setOnConnEvent(connEventFn: RaftConnEventFn): void;
36
+ requiresSubscription(): boolean;
37
+ isEnabled(): boolean;
38
+ setMsgHandler(raftMsgHandler: RaftMsgHandler): void;
39
+ setRetryConnectionIfLost(retry: boolean): void;
40
+ discoveryStart(uuids: string[], tries?: number): Promise<boolean>;
41
+ discoveryCancel(): void;
42
+ _onBLEStateChange(state: State): void;
43
+ getConnectedLocator(): string | Device;
44
+ /**
45
+ * Get RIC connection status
46
+ *
47
+ * @returns boolean (true if connected)
48
+ *
49
+ */
50
+ getIsConnected(forceCheck?: boolean): Promise<boolean>;
51
+ /**
52
+ * Get the RSSI of the currently connected device
53
+ *
54
+ * @return number (or null if not connected)
55
+ *
56
+ */
57
+ readRSSI(): Promise<number>;
58
+ /**
59
+ * Connect to a RIC
60
+ *
61
+ * @returns boolean (true if connected)
62
+ *
63
+ */
64
+ connect(discoveredDevice: DiscoveredDevice): Promise<boolean>;
65
+ /**
66
+ * Disconnect from RIC
67
+ *
68
+ * @returns None
69
+ *
70
+ */
71
+ disconnect(): Promise<void>;
72
+ /**
73
+ * Configure device connection
74
+ *
75
+ * @returns None
76
+ *
77
+ */
78
+ _configDeviceConnection(): Promise<boolean>;
79
+ /**
80
+ * Handle lost connections
81
+ *
82
+ * @returns None
83
+ *
84
+ */
85
+ _handleLostConnections(): void;
86
+ getMTU(): number | undefined;
87
+ emit(event: RaftConnEvent, data?: any): void;
88
+ _onMsgRx(error: BleError | null, characteristic: Characteristic | null): void;
89
+ scanningEvent(event: RaftConnEvent, data?: any): Promise<void>;
90
+ sendTxMsg(msg: Uint8Array): Promise<boolean>;
91
+ sendTxMsgNoAwait(msg: Uint8Array): Promise<boolean>;
92
+ ricRestCmdBeforeDisconnect(): string | null;
93
+ sendTxMsgRaw(): boolean;
94
+ sendTxMsgRawAndWaitForReply<T>(): T;
95
+ }