@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.
Files changed (255) hide show
  1. package/README.md +2 -0
  2. package/dist/react-native/RaftAttributeHandler.js.map +1 -0
  3. package/dist/react-native/RaftChannel.js.map +1 -0
  4. package/dist/react-native/RaftChannelBLE.native.d.ts +95 -0
  5. package/dist/react-native/RaftChannelBLE.native.js +458 -0
  6. package/dist/react-native/RaftChannelBLE.native.js.map +1 -0
  7. package/dist/{RaftChannelWebBLE.d.ts → react-native/RaftChannelBLE.web.d.ts} +1 -1
  8. package/dist/{RaftChannelWebBLE.js → react-native/RaftChannelBLE.web.js} +31 -28
  9. package/dist/react-native/RaftChannelBLE.web.js.map +1 -0
  10. package/dist/react-native/RaftChannelBLEFactory.d.ts +10 -0
  11. package/dist/react-native/RaftChannelBLEFactory.js +17 -0
  12. package/dist/react-native/RaftChannelBLEFactory.js.map +1 -0
  13. package/dist/react-native/RaftChannelBLEScanner.native.d.ts +18 -0
  14. package/dist/react-native/RaftChannelBLEScanner.native.js +139 -0
  15. package/dist/react-native/RaftChannelBLEScanner.native.js.map +1 -0
  16. package/dist/{RaftChannelWebSerial.js → react-native/RaftChannelWebSerial.js} +3 -2
  17. package/dist/react-native/RaftChannelWebSerial.js.map +1 -0
  18. package/dist/react-native/RaftChannelWebSocket.js.map +1 -0
  19. package/dist/react-native/RaftCommsStats.js.map +1 -0
  20. package/dist/{RaftConnEvents.d.ts → react-native/RaftConnEvents.d.ts} +10 -2
  21. package/dist/{RaftConnEvents.js → react-native/RaftConnEvents.js} +10 -0
  22. package/dist/react-native/RaftConnEvents.js.map +1 -0
  23. package/dist/{RaftConnector.d.ts → react-native/RaftConnector.d.ts} +6 -3
  24. package/dist/{RaftConnector.js → react-native/RaftConnector.js} +75 -74
  25. package/dist/react-native/RaftConnector.js.map +1 -0
  26. package/dist/react-native/RaftCustomAttrHandler.js.map +1 -0
  27. package/dist/{RaftDeviceInfo.d.ts → react-native/RaftDeviceInfo.d.ts} +5 -10
  28. package/dist/react-native/RaftDeviceInfo.js.map +1 -0
  29. package/dist/{RaftDeviceManager.d.ts → react-native/RaftDeviceManager.d.ts} +14 -16
  30. package/dist/{RaftDeviceManager.js → react-native/RaftDeviceManager.js} +112 -210
  31. package/dist/react-native/RaftDeviceManager.js.map +1 -0
  32. package/dist/react-native/RaftDeviceMgrIF.d.ts +12 -0
  33. package/dist/react-native/RaftDeviceMgrIF.js +11 -0
  34. package/dist/react-native/RaftDeviceMgrIF.js.map +1 -0
  35. package/dist/react-native/RaftDeviceMsg.js.map +1 -0
  36. package/dist/{RaftDeviceStates.d.ts → react-native/RaftDeviceStates.d.ts} +1 -1
  37. package/dist/react-native/RaftDeviceStates.js.map +1 -0
  38. package/dist/react-native/RaftFileHandler.js.map +1 -0
  39. package/dist/react-native/RaftLog.js.map +1 -0
  40. package/dist/{RaftMiniHDLC.js → react-native/RaftMiniHDLC.js} +1 -1
  41. package/dist/react-native/RaftMiniHDLC.js.map +1 -0
  42. package/dist/{RaftMsgHandler.js → react-native/RaftMsgHandler.js} +2 -2
  43. package/dist/react-native/RaftMsgHandler.js.map +1 -0
  44. package/dist/react-native/RaftMsgTrackInfo.js.map +1 -0
  45. package/dist/react-native/RaftProtocolDefs.js.map +1 -0
  46. package/dist/react-native/RaftStreamHandler.js.map +1 -0
  47. package/dist/{RaftSystemType.d.ts → react-native/RaftSystemType.d.ts} +3 -0
  48. package/dist/{RaftSystemType.js.map → react-native/RaftSystemType.js.map} +1 -1
  49. package/dist/react-native/RaftSystemUtils.js.map +1 -0
  50. package/dist/{RaftTypes.d.ts → react-native/RaftTypes.d.ts} +11 -0
  51. package/dist/{RaftTypes.js → react-native/RaftTypes.js} +34 -1
  52. package/dist/react-native/RaftTypes.js.map +1 -0
  53. package/dist/react-native/RaftUpdateEvents.js.map +1 -0
  54. package/dist/react-native/RaftUpdateManager.js.map +1 -0
  55. package/dist/{RaftUtils.js → react-native/RaftUtils.js} +1 -1
  56. package/dist/react-native/RaftUtils.js.map +1 -0
  57. package/dist/react-native/RaftWifiTypes.js.map +1 -0
  58. package/dist/react-native/main.d.ts +21 -0
  59. package/dist/{main.js → react-native/main.js} +7 -3
  60. package/dist/react-native/main.js.map +1 -0
  61. package/dist/web/RaftAttributeHandler.d.ts +12 -0
  62. package/dist/web/RaftAttributeHandler.js +241 -0
  63. package/dist/web/RaftAttributeHandler.js.map +1 -0
  64. package/dist/web/RaftChannel.d.ts +18 -0
  65. package/dist/web/RaftChannel.js +12 -0
  66. package/dist/web/RaftChannel.js.map +1 -0
  67. package/dist/web/RaftChannelBLE.web.d.ts +38 -0
  68. package/dist/web/RaftChannelBLE.web.js +277 -0
  69. package/dist/web/RaftChannelBLE.web.js.map +1 -0
  70. package/dist/web/RaftChannelBLEFactory.d.ts +10 -0
  71. package/dist/web/RaftChannelBLEFactory.js +17 -0
  72. package/dist/web/RaftChannelBLEFactory.js.map +1 -0
  73. package/dist/web/RaftChannelWebSerial.d.ts +37 -0
  74. package/dist/web/RaftChannelWebSerial.js +320 -0
  75. package/dist/web/RaftChannelWebSerial.js.map +1 -0
  76. package/dist/web/RaftChannelWebSocket.d.ts +28 -0
  77. package/dist/web/RaftChannelWebSocket.js +197 -0
  78. package/dist/web/RaftChannelWebSocket.js.map +1 -0
  79. package/dist/web/RaftCommsStats.d.ts +39 -0
  80. package/dist/web/RaftCommsStats.js +128 -0
  81. package/dist/web/RaftCommsStats.js.map +1 -0
  82. package/dist/web/RaftConnEvents.d.ts +39 -0
  83. package/dist/web/RaftConnEvents.js +54 -0
  84. package/dist/web/RaftConnEvents.js.map +1 -0
  85. package/dist/web/RaftConnector.d.ts +245 -0
  86. package/dist/web/RaftConnector.js +614 -0
  87. package/dist/web/RaftConnector.js.map +1 -0
  88. package/dist/web/RaftCustomAttrHandler.d.ts +4 -0
  89. package/dist/web/RaftCustomAttrHandler.js +50 -0
  90. package/dist/web/RaftCustomAttrHandler.js.map +1 -0
  91. package/dist/web/RaftDeviceInfo.d.ts +59 -0
  92. package/dist/web/RaftDeviceInfo.js +36 -0
  93. package/dist/web/RaftDeviceInfo.js.map +1 -0
  94. package/dist/web/RaftDeviceManager.d.ts +35 -0
  95. package/dist/web/RaftDeviceManager.js +352 -0
  96. package/dist/web/RaftDeviceManager.js.map +1 -0
  97. package/dist/web/RaftDeviceMgrIF.d.ts +12 -0
  98. package/dist/web/RaftDeviceMgrIF.js +11 -0
  99. package/dist/web/RaftDeviceMgrIF.js.map +1 -0
  100. package/dist/web/RaftDeviceMsg.d.ts +9 -0
  101. package/dist/web/RaftDeviceMsg.js +11 -0
  102. package/dist/web/RaftDeviceMsg.js.map +1 -0
  103. package/dist/web/RaftDeviceStates.d.ts +33 -0
  104. package/dist/web/RaftDeviceStates.js +60 -0
  105. package/dist/web/RaftDeviceStates.js.map +1 -0
  106. package/dist/web/RaftFileHandler.d.ts +52 -0
  107. package/dist/web/RaftFileHandler.js +502 -0
  108. package/dist/web/RaftFileHandler.js.map +1 -0
  109. package/dist/web/RaftLog.d.ts +22 -0
  110. package/dist/web/RaftLog.js +63 -0
  111. package/dist/web/RaftLog.js.map +1 -0
  112. package/dist/web/RaftMiniHDLC.d.ts +18 -0
  113. package/dist/web/RaftMiniHDLC.js +383 -0
  114. package/dist/web/RaftMiniHDLC.js.map +1 -0
  115. package/dist/web/RaftMsgHandler.d.ts +57 -0
  116. package/dist/web/RaftMsgHandler.js +480 -0
  117. package/dist/web/RaftMsgHandler.js.map +1 -0
  118. package/dist/web/RaftMsgTrackInfo.d.ts +17 -0
  119. package/dist/web/RaftMsgTrackInfo.js +42 -0
  120. package/dist/web/RaftMsgTrackInfo.js.map +1 -0
  121. package/dist/web/RaftProtocolDefs.d.ts +30 -0
  122. package/dist/web/RaftProtocolDefs.js +48 -0
  123. package/dist/web/RaftProtocolDefs.js.map +1 -0
  124. package/dist/web/RaftStreamHandler.d.ts +38 -0
  125. package/dist/web/RaftStreamHandler.js +257 -0
  126. package/dist/web/RaftStreamHandler.js.map +1 -0
  127. package/dist/web/RaftSystemType.d.ts +24 -0
  128. package/dist/web/RaftSystemType.js +3 -0
  129. package/dist/web/RaftSystemType.js.map +1 -0
  130. package/dist/web/RaftSystemUtils.d.ts +136 -0
  131. package/dist/web/RaftSystemUtils.js +410 -0
  132. package/dist/web/RaftSystemUtils.js.map +1 -0
  133. package/dist/web/RaftTypes.d.ts +195 -0
  134. package/dist/web/RaftTypes.js +190 -0
  135. package/dist/web/RaftTypes.js.map +1 -0
  136. package/dist/web/RaftUpdateEvents.d.ts +33 -0
  137. package/dist/web/RaftUpdateEvents.js +46 -0
  138. package/dist/web/RaftUpdateEvents.js.map +1 -0
  139. package/dist/web/RaftUpdateManager.d.ts +61 -0
  140. package/dist/web/RaftUpdateManager.js +618 -0
  141. package/dist/web/RaftUpdateManager.js.map +1 -0
  142. package/dist/web/RaftUtils.d.ts +125 -0
  143. package/dist/web/RaftUtils.js +454 -0
  144. package/dist/web/RaftUtils.js.map +1 -0
  145. package/dist/web/RaftWifiTypes.d.ts +23 -0
  146. package/dist/web/RaftWifiTypes.js +43 -0
  147. package/dist/web/RaftWifiTypes.js.map +1 -0
  148. package/dist/{main.d.ts → web/main.d.ts} +4 -1
  149. package/dist/web/main.js +46 -0
  150. package/dist/web/main.js.map +1 -0
  151. package/examples/dashboard/package.json +4 -0
  152. package/examples/dashboard/src/CommandPanel.tsx +147 -0
  153. package/examples/dashboard/src/ConnManager.ts +2 -2
  154. package/examples/dashboard/src/DeviceActionsForm.tsx +133 -0
  155. package/examples/dashboard/src/DeviceAttrsForm.tsx +49 -0
  156. package/examples/dashboard/src/DeviceLineChart.tsx +139 -0
  157. package/examples/dashboard/src/DevicePanel.tsx +135 -0
  158. package/examples/dashboard/src/DevicesPanel.tsx +57 -0
  159. package/examples/dashboard/src/DispLedGrid.tsx +110 -0
  160. package/examples/dashboard/src/DispOneLed.tsx +20 -0
  161. package/examples/dashboard/src/Main.tsx +53 -47
  162. package/examples/dashboard/src/{StatusScreen.tsx → StatusPanel.tsx} +13 -14
  163. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +137 -119
  164. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +15 -8
  165. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +47 -1
  166. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +4 -1
  167. package/examples/dashboard/src/styles.css +262 -9
  168. package/package.json +57 -48
  169. package/src/RaftChannelBLE.native.ts +586 -0
  170. package/src/{RaftChannelWebBLE.ts → RaftChannelBLE.web.ts} +26 -23
  171. package/src/RaftChannelBLEFactory.ts +13 -0
  172. package/src/RaftChannelBLEScanner.native.ts +185 -0
  173. package/src/RaftChannelWebSerial.ts +1 -0
  174. package/src/RaftConnEvents.ts +14 -2
  175. package/src/RaftConnector.ts +80 -88
  176. package/src/RaftDeviceInfo.ts +6 -12
  177. package/src/RaftDeviceManager.ts +138 -245
  178. package/src/RaftDeviceMgrIF.ts +28 -0
  179. package/src/RaftDeviceStates.ts +1 -2
  180. package/src/RaftMiniHDLC.ts +1 -1
  181. package/src/RaftMsgHandler.ts +2 -2
  182. package/src/RaftSystemType.ts +3 -0
  183. package/src/RaftTypes.ts +48 -17
  184. package/src/RaftUtils.ts +1 -1
  185. package/src/main.ts +8 -1
  186. package/tsconfig.json +5 -2
  187. package/tsconfig.react-native.json +29 -0
  188. package/dist/RaftAttributeHandler.js.map +0 -1
  189. package/dist/RaftChannel.js.map +0 -1
  190. package/dist/RaftChannelWebBLE.js.map +0 -1
  191. package/dist/RaftChannelWebSerial.js.map +0 -1
  192. package/dist/RaftChannelWebSocket.js.map +0 -1
  193. package/dist/RaftCommsStats.js.map +0 -1
  194. package/dist/RaftConnEvents.js.map +0 -1
  195. package/dist/RaftConnector.js.map +0 -1
  196. package/dist/RaftCustomAttrHandler.js.map +0 -1
  197. package/dist/RaftDeviceInfo.js.map +0 -1
  198. package/dist/RaftDeviceManager.js.map +0 -1
  199. package/dist/RaftDeviceMsg.js.map +0 -1
  200. package/dist/RaftDeviceStates.js.map +0 -1
  201. package/dist/RaftFileHandler.js.map +0 -1
  202. package/dist/RaftLog.js.map +0 -1
  203. package/dist/RaftMiniHDLC.js.map +0 -1
  204. package/dist/RaftMsgHandler.js.map +0 -1
  205. package/dist/RaftMsgTrackInfo.js.map +0 -1
  206. package/dist/RaftProtocolDefs.js.map +0 -1
  207. package/dist/RaftStreamHandler.js.map +0 -1
  208. package/dist/RaftSystemUtils.js.map +0 -1
  209. package/dist/RaftTypes.js.map +0 -1
  210. package/dist/RaftUpdateEvents.js.map +0 -1
  211. package/dist/RaftUpdateManager.js.map +0 -1
  212. package/dist/RaftUtils.js.map +0 -1
  213. package/dist/RaftWifiTypes.js.map +0 -1
  214. package/dist/TestDataGen.d.ts +0 -7
  215. package/dist/TestDataGen.js +0 -133
  216. package/dist/TestDataGen.js.map +0 -1
  217. package/dist/main.js.map +0 -1
  218. package/src/TestDataGen.ts +0 -157
  219. /package/dist/{RaftAttributeHandler.d.ts → react-native/RaftAttributeHandler.d.ts} +0 -0
  220. /package/dist/{RaftAttributeHandler.js → react-native/RaftAttributeHandler.js} +0 -0
  221. /package/dist/{RaftChannel.d.ts → react-native/RaftChannel.d.ts} +0 -0
  222. /package/dist/{RaftChannel.js → react-native/RaftChannel.js} +0 -0
  223. /package/dist/{RaftChannelWebSerial.d.ts → react-native/RaftChannelWebSerial.d.ts} +0 -0
  224. /package/dist/{RaftChannelWebSocket.d.ts → react-native/RaftChannelWebSocket.d.ts} +0 -0
  225. /package/dist/{RaftChannelWebSocket.js → react-native/RaftChannelWebSocket.js} +0 -0
  226. /package/dist/{RaftCommsStats.d.ts → react-native/RaftCommsStats.d.ts} +0 -0
  227. /package/dist/{RaftCommsStats.js → react-native/RaftCommsStats.js} +0 -0
  228. /package/dist/{RaftCustomAttrHandler.d.ts → react-native/RaftCustomAttrHandler.d.ts} +0 -0
  229. /package/dist/{RaftCustomAttrHandler.js → react-native/RaftCustomAttrHandler.js} +0 -0
  230. /package/dist/{RaftDeviceInfo.js → react-native/RaftDeviceInfo.js} +0 -0
  231. /package/dist/{RaftDeviceMsg.d.ts → react-native/RaftDeviceMsg.d.ts} +0 -0
  232. /package/dist/{RaftDeviceMsg.js → react-native/RaftDeviceMsg.js} +0 -0
  233. /package/dist/{RaftDeviceStates.js → react-native/RaftDeviceStates.js} +0 -0
  234. /package/dist/{RaftFileHandler.d.ts → react-native/RaftFileHandler.d.ts} +0 -0
  235. /package/dist/{RaftFileHandler.js → react-native/RaftFileHandler.js} +0 -0
  236. /package/dist/{RaftLog.d.ts → react-native/RaftLog.d.ts} +0 -0
  237. /package/dist/{RaftLog.js → react-native/RaftLog.js} +0 -0
  238. /package/dist/{RaftMiniHDLC.d.ts → react-native/RaftMiniHDLC.d.ts} +0 -0
  239. /package/dist/{RaftMsgHandler.d.ts → react-native/RaftMsgHandler.d.ts} +0 -0
  240. /package/dist/{RaftMsgTrackInfo.d.ts → react-native/RaftMsgTrackInfo.d.ts} +0 -0
  241. /package/dist/{RaftMsgTrackInfo.js → react-native/RaftMsgTrackInfo.js} +0 -0
  242. /package/dist/{RaftProtocolDefs.d.ts → react-native/RaftProtocolDefs.d.ts} +0 -0
  243. /package/dist/{RaftProtocolDefs.js → react-native/RaftProtocolDefs.js} +0 -0
  244. /package/dist/{RaftStreamHandler.d.ts → react-native/RaftStreamHandler.d.ts} +0 -0
  245. /package/dist/{RaftStreamHandler.js → react-native/RaftStreamHandler.js} +0 -0
  246. /package/dist/{RaftSystemType.js → react-native/RaftSystemType.js} +0 -0
  247. /package/dist/{RaftSystemUtils.d.ts → react-native/RaftSystemUtils.d.ts} +0 -0
  248. /package/dist/{RaftSystemUtils.js → react-native/RaftSystemUtils.js} +0 -0
  249. /package/dist/{RaftUpdateEvents.d.ts → react-native/RaftUpdateEvents.d.ts} +0 -0
  250. /package/dist/{RaftUpdateEvents.js → react-native/RaftUpdateEvents.js} +0 -0
  251. /package/dist/{RaftUpdateManager.d.ts → react-native/RaftUpdateManager.d.ts} +0 -0
  252. /package/dist/{RaftUpdateManager.js → react-native/RaftUpdateManager.js} +0 -0
  253. /package/dist/{RaftUtils.d.ts → react-native/RaftUtils.d.ts} +0 -0
  254. /package/dist/{RaftWifiTypes.d.ts → react-native/RaftWifiTypes.d.ts} +0 -0
  255. /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
- export interface IMUStateInfo {
5
- gx: number;
6
- gy: number;
7
- gz: number;
8
- ax: number;
9
- ay: number;
10
- az: number;
11
- tsMs: number;
12
- }
13
-
14
- export interface DeviceLastTsState {
15
- lastMs: number;
16
- offsetMs: number;
17
- }
18
-
19
- export interface DeviceMsgJsonElem {
20
- _t: string; // Device type
21
- _o: string; // Device name
22
- x: string; // Hex encoded message values
23
- }
24
-
25
- export interface DeviceMsgJsonBus {
26
- [devAddr: string]: DeviceMsgJsonElem;
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
- [busName: string]: DeviceMsgJsonBus;
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
- // Debug
49
- // RaftLog.info(`CogStateInfo: updateFromMsg: jsonString: ${jsonString}`);
54
+ // Handle using device manager
55
+ this._deviceManager.handleClientMsgJson(jsonString);
50
56
 
51
57
  // Parse JSON string to TypeScript object
52
- const deviceMsg: DeviceMsgJson = JSON.parse(jsonString);
53
-
54
- // Debug
55
- // for (const busName in deviceMsg) {
56
- // for (const devAddr in deviceMsg[busName]) {
57
- // for (const attrGroupName in deviceMsg[busName][devAddr]) {
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
- const bytes = new Uint8Array(hex.length / 2);
139
- for (let i = 0; i < bytes.length; i++) {
140
- bytes[i] = parseInt(hex.substr(i * 2, 2), 16);
141
- }
142
- return bytes;
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