@robdobsn/raftjs 1.1.1 → 1.3.1
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/README.md +2 -0
- package/dist/react-native/RaftAttributeHandler.js.map +1 -0
- package/dist/react-native/RaftChannel.js.map +1 -0
- package/dist/react-native/RaftChannelBLE.native.d.ts +95 -0
- package/dist/react-native/RaftChannelBLE.native.js +458 -0
- package/dist/react-native/RaftChannelBLE.native.js.map +1 -0
- package/dist/{RaftChannelWebBLE.d.ts → react-native/RaftChannelBLE.web.d.ts} +1 -1
- package/dist/{RaftChannelWebBLE.js → react-native/RaftChannelBLE.web.js} +31 -28
- package/dist/react-native/RaftChannelBLE.web.js.map +1 -0
- package/dist/react-native/RaftChannelBLEFactory.d.ts +10 -0
- package/dist/react-native/RaftChannelBLEFactory.js +17 -0
- package/dist/react-native/RaftChannelBLEFactory.js.map +1 -0
- package/dist/react-native/RaftChannelBLEScanner.native.d.ts +18 -0
- package/dist/react-native/RaftChannelBLEScanner.native.js +139 -0
- package/dist/react-native/RaftChannelBLEScanner.native.js.map +1 -0
- package/dist/{RaftChannelWebSerial.js → react-native/RaftChannelWebSerial.js} +3 -2
- package/dist/react-native/RaftChannelWebSerial.js.map +1 -0
- package/dist/react-native/RaftChannelWebSocket.js.map +1 -0
- package/dist/react-native/RaftCommsStats.js.map +1 -0
- package/dist/{RaftConnEvents.d.ts → react-native/RaftConnEvents.d.ts} +10 -2
- package/dist/{RaftConnEvents.js → react-native/RaftConnEvents.js} +10 -0
- package/dist/react-native/RaftConnEvents.js.map +1 -0
- package/dist/{RaftConnector.d.ts → react-native/RaftConnector.d.ts} +6 -3
- package/dist/{RaftConnector.js → react-native/RaftConnector.js} +75 -74
- package/dist/react-native/RaftConnector.js.map +1 -0
- package/dist/react-native/RaftCustomAttrHandler.js.map +1 -0
- package/dist/{RaftDeviceInfo.d.ts → react-native/RaftDeviceInfo.d.ts} +5 -10
- package/dist/react-native/RaftDeviceInfo.js.map +1 -0
- package/dist/{RaftDeviceManager.d.ts → react-native/RaftDeviceManager.d.ts} +14 -16
- package/dist/{RaftDeviceManager.js → react-native/RaftDeviceManager.js} +112 -210
- package/dist/react-native/RaftDeviceManager.js.map +1 -0
- package/dist/react-native/RaftDeviceMgrIF.d.ts +12 -0
- package/dist/react-native/RaftDeviceMgrIF.js +11 -0
- package/dist/react-native/RaftDeviceMgrIF.js.map +1 -0
- package/dist/react-native/RaftDeviceMsg.js.map +1 -0
- package/dist/{RaftDeviceStates.d.ts → react-native/RaftDeviceStates.d.ts} +1 -1
- package/dist/react-native/RaftDeviceStates.js.map +1 -0
- package/dist/react-native/RaftFileHandler.js.map +1 -0
- package/dist/react-native/RaftLog.js.map +1 -0
- package/dist/{RaftMiniHDLC.js → react-native/RaftMiniHDLC.js} +1 -1
- package/dist/react-native/RaftMiniHDLC.js.map +1 -0
- package/dist/{RaftMsgHandler.js → react-native/RaftMsgHandler.js} +2 -2
- package/dist/react-native/RaftMsgHandler.js.map +1 -0
- package/dist/react-native/RaftMsgTrackInfo.js.map +1 -0
- package/dist/react-native/RaftProtocolDefs.js.map +1 -0
- package/dist/react-native/RaftStreamHandler.js.map +1 -0
- package/dist/{RaftSystemType.d.ts → react-native/RaftSystemType.d.ts} +3 -0
- package/dist/{RaftSystemType.js.map → react-native/RaftSystemType.js.map} +1 -1
- package/dist/react-native/RaftSystemUtils.js.map +1 -0
- package/dist/{RaftTypes.d.ts → react-native/RaftTypes.d.ts} +11 -0
- package/dist/{RaftTypes.js → react-native/RaftTypes.js} +34 -1
- package/dist/react-native/RaftTypes.js.map +1 -0
- package/dist/react-native/RaftUpdateEvents.js.map +1 -0
- package/dist/react-native/RaftUpdateManager.js.map +1 -0
- package/dist/{RaftUtils.js → react-native/RaftUtils.js} +1 -1
- package/dist/react-native/RaftUtils.js.map +1 -0
- package/dist/react-native/RaftWifiTypes.js.map +1 -0
- package/dist/react-native/main.d.ts +21 -0
- package/dist/{main.js → react-native/main.js} +7 -3
- package/dist/react-native/main.js.map +1 -0
- package/dist/web/RaftAttributeHandler.d.ts +12 -0
- package/dist/web/RaftAttributeHandler.js +241 -0
- package/dist/web/RaftAttributeHandler.js.map +1 -0
- package/dist/web/RaftChannel.d.ts +18 -0
- package/dist/web/RaftChannel.js +12 -0
- package/dist/web/RaftChannel.js.map +1 -0
- package/dist/web/RaftChannelBLE.web.d.ts +38 -0
- package/dist/web/RaftChannelBLE.web.js +277 -0
- package/dist/web/RaftChannelBLE.web.js.map +1 -0
- package/dist/web/RaftChannelBLEFactory.d.ts +10 -0
- package/dist/web/RaftChannelBLEFactory.js +17 -0
- package/dist/web/RaftChannelBLEFactory.js.map +1 -0
- package/dist/web/RaftChannelWebSerial.d.ts +37 -0
- package/dist/web/RaftChannelWebSerial.js +320 -0
- package/dist/web/RaftChannelWebSerial.js.map +1 -0
- package/dist/web/RaftChannelWebSocket.d.ts +28 -0
- package/dist/web/RaftChannelWebSocket.js +197 -0
- package/dist/web/RaftChannelWebSocket.js.map +1 -0
- package/dist/web/RaftCommsStats.d.ts +39 -0
- package/dist/web/RaftCommsStats.js +128 -0
- package/dist/web/RaftCommsStats.js.map +1 -0
- package/dist/web/RaftConnEvents.d.ts +39 -0
- package/dist/web/RaftConnEvents.js +54 -0
- package/dist/web/RaftConnEvents.js.map +1 -0
- package/dist/web/RaftConnector.d.ts +245 -0
- package/dist/web/RaftConnector.js +614 -0
- package/dist/web/RaftConnector.js.map +1 -0
- package/dist/web/RaftCustomAttrHandler.d.ts +4 -0
- package/dist/web/RaftCustomAttrHandler.js +50 -0
- package/dist/web/RaftCustomAttrHandler.js.map +1 -0
- package/dist/web/RaftDeviceInfo.d.ts +59 -0
- package/dist/web/RaftDeviceInfo.js +36 -0
- package/dist/web/RaftDeviceInfo.js.map +1 -0
- package/dist/web/RaftDeviceManager.d.ts +35 -0
- package/dist/web/RaftDeviceManager.js +352 -0
- package/dist/web/RaftDeviceManager.js.map +1 -0
- package/dist/web/RaftDeviceMgrIF.d.ts +12 -0
- package/dist/web/RaftDeviceMgrIF.js +11 -0
- package/dist/web/RaftDeviceMgrIF.js.map +1 -0
- package/dist/web/RaftDeviceMsg.d.ts +9 -0
- package/dist/web/RaftDeviceMsg.js +11 -0
- package/dist/web/RaftDeviceMsg.js.map +1 -0
- package/dist/web/RaftDeviceStates.d.ts +33 -0
- package/dist/web/RaftDeviceStates.js +60 -0
- package/dist/web/RaftDeviceStates.js.map +1 -0
- package/dist/web/RaftFileHandler.d.ts +52 -0
- package/dist/web/RaftFileHandler.js +502 -0
- package/dist/web/RaftFileHandler.js.map +1 -0
- package/dist/web/RaftLog.d.ts +22 -0
- package/dist/web/RaftLog.js +63 -0
- package/dist/web/RaftLog.js.map +1 -0
- package/dist/web/RaftMiniHDLC.d.ts +18 -0
- package/dist/web/RaftMiniHDLC.js +383 -0
- package/dist/web/RaftMiniHDLC.js.map +1 -0
- package/dist/web/RaftMsgHandler.d.ts +57 -0
- package/dist/web/RaftMsgHandler.js +480 -0
- package/dist/web/RaftMsgHandler.js.map +1 -0
- package/dist/web/RaftMsgTrackInfo.d.ts +17 -0
- package/dist/web/RaftMsgTrackInfo.js +42 -0
- package/dist/web/RaftMsgTrackInfo.js.map +1 -0
- package/dist/web/RaftProtocolDefs.d.ts +30 -0
- package/dist/web/RaftProtocolDefs.js +48 -0
- package/dist/web/RaftProtocolDefs.js.map +1 -0
- package/dist/web/RaftStreamHandler.d.ts +38 -0
- package/dist/web/RaftStreamHandler.js +257 -0
- package/dist/web/RaftStreamHandler.js.map +1 -0
- package/dist/web/RaftSystemType.d.ts +24 -0
- package/dist/web/RaftSystemType.js +3 -0
- package/dist/web/RaftSystemType.js.map +1 -0
- package/dist/web/RaftSystemUtils.d.ts +136 -0
- package/dist/web/RaftSystemUtils.js +410 -0
- package/dist/web/RaftSystemUtils.js.map +1 -0
- package/dist/web/RaftTypes.d.ts +195 -0
- package/dist/web/RaftTypes.js +190 -0
- package/dist/web/RaftTypes.js.map +1 -0
- package/dist/web/RaftUpdateEvents.d.ts +33 -0
- package/dist/web/RaftUpdateEvents.js +46 -0
- package/dist/web/RaftUpdateEvents.js.map +1 -0
- package/dist/web/RaftUpdateManager.d.ts +61 -0
- package/dist/web/RaftUpdateManager.js +618 -0
- package/dist/web/RaftUpdateManager.js.map +1 -0
- package/dist/web/RaftUtils.d.ts +125 -0
- package/dist/web/RaftUtils.js +454 -0
- package/dist/web/RaftUtils.js.map +1 -0
- package/dist/web/RaftWifiTypes.d.ts +23 -0
- package/dist/web/RaftWifiTypes.js +43 -0
- package/dist/web/RaftWifiTypes.js.map +1 -0
- package/dist/{main.d.ts → web/main.d.ts} +4 -1
- package/dist/web/main.js +46 -0
- package/dist/web/main.js.map +1 -0
- package/examples/dashboard/package.json +4 -0
- package/examples/dashboard/src/CommandPanel.tsx +147 -0
- package/examples/dashboard/src/ConnManager.ts +2 -2
- package/examples/dashboard/src/DeviceActionsForm.tsx +133 -0
- package/examples/dashboard/src/DeviceAttrsForm.tsx +49 -0
- package/examples/dashboard/src/DeviceLineChart.tsx +139 -0
- package/examples/dashboard/src/DevicePanel.tsx +135 -0
- package/examples/dashboard/src/DevicesPanel.tsx +57 -0
- package/examples/dashboard/src/DispLedGrid.tsx +110 -0
- package/examples/dashboard/src/DispOneLed.tsx +20 -0
- package/examples/dashboard/src/Main.tsx +53 -47
- package/examples/dashboard/src/{StatusScreen.tsx → StatusPanel.tsx} +13 -14
- package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +137 -119
- package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +15 -8
- package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +47 -1
- package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +4 -1
- package/examples/dashboard/src/styles.css +262 -9
- package/package.json +57 -48
- package/src/RaftChannelBLE.native.ts +586 -0
- package/src/{RaftChannelWebBLE.ts → RaftChannelBLE.web.ts} +26 -23
- package/src/RaftChannelBLEFactory.ts +13 -0
- package/src/RaftChannelBLEScanner.native.ts +185 -0
- package/src/RaftChannelWebSerial.ts +1 -0
- package/src/RaftConnEvents.ts +14 -2
- package/src/RaftConnector.ts +80 -88
- package/src/RaftDeviceInfo.ts +6 -12
- package/src/RaftDeviceManager.ts +138 -245
- package/src/RaftDeviceMgrIF.ts +28 -0
- package/src/RaftDeviceStates.ts +1 -2
- package/src/RaftMiniHDLC.ts +1 -1
- package/src/RaftMsgHandler.ts +2 -2
- package/src/RaftSystemType.ts +3 -0
- package/src/RaftTypes.ts +48 -17
- package/src/RaftUtils.ts +1 -1
- package/src/main.ts +8 -1
- package/tsconfig.json +5 -2
- package/tsconfig.react-native.json +29 -0
- package/dist/RaftAttributeHandler.js.map +0 -1
- package/dist/RaftChannel.js.map +0 -1
- package/dist/RaftChannelWebBLE.js.map +0 -1
- package/dist/RaftChannelWebSerial.js.map +0 -1
- package/dist/RaftChannelWebSocket.js.map +0 -1
- package/dist/RaftCommsStats.js.map +0 -1
- package/dist/RaftConnEvents.js.map +0 -1
- package/dist/RaftConnector.js.map +0 -1
- package/dist/RaftCustomAttrHandler.js.map +0 -1
- package/dist/RaftDeviceInfo.js.map +0 -1
- package/dist/RaftDeviceManager.js.map +0 -1
- package/dist/RaftDeviceMsg.js.map +0 -1
- package/dist/RaftDeviceStates.js.map +0 -1
- package/dist/RaftFileHandler.js.map +0 -1
- package/dist/RaftLog.js.map +0 -1
- package/dist/RaftMiniHDLC.js.map +0 -1
- package/dist/RaftMsgHandler.js.map +0 -1
- package/dist/RaftMsgTrackInfo.js.map +0 -1
- package/dist/RaftProtocolDefs.js.map +0 -1
- package/dist/RaftStreamHandler.js.map +0 -1
- package/dist/RaftSystemUtils.js.map +0 -1
- package/dist/RaftTypes.js.map +0 -1
- package/dist/RaftUpdateEvents.js.map +0 -1
- package/dist/RaftUpdateManager.js.map +0 -1
- package/dist/RaftUtils.js.map +0 -1
- package/dist/RaftWifiTypes.js.map +0 -1
- package/dist/TestDataGen.d.ts +0 -7
- package/dist/TestDataGen.js +0 -133
- package/dist/TestDataGen.js.map +0 -1
- package/dist/main.js.map +0 -1
- package/src/TestDataGen.ts +0 -157
- /package/dist/{RaftAttributeHandler.d.ts → react-native/RaftAttributeHandler.d.ts} +0 -0
- /package/dist/{RaftAttributeHandler.js → react-native/RaftAttributeHandler.js} +0 -0
- /package/dist/{RaftChannel.d.ts → react-native/RaftChannel.d.ts} +0 -0
- /package/dist/{RaftChannel.js → react-native/RaftChannel.js} +0 -0
- /package/dist/{RaftChannelWebSerial.d.ts → react-native/RaftChannelWebSerial.d.ts} +0 -0
- /package/dist/{RaftChannelWebSocket.d.ts → react-native/RaftChannelWebSocket.d.ts} +0 -0
- /package/dist/{RaftChannelWebSocket.js → react-native/RaftChannelWebSocket.js} +0 -0
- /package/dist/{RaftCommsStats.d.ts → react-native/RaftCommsStats.d.ts} +0 -0
- /package/dist/{RaftCommsStats.js → react-native/RaftCommsStats.js} +0 -0
- /package/dist/{RaftCustomAttrHandler.d.ts → react-native/RaftCustomAttrHandler.d.ts} +0 -0
- /package/dist/{RaftCustomAttrHandler.js → react-native/RaftCustomAttrHandler.js} +0 -0
- /package/dist/{RaftDeviceInfo.js → react-native/RaftDeviceInfo.js} +0 -0
- /package/dist/{RaftDeviceMsg.d.ts → react-native/RaftDeviceMsg.d.ts} +0 -0
- /package/dist/{RaftDeviceMsg.js → react-native/RaftDeviceMsg.js} +0 -0
- /package/dist/{RaftDeviceStates.js → react-native/RaftDeviceStates.js} +0 -0
- /package/dist/{RaftFileHandler.d.ts → react-native/RaftFileHandler.d.ts} +0 -0
- /package/dist/{RaftFileHandler.js → react-native/RaftFileHandler.js} +0 -0
- /package/dist/{RaftLog.d.ts → react-native/RaftLog.d.ts} +0 -0
- /package/dist/{RaftLog.js → react-native/RaftLog.js} +0 -0
- /package/dist/{RaftMiniHDLC.d.ts → react-native/RaftMiniHDLC.d.ts} +0 -0
- /package/dist/{RaftMsgHandler.d.ts → react-native/RaftMsgHandler.d.ts} +0 -0
- /package/dist/{RaftMsgTrackInfo.d.ts → react-native/RaftMsgTrackInfo.d.ts} +0 -0
- /package/dist/{RaftMsgTrackInfo.js → react-native/RaftMsgTrackInfo.js} +0 -0
- /package/dist/{RaftProtocolDefs.d.ts → react-native/RaftProtocolDefs.d.ts} +0 -0
- /package/dist/{RaftProtocolDefs.js → react-native/RaftProtocolDefs.js} +0 -0
- /package/dist/{RaftStreamHandler.d.ts → react-native/RaftStreamHandler.d.ts} +0 -0
- /package/dist/{RaftStreamHandler.js → react-native/RaftStreamHandler.js} +0 -0
- /package/dist/{RaftSystemType.js → react-native/RaftSystemType.js} +0 -0
- /package/dist/{RaftSystemUtils.d.ts → react-native/RaftSystemUtils.d.ts} +0 -0
- /package/dist/{RaftSystemUtils.js → react-native/RaftSystemUtils.js} +0 -0
- /package/dist/{RaftUpdateEvents.d.ts → react-native/RaftUpdateEvents.d.ts} +0 -0
- /package/dist/{RaftUpdateEvents.js → react-native/RaftUpdateEvents.js} +0 -0
- /package/dist/{RaftUpdateManager.d.ts → react-native/RaftUpdateManager.d.ts} +0 -0
- /package/dist/{RaftUpdateManager.js → react-native/RaftUpdateManager.js} +0 -0
- /package/dist/{RaftUtils.d.ts → react-native/RaftUtils.d.ts} +0 -0
- /package/dist/{RaftWifiTypes.d.ts → react-native/RaftWifiTypes.d.ts} +0 -0
- /package/dist/{RaftWifiTypes.js → react-native/RaftWifiTypes.js} +0 -0
|
@@ -1,144 +1,162 @@
|
|
|
1
1
|
import { time } from "console";
|
|
2
2
|
import RaftLog from "../../../../src/RaftLog";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
3
|
+
import { TextDecoder } from 'text-encoding';
|
|
4
|
+
import { DeviceMsgJson } from "../../../../src/RaftDeviceMsg";
|
|
5
|
+
|
|
6
|
+
// export interface IMUStateInfo {
|
|
7
|
+
// gx: number;
|
|
8
|
+
// gy: number;
|
|
9
|
+
// gz: number;
|
|
10
|
+
// ax: number;
|
|
11
|
+
// ay: number;
|
|
12
|
+
// az: number;
|
|
13
|
+
// tsMs: number;
|
|
14
|
+
// }
|
|
15
|
+
|
|
16
|
+
// export interface DeviceLastTsState {
|
|
17
|
+
// lastMs: number;
|
|
18
|
+
// offsetMs: number;
|
|
19
|
+
// }
|
|
20
|
+
|
|
21
|
+
// export interface DeviceMsgJsonElem {
|
|
22
|
+
// _t: string; // Device type
|
|
23
|
+
// _o: string; // Device name
|
|
24
|
+
// x: string; // Hex encoded message values
|
|
25
|
+
// }
|
|
26
|
+
|
|
27
|
+
// export interface DeviceMsgJsonBus {
|
|
28
|
+
// [devAddr: string]: DeviceMsgJsonElem;
|
|
29
|
+
// }
|
|
28
30
|
|
|
29
|
-
export interface DeviceMsgJson {
|
|
30
|
-
|
|
31
|
-
}
|
|
31
|
+
// export interface DeviceMsgJson {
|
|
32
|
+
// [busName: string]: DeviceMsgJsonBus;
|
|
33
|
+
// }
|
|
32
34
|
|
|
33
35
|
export class CogStateInfo {
|
|
34
36
|
|
|
35
|
-
LSM6DS: IMUStateInfo = {gx: 0, gy: 0, gz: 0, ax: 0, ay: 0, az: 0, tsMs: 0};
|
|
37
|
+
// LSM6DS: IMUStateInfo = {gx: 0, gy: 0, gz: 0, ax: 0, ay: 0, az: 0, tsMs: 0};
|
|
36
38
|
|
|
37
|
-
// Last timestamp for each device
|
|
38
|
-
private _deviceLastTs: {[devName: string]: DeviceLastTsState} = {};
|
|
39
|
+
// // Last timestamp for each device
|
|
40
|
+
// private _deviceLastTs: {[devName: string]: DeviceLastTsState} = {};
|
|
39
41
|
|
|
42
|
+
public constructor(private _deviceManager: DeviceManager) {
|
|
43
|
+
}
|
|
44
|
+
|
|
40
45
|
updateFromMsg(rxMsg: Uint8Array, frameTimeMs: number): Array<string> {
|
|
41
46
|
|
|
47
|
+
// Debug
|
|
42
48
|
// RaftLog.info(`CogStateInfo: updateFromMsg: rxMsg: ${rxMsg} frameTimeMs: ${frameTimeMs}`);
|
|
43
49
|
|
|
44
50
|
// Convert Uint8Array to string
|
|
45
51
|
const decoder = new TextDecoder('utf-8');
|
|
46
52
|
const jsonString = decoder.decode(rxMsg.slice(2));
|
|
47
53
|
|
|
48
|
-
//
|
|
49
|
-
|
|
54
|
+
// Handle using device manager
|
|
55
|
+
this._deviceManager.handleClientMsgJson(jsonString);
|
|
50
56
|
|
|
51
57
|
// Parse JSON string to TypeScript object
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// RaftLog.info(`CogStateInfo: updateFromMsg: busName ${busName} devAddr ${devAddr} attrGroupName: ${attrGroupName}`);
|
|
59
|
-
// RaftLog.info(`CogStateInfo: updateFromMsg: attrValue: ${deviceMsg[busName][devAddr][attrGroupName]}`);
|
|
60
|
-
// }
|
|
61
|
-
// }
|
|
62
|
-
// }
|
|
63
|
-
|
|
64
|
-
// Iterate over values and extract
|
|
65
|
-
for (const busName in deviceMsg) {
|
|
66
|
-
for (const devAddr in deviceMsg[busName]) {
|
|
67
|
-
|
|
68
|
-
// Validate
|
|
69
|
-
if ((deviceMsg[busName][devAddr].x === undefined) || (deviceMsg[busName][devAddr]._t === undefined)) {
|
|
70
|
-
RaftLog.warn(`CogStateInfo: updateFromMsg: Invalid message`);
|
|
71
|
-
continue;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Extract message and device type
|
|
75
|
-
const msgHex = deviceMsg[busName][devAddr].x;
|
|
76
|
-
const devType = deviceMsg[busName][devAddr]._t;
|
|
77
|
-
|
|
78
|
-
// Check if message is empty
|
|
79
|
-
if (msgHex === '') {
|
|
80
|
-
RaftLog.warn(`CogStateInfo: updateFromMsg: Empty message`);
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// Convert the hex string to an arraybuffer by converting each pair of hex chars to a byte
|
|
85
|
-
const msgBytes = this.hexToBytes(msgHex);
|
|
86
|
-
|
|
87
|
-
// Convert to a Buffer
|
|
88
|
-
const msgBuffer = Buffer.from(msgBytes);
|
|
89
|
-
|
|
90
|
-
// Extract timestamp
|
|
91
|
-
let timestamp = msgBuffer.readUInt16BE(0);
|
|
92
|
-
if (this._deviceLastTs[devType] === undefined) {
|
|
93
|
-
this._deviceLastTs[devType] = {lastMs: 0, offsetMs: 0};
|
|
94
|
-
}
|
|
95
|
-
const devTsState = this._deviceLastTs[devType];
|
|
96
|
-
if (timestamp < devTsState.lastMs) {
|
|
97
|
-
devTsState.offsetMs += 0x10000;
|
|
98
|
-
}
|
|
99
|
-
devTsState.lastMs = timestamp;
|
|
100
|
-
timestamp += devTsState.offsetMs;
|
|
101
|
-
let msgBufferOffset = 2;
|
|
102
|
-
// RaftLog.info(`CogStateInfo: updateFromMsg: timestamp: ${timestamp}`);
|
|
103
|
-
|
|
104
|
-
// Handle device types
|
|
105
|
-
switch (devType) {
|
|
106
|
-
case 'LSM6DS':
|
|
107
|
-
// RaftLog.info(`CogStateInfo: updateFromMsg: IMU`);
|
|
108
|
-
|
|
109
|
-
// LSD6DS IMU data is coded as 16-bit signed integers little-endian
|
|
110
|
-
// gx, gy, gz, ax, ay, az
|
|
111
|
-
this.LSM6DS = {
|
|
112
|
-
gx: msgBuffer.readInt16LE(msgBufferOffset) / 16.384,
|
|
113
|
-
gy: msgBuffer.readInt16LE(msgBufferOffset + 2) / 16.384,
|
|
114
|
-
gz: msgBuffer.readInt16LE(msgBufferOffset + 4) / 16.384,
|
|
115
|
-
ax: msgBuffer.readInt16LE(msgBufferOffset + 6) / 8192,
|
|
116
|
-
ay: msgBuffer.readInt16LE(msgBufferOffset + 8) / 8192,
|
|
117
|
-
az: msgBuffer.readInt16LE(msgBufferOffset + 10) / 8192,
|
|
118
|
-
tsMs: timestamp
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
// Debug
|
|
122
|
-
// RaftLog.info(`CogStateInfo: updateFromMsg: LSM6DS: gx: ${this.LSM6DS.gx.toFixed(2)} gy: ${this.LSM6DS.gy.toFixed(2)} gz: ${this.LSM6DS.gz.toFixed(2)} ax: ${this.LSM6DS.ax.toFixed(2)} ay: ${this.LSM6DS.ay.toFixed(2)} az: ${this.LSM6DS.az.toFixed(2)} tsMs: ${this.LSM6DS.tsMs}`);
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// const imu = deviceMsg[busName][devAddr] as DeviceMsgJsonElem;
|
|
127
|
-
// this.imu = {x: imu.x as number, y: imu.y as number, z: imu.z as number, lastMs: frameTimeMs};
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
58
|
+
let deviceMsg: DeviceMsgJson;
|
|
59
|
+
try {
|
|
60
|
+
deviceMsg = JSON.parse(jsonString);
|
|
61
|
+
} catch (error) {
|
|
62
|
+
RaftLog.warn(`CogStateInfo: updateFromMsg: JSON parse error: ${error}`);
|
|
63
|
+
return [];
|
|
131
64
|
}
|
|
132
65
|
|
|
66
|
+
// // Debug
|
|
67
|
+
// // RaftLog.info(`CogStateInfo: updateFromMsg: jsonString: ${jsonString}`);
|
|
68
|
+
|
|
69
|
+
// // Parse JSON string to TypeScript object
|
|
70
|
+
// const deviceMsg: DeviceMsgJson = JSON.parse(jsonString);
|
|
71
|
+
|
|
72
|
+
// // Debug
|
|
73
|
+
// // for (const busName in deviceMsg) {
|
|
74
|
+
// // for (const devAddr in deviceMsg[busName]) {
|
|
75
|
+
// // for (const attrGroupName in deviceMsg[busName][devAddr]) {
|
|
76
|
+
// // RaftLog.info(`CogStateInfo: updateFromMsg: busName ${busName} devAddr ${devAddr} attrGroupName: ${attrGroupName}`);
|
|
77
|
+
// // RaftLog.info(`CogStateInfo: updateFromMsg: attrValue: ${deviceMsg[busName][devAddr][attrGroupName]}`);
|
|
78
|
+
// // }
|
|
79
|
+
// // }
|
|
80
|
+
// // }
|
|
81
|
+
|
|
82
|
+
// // Iterate over values and extract
|
|
83
|
+
// for (const busName in deviceMsg) {
|
|
84
|
+
// for (const devAddr in deviceMsg[busName]) {
|
|
85
|
+
|
|
86
|
+
// // Validate
|
|
87
|
+
// if ((deviceMsg[busName][devAddr].x === undefined) || (deviceMsg[busName][devAddr]._t === undefined)) {
|
|
88
|
+
// RaftLog.warn(`CogStateInfo: updateFromMsg: Invalid message`);
|
|
89
|
+
// continue;
|
|
90
|
+
// }
|
|
91
|
+
|
|
92
|
+
// // Extract message and device type
|
|
93
|
+
// const msgHex = deviceMsg[busName][devAddr].x;
|
|
94
|
+
// const devType = deviceMsg[busName][devAddr]._t;
|
|
95
|
+
|
|
96
|
+
// // Check if message is empty
|
|
97
|
+
// if (msgHex === '') {
|
|
98
|
+
// RaftLog.warn(`CogStateInfo: updateFromMsg: Empty message`);
|
|
99
|
+
// continue;
|
|
100
|
+
// }
|
|
101
|
+
|
|
102
|
+
// // Convert the hex string to an arraybuffer by converting each pair of hex chars to a byte
|
|
103
|
+
// const msgBytes = this.hexToBytes(msgHex);
|
|
104
|
+
|
|
105
|
+
// // Convert to a Buffer
|
|
106
|
+
// const msgBuffer = Buffer.from(msgBytes);
|
|
107
|
+
|
|
108
|
+
// // Extract timestamp
|
|
109
|
+
// let timestamp = msgBuffer.readUInt16BE(0);
|
|
110
|
+
// if (this._deviceLastTs[devType] === undefined) {
|
|
111
|
+
// this._deviceLastTs[devType] = {lastMs: 0, offsetMs: 0};
|
|
112
|
+
// }
|
|
113
|
+
// const devTsState = this._deviceLastTs[devType];
|
|
114
|
+
// if (timestamp < devTsState.lastMs) {
|
|
115
|
+
// devTsState.offsetMs += 0x10000;
|
|
116
|
+
// }
|
|
117
|
+
// devTsState.lastMs = timestamp;
|
|
118
|
+
// timestamp += devTsState.offsetMs;
|
|
119
|
+
// let msgBufferOffset = 2;
|
|
120
|
+
// // RaftLog.info(`CogStateInfo: updateFromMsg: timestamp: ${timestamp}`);
|
|
121
|
+
|
|
122
|
+
// // Handle device types
|
|
123
|
+
// switch (devType) {
|
|
124
|
+
// case 'LSM6DS':
|
|
125
|
+
// // RaftLog.info(`CogStateInfo: updateFromMsg: IMU`);
|
|
126
|
+
|
|
127
|
+
// // LSD6DS IMU data is coded as 16-bit signed integers little-endian
|
|
128
|
+
// // gx, gy, gz, ax, ay, az
|
|
129
|
+
// this.LSM6DS = {
|
|
130
|
+
// gx: msgBuffer.readInt16LE(msgBufferOffset) / 16.384,
|
|
131
|
+
// gy: msgBuffer.readInt16LE(msgBufferOffset + 2) / 16.384,
|
|
132
|
+
// gz: msgBuffer.readInt16LE(msgBufferOffset + 4) / 16.384,
|
|
133
|
+
// ax: msgBuffer.readInt16LE(msgBufferOffset + 6) / 8192,
|
|
134
|
+
// ay: msgBuffer.readInt16LE(msgBufferOffset + 8) / 8192,
|
|
135
|
+
// az: msgBuffer.readInt16LE(msgBufferOffset + 10) / 8192,
|
|
136
|
+
// tsMs: timestamp
|
|
137
|
+
// };
|
|
138
|
+
|
|
139
|
+
// // Debug
|
|
140
|
+
// // RaftLog.info(`CogStateInfo: updateFromMsg: LSM6DS: gx: ${this.LSM6DS.gx.toFixed(2)} gy: ${this.LSM6DS.gy.toFixed(2)} gz: ${this.LSM6DS.gz.toFixed(2)} ax: ${this.LSM6DS.ax.toFixed(2)} ay: ${this.LSM6DS.ay.toFixed(2)} az: ${this.LSM6DS.az.toFixed(2)} tsMs: ${this.LSM6DS.tsMs}`);
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
// // const imu = deviceMsg[busName][devAddr] as DeviceMsgJsonElem;
|
|
145
|
+
// // this.imu = {x: imu.x as number, y: imu.y as number, z: imu.z as number, lastMs: frameTimeMs};
|
|
146
|
+
// break;
|
|
147
|
+
// }
|
|
148
|
+
// }
|
|
149
|
+
// }
|
|
150
|
+
|
|
133
151
|
return [];
|
|
134
152
|
|
|
135
153
|
}
|
|
136
154
|
|
|
137
|
-
private hexToBytes(hex: string): Uint8Array {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
155
|
+
// private hexToBytes(hex: string): Uint8Array {
|
|
156
|
+
// const bytes = new Uint8Array(hex.length / 2);
|
|
157
|
+
// for (let i = 0; i < bytes.length; i++) {
|
|
158
|
+
// bytes[i] = parseInt(hex.substr(i * 2, 2), 16);
|
|
159
|
+
// }
|
|
160
|
+
// return bytes;
|
|
161
|
+
// }
|
|
144
162
|
}
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
import { RaftSubscribeForUpdatesCBType, RaftSystemType } from "../../../../src/RaftSystemType";
|
|
2
2
|
import { RaftEventFn, RaftLog, RaftOKFail, RaftPublishEvent, RaftPublishEventNames, RaftSystemUtils } from "../../../../src/main";
|
|
3
3
|
import { CogStateInfo } from "./CogStateInfo";
|
|
4
|
+
import { DeviceManager } from "../../../../src/RaftDeviceManager";
|
|
4
5
|
|
|
5
6
|
export default class SystemTypeCog implements RaftSystemType {
|
|
6
7
|
nameForDialogs = "Robotical Cog";
|
|
7
8
|
defaultWiFiHostname = "Cog";
|
|
8
9
|
firmwareDestName = "ricfw";
|
|
9
10
|
normalFileDestName = "fs";
|
|
10
|
-
connectorOptions = {wsSuffix: "wsjson"};
|
|
11
|
-
|
|
12
|
-
// Latest data from servos, IMU, etc
|
|
13
|
-
private _stateInfo: CogStateInfo = new CogStateInfo();
|
|
14
|
-
getStateInfo(): CogStateInfo {
|
|
15
|
-
return this._stateInfo;
|
|
16
|
-
}
|
|
11
|
+
connectorOptions = {wsSuffix: "wsjson", bleConnItvlMs: 50};
|
|
17
12
|
|
|
18
13
|
// Event handler
|
|
19
14
|
private _onEvent: RaftEventFn | null = null;
|
|
@@ -21,10 +16,20 @@ export default class SystemTypeCog implements RaftSystemType {
|
|
|
21
16
|
// Raft system utils
|
|
22
17
|
private _systemUtils: RaftSystemUtils | null = null;
|
|
23
18
|
|
|
19
|
+
// Device manager
|
|
20
|
+
private _deviceManager: DeviceManager = new DeviceManager();
|
|
21
|
+
|
|
24
22
|
// Setup
|
|
25
23
|
setup(systemUtils: RaftSystemUtils, onEvent: RaftEventFn | null): void {
|
|
26
24
|
this._systemUtils = systemUtils;
|
|
27
25
|
this._onEvent = onEvent;
|
|
26
|
+
this._deviceManager.setup(systemUtils);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Latest data from servos, IMU, etc
|
|
30
|
+
private _stateInfo: CogStateInfo = new CogStateInfo(this._deviceManager);
|
|
31
|
+
getStateInfo(): CogStateInfo {
|
|
32
|
+
return this._stateInfo;
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
// Subscribe for updates
|
|
@@ -72,6 +77,8 @@ export default class SystemTypeCog implements RaftSystemType {
|
|
|
72
77
|
frameTimeMs: frameTimeMs
|
|
73
78
|
});
|
|
74
79
|
}
|
|
75
|
-
|
|
76
80
|
};
|
|
81
|
+
|
|
82
|
+
// Get device manager
|
|
83
|
+
deviceMgrIF = this._deviceManager;
|
|
77
84
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import RaftDeviceMgrIF from "../../../../src/RaftDeviceMgrIF";
|
|
2
|
+
import { DeviceAttributeState, DevicesState, DeviceState } from "../../../../src/RaftDeviceStates";
|
|
1
3
|
import { RICSERIAL_PAYLOAD_POS } from "../../../../src/RaftProtocolDefs";
|
|
2
4
|
import RICAddOnManager from "./RICAddOnManager";
|
|
3
5
|
import RICCommsStats from "./RICCommsStats";
|
|
4
6
|
import { RICROSSerial, ROSCameraData, ROSSerialAddOnStatusList, ROSSerialIMU, ROSSerialPowerStatus, ROSSerialRobotStatus, ROSSerialSmartServos } from "./RICROSSerial";
|
|
5
7
|
|
|
6
|
-
export class RICStateInfo {
|
|
8
|
+
export class RICStateInfo implements RaftDeviceMgrIF {
|
|
7
9
|
smartServos: ROSSerialSmartServos = new ROSSerialSmartServos();
|
|
8
10
|
smartServosValidMs = 0;
|
|
9
11
|
imuData: ROSSerialIMU = new ROSSerialIMU();
|
|
@@ -28,5 +30,49 @@ export class RICStateInfo {
|
|
|
28
30
|
frameTimeMs
|
|
29
31
|
);
|
|
30
32
|
}
|
|
33
|
+
|
|
34
|
+
getDevicesState(): DevicesState {
|
|
35
|
+
|
|
36
|
+
// TODO - implement if RICStateInfo is to be used as a DeviceMgr
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
getDeviceState(deviceKey: string): DeviceState {
|
|
41
|
+
|
|
42
|
+
// TODO - implement if RICStateInfo is to be used as a DeviceMgr
|
|
43
|
+
return {
|
|
44
|
+
deviceTypeInfo: undefined,
|
|
45
|
+
deviceTimeline: {
|
|
46
|
+
timestampsUs: [],
|
|
47
|
+
lastReportTimestampUs: 0,
|
|
48
|
+
reportTimestampOffsetUs: 0
|
|
49
|
+
},
|
|
50
|
+
deviceAttributes: {},
|
|
51
|
+
deviceIsNew: false,
|
|
52
|
+
stateChanged: false,
|
|
53
|
+
isOnline: false
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
onNewDevice(callback: (deviceKey: string, state: DeviceState) => void): void {
|
|
58
|
+
// TODO - implement if RICStateInfo is to be used as a DeviceMgr
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
onNewDeviceAttribute(callback: (deviceKey: string, attrState: DeviceAttributeState) => void): void {
|
|
62
|
+
// TODO - implement if RICStateInfo is to be used as a DeviceMgr
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
onNewAttributeData(callback: (deviceKey: string, attrState: DeviceAttributeState) => void): void {
|
|
66
|
+
// TODO - implement if RICStateInfo is to be used as a DeviceMgr
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
sendAction(deviceKey: string, action: any, data: any): void {
|
|
70
|
+
// TODO - implement if RICStateInfo is to be used as a DeviceMgr
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
sendCompoundAction(deviceKey: string, action: any, data: any): void {
|
|
74
|
+
// TODO - implement if RICStateInfo is to be used as a DeviceMgr
|
|
75
|
+
}
|
|
76
|
+
|
|
31
77
|
}
|
|
32
78
|
|
|
@@ -11,7 +11,7 @@ export default class SystemTypeMarty implements RaftSystemType {
|
|
|
11
11
|
defaultWiFiHostname = "Marty";
|
|
12
12
|
firmwareDestName = "ricfw";
|
|
13
13
|
normalFileDestName = "fs";
|
|
14
|
-
connectorOptions = {wsSuffix: "ws"};
|
|
14
|
+
connectorOptions = {wsSuffix: "ws", bleConnItvlMs: 7.5};
|
|
15
15
|
|
|
16
16
|
// LED Pattern checker
|
|
17
17
|
private _ledPatternChecker: RICLEDPatternChecker = new RICLEDPatternChecker();
|
|
@@ -109,5 +109,8 @@ export default class SystemTypeMarty implements RaftSystemType {
|
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
+
|
|
113
|
+
// Device manager interface
|
|
114
|
+
deviceMgrIF = this._ricStateInfo;
|
|
112
115
|
}
|
|
113
116
|
|