@robotical/raftjs 2.1.0 → 2.1.2
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.
- package/devdocs/devbin-backwards-compatibility.md +105 -0
- package/devdocs/pseudocode-to-js-transpiler.md +563 -0
- package/dist/react-native/PseudocodeTranspiler.d.ts +6 -0
- package/dist/react-native/PseudocodeTranspiler.js +115 -0
- package/dist/react-native/PseudocodeTranspiler.js.map +1 -0
- package/dist/react-native/RaftAttributeHandler.d.ts +1 -1
- package/dist/react-native/RaftAttributeHandler.js +108 -32
- package/dist/react-native/RaftAttributeHandler.js.map +1 -1
- package/dist/react-native/RaftChannelBLE.web.d.ts +4 -0
- package/dist/react-native/RaftChannelBLE.web.js +59 -21
- package/dist/react-native/RaftChannelBLE.web.js.map +1 -1
- package/dist/react-native/RaftChannelSimulated.d.ts +1 -0
- package/dist/react-native/RaftChannelSimulated.js +9 -5
- package/dist/react-native/RaftChannelSimulated.js.map +1 -1
- package/dist/react-native/RaftChannelWebSocket.js +16 -1
- package/dist/react-native/RaftChannelWebSocket.js.map +1 -1
- package/dist/react-native/RaftConnector.d.ts +11 -1
- package/dist/react-native/RaftConnector.js +75 -9
- package/dist/react-native/RaftConnector.js.map +1 -1
- package/dist/react-native/RaftCustomAttrHandler.d.ts +2 -2
- package/dist/react-native/RaftCustomAttrHandler.js +32 -44
- package/dist/react-native/RaftCustomAttrHandler.js.map +1 -1
- package/dist/react-native/RaftDeviceInfo.d.ts +18 -0
- package/dist/react-native/RaftDeviceInfo.js +8 -0
- package/dist/react-native/RaftDeviceInfo.js.map +1 -1
- package/dist/react-native/RaftDeviceManager.d.ts +30 -3
- package/dist/react-native/RaftDeviceManager.js +618 -107
- package/dist/react-native/RaftDeviceManager.js.map +1 -1
- package/dist/react-native/RaftDeviceMgrIF.d.ts +11 -2
- package/dist/react-native/RaftDeviceStates.d.ts +27 -3
- package/dist/react-native/RaftDeviceStates.js +31 -6
- package/dist/react-native/RaftDeviceStates.js.map +1 -1
- package/dist/react-native/RaftFileHandler.d.ts +0 -1
- package/dist/react-native/RaftFileHandler.js +61 -23
- package/dist/react-native/RaftFileHandler.js.map +1 -1
- package/dist/react-native/RaftPublish.d.ts +2 -0
- package/dist/react-native/RaftPublish.js +81 -0
- package/dist/react-native/RaftPublish.js.map +1 -0
- package/dist/react-native/RaftStreamHandler.d.ts +11 -0
- package/dist/react-native/RaftStreamHandler.js +66 -0
- package/dist/react-native/RaftStreamHandler.js.map +1 -1
- package/dist/react-native/RaftStruct.d.ts +2 -2
- package/dist/react-native/RaftStruct.js +97 -26
- package/dist/react-native/RaftStruct.js.map +1 -1
- package/dist/react-native/RaftSystemType.d.ts +1 -0
- package/dist/react-native/RaftSystemUtils.d.ts +17 -1
- package/dist/react-native/RaftSystemUtils.js +51 -0
- package/dist/react-native/RaftSystemUtils.js.map +1 -1
- package/dist/react-native/RaftTimezone.d.ts +16 -0
- package/dist/react-native/RaftTimezone.js +153 -0
- package/dist/react-native/RaftTimezone.js.map +1 -0
- package/dist/react-native/RaftTypes.d.ts +27 -1
- package/dist/react-native/RaftTypes.js.map +1 -1
- package/dist/react-native/RaftUpdateManager.js +1 -1
- package/dist/react-native/RaftUpdateManager.js.map +1 -1
- package/dist/react-native/main.d.ts +2 -0
- package/dist/react-native/main.js +6 -1
- package/dist/react-native/main.js.map +1 -1
- package/dist/web/PseudocodeTranspiler.d.ts +6 -0
- package/dist/web/PseudocodeTranspiler.js +115 -0
- package/dist/web/PseudocodeTranspiler.js.map +1 -0
- package/dist/web/RaftAttributeHandler.d.ts +1 -1
- package/dist/web/RaftAttributeHandler.js +108 -32
- package/dist/web/RaftAttributeHandler.js.map +1 -1
- package/dist/web/RaftChannelBLE.web.d.ts +4 -0
- package/dist/web/RaftChannelBLE.web.js +59 -21
- package/dist/web/RaftChannelBLE.web.js.map +1 -1
- package/dist/web/RaftChannelSimulated.d.ts +1 -0
- package/dist/web/RaftChannelSimulated.js +9 -5
- package/dist/web/RaftChannelSimulated.js.map +1 -1
- package/dist/web/RaftChannelWebSocket.js +16 -1
- package/dist/web/RaftChannelWebSocket.js.map +1 -1
- package/dist/web/RaftConnector.d.ts +11 -1
- package/dist/web/RaftConnector.js +75 -9
- package/dist/web/RaftConnector.js.map +1 -1
- package/dist/web/RaftCustomAttrHandler.d.ts +2 -2
- package/dist/web/RaftCustomAttrHandler.js +32 -44
- package/dist/web/RaftCustomAttrHandler.js.map +1 -1
- package/dist/web/RaftDeviceInfo.d.ts +18 -0
- package/dist/web/RaftDeviceInfo.js +8 -0
- package/dist/web/RaftDeviceInfo.js.map +1 -1
- package/dist/web/RaftDeviceManager.d.ts +30 -3
- package/dist/web/RaftDeviceManager.js +618 -107
- package/dist/web/RaftDeviceManager.js.map +1 -1
- package/dist/web/RaftDeviceMgrIF.d.ts +11 -2
- package/dist/web/RaftDeviceStates.d.ts +27 -3
- package/dist/web/RaftDeviceStates.js +31 -6
- package/dist/web/RaftDeviceStates.js.map +1 -1
- package/dist/web/RaftFileHandler.d.ts +0 -1
- package/dist/web/RaftFileHandler.js +61 -23
- package/dist/web/RaftFileHandler.js.map +1 -1
- package/dist/web/RaftPublish.d.ts +2 -0
- package/dist/web/RaftPublish.js +81 -0
- package/dist/web/RaftPublish.js.map +1 -0
- package/dist/web/RaftStreamHandler.d.ts +11 -0
- package/dist/web/RaftStreamHandler.js +66 -0
- package/dist/web/RaftStreamHandler.js.map +1 -1
- package/dist/web/RaftStruct.d.ts +2 -2
- package/dist/web/RaftStruct.js +97 -26
- package/dist/web/RaftStruct.js.map +1 -1
- package/dist/web/RaftSystemType.d.ts +1 -0
- package/dist/web/RaftSystemUtils.d.ts +17 -1
- package/dist/web/RaftSystemUtils.js +51 -0
- package/dist/web/RaftSystemUtils.js.map +1 -1
- package/dist/web/RaftTimezone.d.ts +16 -0
- package/dist/web/RaftTimezone.js +153 -0
- package/dist/web/RaftTimezone.js.map +1 -0
- package/dist/web/RaftTypes.d.ts +27 -1
- package/dist/web/RaftTypes.js.map +1 -1
- package/dist/web/RaftUpdateManager.js +1 -1
- package/dist/web/RaftUpdateManager.js.map +1 -1
- package/dist/web/main.d.ts +2 -0
- package/dist/web/main.js +6 -1
- package/dist/web/main.js.map +1 -1
- package/examples/dashboard/package.json +2 -2
- package/examples/dashboard/src/DeviceActionsForm.tsx +158 -8
- package/examples/dashboard/src/DeviceLineChart.tsx +16 -3
- package/examples/dashboard/src/DevicePanel.tsx +92 -11
- package/examples/dashboard/src/DeviceSelectDialog.tsx +224 -0
- package/examples/dashboard/src/DeviceStatsPanel.tsx +76 -0
- package/examples/dashboard/src/DevicesPanel.tsx +11 -0
- package/examples/dashboard/src/LogConfigPanel.tsx +357 -0
- package/examples/dashboard/src/LogFilesPanel.tsx +200 -0
- package/examples/dashboard/src/LoggingPanel.tsx +264 -0
- package/examples/dashboard/src/Main.tsx +12 -2
- package/examples/dashboard/src/SettingsScreen.tsx +9 -4
- package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +10 -3
- package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +37 -3
- package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +10 -2
- package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +41 -7
- package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +34 -3
- package/examples/dashboard/src/styles.css +766 -1
- package/notes/web-ble-reconnect-retry.md +69 -0
- package/package.json +10 -7
- package/src/PseudocodeTranspiler.test.ts +372 -0
- package/src/PseudocodeTranspiler.ts +127 -0
- package/src/RaftAttributeHandler.ts +152 -76
- package/src/RaftChannelBLE.web.ts +62 -20
- package/src/RaftChannelSimulated.ts +10 -5
- package/src/RaftChannelWebSocket.ts +16 -2
- package/src/RaftConnector.ts +93 -15
- package/src/RaftCustomAttrHandler.ts +35 -45
- package/src/RaftDeviceInfo.ts +27 -0
- package/src/RaftDeviceManager.test.ts +164 -0
- package/src/RaftDeviceManager.ts +705 -127
- package/src/RaftDeviceMgrIF.ts +13 -2
- package/src/RaftDeviceStates.ts +49 -8
- package/src/RaftFileHandler.ts +69 -28
- package/src/RaftPublish.ts +92 -0
- package/src/RaftStreamHandler.ts +84 -1
- package/src/RaftStruct.test.ts +229 -0
- package/src/RaftStruct.ts +101 -37
- package/src/RaftSystemType.ts +1 -0
- package/src/RaftSystemUtils.ts +59 -0
- package/src/RaftTimezone.ts +151 -0
- package/src/RaftTypes.ts +34 -1
- package/src/RaftUpdateManager.ts +1 -1
- package/src/main.ts +2 -0
|
@@ -19,12 +19,13 @@ class AttributeHandler {
|
|
|
19
19
|
// Message timestamp size
|
|
20
20
|
this.POLL_RESULT_TIMESTAMP_SIZE = 2;
|
|
21
21
|
this.POLL_RESULT_WRAP_VALUE = this.POLL_RESULT_TIMESTAMP_SIZE === 2 ? 65536 : 4294967296;
|
|
22
|
-
this.POLL_RESULT_RESOLUTION_US =
|
|
22
|
+
this.POLL_RESULT_RESOLUTION_US = 100;
|
|
23
23
|
}
|
|
24
|
-
processMsgAttrGroup(msgBuffer, msgBufIdx, deviceTimeline, pollRespMetadata, devAttrsState, maxDataPoints) {
|
|
24
|
+
processMsgAttrGroup(msgBuffer, msgBufIdx, deviceTimeline, pollRespMetadata, devAttrsState, maxDataPoints, msgEndIdx = msgBuffer.length) {
|
|
25
25
|
// console.log(`processMsgAttrGroup msg ${msgHexStr} timestamp ${timestamp} origTimestamp ${origTimestamp} msgBufIdx ${msgBufIdx}`)
|
|
26
|
+
const boundedMsgEndIdx = Math.min(Math.max(msgEndIdx, msgBufIdx), msgBuffer.length);
|
|
26
27
|
// Extract msg timestamp
|
|
27
|
-
const { newBufIdx, timestampUs } = this.extractTimestampAndAdvanceIdx(msgBuffer, msgBufIdx, deviceTimeline);
|
|
28
|
+
const { newBufIdx, timestampUs } = this.extractTimestampAndAdvanceIdx(msgBuffer, msgBufIdx, deviceTimeline, boundedMsgEndIdx);
|
|
28
29
|
if (newBufIdx < 0)
|
|
29
30
|
return -1;
|
|
30
31
|
msgBufIdx = newBufIdx;
|
|
@@ -34,7 +35,32 @@ class AttributeHandler {
|
|
|
34
35
|
let newAttrValues = [];
|
|
35
36
|
if ("c" in pollRespMetadata) {
|
|
36
37
|
// Extract attribute values using custom handler
|
|
37
|
-
newAttrValues = this._customAttrHandler.handleAttr(pollRespMetadata, msgBuffer, msgBufIdx);
|
|
38
|
+
newAttrValues = this._customAttrHandler.handleAttr(pollRespMetadata, msgBuffer, msgBufIdx, boundedMsgEndIdx);
|
|
39
|
+
// Apply per-attribute transforms that the custom handler doesn't handle
|
|
40
|
+
for (let attrIdx = 0; attrIdx < pollRespMetadata.a.length && attrIdx < newAttrValues.length; attrIdx++) {
|
|
41
|
+
const attrDef = pollRespMetadata.a[attrIdx];
|
|
42
|
+
if (newAttrValues[attrIdx].length === 0)
|
|
43
|
+
continue;
|
|
44
|
+
// Sign-extend values for signed types — the pseudocode produces unsigned
|
|
45
|
+
// values from bitwise operations, but the attribute type declares signedness
|
|
46
|
+
if (attrDef.t && (0, RaftDeviceInfo_1.isAttrTypeSigned)(attrDef.t)) {
|
|
47
|
+
const byteWidth = (0, RaftStruct_1.structSizeOf)(attrDef.t);
|
|
48
|
+
const signBit = 1 << (byteWidth * 8 - 1);
|
|
49
|
+
const range = signBit * 2;
|
|
50
|
+
newAttrValues[attrIdx] = newAttrValues[attrIdx].map(v => {
|
|
51
|
+
const n = v;
|
|
52
|
+
return (n & signBit) ? n - range : n;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if ("d" in attrDef && attrDef.d) {
|
|
56
|
+
const divisor = attrDef.d;
|
|
57
|
+
newAttrValues[attrIdx] = newAttrValues[attrIdx].map(v => v / divisor);
|
|
58
|
+
}
|
|
59
|
+
if ("a" in attrDef && attrDef.a !== undefined) {
|
|
60
|
+
const addend = attrDef.a;
|
|
61
|
+
newAttrValues[attrIdx] = newAttrValues[attrIdx].map(v => v + addend);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
38
64
|
}
|
|
39
65
|
else {
|
|
40
66
|
// console.log(`RaftAttrHdlr.processMsgAttrGroup ${JSON.stringify(pollRespMetadata)} msgBufIdx ${msgBufIdx} timestampUs ${timestampUs}`);
|
|
@@ -49,10 +75,9 @@ class AttributeHandler {
|
|
|
49
75
|
}
|
|
50
76
|
// console.log(`RaftAttrHdlr.processMsgAttrGroup attr ${attrDef.n} msgBufIdx ${msgBufIdx} timestampUs ${timestampUs} attrDef ${JSON.stringify(attrDef)}`);
|
|
51
77
|
// Process the attribute
|
|
52
|
-
const { values, newMsgBufIdx } = this.processMsgAttribute(attrDef, msgBuffer, msgBufIdx, msgDataStartIdx);
|
|
78
|
+
const { values, newMsgBufIdx } = this.processMsgAttribute(attrDef, msgBuffer, msgBufIdx, msgDataStartIdx, boundedMsgEndIdx);
|
|
53
79
|
if (newMsgBufIdx < 0) {
|
|
54
|
-
|
|
55
|
-
continue;
|
|
80
|
+
return -1;
|
|
56
81
|
}
|
|
57
82
|
msgBufIdx = newMsgBufIdx;
|
|
58
83
|
newAttrValues.push(values);
|
|
@@ -66,7 +91,7 @@ class AttributeHandler {
|
|
|
66
91
|
// Check if any attributes were added (in addition to timestamp)
|
|
67
92
|
if (newAttrValues.length === 0) {
|
|
68
93
|
console.warn(`DeviceManager msg attrGroup ${JSON.stringify(pollRespMetadata)} newAttrValues ${newAttrValues} is empty`);
|
|
69
|
-
return
|
|
94
|
+
return -1;
|
|
70
95
|
}
|
|
71
96
|
// All attributes must have the same number of new values
|
|
72
97
|
const numNewDataPoints = newAttrValues[0].length;
|
|
@@ -109,11 +134,55 @@ class AttributeHandler {
|
|
|
109
134
|
devAttrsState[attrDef.n].newData = newAttrValues[attrIdx].length > 0;
|
|
110
135
|
devAttrsState[attrDef.n].numNewValues = newAttrValues[attrIdx].length;
|
|
111
136
|
}
|
|
112
|
-
//
|
|
137
|
+
// --- Piecewise EMA timestamp reconstruction ---
|
|
138
|
+
// Track the last assigned sample timestamp and step forward by emaIntervalUs
|
|
139
|
+
// per sample. No T0 recomputation — avoids amplified batch-boundary jitter.
|
|
113
140
|
const timeIncUs = pollRespMetadata.us ? pollRespMetadata.us : 1000;
|
|
141
|
+
if (!deviceTimeline.emaCalibrated) {
|
|
142
|
+
// Cold start: anchor so that sample 0 gets the poll timestamp
|
|
143
|
+
deviceTimeline.emaIntervalUs = timeIncUs;
|
|
144
|
+
deviceTimeline.emaLastSampleTimeUs = timestampUs - deviceTimeline.emaIntervalUs;
|
|
145
|
+
deviceTimeline.emaPrevPollTimeUs = timestampUs;
|
|
146
|
+
deviceTimeline.emaCalibrated = true;
|
|
147
|
+
deviceTimeline.emaCalibrationPolls = 1;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// EMA interval update from poll-to-poll gap
|
|
151
|
+
if (numNewDataPoints > 1) {
|
|
152
|
+
const instantIntervalUs = (timestampUs - deviceTimeline.emaPrevPollTimeUs) / numNewDataPoints;
|
|
153
|
+
const alpha = deviceTimeline.emaCalibrationPolls < 20 ? 0.3 : 0.05;
|
|
154
|
+
deviceTimeline.emaIntervalUs = alpha * instantIntervalUs
|
|
155
|
+
+ (1.0 - alpha) * deviceTimeline.emaIntervalUs;
|
|
156
|
+
}
|
|
157
|
+
else if (numNewDataPoints === 1) {
|
|
158
|
+
const instantIntervalUs = timestampUs - deviceTimeline.emaPrevPollTimeUs;
|
|
159
|
+
if (Number.isFinite(instantIntervalUs) && instantIntervalUs > 0) {
|
|
160
|
+
deviceTimeline.emaIntervalUs = instantIntervalUs;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
deviceTimeline.emaPrevPollTimeUs = timestampUs;
|
|
164
|
+
deviceTimeline.emaCalibrationPolls++;
|
|
165
|
+
}
|
|
166
|
+
// Assign timestamps: each sample steps forward by emaIntervalUs
|
|
114
167
|
const timestampsUs = Array(numNewDataPoints).fill(0);
|
|
168
|
+
const lastTimeUs = deviceTimeline.timestampsUs.length > 0
|
|
169
|
+
? deviceTimeline.timestampsUs[deviceTimeline.timestampsUs.length - 1]
|
|
170
|
+
: -Infinity;
|
|
115
171
|
for (let i = 0; i < numNewDataPoints; i++) {
|
|
116
|
-
timestampsUs[i] =
|
|
172
|
+
timestampsUs[i] = numNewDataPoints === 1
|
|
173
|
+
? timestampUs
|
|
174
|
+
: deviceTimeline.emaLastSampleTimeUs + (i + 1) * deviceTimeline.emaIntervalUs;
|
|
175
|
+
// Ensure monotonically increasing timestamps
|
|
176
|
+
if (i === 0 && timestampsUs[0] <= lastTimeUs) {
|
|
177
|
+
timestampsUs[0] = lastTimeUs + 1;
|
|
178
|
+
}
|
|
179
|
+
else if (i > 0 && timestampsUs[i] <= timestampsUs[i - 1]) {
|
|
180
|
+
timestampsUs[i] = timestampsUs[i - 1] + 1;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Advance the piecewise model cursor past all samples in this batch
|
|
184
|
+
if (deviceTimeline.emaCalibrated && numNewDataPoints > 0) {
|
|
185
|
+
deviceTimeline.emaLastSampleTimeUs = timestampsUs[timestampsUs.length - 1];
|
|
117
186
|
}
|
|
118
187
|
// Check if timeline points need to be discarded
|
|
119
188
|
const discardCount = Math.max(0, deviceTimeline.timestampsUs.length + timestampsUs.length - maxDataPoints);
|
|
@@ -122,6 +191,7 @@ class AttributeHandler {
|
|
|
122
191
|
}
|
|
123
192
|
// Add the new timestamps
|
|
124
193
|
deviceTimeline.timestampsUs.push(...timestampsUs);
|
|
194
|
+
deviceTimeline.totalSamplesAdded += numNewDataPoints;
|
|
125
195
|
// Validate attributes based on the vft field
|
|
126
196
|
this.validateAttributes(pollRespMetadata, devAttrsState, numNewDataPoints);
|
|
127
197
|
// Return the next message buffer index
|
|
@@ -168,29 +238,34 @@ class AttributeHandler {
|
|
|
168
238
|
}
|
|
169
239
|
}
|
|
170
240
|
}
|
|
171
|
-
processMsgAttribute(attrDef, msgBuffer, msgBufIdx, msgDataStartIdx) {
|
|
241
|
+
processMsgAttribute(attrDef, msgBuffer, msgBufIdx, msgDataStartIdx, msgEndIdx) {
|
|
172
242
|
// Current field message string index
|
|
173
243
|
let curFieldBufIdx = msgBufIdx;
|
|
174
244
|
let attrUsesAbsPos = false;
|
|
245
|
+
const boundedMsgEndIdx = Math.min(Math.max(msgEndIdx, msgDataStartIdx), msgBuffer.length);
|
|
246
|
+
const attrTypesOnly = attrDef.t;
|
|
247
|
+
const numBytesConsumed = (0, RaftStruct_1.structSizeOf)(attrTypesOnly);
|
|
175
248
|
// Check for "at" field which means absolute position in the buffer
|
|
176
249
|
if (attrDef.at !== undefined) {
|
|
177
250
|
// Handle both single value and array of byte positions
|
|
178
251
|
if (Array.isArray(attrDef.at)) {
|
|
179
252
|
// Create a new buffer for non-contiguous data extraction
|
|
180
|
-
const elemSize =
|
|
253
|
+
const elemSize = numBytesConsumed;
|
|
181
254
|
const bytesForType = new Uint8Array(elemSize);
|
|
182
255
|
// Zero out the buffer
|
|
183
256
|
bytesForType.fill(0);
|
|
184
257
|
// Copy bytes from the specified positions
|
|
185
258
|
for (let i = 0; i < attrDef.at.length && i < elemSize; i++) {
|
|
186
259
|
const sourceIdx = msgDataStartIdx + attrDef.at[i];
|
|
187
|
-
if (sourceIdx
|
|
188
|
-
|
|
260
|
+
if (sourceIdx >= boundedMsgEndIdx) {
|
|
261
|
+
return { values: [], newMsgBufIdx: -1 };
|
|
189
262
|
}
|
|
263
|
+
bytesForType[i] = msgBuffer[sourceIdx];
|
|
190
264
|
}
|
|
191
265
|
// Use this buffer for attribute extraction
|
|
192
266
|
msgBuffer = bytesForType;
|
|
193
267
|
curFieldBufIdx = 0;
|
|
268
|
+
msgEndIdx = bytesForType.length;
|
|
194
269
|
}
|
|
195
270
|
else {
|
|
196
271
|
// Standard absolute position in the buffer
|
|
@@ -199,21 +274,21 @@ class AttributeHandler {
|
|
|
199
274
|
attrUsesAbsPos = true;
|
|
200
275
|
}
|
|
201
276
|
// Check if outside bounds of message
|
|
202
|
-
|
|
277
|
+
const attrEndIdx = curFieldBufIdx + numBytesConsumed;
|
|
278
|
+
const effectiveMsgEndIdx = Math.min(Math.max(msgEndIdx, curFieldBufIdx), msgBuffer.length);
|
|
279
|
+
if (curFieldBufIdx >= effectiveMsgEndIdx || attrEndIdx > effectiveMsgEndIdx) {
|
|
203
280
|
// console.warn(`DeviceManager msg outside bounds msgBuffer ${msgBuffer} attrName ${attrDef.n}`);
|
|
204
281
|
return { values: [], newMsgBufIdx: -1 };
|
|
205
282
|
}
|
|
206
|
-
// Attribute type
|
|
207
|
-
const attrTypesOnly = attrDef.t;
|
|
208
283
|
// Slice into buffer
|
|
209
|
-
const attrBuf = msgBuffer.slice(curFieldBufIdx);
|
|
284
|
+
const attrBuf = msgBuffer.slice(curFieldBufIdx, effectiveMsgEndIdx);
|
|
210
285
|
// Check if a mask is used and the value is signed
|
|
211
286
|
const maskOnSignedValue = "m" in attrDef && (0, RaftDeviceInfo_1.isAttrTypeSigned)(attrTypesOnly);
|
|
212
287
|
// Extract the value using python-struct
|
|
213
288
|
const unpackValues = (0, RaftStruct_1.structUnpack)(maskOnSignedValue ? attrTypesOnly.toUpperCase() : attrTypesOnly, attrBuf);
|
|
214
289
|
let attrValues = unpackValues;
|
|
215
|
-
//
|
|
216
|
-
const
|
|
290
|
+
// Check if any values are strings (from 's' format) — skip numeric transforms for those
|
|
291
|
+
const hasStringValues = attrValues.some(v => typeof v === 'string');
|
|
217
292
|
// // Check if sign extendable mask specified on signed value
|
|
218
293
|
// if (mmSpecifiedOnSignedValue) {
|
|
219
294
|
// const signBitMask = 1 << (signExtendableMaskSignPos - 1);
|
|
@@ -225,17 +300,17 @@ class AttributeHandler {
|
|
|
225
300
|
// }
|
|
226
301
|
// }
|
|
227
302
|
// Check for XOR mask
|
|
228
|
-
if ("x" in attrDef) {
|
|
303
|
+
if (!hasStringValues && "x" in attrDef) {
|
|
229
304
|
const mask = typeof attrDef.x === "string" ? parseInt(attrDef.x, 16) : attrDef.x;
|
|
230
305
|
attrValues = attrValues.map((value) => (value >>> 0) ^ mask);
|
|
231
306
|
}
|
|
232
307
|
// Check for AND mask
|
|
233
|
-
if ("m" in attrDef) {
|
|
308
|
+
if (!hasStringValues && "m" in attrDef) {
|
|
234
309
|
const mask = typeof attrDef.m === "string" ? parseInt(attrDef.m, 16) : attrDef.m;
|
|
235
310
|
attrValues = attrValues.map((value) => (maskOnSignedValue ? this.signExtend(value, mask) : (value >>> 0) & mask));
|
|
236
311
|
}
|
|
237
312
|
// Check for a sign-bit
|
|
238
|
-
if ("sb" in attrDef) {
|
|
313
|
+
if (!hasStringValues && "sb" in attrDef) {
|
|
239
314
|
const signBitPos = attrDef.sb;
|
|
240
315
|
const signBitMask = 1 << signBitPos;
|
|
241
316
|
if ("ss" in attrDef) {
|
|
@@ -247,7 +322,7 @@ class AttributeHandler {
|
|
|
247
322
|
}
|
|
248
323
|
}
|
|
249
324
|
// Check for bit shift required
|
|
250
|
-
if ("s" in attrDef && attrDef.s) {
|
|
325
|
+
if (!hasStringValues && "s" in attrDef && attrDef.s) {
|
|
251
326
|
const bitshift = attrDef.s;
|
|
252
327
|
if (bitshift > 0) {
|
|
253
328
|
attrValues = attrValues.map((value) => (value >>> 0) >>> bitshift);
|
|
@@ -257,17 +332,17 @@ class AttributeHandler {
|
|
|
257
332
|
}
|
|
258
333
|
}
|
|
259
334
|
// Check for divisor
|
|
260
|
-
if ("d" in attrDef && attrDef.d) {
|
|
335
|
+
if (!hasStringValues && "d" in attrDef && attrDef.d) {
|
|
261
336
|
const divisor = attrDef.d;
|
|
262
|
-
attrValues = attrValues.map((value) =>
|
|
337
|
+
attrValues = attrValues.map((value) => value / divisor);
|
|
263
338
|
}
|
|
264
339
|
// Check for value to add
|
|
265
|
-
if ("a" in attrDef && attrDef.a !== undefined) {
|
|
340
|
+
if (!hasStringValues && "a" in attrDef && attrDef.a !== undefined) {
|
|
266
341
|
const addValue = attrDef.a;
|
|
267
|
-
attrValues = attrValues.map((value) =>
|
|
342
|
+
attrValues = attrValues.map((value) => value + addValue);
|
|
268
343
|
}
|
|
269
344
|
// Apply lookup table if defined
|
|
270
|
-
if ("lut" in attrDef && attrDef.lut !== undefined) {
|
|
345
|
+
if (!hasStringValues && "lut" in attrDef && attrDef.lut !== undefined) {
|
|
271
346
|
attrValues = attrValues.map((value) => {
|
|
272
347
|
// Skip NaN values
|
|
273
348
|
if (isNaN(value)) {
|
|
@@ -313,9 +388,10 @@ class AttributeHandler {
|
|
|
313
388
|
}
|
|
314
389
|
return value;
|
|
315
390
|
}
|
|
316
|
-
extractTimestampAndAdvanceIdx(msgBuffer, msgBufIdx, timestampWrapHandler) {
|
|
391
|
+
extractTimestampAndAdvanceIdx(msgBuffer, msgBufIdx, timestampWrapHandler, msgEndIdx = msgBuffer.length) {
|
|
392
|
+
const boundedMsgEndIdx = Math.min(Math.max(msgEndIdx, msgBufIdx), msgBuffer.length);
|
|
317
393
|
// Check there are enough bytes for the timestamp
|
|
318
|
-
if (msgBufIdx + this.POLL_RESULT_TIMESTAMP_SIZE >
|
|
394
|
+
if (msgBufIdx + this.POLL_RESULT_TIMESTAMP_SIZE > boundedMsgEndIdx) {
|
|
319
395
|
return { newBufIdx: -1, timestampUs: 0 };
|
|
320
396
|
}
|
|
321
397
|
// Use struct to extract the timestamp
|
|
@@ -328,7 +404,7 @@ class AttributeHandler {
|
|
|
328
404
|
timestampUs = (0, RaftStruct_1.structUnpack)(">I", tsBuffer)[0] * this.POLL_RESULT_RESOLUTION_US;
|
|
329
405
|
}
|
|
330
406
|
// 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 +
|
|
407
|
+
if (timestampUs + 10000 < timestampWrapHandler.lastReportTimestampUs) {
|
|
332
408
|
timestampWrapHandler.reportTimestampOffsetUs += this.POLL_RESULT_WRAP_VALUE * this.POLL_RESULT_RESOLUTION_US;
|
|
333
409
|
}
|
|
334
410
|
timestampWrapHandler.lastReportTimestampUs = timestampUs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RaftAttributeHandler.js","sourceRoot":"","sources":["../../src/RaftAttributeHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RaftAttributeHandler.js","sourceRoot":"","sources":["../../src/RaftAttributeHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,11 @@ export default class RaftChannelBLE implements RaftChannel {
|
|
|
16
16
|
private readonly maxRetries;
|
|
17
17
|
private _isConnected;
|
|
18
18
|
private readonly _maxConnRetries;
|
|
19
|
+
private readonly _connRetryDelayMs;
|
|
19
20
|
private _eventListenerFn;
|
|
20
21
|
private _requestedBatchAckSize;
|
|
21
22
|
private _requestedFileBlockSize;
|
|
23
|
+
private _maxBleWriteSize;
|
|
22
24
|
fhBatchAckSize(): number;
|
|
23
25
|
fhFileBlockSize(): number;
|
|
24
26
|
setMsgHandler(raftMsgHandler: RaftMsgHandler): void;
|
|
@@ -29,10 +31,12 @@ export default class RaftChannelBLE implements RaftChannel {
|
|
|
29
31
|
setOnConnEvent(connEventFn: RaftConnEventFn): void;
|
|
30
32
|
onDisconnected(event: Event): void;
|
|
31
33
|
getConnectedLocator(): string | object;
|
|
34
|
+
private disconnectGattBeforeRetry;
|
|
32
35
|
connect(locator: string | object, _connectorOptions: ConnectorOptions): Promise<boolean>;
|
|
33
36
|
disconnect(): Promise<void>;
|
|
34
37
|
pauseConnection(pause: boolean): void;
|
|
35
38
|
_onMsgRx(event: Event): void;
|
|
39
|
+
private _writeChunk;
|
|
36
40
|
sendTxMsg(msg: Uint8Array): Promise<boolean>;
|
|
37
41
|
sendTxMsgNoAwait(msg: Uint8Array): Promise<boolean>;
|
|
38
42
|
sendTxMsgRaw(): boolean;
|
|
@@ -34,11 +34,16 @@ class RaftChannelBLE {
|
|
|
34
34
|
// Connected flag and retries
|
|
35
35
|
this._isConnected = false;
|
|
36
36
|
this._maxConnRetries = 3;
|
|
37
|
+
this._connRetryDelayMs = 500;
|
|
37
38
|
// Event listener fn
|
|
38
39
|
this._eventListenerFn = null;
|
|
39
40
|
// File Handler parameters
|
|
40
41
|
this._requestedBatchAckSize = 10;
|
|
41
42
|
this._requestedFileBlockSize = 500;
|
|
43
|
+
// Max bytes per BLE write - messages larger than this are split into chunks.
|
|
44
|
+
// Web Bluetooth doesn't expose the negotiated MTU, so use a conservative
|
|
45
|
+
// default that works with BLE 4.2+ (ATT_MTU 251 → payload 244).
|
|
46
|
+
this._maxBleWriteSize = 244;
|
|
42
47
|
}
|
|
43
48
|
fhBatchAckSize() {
|
|
44
49
|
return this._requestedBatchAckSize;
|
|
@@ -93,6 +98,18 @@ class RaftChannelBLE {
|
|
|
93
98
|
getConnectedLocator() {
|
|
94
99
|
return this._bleDevice || "";
|
|
95
100
|
}
|
|
101
|
+
async disconnectGattBeforeRetry() {
|
|
102
|
+
var _a, _b;
|
|
103
|
+
if (!((_b = (_a = this._bleDevice) === null || _a === void 0 ? void 0 : _a.gatt) === null || _b === void 0 ? void 0 : _b.connected)) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
await this._bleDevice.gatt.disconnect();
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot disconnect before retry ${error}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
96
113
|
// Connect to a device
|
|
97
114
|
async connect(locator, _connectorOptions) {
|
|
98
115
|
// RaftLog.debug(`Selected device: ${deviceID}`);
|
|
@@ -124,8 +141,14 @@ class RaftChannelBLE {
|
|
|
124
141
|
}
|
|
125
142
|
}
|
|
126
143
|
if (!service) {
|
|
127
|
-
|
|
128
|
-
|
|
144
|
+
if (connRetry === this._maxConnRetries - 1) {
|
|
145
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot get primary service - attempt #${connRetry + 1} - giving up`);
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot get primary service - attempt #${connRetry + 1} - retrying`);
|
|
149
|
+
await this.disconnectGattBeforeRetry();
|
|
150
|
+
await new Promise(resolve => setTimeout(resolve, this._connRetryDelayMs));
|
|
151
|
+
continue;
|
|
129
152
|
}
|
|
130
153
|
RaftLog_1.default.debug(`RaftChannelBLE.connect - found service: ${service.uuid}`);
|
|
131
154
|
try {
|
|
@@ -219,7 +242,22 @@ class RaftChannelBLE {
|
|
|
219
242
|
}
|
|
220
243
|
}
|
|
221
244
|
}
|
|
222
|
-
//
|
|
245
|
+
// Write a single chunk to the BLE characteristic
|
|
246
|
+
async _writeChunk(data) {
|
|
247
|
+
if (!this._characteristicTx)
|
|
248
|
+
return;
|
|
249
|
+
const bs = RaftUtils_1.default.toBufferSource(data);
|
|
250
|
+
if (this._characteristicTx.writeValueWithoutResponse) {
|
|
251
|
+
await this._characteristicTx.writeValueWithoutResponse(bs);
|
|
252
|
+
}
|
|
253
|
+
else if (this._characteristicTx.writeValue) {
|
|
254
|
+
await this._characteristicTx.writeValue(bs);
|
|
255
|
+
}
|
|
256
|
+
else if (this._characteristicTx.writeValueWithResponse) {
|
|
257
|
+
await this._characteristicTx.writeValueWithResponse(bs);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// Send a message, chunking if it exceeds the BLE write size
|
|
223
261
|
async sendTxMsg(msg
|
|
224
262
|
// _sendWithResponse: boolean
|
|
225
263
|
) {
|
|
@@ -234,18 +272,17 @@ class RaftChannelBLE {
|
|
|
234
272
|
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
235
273
|
}
|
|
236
274
|
this._msgTxTimeLast = Date.now();
|
|
237
|
-
// Write to the characteristic
|
|
275
|
+
// Write to the characteristic, chunking if necessary
|
|
238
276
|
try {
|
|
239
277
|
if (this._characteristicTx) {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
await this._characteristicTx.writeValueWithoutResponse(bs);
|
|
243
|
-
}
|
|
244
|
-
else if (this._characteristicTx.writeValue) {
|
|
245
|
-
await this._characteristicTx.writeValue(bs);
|
|
278
|
+
if (msg.length <= this._maxBleWriteSize) {
|
|
279
|
+
await this._writeChunk(msg);
|
|
246
280
|
}
|
|
247
|
-
else
|
|
248
|
-
|
|
281
|
+
else {
|
|
282
|
+
for (let offset = 0; offset < msg.length; offset += this._maxBleWriteSize) {
|
|
283
|
+
const chunk = msg.subarray(offset, Math.min(offset + this._maxBleWriteSize, msg.length));
|
|
284
|
+
await this._writeChunk(chunk);
|
|
285
|
+
}
|
|
249
286
|
}
|
|
250
287
|
}
|
|
251
288
|
break;
|
|
@@ -271,17 +308,18 @@ class RaftChannelBLE {
|
|
|
271
308
|
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
272
309
|
}
|
|
273
310
|
this._msgTxTimeLast = Date.now();
|
|
274
|
-
// Write to the characteristic
|
|
311
|
+
// Write to the characteristic, chunking if necessary
|
|
275
312
|
if (this._characteristicTx) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
this._characteristicTx.writeValueWithoutResponse(bs);
|
|
279
|
-
}
|
|
280
|
-
else if (this._characteristicTx.writeValue) {
|
|
281
|
-
this._characteristicTx.writeValue(bs);
|
|
313
|
+
if (msg.length <= this._maxBleWriteSize) {
|
|
314
|
+
this._writeChunk(msg);
|
|
282
315
|
}
|
|
283
|
-
else
|
|
284
|
-
|
|
316
|
+
else {
|
|
317
|
+
(async () => {
|
|
318
|
+
for (let offset = 0; offset < msg.length; offset += this._maxBleWriteSize) {
|
|
319
|
+
const chunk = msg.subarray(offset, Math.min(offset + this._maxBleWriteSize, msg.length));
|
|
320
|
+
await this._writeChunk(chunk);
|
|
321
|
+
}
|
|
322
|
+
})();
|
|
285
323
|
}
|
|
286
324
|
return true;
|
|
287
325
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RaftChannelBLE.web.js","sourceRoot":"","sources":["../../src/RaftChannelBLE.web.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,iBAAiB;AACjB,iBAAiB;AACjB,EAAE;AACF,wCAAwC;AACxC,oCAAoC;AACpC,EAAE;AACF,iHAAiH;;;AAGjH,qDAAkE;AAClE,gEAAgC;AAGhC,oEAAoC;AAEpC,MAAqB,cAAc;IAAnC;QAEE,qCAAqC;QACrC,aAAQ,GAAG,sCAAsC,CAAC;QAClD,cAAS,GAAG,sCAAsC,CAAC;QACnD,kBAAa,GAAG,CAAC,sCAAsC,EAAE,sCAAsC,CAAC,CAAC;QAEjG,6BAA6B;QACrB,eAAU,GAA2B,IAAI,CAAC;QAC1C,sBAAiB,GAA6C,IAAI,CAAC;QACnE,sBAAiB,GAA6C,IAAI,CAAC;QAE3E,kBAAkB;QACV,oBAAe,GAA0B,IAAI,CAAC;QAEtD,gBAAgB;QACR,iBAAY,GAA2B,IAAI,CAAC;QAEpD,uBAAuB;QACf,mBAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,2BAAsB,GAAG,CAAC,CAAC;QAClB,eAAU,GAAG,CAAC,CAAC;QAEhC,6BAA6B;QACrB,iBAAY,GAAG,KAAK,CAAC;QACZ,oBAAe,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"RaftChannelBLE.web.js","sourceRoot":"","sources":["../../src/RaftChannelBLE.web.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import RaftMsgHandler from "./RaftMsgHandler";
|
|
|
3
3
|
import { RaftConnEventFn } from "./RaftConnEvents";
|
|
4
4
|
import { ConnectorOptions } from "./RaftSystemType";
|
|
5
5
|
export default class RaftChannelSimulated implements RaftChannel {
|
|
6
|
+
private readonly POLL_RESULT_TIMESTAMP_RESOLUTION_US;
|
|
6
7
|
private _raftMsgHandler;
|
|
7
8
|
private _isConnected;
|
|
8
9
|
private _simulatedDeviceInfo;
|
|
@@ -15,6 +15,7 @@ const RaftConnEvents_1 = require("./RaftConnEvents");
|
|
|
15
15
|
const RaftProtocolDefs_1 = require("./RaftProtocolDefs");
|
|
16
16
|
class RaftChannelSimulated {
|
|
17
17
|
constructor() {
|
|
18
|
+
this.POLL_RESULT_TIMESTAMP_RESOLUTION_US = 100;
|
|
18
19
|
// Message handler
|
|
19
20
|
this._raftMsgHandler = null;
|
|
20
21
|
// Is connected
|
|
@@ -581,8 +582,10 @@ class RaftChannelSimulated {
|
|
|
581
582
|
const dataBuffer = new ArrayBuffer(dataBlockSizeBytes + 2);
|
|
582
583
|
const dataView = new DataView(dataBuffer);
|
|
583
584
|
let bytePos = 0;
|
|
584
|
-
// Add 16
|
|
585
|
-
|
|
585
|
+
// Add 16-bit big-endian timestamp ticks. Poll timestamps are decoded in
|
|
586
|
+
// 100us units by RaftAttributeHandler.
|
|
587
|
+
const timestampTicks = Math.floor((deviceTimeMs * 1000) / this.POLL_RESULT_TIMESTAMP_RESOLUTION_US) % 65536;
|
|
588
|
+
dataView.setUint16(bytePos, timestampTicks, false);
|
|
586
589
|
bytePos += 2;
|
|
587
590
|
const handledByCustomGenerator = this._fillCustomRawData(deviceTypeInfo, dataView, bytePos, dataBlockSizeBytes, deviceIntervalMs, deviceTimeMs);
|
|
588
591
|
if (!handledByCustomGenerator) {
|
|
@@ -618,9 +621,9 @@ class RaftChannelSimulated {
|
|
|
618
621
|
}
|
|
619
622
|
// Convert the buffer to a byte array
|
|
620
623
|
const dataBytes = new Uint8Array(dataBuffer);
|
|
621
|
-
// Create the JSON message structure
|
|
624
|
+
// Create the JSON message structure (bus key is numeric string to match firmware convention)
|
|
622
625
|
const message = {
|
|
623
|
-
"
|
|
626
|
+
"1": {
|
|
624
627
|
[deviceName]: {
|
|
625
628
|
"_t": deviceTypeInfo.type,
|
|
626
629
|
"_o": 1, // Device is online
|
|
@@ -703,7 +706,8 @@ class RaftChannelSimulated {
|
|
|
703
706
|
const hotspotRow = (Math.sin(hotspotPhase) + 1) * (rows - 1) / 2;
|
|
704
707
|
const hotspotCol = (Math.cos(hotspotPhase) + 1) * (cols - 1) / 2;
|
|
705
708
|
const hotspotAmplitude = 6;
|
|
706
|
-
const
|
|
709
|
+
const rawSigma = Math.max(rows, cols) / 3;
|
|
710
|
+
const sigma = Number.isFinite(rawSigma) ? rawSigma : 1;
|
|
707
711
|
for (let idx = 0; idx < repeatCount; idx++) {
|
|
708
712
|
const row = Math.floor(idx / cols);
|
|
709
713
|
const col = idx % cols;
|