@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.
- package/.editorconfig +14 -0
- package/.gitattributes +11 -0
- package/.nvmrc +1 -0
- package/TODO.md +1 -0
- package/dist/react-native/RaftAttributeHandler.d.ts +14 -0
- package/dist/react-native/RaftAttributeHandler.js +375 -0
- package/dist/react-native/RaftAttributeHandler.js.map +1 -0
- package/dist/react-native/RaftChannel.d.ts +20 -0
- package/dist/react-native/RaftChannel.js +12 -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 +483 -0
- package/dist/react-native/RaftChannelBLE.native.js.map +1 -0
- package/dist/react-native/RaftChannelBLE.web.d.ts +40 -0
- package/dist/react-native/RaftChannelBLE.web.js +302 -0
- 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 +138 -0
- package/dist/react-native/RaftChannelBLEScanner.native.js.map +1 -0
- package/dist/react-native/RaftChannelSimulated.d.ts +42 -0
- package/dist/react-native/RaftChannelSimulated.js +1000 -0
- package/dist/react-native/RaftChannelSimulated.js.map +1 -0
- package/dist/react-native/RaftChannelWebSerial.d.ts +39 -0
- package/dist/react-native/RaftChannelWebSerial.js +329 -0
- package/dist/react-native/RaftChannelWebSerial.js.map +1 -0
- package/dist/react-native/RaftChannelWebSocket.d.ts +30 -0
- package/dist/react-native/RaftChannelWebSocket.js +222 -0
- package/dist/react-native/RaftChannelWebSocket.js.map +1 -0
- package/dist/react-native/RaftCommsStats.d.ts +39 -0
- package/dist/react-native/RaftCommsStats.js +128 -0
- package/dist/react-native/RaftCommsStats.js.map +1 -0
- package/dist/react-native/RaftConnEvents.d.ts +39 -0
- package/dist/react-native/RaftConnEvents.js +54 -0
- package/dist/react-native/RaftConnEvents.js.map +1 -0
- package/dist/react-native/RaftConnector.d.ts +248 -0
- package/dist/react-native/RaftConnector.js +658 -0
- package/dist/react-native/RaftConnector.js.map +1 -0
- package/dist/react-native/RaftCustomAttrHandler.d.ts +6 -0
- package/dist/react-native/RaftCustomAttrHandler.js +93 -0
- package/dist/react-native/RaftCustomAttrHandler.js.map +1 -0
- package/dist/react-native/RaftDeviceInfo.d.ts +71 -0
- package/dist/react-native/RaftDeviceInfo.js +50 -0
- package/dist/react-native/RaftDeviceInfo.js.map +1 -0
- package/dist/react-native/RaftDeviceManager.d.ts +61 -0
- package/dist/react-native/RaftDeviceManager.js +665 -0
- package/dist/react-native/RaftDeviceManager.js.map +1 -0
- package/dist/react-native/RaftDeviceMgrIF.d.ts +15 -0
- package/dist/react-native/RaftDeviceMgrIF.js +11 -0
- package/dist/react-native/RaftDeviceMgrIF.js.map +1 -0
- package/dist/react-native/RaftDeviceMsg.d.ts +9 -0
- package/dist/react-native/RaftDeviceMsg.js +11 -0
- package/dist/react-native/RaftDeviceMsg.js.map +1 -0
- package/dist/react-native/RaftDeviceStates.d.ts +37 -0
- package/dist/react-native/RaftDeviceStates.js +60 -0
- package/dist/react-native/RaftDeviceStates.js.map +1 -0
- package/dist/react-native/RaftFileHandler.d.ts +52 -0
- package/dist/react-native/RaftFileHandler.js +502 -0
- package/dist/react-native/RaftFileHandler.js.map +1 -0
- package/dist/react-native/RaftLog.d.ts +22 -0
- package/dist/react-native/RaftLog.js +63 -0
- package/dist/react-native/RaftLog.js.map +1 -0
- package/dist/react-native/RaftMiniHDLC.d.ts +18 -0
- package/dist/react-native/RaftMiniHDLC.js +383 -0
- package/dist/react-native/RaftMiniHDLC.js.map +1 -0
- package/dist/react-native/RaftMsgHandler.d.ts +62 -0
- package/dist/react-native/RaftMsgHandler.js +511 -0
- package/dist/react-native/RaftMsgHandler.js.map +1 -0
- package/dist/react-native/RaftMsgTrackInfo.d.ts +17 -0
- package/dist/react-native/RaftMsgTrackInfo.js +42 -0
- package/dist/react-native/RaftMsgTrackInfo.js.map +1 -0
- package/dist/react-native/RaftProtocolDefs.d.ts +30 -0
- package/dist/react-native/RaftProtocolDefs.js +48 -0
- package/dist/react-native/RaftProtocolDefs.js.map +1 -0
- package/dist/react-native/RaftStreamHandler.d.ts +38 -0
- package/dist/react-native/RaftStreamHandler.js +258 -0
- package/dist/react-native/RaftStreamHandler.js.map +1 -0
- package/dist/react-native/RaftStruct.d.ts +3 -0
- package/dist/react-native/RaftStruct.js +258 -0
- package/dist/react-native/RaftStruct.js.map +1 -0
- package/dist/react-native/RaftSysTypeManager.d.ts +16 -0
- package/dist/react-native/RaftSysTypeManager.js +78 -0
- package/dist/react-native/RaftSysTypeManager.js.map +1 -0
- package/dist/react-native/RaftSystemType.d.ts +30 -0
- package/dist/react-native/RaftSystemType.js +3 -0
- package/dist/react-native/RaftSystemType.js.map +1 -0
- package/dist/react-native/RaftSystemUtils.d.ts +136 -0
- package/dist/react-native/RaftSystemUtils.js +412 -0
- package/dist/react-native/RaftSystemUtils.js.map +1 -0
- package/dist/react-native/RaftTypes.d.ts +195 -0
- package/dist/react-native/RaftTypes.js +153 -0
- package/dist/react-native/RaftTypes.js.map +1 -0
- package/dist/react-native/RaftUpdateEvents.d.ts +33 -0
- package/dist/react-native/RaftUpdateEvents.js +46 -0
- package/dist/react-native/RaftUpdateEvents.js.map +1 -0
- package/dist/react-native/RaftUpdateManager.d.ts +61 -0
- package/dist/react-native/RaftUpdateManager.js +621 -0
- package/dist/react-native/RaftUpdateManager.js.map +1 -0
- package/dist/react-native/RaftUtils.d.ts +128 -0
- package/dist/react-native/RaftUtils.js +487 -0
- package/dist/react-native/RaftUtils.js.map +1 -0
- package/dist/react-native/RaftWifiTypes.d.ts +23 -0
- package/dist/react-native/RaftWifiTypes.js +43 -0
- package/dist/react-native/RaftWifiTypes.js.map +1 -0
- package/dist/react-native/main.d.ts +26 -0
- package/dist/react-native/main.js +51 -0
- package/dist/react-native/main.js.map +1 -0
- package/dist/web/RaftAttributeHandler.js +1 -1
- package/dist/web/RaftAttributeHandler.js.map +1 -1
- package/dist/web/RaftChannelBLE.web.js +8 -6
- package/dist/web/RaftChannelBLE.web.js.map +1 -1
- package/dist/web/RaftChannelSimulated.d.ts +10 -0
- package/dist/web/RaftChannelSimulated.js +662 -80
- package/dist/web/RaftChannelSimulated.js.map +1 -1
- package/dist/web/RaftChannelWebSerial.js +2 -2
- package/dist/web/RaftChannelWebSerial.js.map +1 -1
- package/dist/web/RaftChannelWebSocket.js +16 -1
- package/dist/web/RaftChannelWebSocket.js.map +1 -1
- package/dist/web/RaftConnector.d.ts +2 -0
- package/dist/web/RaftConnector.js +38 -15
- package/dist/web/RaftConnector.js.map +1 -1
- package/dist/web/RaftCustomAttrHandler.d.ts +2 -0
- package/dist/web/RaftCustomAttrHandler.js +54 -26
- package/dist/web/RaftCustomAttrHandler.js.map +1 -1
- package/dist/web/RaftDeviceInfo.d.ts +3 -1
- package/dist/web/RaftDeviceInfo.js +17 -3
- package/dist/web/RaftDeviceInfo.js.map +1 -1
- package/dist/web/RaftDeviceManager.d.ts +19 -1
- package/dist/web/RaftDeviceManager.js +89 -3
- package/dist/web/RaftDeviceManager.js.map +1 -1
- package/dist/web/RaftDeviceStates.d.ts +1 -1
- package/dist/web/RaftDeviceStates.js +2 -2
- package/dist/web/RaftDeviceStates.js.map +1 -1
- package/dist/web/RaftMsgHandler.js.map +1 -1
- package/dist/web/RaftStreamHandler.js +2 -1
- package/dist/web/RaftStreamHandler.js.map +1 -1
- package/dist/web/RaftStruct.js +197 -147
- package/dist/web/RaftStruct.js.map +1 -1
- package/dist/web/RaftUpdateManager.js +1 -1
- package/dist/web/RaftUpdateManager.js.map +1 -1
- package/dist/web/RaftUtils.d.ts +2 -0
- package/dist/web/RaftUtils.js +20 -0
- package/dist/web/RaftUtils.js.map +1 -1
- package/dist/web/main.d.ts +1 -0
- package/dist/web/main.js.map +1 -1
- package/eslint.config.mjs +33 -0
- package/examples/dashboard/package.json +36 -0
- package/examples/dashboard/src/CommandPanel.tsx +147 -0
- package/examples/dashboard/src/ConnManager.ts +166 -0
- package/examples/dashboard/src/DeviceActionsForm.tsx +133 -0
- package/examples/dashboard/src/DeviceAttrsForm.tsx +49 -0
- package/examples/dashboard/src/DeviceLineChart.tsx +163 -0
- package/examples/dashboard/src/DevicePanel.tsx +171 -0
- package/examples/dashboard/src/DevicesPanel.tsx +58 -0
- package/examples/dashboard/src/DispLedGrid.tsx +110 -0
- package/examples/dashboard/src/DispOneLed.tsx +20 -0
- package/examples/dashboard/src/LatencyTest.ts +130 -0
- package/examples/dashboard/src/LatencyTestPanel.tsx +92 -0
- package/examples/dashboard/src/Main.tsx +234 -0
- package/examples/dashboard/src/SettingsManager.ts +67 -0
- package/examples/dashboard/src/SettingsScreen.tsx +174 -0
- package/examples/dashboard/src/StatusPanel.tsx +71 -0
- package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +162 -0
- package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +91 -0
- package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +30 -0
- package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +91 -0
- package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +70 -0
- package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +33 -0
- package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +342 -0
- package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +170 -0
- package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +123 -0
- package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +207 -0
- package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +464 -0
- package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +146 -0
- package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +97 -0
- package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +371 -0
- package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +20 -0
- package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +119 -0
- package/examples/dashboard/src/index.html +15 -0
- package/examples/dashboard/src/index.tsx +13 -0
- package/examples/dashboard/src/styles.css +408 -0
- package/examples/dashboard/tsconfig.json +18 -0
- package/jest.config.js +11 -0
- package/package.json +4 -7
- package/src/RaftAttributeHandler.ts +450 -0
- package/src/RaftChannel.ts +32 -0
- package/src/RaftChannelBLE.native.ts +617 -0
- package/src/RaftChannelBLE.web.ts +374 -0
- package/src/RaftChannelBLEFactory.ts +13 -0
- package/src/RaftChannelBLEScanner.native.ts +184 -0
- package/src/RaftChannelSimulated.ts +1176 -0
- package/src/RaftChannelWebSerial.ts +420 -0
- package/src/RaftChannelWebSocket.ts +272 -0
- package/src/RaftCommsStats.ts +142 -0
- package/src/RaftConnEvents.ts +58 -0
- package/src/RaftConnector.ts +785 -0
- package/src/RaftCustomAttrHandler.ts +117 -0
- package/src/RaftDeviceInfo.ts +125 -0
- package/src/RaftDeviceManager.ts +844 -0
- package/src/RaftDeviceMgrIF.ts +33 -0
- package/src/RaftDeviceMsg.ts +20 -0
- package/src/RaftDeviceStates.ts +92 -0
- package/src/RaftFileHandler.ts +668 -0
- package/src/RaftLog.ts +70 -0
- package/src/RaftMiniHDLC.ts +396 -0
- package/src/RaftMsgHandler.ts +812 -0
- package/src/RaftMsgTrackInfo.ts +51 -0
- package/src/RaftProtocolDefs.ts +46 -0
- package/src/RaftStreamHandler.ts +329 -0
- package/src/RaftStruct.ts +282 -0
- package/src/RaftSysTypeManager.ts +87 -0
- package/src/RaftSystemType.ts +34 -0
- package/src/RaftSystemUtils.ts +489 -0
- package/src/RaftTypes.ts +279 -0
- package/src/RaftUpdateEvents.ts +48 -0
- package/src/RaftUpdateManager.ts +781 -0
- package/src/RaftUtils.ts +514 -0
- package/src/RaftWifiTypes.ts +36 -0
- package/src/main.ts +39 -0
- package/testdata/TestDeviceTypeRecs.json +492 -0
- package/tsconfig.json +30 -0
- 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 @@
|
|
|
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
|