@robdobsn/raftjs 1.10.7 → 1.11.6

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 (89) hide show
  1. package/dist/react-native/RaftAttributeHandler.js +11 -9
  2. package/dist/react-native/RaftAttributeHandler.js.map +1 -1
  3. package/dist/react-native/RaftChannelSimulated.js +4 -3
  4. package/dist/react-native/RaftChannelSimulated.js.map +1 -1
  5. package/dist/react-native/RaftConnector.d.ts +10 -1
  6. package/dist/react-native/RaftConnector.js +23 -10
  7. package/dist/react-native/RaftConnector.js.map +1 -1
  8. package/dist/react-native/RaftDeviceManager.d.ts +14 -2
  9. package/dist/react-native/RaftDeviceManager.js +224 -77
  10. package/dist/react-native/RaftDeviceManager.js.map +1 -1
  11. package/dist/react-native/RaftDeviceMgrIF.d.ts +5 -1
  12. package/dist/react-native/RaftDeviceStates.d.ts +21 -3
  13. package/dist/react-native/RaftDeviceStates.js +31 -6
  14. package/dist/react-native/RaftDeviceStates.js.map +1 -1
  15. package/dist/react-native/RaftPublish.d.ts +2 -0
  16. package/dist/react-native/RaftPublish.js +81 -0
  17. package/dist/react-native/RaftPublish.js.map +1 -0
  18. package/dist/react-native/RaftStreamHandler.d.ts +11 -0
  19. package/dist/react-native/RaftStreamHandler.js +66 -0
  20. package/dist/react-native/RaftStreamHandler.js.map +1 -1
  21. package/dist/react-native/RaftStruct.d.ts +2 -2
  22. package/dist/react-native/RaftStruct.js +97 -26
  23. package/dist/react-native/RaftStruct.js.map +1 -1
  24. package/dist/react-native/RaftSystemUtils.d.ts +17 -1
  25. package/dist/react-native/RaftSystemUtils.js +51 -0
  26. package/dist/react-native/RaftSystemUtils.js.map +1 -1
  27. package/dist/react-native/RaftTypes.d.ts +21 -0
  28. package/dist/react-native/RaftTypes.js.map +1 -1
  29. package/dist/react-native/main.d.ts +1 -0
  30. package/dist/react-native/main.js +1 -0
  31. package/dist/react-native/main.js.map +1 -1
  32. package/dist/web/RaftAttributeHandler.js +11 -9
  33. package/dist/web/RaftAttributeHandler.js.map +1 -1
  34. package/dist/web/RaftChannelSimulated.js +4 -3
  35. package/dist/web/RaftChannelSimulated.js.map +1 -1
  36. package/dist/web/RaftConnector.d.ts +10 -1
  37. package/dist/web/RaftConnector.js +23 -10
  38. package/dist/web/RaftConnector.js.map +1 -1
  39. package/dist/web/RaftDeviceManager.d.ts +14 -2
  40. package/dist/web/RaftDeviceManager.js +224 -77
  41. package/dist/web/RaftDeviceManager.js.map +1 -1
  42. package/dist/web/RaftDeviceMgrIF.d.ts +5 -1
  43. package/dist/web/RaftDeviceStates.d.ts +21 -3
  44. package/dist/web/RaftDeviceStates.js +31 -6
  45. package/dist/web/RaftDeviceStates.js.map +1 -1
  46. package/dist/web/RaftPublish.d.ts +2 -0
  47. package/dist/web/RaftPublish.js +81 -0
  48. package/dist/web/RaftPublish.js.map +1 -0
  49. package/dist/web/RaftStreamHandler.d.ts +11 -0
  50. package/dist/web/RaftStreamHandler.js +66 -0
  51. package/dist/web/RaftStreamHandler.js.map +1 -1
  52. package/dist/web/RaftStruct.d.ts +2 -2
  53. package/dist/web/RaftStruct.js +97 -26
  54. package/dist/web/RaftStruct.js.map +1 -1
  55. package/dist/web/RaftSystemUtils.d.ts +17 -1
  56. package/dist/web/RaftSystemUtils.js +51 -0
  57. package/dist/web/RaftSystemUtils.js.map +1 -1
  58. package/dist/web/RaftTypes.d.ts +21 -0
  59. package/dist/web/RaftTypes.js.map +1 -1
  60. package/dist/web/main.d.ts +1 -0
  61. package/dist/web/main.js +1 -0
  62. package/dist/web/main.js.map +1 -1
  63. package/examples/dashboard/package.json +1 -1
  64. package/examples/dashboard/src/DeviceActionsForm.tsx +2 -2
  65. package/examples/dashboard/src/DeviceLineChart.tsx +16 -3
  66. package/examples/dashboard/src/DevicePanel.tsx +79 -3
  67. package/examples/dashboard/src/DeviceStatsPanel.tsx +76 -0
  68. package/examples/dashboard/src/DevicesPanel.tsx +11 -0
  69. package/examples/dashboard/src/SettingsScreen.tsx +9 -4
  70. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +10 -2
  71. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +37 -3
  72. package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +10 -2
  73. package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +38 -4
  74. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +10 -2
  75. package/examples/dashboard/src/styles.css +162 -0
  76. package/package.json +52 -49
  77. package/src/RaftAttributeHandler.ts +25 -22
  78. package/src/RaftChannelSimulated.ts +4 -3
  79. package/src/RaftConnector.ts +34 -13
  80. package/src/RaftDeviceManager.ts +253 -83
  81. package/src/RaftDeviceMgrIF.ts +5 -1
  82. package/src/RaftDeviceStates.ts +42 -8
  83. package/src/RaftPublish.ts +92 -0
  84. package/src/RaftStreamHandler.ts +84 -1
  85. package/src/RaftStruct.test.ts +229 -0
  86. package/src/RaftStruct.ts +101 -37
  87. package/src/RaftSystemUtils.ts +59 -0
  88. package/src/RaftTypes.ts +27 -0
  89. package/src/main.ts +1 -0
@@ -20,6 +20,12 @@ class DeviceManager {
20
20
  getDeviceState(deviceKey) {
21
21
  return this._devicesState[deviceKey];
22
22
  }
23
+ getDeviceStats(deviceKey) {
24
+ return this.cloneDeviceStats(this.getOrCreateDeviceStats(deviceKey));
25
+ }
26
+ resetDeviceStats(deviceKey) {
27
+ this._deviceStats[deviceKey] = this.createEmptyStats();
28
+ }
23
29
  // Constructor
24
30
  constructor() {
25
31
  // Max data points to store
@@ -42,8 +48,12 @@ class DeviceManager {
42
48
  this._newDeviceAttributeCallbacks = [];
43
49
  this._newAttributeDataCallbacks = [];
44
50
  this._decodedDataCallbacks = [];
51
+ this._deviceRemovedCallbacks = [];
45
52
  // Debug message index (to help debug with async messages)
46
53
  this._debugMsgIndex = 0;
54
+ // Device stats (sample counts, rates)
55
+ this._statsWindowMs = 5000;
56
+ this._deviceStats = {};
47
57
  // Cached device type data
48
58
  this._cachedDeviceTypeRecs = {};
49
59
  // Cached device type previous attempt times
@@ -120,6 +130,14 @@ class DeviceManager {
120
130
  removeDecodedDataCallback(callback) {
121
131
  this._decodedDataCallbacks = this._decodedDataCallbacks.filter((cb) => cb !== callback);
122
132
  }
133
+ addDeviceRemovedCallback(callback) {
134
+ if (!this._deviceRemovedCallbacks.includes(callback)) {
135
+ this._deviceRemovedCallbacks.push(callback);
136
+ }
137
+ }
138
+ removeDeviceRemovedCallback(callback) {
139
+ this._deviceRemovedCallbacks = this._deviceRemovedCallbacks.filter((cb) => cb !== callback);
140
+ }
123
141
  ////////////////////////////////////////////////////////////////////////////
124
142
  // Set the friendly name for the device
125
143
  ////////////////////////////////////////////////////////////////////////////
@@ -133,75 +151,122 @@ class DeviceManager {
133
151
  ////////////////////////////////////////////////////////////////////////////
134
152
  async handleClientMsgBinary(rxMsg) {
135
153
  // console.log(`DeviceManager client1 msg ${RaftUtils.bufferToHex(rxMsg)}`);
136
- // Example messages
137
- // 0080 0015 81 0000006a 0004 53b7 feff00000100081857079314 0011 80 00000000 0011 53b2 075106e400d60054 0010 80 00000000 0012 5231 000d0000010e01
138
- // 0080 0011 80 00000000 0002 4ae1 0787052606240007 000e 80 00000000 0003 0006 030001af01
139
- // 0080 0011 80 00000000 0002 e46e 061e05a206830433 0010 80000000000003e4760006030001c701
140
- // 0080 0010 81 00000015 0004 e4a2 0650fe00305002 0011 80000000000002e4a8061f059f06850438 001080000000000003e4aa0006030001c701
141
- // 0080 0011 80 00000000 0002 31e4 05ea05a506660137 000e 80 00000000 0003 0007 030001d901
142
- // 0080 0011 80 00000000 0002 4d63 0792053e06500061 000e 80 00000000 0003 0005 030001de01
143
- // First two bytes of each message are the message type (0080)
144
- // There are then a series of sections each of which is the data for a device
145
- // First two bytes of each section is the section length (big endian) not including the section length bytes themselves
146
- // Next byte is the connection mode (0 for direct connect, 1+ for bus number) and the MSB of this byte is 1 if the device is online
147
- // Next is the device address (4 bytes big endian)
148
- // Next is the device type index (2 bytes big endian)
149
- // Finally the device data which can be one or more groups of attributes defined by the schema
154
+ var _a;
155
+ // DevBIN message format
156
+ //
157
+ // The rxMsg passed to this function has a 2-byte message type prefix (e.g. 0x0080)
158
+ // added by the transport layer. After that prefix comes a devbin frame:
159
+ //
160
+ // Devbin envelope (2 bytes):
161
+ // Byte 0: magic+version 0xDB = devbin v1 (valid range 0xDB–0xDF for v1–v5)
162
+ // Byte 1: topicIndex 0x00–0xFE = topic index; 0xFF = no topic
163
+ //
164
+ // Then zero or more per-device records, concatenated back-to-back:
165
+ // Bytes 0-1: recordLen uint16 big-endian number of body bytes that follow (min 7)
166
+ // Byte 2: statusBus bit 7 = online flag, bit 6 = pending deletion, bits 5:4 = reserved, bits 3:0 = bus number (0-15)
167
+ // Bytes 3-6: address uint32 big-endian device address on the bus
168
+ // Bytes 7-8: devTypeIdx uint16 big-endian — device type table index
169
+ // Bytes 9+: pollData variable length (recordLen − 7 bytes) — device data
170
+ //
171
+ // Example message (with transport prefix):
172
+ // 0080 DB01 0015 81 0000076a 000b bff10000ffffffff7a07d1f1221c 000e 80 00000000 001f bc340000030001
173
+ // ^^^^ ^^^^ ^^^^
174
+ // | | | || | | | Record 2 ...
175
+ // | | | || | | pollData (14 bytes)
176
+ // | | | || | devTypeIdx = 0x000b (11)
177
+ // | | | || address = 0x0000076a (slot 7, I2C addr 0x6a)
178
+ // | | | |busInfo = 0x81 (bus 1, online)
179
+ // | | | recordLen = 0x0015 (21 bytes)
180
+ // | | topicIndex = 0x01
181
+ // | magic+version = 0xDB (devbin v1)
182
+ // msgType prefix (transport layer)
150
183
  // Debug
151
184
  // const debugMsgTime = Date.now();
152
185
  const debugMsgIndex = this._debugMsgIndex++;
153
- // Message layout
154
- const msgTypeLen = 2; // Length of the message type (first two bytes)
155
- const sectionLengthLen = 2; // Length of the inclusive section length (first two bytes of each section)
156
- const sectionConnectionModeLen = 1; // Length of the connection mode (next byte after section length)
157
- const sectionDeviceAddrLen = 4; // Length of the device address (next 4 bytes after connection mode)
158
- const sectionDeviceTypeIdxLen = 2; // Length of the device type index (next 2 bytes after device address)
159
- const sectionHeaderLen = sectionConnectionModeLen + sectionDeviceAddrLen + sectionDeviceTypeIdxLen;
186
+ // Message layout constants
187
+ const msgTypeLen = 2; // Transport-layer message type prefix (first two bytes, e.g. 0x0080)
188
+ const devbinEnvelopeLen = 2; // Devbin envelope: magic+version (1 byte) + topicIndex (1 byte)
189
+ const devbinMagicMin = 0xDB;
190
+ const devbinMagicMax = 0xDF;
191
+ const recordLenLen = 2; // Per-record length prefix (uint16 big-endian)
192
+ const busInfoLen = 1; // statusBus byte: bit 7 = online, bit 6 = pending deletion, bits 3:0 = bus number
193
+ const deviceAddrLen = 4; // Device address (uint32 big-endian)
194
+ const devTypeIdxLen = 2; // Device type index (uint16 big-endian)
195
+ const recordHeaderLen = busInfoLen + deviceAddrLen + devTypeIdxLen; // = 7, minimum record body
160
196
  // console.log(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} rxMsg.length ${rxMsg.length} rxMsg ${RaftUtils.bufferToHex(rxMsg)}`);
161
197
  // Start after the message type
162
198
  let msgPos = msgTypeLen;
163
- // Iterate through sections
199
+ // Check for devbin envelope (magic+version + topicIndex)
200
+ if (rxMsg.length >= msgTypeLen + devbinEnvelopeLen) {
201
+ const envelopeMagicVer = rxMsg[msgTypeLen];
202
+ if ((envelopeMagicVer & 0xF0) === 0xD0) {
203
+ if ((envelopeMagicVer < devbinMagicMin) || (envelopeMagicVer > devbinMagicMax)) {
204
+ console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} invalid devbin envelope magic/version ${envelopeMagicVer}`);
205
+ return;
206
+ }
207
+ const topicIndex = rxMsg[msgTypeLen + 1];
208
+ if (topicIndex !== 0xFF) {
209
+ const topicName = (_a = this._systemUtils) === null || _a === void 0 ? void 0 : _a.getPublishTopicName(topicIndex);
210
+ if (topicName && topicName !== "devbin") {
211
+ return;
212
+ }
213
+ }
214
+ msgPos += devbinEnvelopeLen;
215
+ }
216
+ }
217
+ // Iterate through device records
164
218
  while (msgPos < rxMsg.length) {
165
- // Check length
219
+ // Check minimum length for record length prefix + record header
166
220
  const remainingLen = rxMsg.length - msgPos;
167
- if (remainingLen < sectionLengthLen + sectionHeaderLen) {
168
- console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} invalid length ${rxMsg.length} < ${sectionLengthLen + sectionHeaderLen + msgPos}`);
221
+ if (remainingLen < recordLenLen + recordHeaderLen) {
222
+ console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} invalid length ${rxMsg.length} < ${recordLenLen + recordHeaderLen + msgPos}`);
169
223
  return;
170
224
  }
171
- // Get the length of the section
172
- const sectionLen = (rxMsg[msgPos] << 8) + rxMsg[msgPos + 1];
173
- if (sectionLen > remainingLen + sectionLengthLen) {
174
- console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} invalid msgPos ${msgPos} msgLen ${sectionLen} remainingLenAfterLenBytes ${remainingLen - sectionLengthLen}`);
225
+ // Get the record body length (bytes that follow the 2-byte length prefix)
226
+ const recordLen = (rxMsg[msgPos] << 8) + rxMsg[msgPos + 1];
227
+ if (recordLen > remainingLen - recordLenLen) {
228
+ console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} invalid msgPos ${msgPos} recordLen ${recordLen} remainingAfterLenBytes ${remainingLen - recordLenLen}`);
175
229
  return;
176
230
  }
177
- // Extract message elements
178
- let sectionPos = msgPos + sectionLengthLen;
179
- const busNum = rxMsg[sectionPos] & 0x7f;
180
- const isOnline = (rxMsg[sectionPos] & 0x80) !== 0;
181
- sectionPos += sectionConnectionModeLen;
182
- // Get the device address and type index
183
- const devAddr = (rxMsg[sectionPos] << 24) + (rxMsg[sectionPos + 1] << 16) + (rxMsg[sectionPos + 2] << 8) + rxMsg[sectionPos + 3];
184
- sectionPos += sectionDeviceAddrLen;
185
- const devTypeIdx = (rxMsg[sectionPos] << 8) + rxMsg[sectionPos + 1];
186
- let attrGroupPos = sectionPos + sectionDeviceTypeIdxLen;
231
+ // Extract record header fields
232
+ let recordPos = msgPos + recordLenLen;
233
+ // statusBus byte: bit 7 = online, bit 6 = pending deletion, bits 3:0 = bus number
234
+ const statusByte = rxMsg[recordPos];
235
+ const busNum = statusByte & 0x0f;
236
+ const isOnline = (statusByte & 0x80) !== 0;
237
+ const isPendingDeletion = (statusByte & 0x40) !== 0;
238
+ recordPos += busInfoLen;
239
+ // Device address (uint32 big-endian)
240
+ const devAddr = (rxMsg[recordPos] << 24) + (rxMsg[recordPos + 1] << 16) + (rxMsg[recordPos + 2] << 8) + rxMsg[recordPos + 3];
241
+ recordPos += deviceAddrLen;
242
+ // Device type index (uint16 big-endian)
243
+ const devTypeIdx = (rxMsg[recordPos] << 8) + rxMsg[recordPos + 1];
244
+ let pollDataPos = recordPos + devTypeIdxLen;
187
245
  // Debug
188
- // console.log(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} overallLen ${rxMsg.length} sectionPos ${msgPos} sectionLen ${sectionLen} ${attrGroupPos} ${RaftUtils.bufferToHex(rxMsg.slice(msgPos, msgPos + sectionLen))}`);
189
- // console.log(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} connMode ${busNum} isOnline ${isOnline} devAddr ${devAddr} devTypeIdx ${devTypeIdx} attrGroupDataLen ${sectionLen - sectionHeaderLen}`);
190
- // Device key
191
- const deviceKey = (0, RaftDeviceStates_1.getDeviceKey)(busNum.toString(), devAddr.toString(16));
246
+ // console.log(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} overallLen ${rxMsg.length} recordStart ${msgPos} recordLen ${recordLen} ${pollDataPos} ${RaftUtils.bufferToHex(rxMsg.slice(msgPos, msgPos + recordLenLen + recordLen))}`);
247
+ // console.log(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} bus ${busNum} isOnline ${isOnline} devAddr 0x${devAddr.toString(16)} devTypeIdx ${devTypeIdx} pollDataLen ${recordLen - recordHeaderLen}`);
248
+ // Format device address as canonical hex and build device key
249
+ const devAddrHex = (0, RaftDeviceStates_1.formatDeviceAddrHex)(devAddr);
250
+ const deviceKey = (0, RaftDeviceStates_1.getDeviceKey)(busNum.toString(), devAddrHex);
192
251
  // Update the last update time
193
252
  this._deviceLastUpdateTime[deviceKey] = Date.now();
253
+ // Handle pending deletion - remove device and skip further processing
254
+ if (isPendingDeletion) {
255
+ this.removeDevice(deviceKey);
256
+ msgPos += recordLenLen + recordLen;
257
+ continue;
258
+ }
194
259
  // Check if a device state already exists
195
260
  if (!(deviceKey in this._devicesState) || (this._devicesState[deviceKey].deviceTypeInfo === undefined)) {
196
261
  // Get the device type info
197
262
  const deviceTypeInfo = await this.getDeviceTypeInfo(busNum.toString(), devTypeIdx.toString());
198
263
  // Debug
199
- // console.log(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} attrGroupPos ${attrGroupPos} busNum ${busNum} devAddr ${devAddr} devTypeIdx ${devTypeIdx} deviceTypeInfo ${JSON.stringify(deviceTypeInfo)}`);
264
+ // console.log(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} pollDataPos ${pollDataPos} busNum ${busNum} devAddr 0x${devAddr.toString(16)} devTypeIdx ${devTypeIdx} deviceTypeInfo ${JSON.stringify(deviceTypeInfo)}`);
200
265
  // Handle case where device type info is not available
201
266
  if (deviceTypeInfo === undefined) {
202
- console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} deviceType ${devTypeIdx} info not available, skipping attribute processing for this section`);
203
- // Skip to next section without processing attributes
204
- msgPos += sectionLengthLen + sectionLen;
267
+ console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} deviceType ${devTypeIdx} info not available, skipping attribute processing for this record`);
268
+ // Skip to next record without processing attributes
269
+ msgPos += recordLenLen + recordLen;
205
270
  continue;
206
271
  }
207
272
  // Check if device record exists
@@ -210,7 +275,7 @@ class DeviceManager {
210
275
  this._devicesState[deviceKey].deviceTypeInfo = deviceTypeInfo;
211
276
  this._devicesState[deviceKey].deviceType = deviceTypeInfo.name || "";
212
277
  this._devicesState[deviceKey].busName = busNum.toString();
213
- this._devicesState[deviceKey].deviceAddress = devAddr.toString();
278
+ this._devicesState[deviceKey].deviceAddress = devAddrHex;
214
279
  }
215
280
  }
216
281
  else {
@@ -225,8 +290,8 @@ class DeviceManager {
225
290
  deviceAttributes: {},
226
291
  deviceIsNew: true,
227
292
  stateChanged: false,
228
- isOnline: true,
229
- deviceAddress: devAddr.toString(),
293
+ onlineState: RaftDeviceStates_1.DeviceOnlineState.Online,
294
+ deviceAddress: devAddrHex,
230
295
  deviceType: (deviceTypeInfo === null || deviceTypeInfo === void 0 ? void 0 : deviceTypeInfo.name) || "",
231
296
  busName: busNum.toString()
232
297
  };
@@ -234,48 +299,50 @@ class DeviceManager {
234
299
  }
235
300
  // Get device state
236
301
  const deviceState = this._devicesState[deviceKey];
237
- deviceState.isOnline = isOnline;
302
+ deviceState.onlineState = isOnline ? RaftDeviceStates_1.DeviceOnlineState.Online : RaftDeviceStates_1.DeviceOnlineState.Offline;
238
303
  // Check if device type info is available and complete
239
304
  if (deviceState.deviceTypeInfo && deviceState.deviceTypeInfo.resp) {
240
305
  // Iterate over attributes in the group
241
306
  const pollRespMetadata = deviceState.deviceTypeInfo.resp;
242
- // Iterate over attribute groups
243
- const attrGroupDataLen = sectionLen - sectionHeaderLen;
244
- const attrGroupStartPos = attrGroupPos;
307
+ // Process poll data (recordLen - recordHeaderLen bytes)
308
+ const pollDataLen = recordLen - recordHeaderLen;
309
+ const pollDataStartPos = pollDataPos;
245
310
  const attrLengthsBefore = this.snapshotAttrLengths(deviceState.deviceAttributes, pollRespMetadata);
246
311
  const timelineLenBefore = deviceState.deviceTimeline.timestampsUs.length;
247
- while (attrGroupPos < attrGroupStartPos + attrGroupDataLen) {
312
+ while (pollDataPos < pollDataStartPos + pollDataLen) {
248
313
  // Add bounds checking
249
- if (attrGroupPos >= rxMsg.length) {
250
- console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} attrGroupPos ${attrGroupPos} exceeds message length ${rxMsg.length}`);
314
+ if (pollDataPos >= rxMsg.length) {
315
+ console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} pollDataPos ${pollDataPos} exceeds message length ${rxMsg.length}`);
251
316
  break;
252
317
  }
253
- const newMsgBufIdx = this._attributeHandler.processMsgAttrGroup(rxMsg, attrGroupPos, deviceState.deviceTimeline, pollRespMetadata, deviceState.deviceAttributes, this._maxDatapointsToStore);
254
- // console.log(`DevMan.handleClientMsgBinary decoded debugIdx ${debugMsgIndex} devType ${deviceState.deviceTypeInfo.name} attrGroupDataLen ${attrGroupDataLen} attrGroupPos ${attrGroupPos} sectionLen ${sectionLen} msgPos ${msgPos} rxMsgLen ${rxMsg.length} remainingLen ${remainingLen} pollRespMetadata ${JSON.stringify(pollRespMetadata)}`);
318
+ const newMsgBufIdx = this._attributeHandler.processMsgAttrGroup(rxMsg, pollDataPos, deviceState.deviceTimeline, pollRespMetadata, deviceState.deviceAttributes, this._maxDatapointsToStore);
319
+ // console.log(`DevMan.handleClientMsgBinary decoded debugIdx ${debugMsgIndex} devType ${deviceState.deviceTypeInfo.name} pollDataLen ${pollDataLen} pollDataPos ${pollDataPos} recordLen ${recordLen} msgPos ${msgPos} rxMsgLen ${rxMsg.length} remainingLen ${remainingLen} pollRespMetadata ${JSON.stringify(pollRespMetadata)}`);
255
320
  if (newMsgBufIdx < 0) {
256
321
  console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} processMsgAttrGroup failed newMsgBufIdx ${newMsgBufIdx}`);
257
322
  break;
258
323
  }
259
324
  // Prevent infinite loops
260
- if (newMsgBufIdx <= attrGroupPos) {
261
- console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} processMsgAttrGroup didn't advance position from ${attrGroupPos} to ${newMsgBufIdx}`);
325
+ if (newMsgBufIdx <= pollDataPos) {
326
+ console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} processMsgAttrGroup didn't advance position from ${pollDataPos} to ${newMsgBufIdx}`);
262
327
  break;
263
328
  }
264
- attrGroupPos = newMsgBufIdx;
329
+ pollDataPos = newMsgBufIdx;
265
330
  deviceState.stateChanged = true;
266
331
  // console.log(`debugMsgTime ${debugMsgTime} newPt debugMsgIdx ${debugMsgIndex} rxMsgLen ${rxMsg.length} devType ${deviceState.deviceTypeInfo!.name} timestampsUs ${deviceState.deviceTimeline.timestampsUs[deviceState.deviceTimeline.timestampsUs.length - 1]} curTimelineLen ${deviceState.deviceTimeline.timestampsUs.length}`);
267
- // console.log(`DevMan.handleClientMsgBinary group done debugIdx ${debugMsgIndex} attrGroupPos ${attrGroupPos} sectionLen ${sectionLen} msgPos ${msgPos} rxMsgLen ${rxMsg.length} remainingLen ${remainingLen}`);
332
+ // console.log(`DevMan.handleClientMsgBinary group done debugIdx ${debugMsgIndex} pollDataPos ${pollDataPos} recordLen ${recordLen} msgPos ${msgPos} rxMsgLen ${rxMsg.length} remainingLen ${remainingLen}`);
268
333
  }
269
334
  // Inform decoded-data callbacks
270
- this.emitDecodedData(deviceKey, busNum.toString(), devAddr.toString(), deviceState, pollRespMetadata, attrLengthsBefore, timelineLenBefore);
335
+ this.emitDecodedData(deviceKey, busNum.toString(), devAddrHex, deviceState, pollRespMetadata, attrLengthsBefore, timelineLenBefore);
336
+ const newSamples = deviceState.deviceTimeline.timestampsUs.length - timelineLenBefore;
337
+ this.updateDeviceStats(deviceKey, newSamples, Date.now());
271
338
  }
272
339
  else {
273
340
  console.warn(`DevMan.handleClientMsgBinary debugIdx ${debugMsgIndex} deviceState incomplete for device ${deviceKey}, skipping attribute processing`);
274
341
  }
275
342
  // Debug
276
- // console.log(`DevMan.handleClientMsgBinary section done debugIdx ${debugMsgIndex} attrGroupPos ${attrGroupPos} sectionLen ${sectionLen} msgPos ${msgPos} newMsgPos ${msgPos + sectionLengthLen + sectionLen} rxMsgLen ${rxMsg.length} remainingLen ${remainingLen}`);
277
- // Move to next message
278
- msgPos += sectionLengthLen + sectionLen;
343
+ // console.log(`DevMan.handleClientMsgBinary record done debugIdx ${debugMsgIndex} pollDataPos ${pollDataPos} recordLen ${recordLen} msgPos ${msgPos} newMsgPos ${msgPos + recordLenLen + recordLen} rxMsgLen ${rxMsg.length} remainingLen ${remainingLen}`);
344
+ // Advance past this record (recordLenLen + recordLen bytes)
345
+ msgPos += recordLenLen + recordLen;
279
346
  }
280
347
  // Check for devices that have not been updated for a while
281
348
  if (this._removeDevicesFlag) {
@@ -283,6 +350,7 @@ class DeviceManager {
283
350
  Object.entries(this._deviceLastUpdateTime).forEach(([deviceKey, lastUpdateTime]) => {
284
351
  if ((nowTime - lastUpdateTime) > this._removeDevicesTimeMs) {
285
352
  delete this._devicesState[deviceKey];
353
+ delete this._deviceStats[deviceKey];
286
354
  }
287
355
  });
288
356
  }
@@ -297,6 +365,10 @@ class DeviceManager {
297
365
  // console.log(`DeviceManager client msg ${JSON.stringify(data)}`);
298
366
  // Iterate over the buses
299
367
  Object.entries(data).forEach(([busName, devices]) => {
368
+ // Check the bus name doesn't start with _ which is reserved for non-device information such as topic name
369
+ if (busName.startsWith("_")) {
370
+ return;
371
+ }
300
372
  // Check for bus status info
301
373
  if (devices && typeof devices === "object" && "_s" in devices) {
302
374
  // console.log(`DeviceManager bus status ${JSON.stringify(devices._s)}`);
@@ -304,6 +376,7 @@ class DeviceManager {
304
376
  }
305
377
  // Iterate over the devices
306
378
  Object.entries(devices).forEach(async ([devAddr, attrGroups]) => {
379
+ var _a;
307
380
  // Check for non-device info (starts with _)
308
381
  if (devAddr.startsWith("_")) {
309
382
  return;
@@ -315,7 +388,7 @@ class DeviceManager {
315
388
  deviceTypeName = attrGroups._t || "";
316
389
  }
317
390
  else if (attrGroups && typeof attrGroups === 'object' && "_i" in attrGroups && typeof attrGroups._i === "number") {
318
- deviceTypeIdx = attrGroups._i || -1;
391
+ deviceTypeIdx = (_a = attrGroups._i) !== null && _a !== void 0 ? _a : -1;
319
392
  deviceTypeName = deviceTypeIdx.toString();
320
393
  }
321
394
  else {
@@ -351,7 +424,7 @@ class DeviceManager {
351
424
  deviceAttributes: {},
352
425
  deviceIsNew: true,
353
426
  stateChanged: false,
354
- isOnline: true,
427
+ onlineState: RaftDeviceStates_1.DeviceOnlineState.Online,
355
428
  deviceAddress: devAddr,
356
429
  deviceType: deviceTypeName,
357
430
  busName: busName
@@ -360,9 +433,15 @@ class DeviceManager {
360
433
  }
361
434
  // Get device state
362
435
  const deviceState = this._devicesState[deviceKey];
363
- // Check for online/offline state information
436
+ // Check for online/offline/pending-deletion state information
364
437
  if (attrGroups && typeof attrGroups === "object" && "_o" in attrGroups) {
365
- deviceState.isOnline = ((attrGroups._o === true) || (attrGroups._o === "1") || (attrGroups._o === 1));
438
+ const onlineStateVal = typeof attrGroups._o === 'number' ? attrGroups._o : parseInt(String(attrGroups._o), 10);
439
+ if (onlineStateVal === 2) {
440
+ // Pending deletion - remove device and skip further processing
441
+ this.removeDevice(deviceKey);
442
+ return;
443
+ }
444
+ deviceState.onlineState = onlineStateVal === 1 ? RaftDeviceStates_1.DeviceOnlineState.Online : RaftDeviceStates_1.DeviceOnlineState.Offline;
366
445
  }
367
446
  // Check if device type info is available
368
447
  if (!deviceState.deviceTypeInfo) {
@@ -396,6 +475,8 @@ class DeviceManager {
396
475
  deviceState.stateChanged = true;
397
476
  }
398
477
  this.emitDecodedData(deviceKey, busName, devAddr, deviceState, pollRespMetadata, attrLengthsBefore, timelineLenBefore, attrGroupName, markers);
478
+ const newSamples = deviceState.deviceTimeline.timestampsUs.length - timelineLenBefore;
479
+ this.updateDeviceStats(deviceKey, newSamples, Date.now());
399
480
  });
400
481
  });
401
482
  });
@@ -405,6 +486,7 @@ class DeviceManager {
405
486
  Object.entries(this._deviceLastUpdateTime).forEach(([deviceKey, lastUpdateTime]) => {
406
487
  if ((nowTime - lastUpdateTime) > this._removeDevicesTimeMs) {
407
488
  delete this._devicesState[deviceKey];
489
+ delete this._deviceStats[deviceKey];
408
490
  }
409
491
  });
410
492
  }
@@ -436,6 +518,20 @@ class DeviceManager {
436
518
  });
437
519
  }
438
520
  ////////////////////////////////////////////////////////////////////////////
521
+ // Remove a device (e.g. on pending deletion)
522
+ ////////////////////////////////////////////////////////////////////////////
523
+ removeDevice(deviceKey) {
524
+ // Snapshot the state before removal for callbacks
525
+ const deviceState = this._devicesState[deviceKey];
526
+ if (deviceState) {
527
+ deviceState.onlineState = RaftDeviceStates_1.DeviceOnlineState.PendingDeletion;
528
+ this._deviceRemovedCallbacks.forEach((cb) => cb(deviceKey, deviceState));
529
+ }
530
+ delete this._devicesState[deviceKey];
531
+ delete this._deviceLastUpdateTime[deviceKey];
532
+ delete this._deviceStats[deviceKey];
533
+ }
534
+ ////////////////////////////////////////////////////////////////////////////
439
535
  // Get device type info
440
536
  ////////////////////////////////////////////////////////////////////////////
441
537
  async getDeviceTypeInfo(busName, deviceType) {
@@ -537,9 +633,8 @@ class DeviceManager {
537
633
  let writeHexStr = this.toHex(writeBytes);
538
634
  // Add prefix and postfix
539
635
  writeHexStr = (action.w ? action.w : "") + writeHexStr + (action.wz ? action.wz : "");
540
- // Separate the bus and address in the deviceKey (_ char)
541
- const devBus = deviceKey.split("_")[0];
542
- const devAddr = deviceKey.split("_")[1];
636
+ // Parse the device key into bus and address components
637
+ const { bus: devBus, addr: devAddr } = (0, RaftDeviceStates_1.parseDeviceKey)(deviceKey);
543
638
  // Send the action to the server
544
639
  const cmd = "devman/cmdraw?bus=" + devBus + "&addr=" + devAddr + "&hexWr=" + writeHexStr;
545
640
  console.log(`DeviceManager deviceKey ${deviceKey} action name ${action.n} value ${data} prefix ${action.w} sendAction ${cmd}`);
@@ -596,6 +691,57 @@ class DeviceManager {
596
691
  return bytes;
597
692
  }
598
693
  ////////////////////////////////////////////////////////////////////////////
694
+ // Helpers for device stats
695
+ ////////////////////////////////////////////////////////////////////////////
696
+ createEmptyStats() {
697
+ return {
698
+ totalSamples: 0,
699
+ windowMs: this._statsWindowMs,
700
+ windowSamples: 0,
701
+ sampleRateHz: 0,
702
+ lastSampleTimeMs: null,
703
+ lastUpdateTimeMs: null,
704
+ windowEvents: []
705
+ };
706
+ }
707
+ getOrCreateDeviceStats(deviceKey) {
708
+ if (!this._deviceStats[deviceKey]) {
709
+ this._deviceStats[deviceKey] = this.createEmptyStats();
710
+ }
711
+ return this._deviceStats[deviceKey];
712
+ }
713
+ cloneDeviceStats(stats) {
714
+ return {
715
+ totalSamples: stats.totalSamples,
716
+ windowMs: stats.windowMs,
717
+ windowSamples: stats.windowSamples,
718
+ sampleRateHz: stats.sampleRateHz,
719
+ lastSampleTimeMs: stats.lastSampleTimeMs,
720
+ lastUpdateTimeMs: stats.lastUpdateTimeMs
721
+ };
722
+ }
723
+ updateDeviceStats(deviceKey, newSamples, nowMs) {
724
+ const stats = this.getOrCreateDeviceStats(deviceKey);
725
+ stats.lastUpdateTimeMs = nowMs;
726
+ if (newSamples > 0) {
727
+ stats.totalSamples += newSamples;
728
+ stats.lastSampleTimeMs = nowMs;
729
+ stats.windowEvents.push({ timeMs: nowMs, samples: newSamples });
730
+ }
731
+ const windowStartMs = nowMs - stats.windowMs;
732
+ while (stats.windowEvents.length > 0 && stats.windowEvents[0].timeMs < windowStartMs) {
733
+ stats.windowEvents.shift();
734
+ }
735
+ const windowSamples = stats.windowEvents.reduce((sum, entry) => sum + entry.samples, 0);
736
+ stats.windowSamples = windowSamples;
737
+ if (stats.windowEvents.length === 0) {
738
+ stats.sampleRateHz = 0;
739
+ return;
740
+ }
741
+ const actualWindowMs = Math.max(1, nowMs - stats.windowEvents[0].timeMs);
742
+ stats.sampleRateHz = (windowSamples * 1000) / actualWindowMs;
743
+ }
744
+ ////////////////////////////////////////////////////////////////////////////
599
745
  // Helpers for decoded data callbacks
600
746
  ////////////////////////////////////////////////////////////////////////////
601
747
  snapshotAttrLengths(deviceAttrs, pollRespMetadata) {
@@ -604,8 +750,8 @@ class DeviceManager {
604
750
  return lengths;
605
751
  }
606
752
  pollRespMetadata.a.forEach((attr) => {
607
- var _a;
608
- lengths[attr.n] = ((_a = deviceAttrs[attr.n]) === null || _a === void 0 ? void 0 : _a.values.length) || 0;
753
+ var _a, _b;
754
+ lengths[attr.n] = (_b = (_a = deviceAttrs[attr.n]) === null || _a === void 0 ? void 0 : _a.values.length) !== null && _b !== void 0 ? _b : 0;
609
755
  });
610
756
  return lengths;
611
757
  }
@@ -616,11 +762,12 @@ class DeviceManager {
616
762
  const attrValues = {};
617
763
  let hasValues = false;
618
764
  pollRespMetadata.a.forEach((attr) => {
765
+ var _a;
619
766
  const attrState = deviceState.deviceAttributes[attr.n];
620
767
  if (!attrState) {
621
768
  return;
622
769
  }
623
- const prevLen = attrLengthsBefore[attr.n] || 0;
770
+ const prevLen = (_a = attrLengthsBefore[attr.n]) !== null && _a !== void 0 ? _a : 0;
624
771
  if (attrState.values.length > prevLen) {
625
772
  attrValues[attr.n] = attrState.values.slice(prevLen);
626
773
  hasValues = hasValues || attrValues[attr.n].length > 0;
@@ -1 +1 @@
1
- {"version":3,"file":"RaftDeviceManager.js","sourceRoot":"","sources":["../../src/RaftDeviceManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RaftDeviceManager.js","sourceRoot":"","sources":["../../src/RaftDeviceManager.ts"],"names":[],"mappings":"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"}