@robdobsn/raftjs 1.8.5 → 1.10.7

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 (224) hide show
  1. package/.editorconfig +14 -0
  2. package/.gitattributes +11 -0
  3. package/.nvmrc +1 -0
  4. package/TODO.md +1 -0
  5. package/dist/react-native/RaftAttributeHandler.d.ts +14 -0
  6. package/dist/react-native/RaftAttributeHandler.js +375 -0
  7. package/dist/react-native/RaftAttributeHandler.js.map +1 -0
  8. package/dist/react-native/RaftChannel.d.ts +20 -0
  9. package/dist/react-native/RaftChannel.js +12 -0
  10. package/dist/react-native/RaftChannel.js.map +1 -0
  11. package/dist/react-native/RaftChannelBLE.native.d.ts +95 -0
  12. package/dist/react-native/RaftChannelBLE.native.js +483 -0
  13. package/dist/react-native/RaftChannelBLE.native.js.map +1 -0
  14. package/dist/react-native/RaftChannelBLE.web.d.ts +40 -0
  15. package/dist/react-native/RaftChannelBLE.web.js +302 -0
  16. package/dist/react-native/RaftChannelBLE.web.js.map +1 -0
  17. package/dist/react-native/RaftChannelBLEFactory.d.ts +10 -0
  18. package/dist/react-native/RaftChannelBLEFactory.js +17 -0
  19. package/dist/react-native/RaftChannelBLEFactory.js.map +1 -0
  20. package/dist/react-native/RaftChannelBLEScanner.native.d.ts +18 -0
  21. package/dist/react-native/RaftChannelBLEScanner.native.js +138 -0
  22. package/dist/react-native/RaftChannelBLEScanner.native.js.map +1 -0
  23. package/dist/react-native/RaftChannelSimulated.d.ts +42 -0
  24. package/dist/react-native/RaftChannelSimulated.js +1000 -0
  25. package/dist/react-native/RaftChannelSimulated.js.map +1 -0
  26. package/dist/react-native/RaftChannelWebSerial.d.ts +39 -0
  27. package/dist/react-native/RaftChannelWebSerial.js +329 -0
  28. package/dist/react-native/RaftChannelWebSerial.js.map +1 -0
  29. package/dist/react-native/RaftChannelWebSocket.d.ts +30 -0
  30. package/dist/react-native/RaftChannelWebSocket.js +222 -0
  31. package/dist/react-native/RaftChannelWebSocket.js.map +1 -0
  32. package/dist/react-native/RaftCommsStats.d.ts +39 -0
  33. package/dist/react-native/RaftCommsStats.js +128 -0
  34. package/dist/react-native/RaftCommsStats.js.map +1 -0
  35. package/dist/react-native/RaftConnEvents.d.ts +39 -0
  36. package/dist/react-native/RaftConnEvents.js +54 -0
  37. package/dist/react-native/RaftConnEvents.js.map +1 -0
  38. package/dist/react-native/RaftConnector.d.ts +248 -0
  39. package/dist/react-native/RaftConnector.js +658 -0
  40. package/dist/react-native/RaftConnector.js.map +1 -0
  41. package/dist/react-native/RaftCustomAttrHandler.d.ts +6 -0
  42. package/dist/react-native/RaftCustomAttrHandler.js +93 -0
  43. package/dist/react-native/RaftCustomAttrHandler.js.map +1 -0
  44. package/dist/react-native/RaftDeviceInfo.d.ts +71 -0
  45. package/dist/react-native/RaftDeviceInfo.js +50 -0
  46. package/dist/react-native/RaftDeviceInfo.js.map +1 -0
  47. package/dist/react-native/RaftDeviceManager.d.ts +61 -0
  48. package/dist/react-native/RaftDeviceManager.js +665 -0
  49. package/dist/react-native/RaftDeviceManager.js.map +1 -0
  50. package/dist/react-native/RaftDeviceMgrIF.d.ts +15 -0
  51. package/dist/react-native/RaftDeviceMgrIF.js +11 -0
  52. package/dist/react-native/RaftDeviceMgrIF.js.map +1 -0
  53. package/dist/react-native/RaftDeviceMsg.d.ts +9 -0
  54. package/dist/react-native/RaftDeviceMsg.js +11 -0
  55. package/dist/react-native/RaftDeviceMsg.js.map +1 -0
  56. package/dist/react-native/RaftDeviceStates.d.ts +37 -0
  57. package/dist/react-native/RaftDeviceStates.js +60 -0
  58. package/dist/react-native/RaftDeviceStates.js.map +1 -0
  59. package/dist/react-native/RaftFileHandler.d.ts +52 -0
  60. package/dist/react-native/RaftFileHandler.js +502 -0
  61. package/dist/react-native/RaftFileHandler.js.map +1 -0
  62. package/dist/react-native/RaftLog.d.ts +22 -0
  63. package/dist/react-native/RaftLog.js +63 -0
  64. package/dist/react-native/RaftLog.js.map +1 -0
  65. package/dist/react-native/RaftMiniHDLC.d.ts +18 -0
  66. package/dist/react-native/RaftMiniHDLC.js +383 -0
  67. package/dist/react-native/RaftMiniHDLC.js.map +1 -0
  68. package/dist/react-native/RaftMsgHandler.d.ts +62 -0
  69. package/dist/react-native/RaftMsgHandler.js +511 -0
  70. package/dist/react-native/RaftMsgHandler.js.map +1 -0
  71. package/dist/react-native/RaftMsgTrackInfo.d.ts +17 -0
  72. package/dist/react-native/RaftMsgTrackInfo.js +42 -0
  73. package/dist/react-native/RaftMsgTrackInfo.js.map +1 -0
  74. package/dist/react-native/RaftProtocolDefs.d.ts +30 -0
  75. package/dist/react-native/RaftProtocolDefs.js +48 -0
  76. package/dist/react-native/RaftProtocolDefs.js.map +1 -0
  77. package/dist/react-native/RaftStreamHandler.d.ts +38 -0
  78. package/dist/react-native/RaftStreamHandler.js +258 -0
  79. package/dist/react-native/RaftStreamHandler.js.map +1 -0
  80. package/dist/react-native/RaftStruct.d.ts +3 -0
  81. package/dist/react-native/RaftStruct.js +258 -0
  82. package/dist/react-native/RaftStruct.js.map +1 -0
  83. package/dist/react-native/RaftSysTypeManager.d.ts +16 -0
  84. package/dist/react-native/RaftSysTypeManager.js +78 -0
  85. package/dist/react-native/RaftSysTypeManager.js.map +1 -0
  86. package/dist/react-native/RaftSystemType.d.ts +30 -0
  87. package/dist/react-native/RaftSystemType.js +3 -0
  88. package/dist/react-native/RaftSystemType.js.map +1 -0
  89. package/dist/react-native/RaftSystemUtils.d.ts +136 -0
  90. package/dist/react-native/RaftSystemUtils.js +412 -0
  91. package/dist/react-native/RaftSystemUtils.js.map +1 -0
  92. package/dist/react-native/RaftTypes.d.ts +195 -0
  93. package/dist/react-native/RaftTypes.js +153 -0
  94. package/dist/react-native/RaftTypes.js.map +1 -0
  95. package/dist/react-native/RaftUpdateEvents.d.ts +33 -0
  96. package/dist/react-native/RaftUpdateEvents.js +46 -0
  97. package/dist/react-native/RaftUpdateEvents.js.map +1 -0
  98. package/dist/react-native/RaftUpdateManager.d.ts +61 -0
  99. package/dist/react-native/RaftUpdateManager.js +621 -0
  100. package/dist/react-native/RaftUpdateManager.js.map +1 -0
  101. package/dist/react-native/RaftUtils.d.ts +128 -0
  102. package/dist/react-native/RaftUtils.js +487 -0
  103. package/dist/react-native/RaftUtils.js.map +1 -0
  104. package/dist/react-native/RaftWifiTypes.d.ts +23 -0
  105. package/dist/react-native/RaftWifiTypes.js +43 -0
  106. package/dist/react-native/RaftWifiTypes.js.map +1 -0
  107. package/dist/react-native/main.d.ts +26 -0
  108. package/dist/react-native/main.js +51 -0
  109. package/dist/react-native/main.js.map +1 -0
  110. package/dist/web/RaftAttributeHandler.js +1 -1
  111. package/dist/web/RaftAttributeHandler.js.map +1 -1
  112. package/dist/web/RaftChannelBLE.web.js +8 -6
  113. package/dist/web/RaftChannelBLE.web.js.map +1 -1
  114. package/dist/web/RaftChannelSimulated.d.ts +10 -0
  115. package/dist/web/RaftChannelSimulated.js +662 -80
  116. package/dist/web/RaftChannelSimulated.js.map +1 -1
  117. package/dist/web/RaftChannelWebSerial.js +2 -2
  118. package/dist/web/RaftChannelWebSerial.js.map +1 -1
  119. package/dist/web/RaftChannelWebSocket.js +16 -1
  120. package/dist/web/RaftChannelWebSocket.js.map +1 -1
  121. package/dist/web/RaftConnector.d.ts +2 -0
  122. package/dist/web/RaftConnector.js +38 -15
  123. package/dist/web/RaftConnector.js.map +1 -1
  124. package/dist/web/RaftCustomAttrHandler.d.ts +2 -0
  125. package/dist/web/RaftCustomAttrHandler.js +54 -26
  126. package/dist/web/RaftCustomAttrHandler.js.map +1 -1
  127. package/dist/web/RaftDeviceInfo.d.ts +3 -1
  128. package/dist/web/RaftDeviceInfo.js +17 -3
  129. package/dist/web/RaftDeviceInfo.js.map +1 -1
  130. package/dist/web/RaftDeviceManager.d.ts +19 -1
  131. package/dist/web/RaftDeviceManager.js +89 -3
  132. package/dist/web/RaftDeviceManager.js.map +1 -1
  133. package/dist/web/RaftDeviceStates.d.ts +1 -1
  134. package/dist/web/RaftDeviceStates.js +2 -2
  135. package/dist/web/RaftDeviceStates.js.map +1 -1
  136. package/dist/web/RaftMsgHandler.js.map +1 -1
  137. package/dist/web/RaftStreamHandler.js +2 -1
  138. package/dist/web/RaftStreamHandler.js.map +1 -1
  139. package/dist/web/RaftStruct.js +197 -147
  140. package/dist/web/RaftStruct.js.map +1 -1
  141. package/dist/web/RaftUpdateManager.js +1 -1
  142. package/dist/web/RaftUpdateManager.js.map +1 -1
  143. package/dist/web/RaftUtils.d.ts +2 -0
  144. package/dist/web/RaftUtils.js +20 -0
  145. package/dist/web/RaftUtils.js.map +1 -1
  146. package/dist/web/main.d.ts +1 -0
  147. package/dist/web/main.js.map +1 -1
  148. package/eslint.config.mjs +33 -0
  149. package/examples/dashboard/package.json +36 -0
  150. package/examples/dashboard/src/CommandPanel.tsx +147 -0
  151. package/examples/dashboard/src/ConnManager.ts +166 -0
  152. package/examples/dashboard/src/DeviceActionsForm.tsx +133 -0
  153. package/examples/dashboard/src/DeviceAttrsForm.tsx +49 -0
  154. package/examples/dashboard/src/DeviceLineChart.tsx +163 -0
  155. package/examples/dashboard/src/DevicePanel.tsx +171 -0
  156. package/examples/dashboard/src/DevicesPanel.tsx +58 -0
  157. package/examples/dashboard/src/DispLedGrid.tsx +110 -0
  158. package/examples/dashboard/src/DispOneLed.tsx +20 -0
  159. package/examples/dashboard/src/LatencyTest.ts +130 -0
  160. package/examples/dashboard/src/LatencyTestPanel.tsx +92 -0
  161. package/examples/dashboard/src/Main.tsx +234 -0
  162. package/examples/dashboard/src/SettingsManager.ts +67 -0
  163. package/examples/dashboard/src/SettingsScreen.tsx +174 -0
  164. package/examples/dashboard/src/StatusPanel.tsx +71 -0
  165. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +162 -0
  166. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +91 -0
  167. package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +30 -0
  168. package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +91 -0
  169. package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +70 -0
  170. package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +33 -0
  171. package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +342 -0
  172. package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +170 -0
  173. package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +123 -0
  174. package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +207 -0
  175. package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +464 -0
  176. package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +146 -0
  177. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +97 -0
  178. package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +371 -0
  179. package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +20 -0
  180. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +119 -0
  181. package/examples/dashboard/src/index.html +15 -0
  182. package/examples/dashboard/src/index.tsx +13 -0
  183. package/examples/dashboard/src/styles.css +408 -0
  184. package/examples/dashboard/tsconfig.json +18 -0
  185. package/jest.config.js +11 -0
  186. package/package.json +4 -7
  187. package/src/RaftAttributeHandler.ts +450 -0
  188. package/src/RaftChannel.ts +32 -0
  189. package/src/RaftChannelBLE.native.ts +617 -0
  190. package/src/RaftChannelBLE.web.ts +374 -0
  191. package/src/RaftChannelBLEFactory.ts +13 -0
  192. package/src/RaftChannelBLEScanner.native.ts +184 -0
  193. package/src/RaftChannelSimulated.ts +1176 -0
  194. package/src/RaftChannelWebSerial.ts +420 -0
  195. package/src/RaftChannelWebSocket.ts +272 -0
  196. package/src/RaftCommsStats.ts +142 -0
  197. package/src/RaftConnEvents.ts +58 -0
  198. package/src/RaftConnector.ts +785 -0
  199. package/src/RaftCustomAttrHandler.ts +117 -0
  200. package/src/RaftDeviceInfo.ts +125 -0
  201. package/src/RaftDeviceManager.ts +844 -0
  202. package/src/RaftDeviceMgrIF.ts +33 -0
  203. package/src/RaftDeviceMsg.ts +20 -0
  204. package/src/RaftDeviceStates.ts +92 -0
  205. package/src/RaftFileHandler.ts +668 -0
  206. package/src/RaftLog.ts +70 -0
  207. package/src/RaftMiniHDLC.ts +396 -0
  208. package/src/RaftMsgHandler.ts +812 -0
  209. package/src/RaftMsgTrackInfo.ts +51 -0
  210. package/src/RaftProtocolDefs.ts +46 -0
  211. package/src/RaftStreamHandler.ts +329 -0
  212. package/src/RaftStruct.ts +282 -0
  213. package/src/RaftSysTypeManager.ts +87 -0
  214. package/src/RaftSystemType.ts +34 -0
  215. package/src/RaftSystemUtils.ts +489 -0
  216. package/src/RaftTypes.ts +279 -0
  217. package/src/RaftUpdateEvents.ts +48 -0
  218. package/src/RaftUpdateManager.ts +781 -0
  219. package/src/RaftUtils.ts +514 -0
  220. package/src/RaftWifiTypes.ts +36 -0
  221. package/src/main.ts +39 -0
  222. package/testdata/TestDeviceTypeRecs.json +492 -0
  223. package/tsconfig.json +30 -0
  224. package/tsconfig.react-native.json +29 -0
@@ -0,0 +1,16 @@
1
+ import { RaftSystemType } from "./RaftSystemType";
2
+ type RaftSystemTypeCreator = () => RaftSystemType;
3
+ export default class RaftSysTypeManager {
4
+ private static _instance;
5
+ private _sysTypes;
6
+ private _defaultSysTypeFactory;
7
+ static getInstance(): RaftSysTypeManager;
8
+ addSystemType(sysType: string, factory: RaftSystemTypeCreator): void;
9
+ addDefaultSystemType(factory: RaftSystemTypeCreator): void;
10
+ createSystemType(sysType: string): RaftSystemType | null;
11
+ createDefaultSystemType(): RaftSystemType | null;
12
+ getAllServiceUUIDs(): string[];
13
+ getAllNamePrefixes(): string[];
14
+ getSystemTypeByBLENamePrefix(name: string): RaftSystemType | null;
15
+ }
16
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class RaftSysTypeManager {
4
+ constructor() {
5
+ // System type map
6
+ this._sysTypes = new Map();
7
+ this._defaultSysTypeFactory = null;
8
+ }
9
+ // Get instance (Singleton)
10
+ static getInstance() {
11
+ if (!RaftSysTypeManager._instance) {
12
+ RaftSysTypeManager._instance = new RaftSysTypeManager();
13
+ }
14
+ return RaftSysTypeManager._instance;
15
+ }
16
+ // Add a system type by name with its factory
17
+ addSystemType(sysType, factory) {
18
+ if (this._sysTypes.has(sysType)) {
19
+ throw new Error(`System type '${sysType}' is already registered.`);
20
+ }
21
+ this._sysTypes.set(sysType, factory);
22
+ }
23
+ // Set the default system type factory
24
+ addDefaultSystemType(factory) {
25
+ this._defaultSysTypeFactory = factory;
26
+ }
27
+ // Create a system type by name
28
+ createSystemType(sysType) {
29
+ const factory = this._sysTypes.get(sysType);
30
+ if (!factory) {
31
+ return null;
32
+ }
33
+ return factory();
34
+ }
35
+ // Create the default system type
36
+ createDefaultSystemType() {
37
+ if (!this._defaultSysTypeFactory) {
38
+ return null;
39
+ }
40
+ return this._defaultSysTypeFactory();
41
+ }
42
+ // Get a list of all unique BLE service UUIDs
43
+ getAllServiceUUIDs() {
44
+ const serviceUUIDs = new Set();
45
+ this._sysTypes.forEach((factory) => {
46
+ const sysType = factory();
47
+ if (!sysType.BLEServiceUUIDs) {
48
+ return;
49
+ }
50
+ sysType.BLEServiceUUIDs.forEach((uuid) => serviceUUIDs.add(uuid));
51
+ });
52
+ return Array.from(serviceUUIDs);
53
+ }
54
+ // Get a list of all device name prefixes to filter on
55
+ getAllNamePrefixes() {
56
+ const deviceNames = new Set();
57
+ this._sysTypes.forEach((factory) => {
58
+ const sysType = factory();
59
+ if (!sysType.BLEDeviceNames) {
60
+ return;
61
+ }
62
+ sysType.BLEDeviceNames.forEach((name) => deviceNames.add(name));
63
+ });
64
+ return Array.from(deviceNames);
65
+ }
66
+ // Find the system type for a given BLE device name prefix
67
+ getSystemTypeByBLENamePrefix(name) {
68
+ for (const factory of this._sysTypes.values()) {
69
+ const sysType = factory();
70
+ if (sysType.BLEDeviceNames && sysType.BLEDeviceNames.some((prefix) => name.startsWith(prefix))) {
71
+ return sysType;
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ }
77
+ exports.default = RaftSysTypeManager;
78
+ //# sourceMappingURL=RaftSysTypeManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftSysTypeManager.js","sourceRoot":"","sources":["../../src/RaftSysTypeManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import RaftDeviceMgrIF from "./RaftDeviceMgrIF";
2
+ import RaftSystemUtils from "./RaftSystemUtils";
3
+ import { RaftEventFn } from "./RaftTypes";
4
+ export type RaftSubscribeForUpdatesCBType = (systemUtils: RaftSystemUtils, enable: boolean) => Promise<void>;
5
+ export type RaftStateIsInvalidCBType = () => void;
6
+ export type RaftRxOtherMsgType = (payload: Uint8Array, _frameTimeMs: number) => void;
7
+ export interface ConnectorOptions {
8
+ wsSuffix?: string;
9
+ connTimeoutMs?: number;
10
+ bleConnItvlMs?: number;
11
+ bleUuid?: string;
12
+ }
13
+ export interface RaftSystemType {
14
+ nameForDialogs: string;
15
+ defaultWiFiHostname?: string;
16
+ BLEServiceUUIDs?: string[];
17
+ BLECmdUUID?: string;
18
+ BLERespUUID?: string;
19
+ BLEDeviceNames?: string[];
20
+ firmwareDestName?: string;
21
+ normalFileDestName?: string;
22
+ connectorOptions: ConnectorOptions;
23
+ setup: (systemUtils: RaftSystemUtils, onEvent: RaftEventFn | null) => void;
24
+ subscribeForUpdates: RaftSubscribeForUpdatesCBType | null;
25
+ stateIsInvalid: RaftStateIsInvalidCBType | null;
26
+ rxOtherMsgType: RaftRxOtherMsgType | null;
27
+ deviceMgrIF?: RaftDeviceMgrIF;
28
+ nonRaftTypeCode?: string;
29
+ }
30
+ export type RaftGetSystemTypeCBType = (systemUtils: RaftSystemUtils) => Promise<RaftSystemType | null>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=RaftSystemType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftSystemType.js","sourceRoot":"","sources":["../../src/RaftSystemType.ts"],"names":[],"mappings":""}
@@ -0,0 +1,136 @@
1
+ import { RaftWifiConnStatus } from "./RaftWifiTypes";
2
+ import RaftMsgHandler from "./RaftMsgHandler";
3
+ import { RaftFileList, RaftFriendlyName, RaftOKFail, RaftSysModInfoBLEMan, RaftSystemInfo, RaftWifiScanResults } from "./RaftTypes";
4
+ export default class RaftSystemUtils {
5
+ private _msgHandler;
6
+ private _systemInfo;
7
+ private _friendlyName;
8
+ private _wifiConnStatus;
9
+ private _defaultWiFiHostname;
10
+ private _maxSecsToWaitForWiFiConn;
11
+ /**
12
+ * constructor
13
+ * @param raftMsgHandler
14
+ */
15
+ constructor(raftMsgHandler: RaftMsgHandler);
16
+ /**
17
+ * getMsgHandler
18
+ * @returns RaftMsgHandler
19
+ */
20
+ getMsgHandler(): RaftMsgHandler;
21
+ /**
22
+ * setDefaultWiFiHostname
23
+ * @param defaultWiFiHostname
24
+ */
25
+ setDefaultWiFiHostname(defaultWiFiHostname: string): void;
26
+ /**
27
+ * getFriendlyName
28
+ *
29
+ * @returns friendly name
30
+ */
31
+ getFriendlyName(): RaftFriendlyName | null;
32
+ /**
33
+ * invalidate
34
+ */
35
+ invalidate(): void;
36
+ /**
37
+ * retrieveInfo - get system info
38
+ * @returns Promise<RaftSystemInfo>
39
+ *
40
+ */
41
+ retrieveInfo(): Promise<boolean>;
42
+ /**
43
+ *
44
+ * getSystemInfo
45
+ * @param forceGet - true to force a get from the raft app
46
+ * @returns Promise<RaftSystemInfo>
47
+ *
48
+ */
49
+ getSystemInfo(forceGet?: boolean): Promise<RaftSystemInfo>;
50
+ /**
51
+ *
52
+ * setRaftName
53
+ * @param newName name to refer to Raft - used for BLE advertising
54
+ * @returns Promise<boolean> true if successful
55
+ *
56
+ */
57
+ setRaftName(newName: string): Promise<boolean>;
58
+ /**
59
+ *
60
+ * getRaftName
61
+ * @param forceGet - true to force a get from the raft app
62
+ * @returns Promise<RaftNameResponse> (object containing rslt)
63
+ *
64
+ */
65
+ getRaftName(forceGet?: boolean): Promise<RaftFriendlyName>;
66
+ /**
67
+ *
68
+ * getFileList - get list of files on file system
69
+ * @returns Promise<RaftFileList>
70
+ *
71
+ */
72
+ getFileList(): Promise<RaftFileList>;
73
+ /**
74
+ *
75
+ * Get BLEMan sysmod info
76
+ *
77
+ * @returns RaftSysModInfoBLEMan
78
+ *
79
+ */
80
+ getSysModInfoBLEMan(): Promise<RaftSysModInfoBLEMan | null>;
81
+ /**
82
+ * Get hostname of connected WiFi
83
+ *
84
+ * @return string - hostname of connected WiFi
85
+ *
86
+ */
87
+ _getHostnameFromFriendlyName(): string;
88
+ /**
89
+ * Get Wifi connection status
90
+ *
91
+ * @return boolean - true if connected
92
+ *
93
+ */
94
+ getWiFiConnStatus(): Promise<boolean | null>;
95
+ /**
96
+ * pause Wifi connection
97
+ *
98
+ * @param boolean - true to pause, false to resume
99
+ * @return boolean - true if successful
100
+ *
101
+ */
102
+ pauseWifiConnection(pause: boolean): Promise<boolean>;
103
+ /**
104
+ * Connect to WiFi
105
+ *
106
+ * @param string - WiFi SSID
107
+ * @param string - WiFi password
108
+ * @return boolean - true if successful
109
+ *
110
+ */
111
+ wifiConnect(ssid: string, password: string): Promise<boolean>;
112
+ /**
113
+ * Disconnect WiFi
114
+ *
115
+ * @return boolean - true if successful
116
+ *
117
+ */
118
+ wifiDisconnect(): Promise<boolean>;
119
+ /**
120
+ * WiFiScan start
121
+ *
122
+ * @return boolean - true if successful
123
+ *
124
+ */
125
+ wifiScanStart(): Promise<boolean>;
126
+ /**
127
+ * WiFiScan get results
128
+ *
129
+ * @return boolean - false if unsuccessful, otherwise the results of the promise
130
+ *
131
+ */
132
+ wifiScanResults(): Promise<boolean | RaftOKFail | RaftWifiScanResults>;
133
+ getCachedSystemInfo(): RaftSystemInfo | null;
134
+ getCachedRaftName(): RaftFriendlyName | null;
135
+ getCachedWifiStatus(): RaftWifiConnStatus;
136
+ }
@@ -0,0 +1,412 @@
1
+ "use strict";
2
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
+ //
4
+ // RaftSystem
5
+ // Part of RaftJS
6
+ //
7
+ // Rob Dobson & Chris Greening 2020-2024
8
+ // (C) 2020-2024 All rights reserved
9
+ //
10
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const tslib_1 = require("tslib");
13
+ const RaftWifiTypes_1 = require("./RaftWifiTypes");
14
+ const RaftLog_1 = tslib_1.__importDefault(require("./RaftLog"));
15
+ const RaftTypes_1 = require("./RaftTypes");
16
+ class RaftSystemUtils {
17
+ /**
18
+ * constructor
19
+ * @param raftMsgHandler
20
+ */
21
+ constructor(raftMsgHandler) {
22
+ // System info
23
+ this._systemInfo = null;
24
+ // Raft naming
25
+ this._friendlyName = null;
26
+ // WiFi connection info
27
+ this._wifiConnStatus = new RaftWifiTypes_1.RaftWifiConnStatus();
28
+ this._defaultWiFiHostname = "Raft";
29
+ this._maxSecsToWaitForWiFiConn = 20;
30
+ this._msgHandler = raftMsgHandler;
31
+ }
32
+ /**
33
+ * getMsgHandler
34
+ * @returns RaftMsgHandler
35
+ */
36
+ getMsgHandler() {
37
+ return this._msgHandler;
38
+ }
39
+ /**
40
+ * setDefaultWiFiHostname
41
+ * @param defaultWiFiHostname
42
+ */
43
+ setDefaultWiFiHostname(defaultWiFiHostname) {
44
+ if (defaultWiFiHostname) {
45
+ this._defaultWiFiHostname = defaultWiFiHostname;
46
+ }
47
+ }
48
+ /**
49
+ * getFriendlyName
50
+ *
51
+ * @returns friendly name
52
+ */
53
+ getFriendlyName() {
54
+ return this._friendlyName;
55
+ }
56
+ /**
57
+ * invalidate
58
+ */
59
+ invalidate() {
60
+ // Invalidate system info
61
+ this._systemInfo = null;
62
+ this._friendlyName = null;
63
+ RaftLog_1.default.debug("RaftSystemUtils information invalidated");
64
+ }
65
+ /**
66
+ * retrieveInfo - get system info
67
+ * @returns Promise<RaftSystemInfo>
68
+ *
69
+ */
70
+ async retrieveInfo() {
71
+ var _a;
72
+ // Get system info
73
+ RaftLog_1.default.debug(`RaftSystemUtils retrieveInfo getting system info`);
74
+ try {
75
+ await this.getSystemInfo(true);
76
+ RaftLog_1.default.debug(`retrieveInfo - Raft Version ${(_a = this._systemInfo) === null || _a === void 0 ? void 0 : _a.SystemVersion}`);
77
+ }
78
+ catch (error) {
79
+ RaftLog_1.default.warn("RaftSystemUtils retrieveInfo - frailed to get version " + error);
80
+ return false;
81
+ }
82
+ // Get app name
83
+ try {
84
+ await this.getRaftName();
85
+ }
86
+ catch (error) {
87
+ RaftLog_1.default.warn("retrieveInfo - failed to get Raft name " + error);
88
+ return false;
89
+ }
90
+ // Get WiFi connected info
91
+ try {
92
+ await this.getWiFiConnStatus();
93
+ }
94
+ catch (error) {
95
+ RaftLog_1.default.warn("RaftSystemUtils retrieveInfo - failed to get WiFi Status " + error);
96
+ return false;
97
+ }
98
+ return true;
99
+ }
100
+ /**
101
+ *
102
+ * getSystemInfo
103
+ * @param forceGet - true to force a get from the raft app
104
+ * @returns Promise<RaftSystemInfo>
105
+ *
106
+ */
107
+ async getSystemInfo(forceGet = false) {
108
+ if (!forceGet && this._systemInfo) {
109
+ return this._systemInfo;
110
+ }
111
+ try {
112
+ this._systemInfo = await this._msgHandler.sendRICRESTURL("v");
113
+ RaftLog_1.default.debug("getRaftSystemInfo returned " + JSON.stringify(this._systemInfo));
114
+ this._systemInfo.validMs = Date.now();
115
+ // Check if friendly name is included in system info
116
+ if (this._systemInfo.Friendly && (this._systemInfo.Friendly.length > 0)) {
117
+ this._friendlyName = { "friendlyName": this._systemInfo.Friendly, "friendlyNameIsSet": true, "rslt": "ok", "validMs": Date.now() };
118
+ }
119
+ // Handle alternatives in system info
120
+ if ((this._systemInfo.RicHwRevNo !== undefined) && (this._systemInfo.HwRev === undefined)) {
121
+ this._systemInfo.HwRev = this._systemInfo.RicHwRevNo;
122
+ }
123
+ else if ((this._systemInfo.HwRev !== undefined) && (this._systemInfo.RicHwRevNo === undefined)) {
124
+ this._systemInfo.RicHwRevNo = this._systemInfo.HwRev;
125
+ }
126
+ // Return system info
127
+ return this._systemInfo;
128
+ }
129
+ catch (error) {
130
+ RaftLog_1.default.debug(`RaftSystemUtils getRaftSystemInfo Failed to get version ${error}`);
131
+ return new RaftTypes_1.RaftSystemInfo();
132
+ }
133
+ }
134
+ /**
135
+ *
136
+ * setRaftName
137
+ * @param newName name to refer to Raft - used for BLE advertising
138
+ * @returns Promise<boolean> true if successful
139
+ *
140
+ */
141
+ async setRaftName(newName) {
142
+ try {
143
+ this._friendlyName = await this._msgHandler.sendRICRESTURL(`friendlyname/${newName}`);
144
+ if (this._friendlyName) {
145
+ this._friendlyName.friendlyNameIsSet = false;
146
+ this._friendlyName.validMs = Date.now();
147
+ if (this._friendlyName &&
148
+ this._friendlyName.rslt &&
149
+ this._friendlyName.rslt.toLowerCase() === "ok") {
150
+ this._friendlyName.friendlyNameIsSet = true;
151
+ }
152
+ RaftLog_1.default.debug("RaftSystemUtils setRaftName returned " + JSON.stringify(this._friendlyName));
153
+ return true;
154
+ }
155
+ return true;
156
+ }
157
+ catch (error) {
158
+ RaftLog_1.default.debug(`RaftSystemUtils setRaftName Failed to set name ${error}`);
159
+ this._friendlyName = null;
160
+ return false;
161
+ }
162
+ }
163
+ /**
164
+ *
165
+ * getRaftName
166
+ * @param forceGet - true to force a get from the raft app
167
+ * @returns Promise<RaftNameResponse> (object containing rslt)
168
+ *
169
+ */
170
+ async getRaftName(forceGet = false) {
171
+ // Check if we have a cached value
172
+ if (!forceGet && this._friendlyName && this._friendlyName.validMs) {
173
+ return this._friendlyName;
174
+ }
175
+ try {
176
+ this._friendlyName = await this._msgHandler.sendRICRESTURL("friendlyname");
177
+ if (this._friendlyName &&
178
+ this._friendlyName.rslt &&
179
+ this._friendlyName.rslt === "ok") {
180
+ this._friendlyName.friendlyNameIsSet = this._friendlyName
181
+ .friendlyNameIsSet
182
+ ? true
183
+ : false;
184
+ }
185
+ else {
186
+ this._friendlyName.friendlyNameIsSet = false;
187
+ }
188
+ this._friendlyName.validMs = Date.now();
189
+ RaftLog_1.default.debug("RaftSystemUtils Friendly name set is: " + JSON.stringify(this._friendlyName));
190
+ return this._friendlyName;
191
+ }
192
+ catch (error) {
193
+ RaftLog_1.default.debug(`RaftSystemUtils getRaftName Failed to get name ${error}`);
194
+ return new RaftTypes_1.RaftFriendlyName();
195
+ }
196
+ }
197
+ /**
198
+ *
199
+ * getFileList - get list of files on file system
200
+ * @returns Promise<RaftFileList>
201
+ *
202
+ */
203
+ async getFileList() {
204
+ try {
205
+ const ricFileList = await this._msgHandler.sendRICRESTURL("filelist");
206
+ RaftLog_1.default.debug("RaftSystemUtils getFileList returned " + ricFileList);
207
+ return ricFileList;
208
+ }
209
+ catch (error) {
210
+ RaftLog_1.default.debug(`RaftSystemUtils getFileList Failed to get file list ${error}`);
211
+ return new RaftTypes_1.RaftFileList();
212
+ }
213
+ }
214
+ /**
215
+ *
216
+ * Get BLEMan sysmod info
217
+ *
218
+ * @returns RaftSysModInfoBLEMan
219
+ *
220
+ */
221
+ async getSysModInfoBLEMan() {
222
+ try {
223
+ // Get SysMod Info
224
+ const bleInfo = await this._msgHandler.sendRICRESTURL("sysmodinfo/BLEMan");
225
+ // Debug
226
+ RaftLog_1.default.debug(`getSysModInfoBLEMan rslt ${bleInfo.rslt} isConn ${bleInfo.isConn} paused ${bleInfo.isAdv} txBPS ${bleInfo.txBPS} rxBPS ${bleInfo.rxBPS}`);
227
+ // Check for test rate
228
+ if ("tBPS" in bleInfo) {
229
+ RaftLog_1.default.debug(`getSysModInfoBLEMan testMsgs ${bleInfo.tM} testBytes ${bleInfo.tB} testRateBytesPS ${bleInfo.tBPS}`);
230
+ }
231
+ return bleInfo;
232
+ }
233
+ catch (error) {
234
+ RaftLog_1.default.debug(`getSysModInfoBLEMan sysmodinfo/BLEMan failed ${error}`);
235
+ }
236
+ return null;
237
+ }
238
+ /**
239
+ * Get hostname of connected WiFi
240
+ *
241
+ * @return string - hostname of connected WiFi
242
+ *
243
+ */
244
+ _getHostnameFromFriendlyName() {
245
+ const friendlyName = this.getFriendlyName();
246
+ if (!friendlyName) {
247
+ return this._defaultWiFiHostname;
248
+ }
249
+ let hostname = friendlyName.friendlyName;
250
+ hostname = hostname === null || hostname === void 0 ? void 0 : hostname.replace(/ /g, "-");
251
+ hostname = hostname.replace(/\W+/g, "");
252
+ return hostname;
253
+ }
254
+ /**
255
+ * Get Wifi connection status
256
+ *
257
+ * @return boolean - true if connected
258
+ *
259
+ */
260
+ async getWiFiConnStatus() {
261
+ try {
262
+ // Get status
263
+ const ricSysModInfoWiFi = await this._msgHandler.sendRICRESTURL("sysmodinfo/NetMan");
264
+ RaftLog_1.default.debug(`wifiConnStatus rslt ${ricSysModInfoWiFi.rslt} isConn ${ricSysModInfoWiFi.isConn} paused ${ricSysModInfoWiFi.isPaused}`);
265
+ // Check status indicates WiFi connected
266
+ if (ricSysModInfoWiFi.rslt === "ok") {
267
+ this._wifiConnStatus.connState =
268
+ ricSysModInfoWiFi.isConn !== 0
269
+ ? RaftWifiTypes_1.RaftWifiConnState.WIFI_CONN_CONNECTED
270
+ : RaftWifiTypes_1.RaftWifiConnState.WIFI_CONN_NONE;
271
+ this._wifiConnStatus.isPaused = ricSysModInfoWiFi.isPaused !== 0;
272
+ this._wifiConnStatus.ipAddress = ricSysModInfoWiFi.IP;
273
+ this._wifiConnStatus.hostname = ricSysModInfoWiFi.Hostname;
274
+ this._wifiConnStatus.ssid = ricSysModInfoWiFi.SSID;
275
+ this._wifiConnStatus.bssid = ricSysModInfoWiFi.WiFiMAC;
276
+ this._wifiConnStatus.validMs = Date.now();
277
+ return (ricSysModInfoWiFi.isConn !== 0 || ricSysModInfoWiFi.isPaused !== 0);
278
+ }
279
+ }
280
+ catch (error) {
281
+ RaftLog_1.default.debug(`[DEBUG]: wifiConnStatus sysmodinfo failed ${error}`);
282
+ this._wifiConnStatus.validMs = 0;
283
+ }
284
+ this._wifiConnStatus.connState = RaftWifiTypes_1.RaftWifiConnState.WIFI_CONN_NONE;
285
+ this._wifiConnStatus.isPaused = false;
286
+ return null;
287
+ }
288
+ // Mark: WiFi Connection ------------------------------------------------------------------------------------
289
+ /**
290
+ * pause Wifi connection
291
+ *
292
+ * @param boolean - true to pause, false to resume
293
+ * @return boolean - true if successful
294
+ *
295
+ */
296
+ async pauseWifiConnection(pause) {
297
+ try {
298
+ if (pause) {
299
+ await this._msgHandler.sendRICRESTURL("wifipause/pause");
300
+ }
301
+ else {
302
+ await this._msgHandler.sendRICRESTURL("wifipause/resume");
303
+ }
304
+ }
305
+ catch (error) {
306
+ RaftLog_1.default.debug(`RaftSystemUtils wifiConnect wifi pause ${error}`);
307
+ return true;
308
+ }
309
+ return false;
310
+ }
311
+ /**
312
+ * Connect to WiFi
313
+ *
314
+ * @param string - WiFi SSID
315
+ * @param string - WiFi password
316
+ * @return boolean - true if successful
317
+ *
318
+ */
319
+ async wifiConnect(ssid, password) {
320
+ RaftLog_1.default.debug(`RaftSystemUtils Connect to WiFi ${ssid} password ${password}`);
321
+ // Issue the command to connect WiFi
322
+ try {
323
+ const RaftRESTURL_wifiCredentials = "w/" +
324
+ ssid +
325
+ "/" +
326
+ password +
327
+ "/" +
328
+ this._getHostnameFromFriendlyName();
329
+ RaftLog_1.default.debug(`wifiConnect attempting to connect to wifi ${RaftRESTURL_wifiCredentials}`);
330
+ await this._msgHandler.sendRICRESTURL(RaftRESTURL_wifiCredentials);
331
+ }
332
+ catch (error) {
333
+ RaftLog_1.default.debug(`RaftSystemUtils wifiConnect failed ${error}`);
334
+ return false;
335
+ }
336
+ // Wait until connected, timed-out or failed
337
+ for (let timeoutCount = 0; timeoutCount < this._maxSecsToWaitForWiFiConn; timeoutCount++) {
338
+ // Wait a little before checking
339
+ await new Promise((resolve) => setTimeout(resolve, 1000));
340
+ // Get status info
341
+ const connStat = await this.getWiFiConnStatus();
342
+ RaftLog_1.default.debug(`RaftSystemUtils wifiConnect connStat ${connStat}`);
343
+ if (connStat) {
344
+ return true;
345
+ }
346
+ }
347
+ return false;
348
+ }
349
+ /**
350
+ * Disconnect WiFi
351
+ *
352
+ * @return boolean - true if successful
353
+ *
354
+ */
355
+ async wifiDisconnect() {
356
+ try {
357
+ RaftLog_1.default.debug(`RaftSystemUtils wifiDisconnect clearing wifi info`);
358
+ await this._msgHandler.sendRICRESTURL("wc");
359
+ this.getWiFiConnStatus();
360
+ return true;
361
+ }
362
+ catch (error) {
363
+ RaftLog_1.default.debug(`RaftSystemUtils wifiDisconnect clearing unsuccessful ${error}`);
364
+ }
365
+ return false;
366
+ }
367
+ // Mark: WiFi Scan ------------------------------------------------------------------------------------
368
+ /**
369
+ * WiFiScan start
370
+ *
371
+ * @return boolean - true if successful
372
+ *
373
+ */
374
+ async wifiScanStart() {
375
+ try {
376
+ RaftLog_1.default.debug(`RaftSystemUtils wifiScanStart`);
377
+ await this._msgHandler.sendRICRESTURL("wifiscan/start");
378
+ return true;
379
+ }
380
+ catch (error) {
381
+ RaftLog_1.default.debug(`RaftSystemUtils wifiScanStart unsuccessful ${error}`);
382
+ }
383
+ return false;
384
+ }
385
+ /**
386
+ * WiFiScan get results
387
+ *
388
+ * @return boolean - false if unsuccessful, otherwise the results of the promise
389
+ *
390
+ */
391
+ async wifiScanResults() {
392
+ try {
393
+ RaftLog_1.default.debug(`RaftSystemUtils wifiScanResults`);
394
+ return this._msgHandler.sendRICRESTURL("wifiscan/results");
395
+ }
396
+ catch (error) {
397
+ RaftLog_1.default.debug(`RaftSystemUtils wifiScanResults unsuccessful ${error}`);
398
+ }
399
+ return false;
400
+ }
401
+ getCachedSystemInfo() {
402
+ return this._systemInfo;
403
+ }
404
+ getCachedRaftName() {
405
+ return this._friendlyName;
406
+ }
407
+ getCachedWifiStatus() {
408
+ return this._wifiConnStatus;
409
+ }
410
+ }
411
+ exports.default = RaftSystemUtils;
412
+ //# sourceMappingURL=RaftSystemUtils.js.map