@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
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
//
|
|
9
9
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
const PseudocodeTranspiler_1 = require("./PseudocodeTranspiler");
|
|
11
12
|
class CustomAttrHandler {
|
|
12
13
|
constructor() {
|
|
13
14
|
this._jsFunctionCache = new Map();
|
|
14
15
|
}
|
|
15
|
-
handleAttr(pollRespMetadata, msgBuffer, msgBufIdx) {
|
|
16
|
+
handleAttr(pollRespMetadata, msgBuffer, msgBufIdx, msgEndIdx = msgBuffer.length) {
|
|
16
17
|
// Number of bytes in each message
|
|
17
18
|
const numMsgBytes = pollRespMetadata.b;
|
|
18
19
|
// Create a vector for each attribute in the metadata
|
|
@@ -28,63 +29,50 @@ class CustomAttrHandler {
|
|
|
28
29
|
if (!customFnDef) {
|
|
29
30
|
return attrValueVecs;
|
|
30
31
|
}
|
|
31
|
-
// Provide
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
// Provide this poll block to the custom handler. Use the smaller of
|
|
33
|
+
// pollRespMetadata.b and the bytes actually available — variable-length
|
|
34
|
+
// samples may be shorter than b, and the last sample in a frame may not
|
|
35
|
+
// have b bytes remaining in the buffer.
|
|
36
|
+
const boundedMsgEndIdx = Math.min(Math.max(msgEndIdx, msgBufIdx), msgBuffer.length);
|
|
37
|
+
const availableBytes = Math.min(numMsgBytes, boundedMsgEndIdx - msgBufIdx);
|
|
38
|
+
if (availableBytes <= 0) {
|
|
34
39
|
return [];
|
|
35
40
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (!jsFn) {
|
|
40
|
-
return attrValueVecs;
|
|
41
|
-
}
|
|
42
|
-
try {
|
|
43
|
-
jsFn(buf, attrValues, attrValueVecs, pollRespMetadata, msgBuffer, msgBufIdx, numMsgBytes);
|
|
44
|
-
}
|
|
45
|
-
catch (err) {
|
|
46
|
-
console.error(`CustomAttrHandler JS function ${customFnDef.n} execution failed`, err);
|
|
47
|
-
}
|
|
41
|
+
const buf = msgBuffer.slice(msgBufIdx, msgBufIdx + availableBytes);
|
|
42
|
+
const fn = this.getOrCompileFunction(customFnDef);
|
|
43
|
+
if (!fn) {
|
|
48
44
|
return attrValueVecs;
|
|
49
45
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// Generated code ...
|
|
53
|
-
const N = (buf[0] + 32 - buf[2]) % 32;
|
|
54
|
-
let k = 3;
|
|
55
|
-
let i = 0;
|
|
56
|
-
while (i < N) {
|
|
57
|
-
attrValues["Red"].push(0);
|
|
58
|
-
attrValues["Red"][attrValues["Red"].length - 1] = (buf[k] << 16) | (buf[k + 1] << 8) | buf[k + 2];
|
|
59
|
-
attrValues["IR"].push(0);
|
|
60
|
-
attrValues["IR"][attrValues["IR"].length - 1] = (buf[k + 3] << 16) | (buf[k + 4] << 8) | buf[k + 5];
|
|
61
|
-
k += 6;
|
|
62
|
-
i++;
|
|
63
|
-
}
|
|
46
|
+
try {
|
|
47
|
+
fn(buf, attrValues, attrValueVecs, pollRespMetadata, msgBuffer, msgBufIdx, numMsgBytes);
|
|
64
48
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const val = key * (buf[0] + buf[1] / 10.0 + buf[2] / 100.0);
|
|
68
|
-
attrValues["oxygen"].push(val);
|
|
49
|
+
catch (err) {
|
|
50
|
+
console.error(`CustomAttrHandler function ${customFnDef.n} execution failed`, err);
|
|
69
51
|
}
|
|
70
52
|
return attrValueVecs;
|
|
71
53
|
}
|
|
72
|
-
|
|
73
|
-
|
|
54
|
+
getOrCompileFunction(customFnDef) {
|
|
55
|
+
var _a;
|
|
56
|
+
// Prefer explicit JS if provided, otherwise transpile from pseudocode
|
|
57
|
+
let jsSource = (_a = customFnDef.j) === null || _a === void 0 ? void 0 : _a.trim();
|
|
58
|
+
if (!jsSource && customFnDef.c) {
|
|
59
|
+
jsSource = (0, PseudocodeTranspiler_1.transpilePseudocodeToJs)(customFnDef.c);
|
|
60
|
+
}
|
|
61
|
+
if (!jsSource) {
|
|
74
62
|
return null;
|
|
75
63
|
}
|
|
76
|
-
const cacheKey = `${customFnDef.n}::${
|
|
77
|
-
const
|
|
78
|
-
if (
|
|
79
|
-
return
|
|
64
|
+
const cacheKey = `${customFnDef.n}::${jsSource}`;
|
|
65
|
+
const cached = this._jsFunctionCache.get(cacheKey);
|
|
66
|
+
if (cached) {
|
|
67
|
+
return cached;
|
|
80
68
|
}
|
|
81
69
|
try {
|
|
82
|
-
const
|
|
83
|
-
this._jsFunctionCache.set(cacheKey,
|
|
84
|
-
return
|
|
70
|
+
const fn = new Function("buf", "attrValues", "attrValueVecs", "pollRespMetadata", "msgBuffer", "msgBufIdx", "numMsgBytes", jsSource);
|
|
71
|
+
this._jsFunctionCache.set(cacheKey, fn);
|
|
72
|
+
return fn;
|
|
85
73
|
}
|
|
86
74
|
catch (err) {
|
|
87
|
-
console.error(`CustomAttrHandler failed to compile
|
|
75
|
+
console.error(`CustomAttrHandler failed to compile function ${customFnDef.n}`, err);
|
|
88
76
|
return null;
|
|
89
77
|
}
|
|
90
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RaftCustomAttrHandler.js","sourceRoot":"","sources":["../../src/RaftCustomAttrHandler.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,wBAAwB;AACxB,4CAA4C;AAC5C,EAAE;AACF,sBAAsB;AACtB,EAAE;AACF,iHAAiH;;
|
|
1
|
+
{"version":3,"file":"RaftCustomAttrHandler.js","sourceRoot":"","sources":["../../src/RaftCustomAttrHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,22 @@ export interface DeviceTypePollRespMetadata {
|
|
|
38
38
|
c?: CustomFunctionDefinition;
|
|
39
39
|
us?: number;
|
|
40
40
|
}
|
|
41
|
+
export interface SampleRateResult {
|
|
42
|
+
ok: boolean;
|
|
43
|
+
requestedRateHz: number;
|
|
44
|
+
actualRateHz: number;
|
|
45
|
+
intervalUs: number;
|
|
46
|
+
numSamples: number;
|
|
47
|
+
error?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ActionMapEntry {
|
|
50
|
+
w: string;
|
|
51
|
+
i?: number;
|
|
52
|
+
s?: number;
|
|
53
|
+
}
|
|
54
|
+
export type ActionMapValue = string | ActionMapEntry;
|
|
55
|
+
export declare function getActionMapHex(entry: ActionMapValue): string;
|
|
56
|
+
export declare function getActionMapEntry(entry: ActionMapValue): ActionMapEntry | null;
|
|
41
57
|
export interface DeviceTypeAction {
|
|
42
58
|
n: string;
|
|
43
59
|
t?: string;
|
|
@@ -51,6 +67,8 @@ export interface DeviceTypeAction {
|
|
|
51
67
|
mul?: number;
|
|
52
68
|
sub?: number;
|
|
53
69
|
d?: number;
|
|
70
|
+
map?: Record<string, ActionMapValue>;
|
|
71
|
+
desc?: string;
|
|
54
72
|
}
|
|
55
73
|
export interface DeviceTypeInfo {
|
|
56
74
|
name: string;
|
|
@@ -11,6 +11,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
11
11
|
exports.getAttrTypeBits = getAttrTypeBits;
|
|
12
12
|
exports.isAttrTypeSigned = isAttrTypeSigned;
|
|
13
13
|
exports.decodeAttrUnitsEncoding = decodeAttrUnitsEncoding;
|
|
14
|
+
exports.getActionMapHex = getActionMapHex;
|
|
15
|
+
exports.getActionMapEntry = getActionMapEntry;
|
|
14
16
|
const attrTypeBits = {
|
|
15
17
|
"c": 8, "b": 8, "B": 8, "?": 8,
|
|
16
18
|
"h": 16, "H": 16, ">h": 16, "<h": 16, ">H": 16, "<H": 16,
|
|
@@ -47,4 +49,10 @@ function decodeAttrUnitsEncoding(unitsEncoding) {
|
|
|
47
49
|
// Replace instances of HTML encoded chars like ° with the actual char
|
|
48
50
|
return unitsEncoding.replace(/°/g, "°");
|
|
49
51
|
}
|
|
52
|
+
function getActionMapHex(entry) {
|
|
53
|
+
return typeof entry === 'string' ? entry : entry.w;
|
|
54
|
+
}
|
|
55
|
+
function getActionMapEntry(entry) {
|
|
56
|
+
return typeof entry === 'object' ? entry : null;
|
|
57
|
+
}
|
|
50
58
|
//# sourceMappingURL=RaftDeviceInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RaftDeviceInfo.js","sourceRoot":"","sources":["../../src/RaftDeviceInfo.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,iBAAiB;AACjB,sCAAsC;AACtC,EAAE;AACF,sBAAsB;AACtB,EAAE;AACF,iHAAiH;;AAWjH,0CAqBC;AAED,4CAGC;AAED,0DAGC;
|
|
1
|
+
{"version":3,"file":"RaftDeviceInfo.js","sourceRoot":"","sources":["../../src/RaftDeviceInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DeviceAttributeState, DevicesState, DeviceState } from "./RaftDeviceStates";
|
|
2
|
-
import { DeviceTypeAction } from "./RaftDeviceInfo";
|
|
1
|
+
import { DeviceAttributeState, DevicesState, DeviceState, DeviceStats } from "./RaftDeviceStates";
|
|
2
|
+
import { DeviceTypeAction, SampleRateResult } from "./RaftDeviceInfo";
|
|
3
3
|
import RaftSystemUtils from "./RaftSystemUtils";
|
|
4
4
|
import RaftDeviceMgrIF from "./RaftDeviceMgrIF";
|
|
5
5
|
export interface DeviceDecodedData {
|
|
@@ -8,7 +8,7 @@ export interface DeviceDecodedData {
|
|
|
8
8
|
deviceAddress: string;
|
|
9
9
|
deviceType: string;
|
|
10
10
|
attrGroupName?: string;
|
|
11
|
-
attrValues: Record<string, number[]>;
|
|
11
|
+
attrValues: Record<string, (number | string)[]>;
|
|
12
12
|
timestampsUs: number[];
|
|
13
13
|
markers?: Record<string, unknown>;
|
|
14
14
|
fromOfflineBuffer?: boolean;
|
|
@@ -26,9 +26,15 @@ export declare class DeviceManager implements RaftDeviceMgrIF {
|
|
|
26
26
|
private _newDeviceAttributeCallbacks;
|
|
27
27
|
private _newAttributeDataCallbacks;
|
|
28
28
|
private _decodedDataCallbacks;
|
|
29
|
+
private _deviceRemovedCallbacks;
|
|
29
30
|
private _debugMsgIndex;
|
|
31
|
+
private _statsWindowMs;
|
|
32
|
+
private _deviceStats;
|
|
33
|
+
private _malformedSampleWarnLastMs;
|
|
30
34
|
getDevicesState(): DevicesState;
|
|
31
35
|
getDeviceState(deviceKey: string): DeviceState;
|
|
36
|
+
getDeviceStats(deviceKey: string): DeviceStats;
|
|
37
|
+
resetDeviceStats(deviceKey: string): void;
|
|
32
38
|
private _cachedDeviceTypeRecs;
|
|
33
39
|
private _cachedDeviceTypePreviousAttemptTimes;
|
|
34
40
|
private _pendingDeviceTypeRequests;
|
|
@@ -44,16 +50,37 @@ export declare class DeviceManager implements RaftDeviceMgrIF {
|
|
|
44
50
|
removeAttributeDataCallback(callback: (deviceKey: string, attrState: DeviceAttributeState) => void): void;
|
|
45
51
|
addDecodedDataCallback(callback: (decoded: DeviceDecodedData) => void): void;
|
|
46
52
|
removeDecodedDataCallback(callback: (decoded: DeviceDecodedData) => void): void;
|
|
53
|
+
addDeviceRemovedCallback(callback: (deviceKey: string, state: DeviceState) => void): void;
|
|
54
|
+
removeDeviceRemovedCallback(callback: (deviceKey: string, state: DeviceState) => void): void;
|
|
47
55
|
setFriendlyName(friendlyName: string): Promise<void>;
|
|
48
56
|
handleClientMsgBinary(rxMsg: Uint8Array): Promise<void>;
|
|
49
57
|
handleClientMsgJson(jsonMsg: string): Promise<void>;
|
|
50
58
|
private processStateCallback;
|
|
59
|
+
private removeDevice;
|
|
51
60
|
private getDeviceTypeInfo;
|
|
52
61
|
private executeDeviceTypeInfoRequest;
|
|
62
|
+
private hasValidRecordAt;
|
|
63
|
+
private resolveRecordPayloadFormat;
|
|
64
|
+
private areLengthPrefixedSamplesValid;
|
|
65
|
+
private areLegacyRawSamplesValid;
|
|
66
|
+
private getBinaryDeviceKey;
|
|
67
|
+
private getLegacyRawSampleLen;
|
|
68
|
+
private getPollRespPayloadSize;
|
|
69
|
+
private parseDeviceKeyForCommand;
|
|
70
|
+
private warnMalformedSample;
|
|
53
71
|
private toHex;
|
|
54
72
|
sendAction(deviceKey: string, action: DeviceTypeAction, data: number[]): Promise<boolean>;
|
|
55
73
|
sendCompoundAction(deviceKey: string, action: DeviceTypeAction, data: number[][]): Promise<boolean>;
|
|
74
|
+
setSampleRate(deviceKey: string, sampleRateHz: number, options?: {
|
|
75
|
+
numSamples?: number;
|
|
76
|
+
intervalUs?: number;
|
|
77
|
+
maxNumSamples?: number;
|
|
78
|
+
}): Promise<SampleRateResult>;
|
|
56
79
|
private hexToBytes;
|
|
80
|
+
private createEmptyStats;
|
|
81
|
+
private getOrCreateDeviceStats;
|
|
82
|
+
private cloneDeviceStats;
|
|
83
|
+
private updateDeviceStats;
|
|
57
84
|
private snapshotAttrLengths;
|
|
58
85
|
private emitDecodedData;
|
|
59
86
|
private extractMarkers;
|