@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.
- package/dist/react-native/RaftAttributeHandler.js +11 -9
- package/dist/react-native/RaftAttributeHandler.js.map +1 -1
- package/dist/react-native/RaftChannelSimulated.js +4 -3
- package/dist/react-native/RaftChannelSimulated.js.map +1 -1
- package/dist/react-native/RaftConnector.d.ts +10 -1
- package/dist/react-native/RaftConnector.js +23 -10
- package/dist/react-native/RaftConnector.js.map +1 -1
- package/dist/react-native/RaftDeviceManager.d.ts +14 -2
- package/dist/react-native/RaftDeviceManager.js +224 -77
- package/dist/react-native/RaftDeviceManager.js.map +1 -1
- package/dist/react-native/RaftDeviceMgrIF.d.ts +5 -1
- package/dist/react-native/RaftDeviceStates.d.ts +21 -3
- package/dist/react-native/RaftDeviceStates.js +31 -6
- package/dist/react-native/RaftDeviceStates.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/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/RaftTypes.d.ts +21 -0
- package/dist/react-native/RaftTypes.js.map +1 -1
- package/dist/react-native/main.d.ts +1 -0
- package/dist/react-native/main.js +1 -0
- package/dist/react-native/main.js.map +1 -1
- package/dist/web/RaftAttributeHandler.js +11 -9
- package/dist/web/RaftAttributeHandler.js.map +1 -1
- package/dist/web/RaftChannelSimulated.js +4 -3
- package/dist/web/RaftChannelSimulated.js.map +1 -1
- package/dist/web/RaftConnector.d.ts +10 -1
- package/dist/web/RaftConnector.js +23 -10
- package/dist/web/RaftConnector.js.map +1 -1
- package/dist/web/RaftDeviceManager.d.ts +14 -2
- package/dist/web/RaftDeviceManager.js +224 -77
- package/dist/web/RaftDeviceManager.js.map +1 -1
- package/dist/web/RaftDeviceMgrIF.d.ts +5 -1
- package/dist/web/RaftDeviceStates.d.ts +21 -3
- package/dist/web/RaftDeviceStates.js +31 -6
- package/dist/web/RaftDeviceStates.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/RaftSystemUtils.d.ts +17 -1
- package/dist/web/RaftSystemUtils.js +51 -0
- package/dist/web/RaftSystemUtils.js.map +1 -1
- package/dist/web/RaftTypes.d.ts +21 -0
- package/dist/web/RaftTypes.js.map +1 -1
- package/dist/web/main.d.ts +1 -0
- package/dist/web/main.js +1 -0
- package/dist/web/main.js.map +1 -1
- package/examples/dashboard/package.json +1 -1
- package/examples/dashboard/src/DeviceActionsForm.tsx +2 -2
- package/examples/dashboard/src/DeviceLineChart.tsx +16 -3
- package/examples/dashboard/src/DevicePanel.tsx +79 -3
- package/examples/dashboard/src/DeviceStatsPanel.tsx +76 -0
- package/examples/dashboard/src/DevicesPanel.tsx +11 -0
- package/examples/dashboard/src/SettingsScreen.tsx +9 -4
- package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +10 -2
- 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 +38 -4
- package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +10 -2
- package/examples/dashboard/src/styles.css +162 -0
- package/package.json +52 -49
- package/src/RaftAttributeHandler.ts +25 -22
- package/src/RaftChannelSimulated.ts +4 -3
- package/src/RaftConnector.ts +34 -13
- package/src/RaftDeviceManager.ts +253 -83
- package/src/RaftDeviceMgrIF.ts +5 -1
- package/src/RaftDeviceStates.ts +42 -8
- 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/RaftSystemUtils.ts +59 -0
- package/src/RaftTypes.ts +27 -0
- package/src/main.ts +1 -0
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { DeviceTypeAction } from "./RaftDeviceInfo";
|
|
2
|
-
import { DeviceAttributeState, DevicesState, DeviceState } from "./RaftDeviceStates";
|
|
2
|
+
import { DeviceAttributeState, DevicesState, DeviceState, DeviceStats } from "./RaftDeviceStates";
|
|
3
3
|
export default interface RaftDeviceMgrIF {
|
|
4
4
|
getDevicesState(): DevicesState;
|
|
5
5
|
getDeviceState(deviceKey: string): DeviceState;
|
|
6
|
+
getDeviceStats(deviceKey: string): DeviceStats;
|
|
7
|
+
resetDeviceStats(deviceKey: string): void;
|
|
6
8
|
setMaxDataPointsToStore(maxDataPointsToStore: number): void;
|
|
7
9
|
addNewDeviceCallback(callback: (deviceKey: string, state: DeviceState) => void): void;
|
|
8
10
|
removeNewDeviceCallback(callback: (deviceKey: string, state: DeviceState) => void): void;
|
|
@@ -10,6 +12,8 @@ export default interface RaftDeviceMgrIF {
|
|
|
10
12
|
removeNewAttributeCallback(callback: (deviceKey: string, attrState: DeviceAttributeState) => void): void;
|
|
11
13
|
addAttributeDataCallback(callback: (deviceKey: string, attrState: DeviceAttributeState) => void): void;
|
|
12
14
|
removeAttributeDataCallback(callback: (deviceKey: string, attrState: DeviceAttributeState) => void): void;
|
|
15
|
+
addDeviceRemovedCallback(callback: (deviceKey: string, state: DeviceState) => void): void;
|
|
16
|
+
removeDeviceRemovedCallback(callback: (deviceKey: string, state: DeviceState) => void): void;
|
|
13
17
|
sendAction(deviceKey: string, action: DeviceTypeAction, data: number[]): void;
|
|
14
18
|
sendCompoundAction(deviceKey: string, action: DeviceTypeAction, data: number[][]): void;
|
|
15
19
|
}
|
|
@@ -5,7 +5,7 @@ export interface DeviceAttributeState {
|
|
|
5
5
|
newAttribute: boolean;
|
|
6
6
|
newData: boolean;
|
|
7
7
|
numNewValues: number;
|
|
8
|
-
values: number[];
|
|
8
|
+
values: (number | string)[];
|
|
9
9
|
units: string;
|
|
10
10
|
range: number[];
|
|
11
11
|
format: string;
|
|
@@ -20,13 +20,26 @@ export interface DeviceTimeline {
|
|
|
20
20
|
lastReportTimestampUs: number;
|
|
21
21
|
reportTimestampOffsetUs: number;
|
|
22
22
|
}
|
|
23
|
+
export interface DeviceStats {
|
|
24
|
+
totalSamples: number;
|
|
25
|
+
windowMs: number;
|
|
26
|
+
windowSamples: number;
|
|
27
|
+
sampleRateHz: number;
|
|
28
|
+
lastSampleTimeMs: number | null;
|
|
29
|
+
lastUpdateTimeMs: number | null;
|
|
30
|
+
}
|
|
31
|
+
export declare enum DeviceOnlineState {
|
|
32
|
+
Offline = 0,
|
|
33
|
+
Online = 1,
|
|
34
|
+
PendingDeletion = 2
|
|
35
|
+
}
|
|
23
36
|
export interface DeviceState {
|
|
24
37
|
deviceTypeInfo: DeviceTypeInfo | undefined;
|
|
25
38
|
deviceTimeline: DeviceTimeline;
|
|
26
39
|
deviceAttributes: DeviceAttributesState;
|
|
27
40
|
deviceIsNew: boolean;
|
|
28
41
|
stateChanged: boolean;
|
|
29
|
-
|
|
42
|
+
onlineState: DeviceOnlineState;
|
|
30
43
|
deviceAddress: string;
|
|
31
44
|
deviceType: string;
|
|
32
45
|
busName: string;
|
|
@@ -34,4 +47,9 @@ export interface DeviceState {
|
|
|
34
47
|
export declare class DevicesState {
|
|
35
48
|
[deviceKey: string]: DeviceState;
|
|
36
49
|
}
|
|
37
|
-
export declare function
|
|
50
|
+
export declare function formatDeviceAddrHex(addr: number): string;
|
|
51
|
+
export declare function getDeviceKey(busNumberAsString: string, devAddrHexStr: string): string;
|
|
52
|
+
export declare function parseDeviceKey(deviceKey: string): {
|
|
53
|
+
bus: string;
|
|
54
|
+
addr: string;
|
|
55
|
+
};
|
|
@@ -8,17 +8,23 @@
|
|
|
8
8
|
//
|
|
9
9
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.DevicesState = void 0;
|
|
11
|
+
exports.DevicesState = exports.DeviceOnlineState = void 0;
|
|
12
12
|
exports.deviceAttrGetLatestFormatted = deviceAttrGetLatestFormatted;
|
|
13
|
+
exports.formatDeviceAddrHex = formatDeviceAddrHex;
|
|
13
14
|
exports.getDeviceKey = getDeviceKey;
|
|
15
|
+
exports.parseDeviceKey = parseDeviceKey;
|
|
14
16
|
function deviceAttrGetLatestFormatted(attrState) {
|
|
15
17
|
if (attrState.values.length === 0) {
|
|
16
18
|
return 'N/A';
|
|
17
19
|
}
|
|
20
|
+
const value = attrState.values[attrState.values.length - 1];
|
|
21
|
+
// String values are returned directly
|
|
22
|
+
if (typeof value === 'string') {
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
18
25
|
if (attrState.format.length === 0) {
|
|
19
|
-
return
|
|
26
|
+
return value.toString();
|
|
20
27
|
}
|
|
21
|
-
const value = attrState.values[attrState.values.length - 1];
|
|
22
28
|
let format = attrState.format;
|
|
23
29
|
if (format.startsWith("%")) {
|
|
24
30
|
format = format.slice(1);
|
|
@@ -50,11 +56,30 @@ function deviceAttrGetLatestFormatted(attrState) {
|
|
|
50
56
|
}
|
|
51
57
|
return value.toString();
|
|
52
58
|
}
|
|
59
|
+
var DeviceOnlineState;
|
|
60
|
+
(function (DeviceOnlineState) {
|
|
61
|
+
DeviceOnlineState[DeviceOnlineState["Offline"] = 0] = "Offline";
|
|
62
|
+
DeviceOnlineState[DeviceOnlineState["Online"] = 1] = "Online";
|
|
63
|
+
DeviceOnlineState[DeviceOnlineState["PendingDeletion"] = 2] = "PendingDeletion";
|
|
64
|
+
})(DeviceOnlineState || (exports.DeviceOnlineState = DeviceOnlineState = {}));
|
|
53
65
|
class DevicesState {
|
|
54
66
|
}
|
|
55
67
|
exports.DevicesState = DevicesState;
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
// Format a numeric device address as canonical hex string:
|
|
69
|
+
// lowercase, no "0x" prefix, no leading zeros
|
|
70
|
+
function formatDeviceAddrHex(addr) {
|
|
71
|
+
return addr.toString(16);
|
|
72
|
+
}
|
|
73
|
+
// Generate a composite device key from bus number and hex address
|
|
74
|
+
function getDeviceKey(busNumberAsString, devAddrHexStr) {
|
|
75
|
+
return `${busNumberAsString}_${devAddrHexStr}`;
|
|
76
|
+
}
|
|
77
|
+
// Parse a device key into its bus and address components
|
|
78
|
+
function parseDeviceKey(deviceKey) {
|
|
79
|
+
const sep = deviceKey.indexOf('_');
|
|
80
|
+
if (sep < 0) {
|
|
81
|
+
return { bus: deviceKey, addr: '' };
|
|
82
|
+
}
|
|
83
|
+
return { bus: deviceKey.substring(0, sep), addr: deviceKey.substring(sep + 1) };
|
|
59
84
|
}
|
|
60
85
|
//# sourceMappingURL=RaftDeviceStates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RaftDeviceStates.js","sourceRoot":"","sources":["../../src/RaftDeviceStates.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,mBAAmB;AACnB,iCAAiC;AACjC,EAAE;AACF,sBAAsB;AACtB,EAAE;AACF,iHAAiH;;;AAIjH,
|
|
1
|
+
{"version":3,"file":"RaftDeviceStates.js","sourceRoot":"","sources":["../../src/RaftDeviceStates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
3
|
+
//
|
|
4
|
+
// RaftSystem
|
|
5
|
+
// Part of RaftJS
|
|
6
|
+
//
|
|
7
|
+
// Rob Dobson 2025
|
|
8
|
+
// (C) 2020-2025 All rights reserved
|
|
9
|
+
//
|
|
10
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.inspectPublishFrame = inspectPublishFrame;
|
|
13
|
+
const RAFT_PUBLISH_PREFIX_LEN = 2;
|
|
14
|
+
const DEVBIN_MAGIC_MIN = 0xDB;
|
|
15
|
+
const DEVBIN_MAGIC_MAX = 0xDF;
|
|
16
|
+
const DEVBIN_VERSION_BASE = 0xDA;
|
|
17
|
+
function inspectPublishFrame(payload, topicLookup) {
|
|
18
|
+
if (payload.length < RAFT_PUBLISH_PREFIX_LEN) {
|
|
19
|
+
return { frameType: "unknown" };
|
|
20
|
+
}
|
|
21
|
+
const payloadStartPos = RAFT_PUBLISH_PREFIX_LEN;
|
|
22
|
+
if (payload.length <= payloadStartPos) {
|
|
23
|
+
return { frameType: "unknown" };
|
|
24
|
+
}
|
|
25
|
+
// Try JSON first
|
|
26
|
+
if (payload[payloadStartPos] === 0x7B) {
|
|
27
|
+
try {
|
|
28
|
+
const jsonString = new TextDecoder("utf-8").decode(payload.slice(payloadStartPos));
|
|
29
|
+
const jsonObj = JSON.parse(jsonString);
|
|
30
|
+
let topicIndex = undefined;
|
|
31
|
+
let topicName = undefined;
|
|
32
|
+
if (typeof jsonObj._t === "number") {
|
|
33
|
+
topicIndex = jsonObj._t;
|
|
34
|
+
topicName = topicLookup ? topicLookup(topicIndex) : undefined;
|
|
35
|
+
}
|
|
36
|
+
else if (typeof jsonObj._t === "string") {
|
|
37
|
+
topicName = jsonObj._t;
|
|
38
|
+
}
|
|
39
|
+
const version = typeof jsonObj._v === "number" ? jsonObj._v : undefined;
|
|
40
|
+
return {
|
|
41
|
+
frameType: "json",
|
|
42
|
+
topicIndex,
|
|
43
|
+
topicName,
|
|
44
|
+
version,
|
|
45
|
+
jsonString,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
catch (_a) {
|
|
49
|
+
return { frameType: "unknown" };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Binary (devbin legacy or enveloped)
|
|
53
|
+
const firstBinaryByte = payload[payloadStartPos];
|
|
54
|
+
if ((firstBinaryByte & 0xF0) === 0xD0) {
|
|
55
|
+
if (firstBinaryByte < DEVBIN_MAGIC_MIN || firstBinaryByte > DEVBIN_MAGIC_MAX) {
|
|
56
|
+
return {
|
|
57
|
+
frameType: "binary",
|
|
58
|
+
binaryHasEnvelope: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const topicIndex = payload.length > payloadStartPos + 1 ? payload[payloadStartPos + 1] : undefined;
|
|
62
|
+
const topicName = (topicIndex !== undefined && topicIndex !== 0xFF && topicLookup)
|
|
63
|
+
? topicLookup(topicIndex)
|
|
64
|
+
: undefined;
|
|
65
|
+
return {
|
|
66
|
+
frameType: "binary",
|
|
67
|
+
topicIndex,
|
|
68
|
+
topicName,
|
|
69
|
+
version: firstBinaryByte - DEVBIN_VERSION_BASE,
|
|
70
|
+
binaryHasEnvelope: true,
|
|
71
|
+
binaryPayloadOffset: payloadStartPos + 2,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// Legacy binary format (no envelope)
|
|
75
|
+
return {
|
|
76
|
+
frameType: "binary",
|
|
77
|
+
binaryHasEnvelope: false,
|
|
78
|
+
binaryPayloadOffset: payloadStartPos,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=RaftPublish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RaftPublish.js","sourceRoot":"","sources":["../../src/RaftPublish.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,aAAa;AACb,iBAAiB;AACjB,EAAE;AACF,kBAAkB;AAClB,oCAAoC;AACpC,EAAE;AACF,iHAAiH;;AASjH,kDA0EC;AA/ED,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,SAAgB,mBAAmB,CACjC,OAAmB,EACnB,WAAwD;IAGxD,IAAI,OAAO,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;QAC7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,eAAe,GAAG,uBAAuB,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;QACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YACnF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAA4B,CAAC;YAElE,IAAI,UAAU,GAAuB,SAAS,CAAC;YAC/C,IAAI,SAAS,GAAuB,SAAS,CAAC;YAC9C,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACnC,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC;gBACxB,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,CAAC;iBAAM,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC1C,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;YACzB,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAExE,OAAO;gBACL,SAAS,EAAE,MAAM;gBACjB,UAAU;gBACV,SAAS;gBACT,OAAO;gBACP,UAAU;aACX,CAAC;QACJ,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,eAAe,GAAG,gBAAgB,IAAI,eAAe,GAAG,gBAAgB,EAAE,CAAC;YAC7E,OAAO;gBACL,SAAS,EAAE,QAAQ;gBACnB,iBAAiB,EAAE,IAAI;aACxB,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnG,MAAM,SAAS,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,WAAW,CAAC;YAChF,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;YACzB,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO;YACL,SAAS,EAAE,QAAQ;YACnB,UAAU;YACV,SAAS;YACT,OAAO,EAAE,eAAe,GAAG,mBAAmB;YAC9C,iBAAiB,EAAE,IAAI;YACvB,mBAAmB,EAAE,eAAe,GAAG,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,OAAO;QACL,SAAS,EAAE,QAAQ;QACnB,iBAAiB,EAAE,KAAK;QACxB,mBAAmB,EAAE,eAAe;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import RaftMsgHandler from './RaftMsgHandler';
|
|
2
2
|
import RaftCommsStats from './RaftCommsStats';
|
|
3
|
+
import { RaftStreamDataProgressCBType } from './RaftTypes';
|
|
3
4
|
import RaftConnector from './RaftConnector';
|
|
4
5
|
export default class RaftStreamHandler {
|
|
5
6
|
private _streamID;
|
|
@@ -24,6 +25,16 @@ export default class RaftStreamHandler {
|
|
|
24
25
|
constructor(msgHandler: RaftMsgHandler, commsStats: RaftCommsStats, raftConnector: RaftConnector);
|
|
25
26
|
setNumBlocksWithoutPause(numBlocks: number): void;
|
|
26
27
|
setLegacySoktoMode(legacyMode: boolean): void;
|
|
28
|
+
/**
|
|
29
|
+
* streamData - stream arbitrary data to a named firmware endpoint using the RT_STREAM protocol.
|
|
30
|
+
* Returns a promise that resolves when the stream is complete or rejects on failure.
|
|
31
|
+
* @param streamContents data to stream
|
|
32
|
+
* @param fileName logical filename sent in ufStart (used by firmware to detect format, e.g. "pattern.thr")
|
|
33
|
+
* @param targetEndpoint REST API endpoint name registered on the firmware (e.g. "streampattern")
|
|
34
|
+
* @param progressCallback optional callback reporting (bytesSent, totalBytes, progressFraction)
|
|
35
|
+
* @returns Promise<boolean> true if stream completed successfully
|
|
36
|
+
*/
|
|
37
|
+
streamData(streamContents: Uint8Array, fileName: string, targetEndpoint: string, progressCallback?: RaftStreamDataProgressCBType): Promise<boolean>;
|
|
27
38
|
streamAudio(streamContents: Uint8Array, clearExisting: boolean, audioDuration: number): void;
|
|
28
39
|
streamCancel(): Promise<void>;
|
|
29
40
|
isStreamStarting(): boolean;
|
|
@@ -55,6 +55,72 @@ class RaftStreamHandler {
|
|
|
55
55
|
RaftLog_1.default.debug(`Setting legacy sokto mode to ${legacyMode}`);
|
|
56
56
|
this._legacySoktoMode = legacyMode;
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* streamData - stream arbitrary data to a named firmware endpoint using the RT_STREAM protocol.
|
|
60
|
+
* Returns a promise that resolves when the stream is complete or rejects on failure.
|
|
61
|
+
* @param streamContents data to stream
|
|
62
|
+
* @param fileName logical filename sent in ufStart (used by firmware to detect format, e.g. "pattern.thr")
|
|
63
|
+
* @param targetEndpoint REST API endpoint name registered on the firmware (e.g. "streampattern")
|
|
64
|
+
* @param progressCallback optional callback reporting (bytesSent, totalBytes, progressFraction)
|
|
65
|
+
* @returns Promise<boolean> true if stream completed successfully
|
|
66
|
+
*/
|
|
67
|
+
async streamData(streamContents, fileName, targetEndpoint, progressCallback) {
|
|
68
|
+
// Reject if another stream is starting
|
|
69
|
+
if (this._streamIsStarting || this._lastStreamStartTime > (Date.now() - 500)) {
|
|
70
|
+
RaftLog_1.default.warn(`streamData: unable to start, too soon since last request`);
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
this._streamIsStarting = true;
|
|
74
|
+
this._lastStreamStartTime = Date.now();
|
|
75
|
+
this._soktoReceived = false;
|
|
76
|
+
this._soktoPos = 0;
|
|
77
|
+
this._streamPos = 0;
|
|
78
|
+
this._streamBuffer = RaftUtils_1.default.toArrayBufferView(streamContents);
|
|
79
|
+
// Send ufStart
|
|
80
|
+
const startOk = await this._sendStreamStartMsg(fileName, targetEndpoint, RaftTypes_1.RaftStreamType.REAL_TIME_STREAM, streamContents);
|
|
81
|
+
this._streamIsStarting = false;
|
|
82
|
+
if (!startOk) {
|
|
83
|
+
RaftLog_1.default.warn(`streamData: ufStart failed`);
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
// Send blocks
|
|
87
|
+
if (this._streamID === null) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
let pos = 0;
|
|
91
|
+
while (pos < this._streamBuffer.length) {
|
|
92
|
+
// Respect SOKTO feedback — if firmware reported a position mismatch, rewind
|
|
93
|
+
if (this._soktoReceived) {
|
|
94
|
+
RaftLog_1.default.verbose(`streamData: sokto received, pos was ${pos}, soktoPos ${this._soktoPos}`);
|
|
95
|
+
this._soktoReceived = false;
|
|
96
|
+
// Slow down on backpressure
|
|
97
|
+
await new Promise(r => setTimeout(r, 50));
|
|
98
|
+
}
|
|
99
|
+
const blockSize = Math.min(this._streamBuffer.length - pos, this._maxBlockSize);
|
|
100
|
+
const block = this._streamBuffer.slice(pos, pos + blockSize);
|
|
101
|
+
if (block.length > 0) {
|
|
102
|
+
const sentOk = await this._msgHandler.sendStreamBlock(block, pos, this._streamID);
|
|
103
|
+
this._commsStats.recordStreamBytes(block.length);
|
|
104
|
+
if (!sentOk) {
|
|
105
|
+
RaftLog_1.default.warn(`streamData: sendStreamBlock failed at pos ${pos}`);
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
pos += blockSize;
|
|
109
|
+
this._streamPos = pos;
|
|
110
|
+
// Progress callback
|
|
111
|
+
if (progressCallback) {
|
|
112
|
+
const progress = this._streamBuffer.length > 0 ? pos / this._streamBuffer.length : 1;
|
|
113
|
+
progressCallback(pos, this._streamBuffer.length, progress);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Yield to avoid hogging the event loop
|
|
117
|
+
await new Promise(r => setTimeout(r, 1));
|
|
118
|
+
}
|
|
119
|
+
// Send ufEnd
|
|
120
|
+
const endOk = await this._sendStreamEndMsg(this._streamID);
|
|
121
|
+
RaftLog_1.default.debug(`streamData: complete, endOk=${endOk}`);
|
|
122
|
+
return endOk;
|
|
123
|
+
}
|
|
58
124
|
// Start streaming audio
|
|
59
125
|
streamAudio(streamContents, clearExisting, audioDuration) {
|
|
60
126
|
if (!clearExisting)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RaftStreamHandler.js","sourceRoot":"","sources":["../../src/RaftStreamHandler.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,mBAAmB;AACnB,iBAAiB;AACjB,EAAE;AACF,wCAAwC;AACxC,oCAAoC;AACpC,EAAE;AACF,iHAAiH;;;AAEjH,gEAA+B;AAG/B,
|
|
1
|
+
{"version":3,"file":"RaftStreamHandler.js","sourceRoot":"","sources":["../../src/RaftStreamHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function structUnpack(format: string, data: Uint8Array): number[];
|
|
1
|
+
export declare function structUnpack(format: string, data: Uint8Array): (number | string)[];
|
|
2
2
|
export declare function structSizeOf(format: string): number;
|
|
3
|
-
export declare function structPack(format: string, values: number[]): Uint8Array;
|
|
3
|
+
export declare function structPack(format: string, values: (number | string | Uint8Array)[]): Uint8Array;
|
|
@@ -28,21 +28,41 @@ function parseFormatInstructions(format) {
|
|
|
28
28
|
idx++;
|
|
29
29
|
continue;
|
|
30
30
|
}
|
|
31
|
-
//
|
|
32
|
-
const code = char;
|
|
33
|
-
idx++;
|
|
34
|
-
// Check for repeat count using [N] syntax
|
|
31
|
+
// Check for prefix digit count (e.g. 3H, 16s)
|
|
35
32
|
let repeat = 1;
|
|
33
|
+
if (/\d/.test(char)) {
|
|
34
|
+
let numStr = char;
|
|
35
|
+
idx++;
|
|
36
|
+
while (idx < format.length && /\d/.test(format[idx])) {
|
|
37
|
+
numStr += format[idx];
|
|
38
|
+
idx++;
|
|
39
|
+
}
|
|
40
|
+
repeat = parseInt(numStr, 10);
|
|
41
|
+
if (!Number.isFinite(repeat) || repeat <= 0) {
|
|
42
|
+
throw new Error(`Invalid prefix count "${numStr}" in format string "${format}"`);
|
|
43
|
+
}
|
|
44
|
+
if (idx >= format.length || /[\s<>\d]/.test(format[idx])) {
|
|
45
|
+
throw new Error(`Expected format code after prefix count "${numStr}" in format string "${format}"`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Attribute code
|
|
49
|
+
const code = /\d/.test(char) ? format[idx] : char;
|
|
50
|
+
if (/\d/.test(char))
|
|
51
|
+
idx++;
|
|
52
|
+
else
|
|
53
|
+
idx++;
|
|
54
|
+
// Check for [N] suffix count (e.g. B[3]) — multiplied with any prefix count
|
|
36
55
|
if (idx < format.length && format[idx] === "[") {
|
|
37
56
|
const endIdx = format.indexOf("]", idx + 1);
|
|
38
57
|
if (endIdx === -1) {
|
|
39
58
|
throw new Error(`Invalid format string: missing closing ] in "${format}"`);
|
|
40
59
|
}
|
|
41
60
|
const repeatStr = format.slice(idx + 1, endIdx);
|
|
42
|
-
|
|
43
|
-
if (!Number.isFinite(
|
|
61
|
+
const bracketRepeat = parseInt(repeatStr, 10);
|
|
62
|
+
if (!Number.isFinite(bracketRepeat) || bracketRepeat <= 0) {
|
|
44
63
|
throw new Error(`Invalid repeat count "${repeatStr}" in format string "${format}"`);
|
|
45
64
|
}
|
|
65
|
+
repeat *= bracketRepeat;
|
|
46
66
|
idx = endIdx + 1;
|
|
47
67
|
}
|
|
48
68
|
instructions.push({ kind: "spec", code, repeat });
|
|
@@ -94,14 +114,14 @@ function structUnpack(format, data) {
|
|
|
94
114
|
results.push(view.getUint32(offset, littleEndian));
|
|
95
115
|
offset += 4;
|
|
96
116
|
break;
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
117
|
+
case "q": // Signed 64-bit integer
|
|
118
|
+
results.push(Number(view.getBigInt64(offset, littleEndian)));
|
|
119
|
+
offset += 8;
|
|
120
|
+
break;
|
|
121
|
+
case "Q": // Unsigned 64-bit integer
|
|
122
|
+
results.push(Number(view.getBigUint64(offset, littleEndian)));
|
|
123
|
+
offset += 8;
|
|
124
|
+
break;
|
|
105
125
|
case "f": // 32-bit float
|
|
106
126
|
results.push(view.getFloat32(offset, littleEndian));
|
|
107
127
|
offset += 4;
|
|
@@ -110,9 +130,22 @@ function structUnpack(format, data) {
|
|
|
110
130
|
results.push(view.getFloat64(offset, littleEndian));
|
|
111
131
|
offset += 8;
|
|
112
132
|
break;
|
|
133
|
+
case "s": { // Byte string (repeat = byte length, produces one string value)
|
|
134
|
+
const bytes = data.slice(offset, offset + repeat);
|
|
135
|
+
// Trim trailing null bytes for C-string compatibility
|
|
136
|
+
let end = bytes.length;
|
|
137
|
+
while (end > 0 && bytes[end - 1] === 0)
|
|
138
|
+
end--;
|
|
139
|
+
results.push(new TextDecoder().decode(bytes.subarray(0, end)));
|
|
140
|
+
offset += repeat;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
113
143
|
default:
|
|
114
144
|
throw new Error(`Unknown format character: ${code}`);
|
|
115
145
|
}
|
|
146
|
+
// For 's', the repeat is consumed as byte-length in one go
|
|
147
|
+
if (code === "s")
|
|
148
|
+
break;
|
|
116
149
|
}
|
|
117
150
|
}
|
|
118
151
|
return results;
|
|
@@ -144,16 +177,19 @@ function structSizeOf(format) {
|
|
|
144
177
|
case "L": // Unsigned 32-bit integer
|
|
145
178
|
unitSize = 4;
|
|
146
179
|
break;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
180
|
+
case "q": // Signed 64-bit integer
|
|
181
|
+
case "Q": // Unsigned 64-bit integer
|
|
182
|
+
unitSize = 8;
|
|
183
|
+
break;
|
|
151
184
|
case "f": // 32-bit float
|
|
152
185
|
unitSize = 4;
|
|
153
186
|
break;
|
|
154
187
|
case "d": // 64-bit float
|
|
155
188
|
unitSize = 8;
|
|
156
189
|
break;
|
|
190
|
+
case "s": // Byte string (repeat = byte length)
|
|
191
|
+
size += repeat;
|
|
192
|
+
continue;
|
|
157
193
|
default:
|
|
158
194
|
throw new Error(`Unknown format character: ${code}`);
|
|
159
195
|
}
|
|
@@ -226,14 +262,20 @@ function structPack(format, values) {
|
|
|
226
262
|
view.setUint32(offset, values[valueIdx++], littleEndian);
|
|
227
263
|
offset += 4;
|
|
228
264
|
break;
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
//
|
|
265
|
+
case "q": // Signed 64-bit integer
|
|
266
|
+
if (valueIdx >= values.length) {
|
|
267
|
+
throw new Error("Insufficient values provided for structPack");
|
|
268
|
+
}
|
|
269
|
+
view.setBigInt64(offset, BigInt(values[valueIdx++]), littleEndian);
|
|
270
|
+
offset += 8;
|
|
271
|
+
break;
|
|
272
|
+
case "Q": // Unsigned 64-bit integer
|
|
273
|
+
if (valueIdx >= values.length) {
|
|
274
|
+
throw new Error("Insufficient values provided for structPack");
|
|
275
|
+
}
|
|
276
|
+
view.setBigUint64(offset, BigInt(values[valueIdx++]), littleEndian);
|
|
277
|
+
offset += 8;
|
|
278
|
+
break;
|
|
237
279
|
case "f": // 32-bit float
|
|
238
280
|
if (valueIdx >= values.length) {
|
|
239
281
|
throw new Error("Insufficient values provided for structPack");
|
|
@@ -248,9 +290,38 @@ function structPack(format, values) {
|
|
|
248
290
|
view.setFloat64(offset, values[valueIdx++], littleEndian);
|
|
249
291
|
offset += 8;
|
|
250
292
|
break;
|
|
293
|
+
case "s": { // Byte string (repeat = byte length, consumes one value)
|
|
294
|
+
if (valueIdx >= values.length) {
|
|
295
|
+
throw new Error("Insufficient values provided for structPack");
|
|
296
|
+
}
|
|
297
|
+
const val = values[valueIdx++];
|
|
298
|
+
let bytes;
|
|
299
|
+
if (val instanceof Uint8Array) {
|
|
300
|
+
bytes = val;
|
|
301
|
+
}
|
|
302
|
+
else if (typeof val === "string") {
|
|
303
|
+
bytes = new TextEncoder().encode(val);
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
throw new Error(`Expected string or Uint8Array for 's' format, got number`);
|
|
307
|
+
}
|
|
308
|
+
// Copy bytes, zero-pad if shorter than repeat
|
|
309
|
+
const copyLen = Math.min(bytes.length, repeat);
|
|
310
|
+
for (let j = 0; j < copyLen; j++) {
|
|
311
|
+
view.setUint8(offset + j, bytes[j]);
|
|
312
|
+
}
|
|
313
|
+
for (let j = copyLen; j < repeat; j++) {
|
|
314
|
+
view.setUint8(offset + j, 0);
|
|
315
|
+
}
|
|
316
|
+
offset += repeat;
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
251
319
|
default:
|
|
252
320
|
throw new Error(`Unknown format character: ${code}`);
|
|
253
321
|
}
|
|
322
|
+
// For 's', the repeat is consumed as byte-length in one go
|
|
323
|
+
if (code === "s")
|
|
324
|
+
break;
|
|
254
325
|
}
|
|
255
326
|
}
|
|
256
327
|
return new Uint8Array(buffer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RaftStruct.js","sourceRoot":"","sources":["../../src/RaftStruct.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RaftStruct.js","sourceRoot":"","sources":["../../src/RaftStruct.ts"],"names":[],"mappings":"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"}
|