@robdobsn/raftjs 1.8.5 → 1.11.5
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 +1001 -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 +257 -0
- package/dist/react-native/RaftConnector.js +671 -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 +73 -0
- package/dist/react-native/RaftDeviceManager.js +812 -0
- package/dist/react-native/RaftDeviceManager.js.map +1 -0
- package/dist/react-native/RaftDeviceMgrIF.d.ts +19 -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 +55 -0
- package/dist/react-native/RaftDeviceStates.js +81 -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/RaftPublish.d.ts +2 -0
- package/dist/react-native/RaftPublish.js +81 -0
- package/dist/react-native/RaftPublish.js.map +1 -0
- package/dist/react-native/RaftStreamHandler.d.ts +49 -0
- package/dist/react-native/RaftStreamHandler.js +324 -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 +152 -0
- package/dist/react-native/RaftSystemUtils.js +463 -0
- package/dist/react-native/RaftSystemUtils.js.map +1 -0
- package/dist/react-native/RaftTypes.d.ts +216 -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 +27 -0
- package/dist/react-native/main.js +52 -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 +665 -82
- 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 +12 -1
- package/dist/web/RaftConnector.js +45 -9
- 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 +32 -2
- package/dist/web/RaftDeviceManager.js +307 -74
- package/dist/web/RaftDeviceManager.js.map +1 -1
- package/dist/web/RaftDeviceMgrIF.d.ts +5 -1
- package/dist/web/RaftDeviceStates.d.ts +20 -2
- package/dist/web/RaftDeviceStates.js +25 -4
- package/dist/web/RaftDeviceStates.js.map +1 -1
- package/dist/web/RaftMsgHandler.js.map +1 -1
- package/dist/web/RaftPublish.d.ts +2 -0
- package/dist/web/RaftPublish.js +81 -0
- package/dist/web/RaftPublish.js.map +1 -0
- package/dist/web/RaftStreamHandler.d.ts +11 -0
- package/dist/web/RaftStreamHandler.js +68 -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/RaftSystemUtils.d.ts +17 -1
- package/dist/web/RaftSystemUtils.js +51 -0
- package/dist/web/RaftSystemUtils.js.map +1 -1
- package/dist/web/RaftTypes.d.ts +21 -0
- package/dist/web/RaftTypes.js.map +1 -1
- package/dist/web/RaftUpdateManager.js +1 -1
- package/dist/web/RaftUpdateManager.js.map +1 -1
- package/dist/web/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 +2 -0
- package/dist/web/main.js +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 +247 -0
- package/examples/dashboard/src/DeviceStatsPanel.tsx +65 -0
- package/examples/dashboard/src/DevicesPanel.tsx +69 -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 +179 -0
- package/examples/dashboard/src/StatusPanel.tsx +71 -0
- package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +170 -0
- package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +125 -0
- package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +38 -0
- package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +125 -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 +105 -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 +570 -0
- package/examples/dashboard/tsconfig.json +18 -0
- package/jest.config.js +11 -0
- package/package.json +49 -52
- 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 +1177 -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 +806 -0
- package/src/RaftCustomAttrHandler.ts +117 -0
- package/src/RaftDeviceInfo.ts +125 -0
- package/src/RaftDeviceManager.ts +1014 -0
- package/src/RaftDeviceMgrIF.ts +37 -0
- package/src/RaftDeviceMsg.ts +20 -0
- package/src/RaftDeviceStates.ts +122 -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/RaftPublish.ts +92 -0
- package/src/RaftStreamHandler.ts +412 -0
- package/src/RaftStruct.ts +282 -0
- package/src/RaftSysTypeManager.ts +87 -0
- package/src/RaftSystemType.ts +34 -0
- package/src/RaftSystemUtils.ts +548 -0
- package/src/RaftTypes.ts +306 -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 +40 -0
- package/testdata/TestDeviceTypeRecs.json +492 -0
- package/tsconfig.json +30 -0
- package/tsconfig.react-native.json +29 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
3
|
+
//
|
|
4
|
+
// RaftChannelBLE
|
|
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 RaftConnEvents_1 = require("./RaftConnEvents");
|
|
14
|
+
const RaftLog_1 = tslib_1.__importDefault(require("./RaftLog"));
|
|
15
|
+
const RaftUtils_1 = tslib_1.__importDefault(require("./RaftUtils"));
|
|
16
|
+
class RaftChannelBLE {
|
|
17
|
+
constructor() {
|
|
18
|
+
// Default command and response UUIDs
|
|
19
|
+
this._cmdUUID = 'aa76677e-9cfd-4626-a510-0d305be57c8e';
|
|
20
|
+
this._respUUID = 'aa76677e-9cfd-4626-a510-0d305be57c8f';
|
|
21
|
+
this._serviceUUIDs = ['aa76677e-9cfd-4626-a510-0d305be57c8d', 'da903f65-d5c2-4f4d-a065-d1aade7af874'];
|
|
22
|
+
// Device and characteristics
|
|
23
|
+
this._bleDevice = null;
|
|
24
|
+
this._characteristicTx = null;
|
|
25
|
+
this._characteristicRx = null;
|
|
26
|
+
// Message handler
|
|
27
|
+
this._raftMsgHandler = null;
|
|
28
|
+
// Conn event fn
|
|
29
|
+
this._onConnEvent = null;
|
|
30
|
+
// Last message tx time
|
|
31
|
+
this._msgTxTimeLast = Date.now();
|
|
32
|
+
this._msgTxMinTimeBetweenMs = 1;
|
|
33
|
+
this.maxRetries = 1;
|
|
34
|
+
// Connected flag and retries
|
|
35
|
+
this._isConnected = false;
|
|
36
|
+
this._maxConnRetries = 3;
|
|
37
|
+
// Event listener fn
|
|
38
|
+
this._eventListenerFn = null;
|
|
39
|
+
// File Handler parameters
|
|
40
|
+
this._requestedBatchAckSize = 10;
|
|
41
|
+
this._requestedFileBlockSize = 500;
|
|
42
|
+
}
|
|
43
|
+
fhBatchAckSize() {
|
|
44
|
+
return this._requestedBatchAckSize;
|
|
45
|
+
}
|
|
46
|
+
fhFileBlockSize() {
|
|
47
|
+
return this._requestedFileBlockSize;
|
|
48
|
+
}
|
|
49
|
+
// Set message handler
|
|
50
|
+
setMsgHandler(raftMsgHandler) {
|
|
51
|
+
this._raftMsgHandler = raftMsgHandler;
|
|
52
|
+
}
|
|
53
|
+
requiresSubscription() {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
// RICREST command before disconnect
|
|
57
|
+
ricRestCmdBeforeDisconnect() {
|
|
58
|
+
return "bledisconnect";
|
|
59
|
+
}
|
|
60
|
+
// isEnabled
|
|
61
|
+
isEnabled() {
|
|
62
|
+
if (navigator.bluetooth) {
|
|
63
|
+
RaftLog_1.default.warn("Web Bluetooth is supported in your browser.");
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
window.alert("Web Bluetooth API is not available.\n" +
|
|
68
|
+
'Please make sure the "Experimental Web Platform features" flag is enabled.');
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// isConnected
|
|
73
|
+
isConnected() {
|
|
74
|
+
return this._bleDevice !== null && this._isConnected;
|
|
75
|
+
}
|
|
76
|
+
// Set onConnEvent handler
|
|
77
|
+
setOnConnEvent(connEventFn) {
|
|
78
|
+
this._onConnEvent = connEventFn;
|
|
79
|
+
}
|
|
80
|
+
// Disconnection event
|
|
81
|
+
onDisconnected(event) {
|
|
82
|
+
const device = event.target;
|
|
83
|
+
RaftLog_1.default.debug(`RaftChannelBLE.onDisconnected ${device.name}`);
|
|
84
|
+
if (this._bleDevice && this._eventListenerFn) {
|
|
85
|
+
this._bleDevice.removeEventListener("gattserverdisconnected", this._eventListenerFn);
|
|
86
|
+
}
|
|
87
|
+
this._isConnected = false;
|
|
88
|
+
if (this._onConnEvent) {
|
|
89
|
+
this._onConnEvent(RaftConnEvents_1.RaftConnEvent.CONN_DISCONNECTED);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Get connected locator
|
|
93
|
+
getConnectedLocator() {
|
|
94
|
+
return this._bleDevice || "";
|
|
95
|
+
}
|
|
96
|
+
// Connect to a device
|
|
97
|
+
async connect(locator, _connectorOptions) {
|
|
98
|
+
// RaftLog.debug(`Selected device: ${deviceID}`);
|
|
99
|
+
this._bleDevice = locator;
|
|
100
|
+
if (this._bleDevice && this._bleDevice.gatt) {
|
|
101
|
+
try {
|
|
102
|
+
// Connect
|
|
103
|
+
for (let connRetry = 0; connRetry < this._maxConnRetries; connRetry++) {
|
|
104
|
+
// Connect
|
|
105
|
+
const connTimeoutMs = _connectorOptions.connTimeoutMs || 5000;
|
|
106
|
+
await RaftUtils_1.default.withTimeout(connTimeoutMs, this._bleDevice.gatt.connect());
|
|
107
|
+
RaftLog_1.default.debug(`RaftChannelBLE.connect - ${this._bleDevice.gatt.connected ? "OK" : "FAILED"} attempt ${connRetry + 1} connection to device ${this._bleDevice.name}`);
|
|
108
|
+
if (this._bleDevice.gatt.connected) {
|
|
109
|
+
// Delay a bit
|
|
110
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
111
|
+
// Get service
|
|
112
|
+
try {
|
|
113
|
+
let service = null;
|
|
114
|
+
// iterate over known services
|
|
115
|
+
for (const serviceUUID of this._serviceUUIDs) {
|
|
116
|
+
try {
|
|
117
|
+
service = await this._bleDevice.gatt.getPrimaryService(serviceUUID);
|
|
118
|
+
if (service) {
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot get primary service ${error}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (!service) {
|
|
127
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot get primary service - giving up`);
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
RaftLog_1.default.debug(`RaftChannelBLE.connect - found service: ${service.uuid}`);
|
|
131
|
+
try {
|
|
132
|
+
// Get Tx and Rx characteristics
|
|
133
|
+
this._characteristicTx = await service.getCharacteristic(this._cmdUUID);
|
|
134
|
+
RaftLog_1.default.debug(`RaftChannelBLE.connect - found char ${this._characteristicTx.uuid}`);
|
|
135
|
+
this._characteristicRx = await service.getCharacteristic(this._respUUID);
|
|
136
|
+
RaftLog_1.default.debug(`RaftChannelBLE.connect - found char ${this._characteristicRx.uuid}`);
|
|
137
|
+
// Notifications of received messages
|
|
138
|
+
try {
|
|
139
|
+
await this._characteristicRx.startNotifications();
|
|
140
|
+
RaftLog_1.default.debug("RaftChannelBLE.connect - notifications started");
|
|
141
|
+
this._characteristicRx.addEventListener("characteristicvaluechanged", this._onMsgRx.bind(this));
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
RaftLog_1.default.debug("RaftChannelBLE.connnect - addEventListener failed " + error);
|
|
145
|
+
}
|
|
146
|
+
// Connected ok
|
|
147
|
+
RaftLog_1.default.debug(`RaftChannelBLE.connect ${this._bleDevice.name}`);
|
|
148
|
+
// Add disconnect listener
|
|
149
|
+
this._eventListenerFn = this.onDisconnected.bind(this);
|
|
150
|
+
this._bleDevice.addEventListener("gattserverdisconnected", this._eventListenerFn);
|
|
151
|
+
// Connected
|
|
152
|
+
this._isConnected = true;
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot find characteristic: ${error}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (connRetry === this._maxConnRetries - 1) {
|
|
161
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot get primary service ${error} - attempt #${connRetry + 1} - giving up`);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
RaftLog_1.default.debug(`RaftChannelBLE.connect - cannot get primary service - attempt #${connRetry + 1} ${error}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot connect ${error}`);
|
|
172
|
+
}
|
|
173
|
+
// Disconnect
|
|
174
|
+
if (this._bleDevice &&
|
|
175
|
+
this._bleDevice.gatt &&
|
|
176
|
+
this._bleDevice.gatt.connected) {
|
|
177
|
+
try {
|
|
178
|
+
await this._bleDevice.gatt.disconnect();
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
RaftLog_1.default.warn(`RaftChannelBLE.connect - cannot disconnect ${error}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
// Disconnect
|
|
188
|
+
async disconnect() {
|
|
189
|
+
if (this._bleDevice && this._bleDevice.gatt) {
|
|
190
|
+
try {
|
|
191
|
+
RaftLog_1.default.debug(`RaftChannelBLE.disconnect GATT`);
|
|
192
|
+
await this._bleDevice.gatt.disconnect();
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
RaftLog_1.default.debug(`RaftChannelBLE.disconnect ${error}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
pauseConnection(pause) {
|
|
200
|
+
RaftLog_1.default.verbose(`pauseConnection ${pause} - no effect for this channel type`);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// Handle notifications
|
|
204
|
+
_onMsgRx(event) {
|
|
205
|
+
// Get characteristic
|
|
206
|
+
const characteristic = event.target;
|
|
207
|
+
// Get value
|
|
208
|
+
const value = characteristic.value;
|
|
209
|
+
if (value !== undefined) {
|
|
210
|
+
const msg = new Uint8Array(value.buffer);
|
|
211
|
+
// Handle message
|
|
212
|
+
if (this._raftMsgHandler) {
|
|
213
|
+
try {
|
|
214
|
+
this._raftMsgHandler.handleNewRxMsg(msg);
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
RaftLog_1.default.debug(`RaftChannelBLE.onMsgRx ${error}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Send a message
|
|
223
|
+
async sendTxMsg(msg
|
|
224
|
+
// _sendWithResponse: boolean
|
|
225
|
+
) {
|
|
226
|
+
// Check valid
|
|
227
|
+
if (this._bleDevice === null) {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
// Retry upto maxRetries
|
|
231
|
+
for (let retryIdx = 0; retryIdx < this.maxRetries; retryIdx++) {
|
|
232
|
+
// Check for min time between messages
|
|
233
|
+
while (Date.now() - this._msgTxTimeLast < this._msgTxMinTimeBetweenMs) {
|
|
234
|
+
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
235
|
+
}
|
|
236
|
+
this._msgTxTimeLast = Date.now();
|
|
237
|
+
// Write to the characteristic
|
|
238
|
+
try {
|
|
239
|
+
if (this._characteristicTx) {
|
|
240
|
+
const bs = RaftUtils_1.default.toBufferSource(msg);
|
|
241
|
+
if (this._characteristicTx.writeValueWithoutResponse) {
|
|
242
|
+
await this._characteristicTx.writeValueWithoutResponse(bs);
|
|
243
|
+
}
|
|
244
|
+
else if (this._characteristicTx.writeValue) {
|
|
245
|
+
await this._characteristicTx.writeValue(bs);
|
|
246
|
+
}
|
|
247
|
+
else if (this._characteristicTx.writeValueWithResponse) {
|
|
248
|
+
await this._characteristicTx.writeValueWithResponse(bs);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
if (retryIdx === this.maxRetries - 1) {
|
|
255
|
+
RaftLog_1.default.info(`RaftChannelBLE.sendTxMsg ${error} retried ${retryIdx} times`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
// Send message without awaiting response
|
|
262
|
+
async sendTxMsgNoAwait(msg
|
|
263
|
+
// _sendWithResponse: boolean
|
|
264
|
+
) {
|
|
265
|
+
// Check valid
|
|
266
|
+
if (this._bleDevice === null) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
// Check for min time between messages
|
|
270
|
+
while (Date.now() - this._msgTxTimeLast < this._msgTxMinTimeBetweenMs) {
|
|
271
|
+
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
272
|
+
}
|
|
273
|
+
this._msgTxTimeLast = Date.now();
|
|
274
|
+
// Write to the characteristic
|
|
275
|
+
if (this._characteristicTx) {
|
|
276
|
+
const bs = RaftUtils_1.default.toBufferSource(msg);
|
|
277
|
+
if (this._characteristicTx.writeValueWithoutResponse) {
|
|
278
|
+
this._characteristicTx.writeValueWithoutResponse(bs);
|
|
279
|
+
}
|
|
280
|
+
else if (this._characteristicTx.writeValue) {
|
|
281
|
+
this._characteristicTx.writeValue(bs);
|
|
282
|
+
}
|
|
283
|
+
else if (this._characteristicTx.writeValueWithResponse) {
|
|
284
|
+
this._characteristicTx.writeValueWithResponse(bs);
|
|
285
|
+
}
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
return false;
|
|
289
|
+
}
|
|
290
|
+
// Method used for testing and simulation should never be called
|
|
291
|
+
sendTxMsgRaw() {
|
|
292
|
+
RaftLog_1.default.debug(`sendTxMsgRaw - not implemented`);
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
// Method used for testing and simulation should never be called
|
|
296
|
+
sendTxMsgRawAndWaitForReply() {
|
|
297
|
+
RaftLog_1.default.debug(`sendTxMsgRawAndWaitForReply - not implemented`);
|
|
298
|
+
return null;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
exports.default = RaftChannelBLE;
|
|
302
|
+
//# sourceMappingURL=RaftChannelBLE.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RaftChannelBLE.web.js","sourceRoot":"","sources":["../../src/RaftChannelBLE.web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description
|
|
3
|
+
* This file is used to create a new instance of the RaftChannelBLE class.
|
|
4
|
+
* RaftChannelBLE exists in 2 files: RaftChannelBLE.native.ts and RaftChannelBLE.web.ts
|
|
5
|
+
* each of these files contains the same class but with different implementations (native and web).
|
|
6
|
+
* The import statement at the top of the file will import the correct implementation based on the platform
|
|
7
|
+
* (depending on the build configuration).
|
|
8
|
+
*/
|
|
9
|
+
import RaftChannelBLE from './RaftChannelBLE';
|
|
10
|
+
export declare function createBLEChannel(): typeof RaftChannelBLE;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBLEChannel = createBLEChannel;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* @description
|
|
7
|
+
* This file is used to create a new instance of the RaftChannelBLE class.
|
|
8
|
+
* RaftChannelBLE exists in 2 files: RaftChannelBLE.native.ts and RaftChannelBLE.web.ts
|
|
9
|
+
* each of these files contains the same class but with different implementations (native and web).
|
|
10
|
+
* The import statement at the top of the file will import the correct implementation based on the platform
|
|
11
|
+
* (depending on the build configuration).
|
|
12
|
+
*/
|
|
13
|
+
const RaftChannelBLE_1 = tslib_1.__importDefault(require("./RaftChannelBLE"));
|
|
14
|
+
function createBLEChannel() {
|
|
15
|
+
return RaftChannelBLE_1.default;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=RaftChannelBLEFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RaftChannelBLEFactory.js","sourceRoot":"","sources":["../../src/RaftChannelBLEFactory.ts"],"names":[],"mappings":";;AAUA,4CAEC;;AAZD;;;;;;;GAOG;AACH,8EAA8C;AAE9C,SAAgB,gBAAgB;IAC9B,OAAO,wBAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BleManager, Device, BleError } from 'react-native-ble-plx';
|
|
2
|
+
import { DiscoveredDevice } from './RaftTypes';
|
|
3
|
+
import { RaftConnEventFn } from './RaftConnEvents';
|
|
4
|
+
export default class RaftChannelBLEScanner {
|
|
5
|
+
_bleManager: BleManager;
|
|
6
|
+
_defaultUUIDsOfServicesToScanFor: Array<string>;
|
|
7
|
+
_discoveredDevices: DiscoveredDevice[];
|
|
8
|
+
static _scanInProgress: boolean;
|
|
9
|
+
_discoveryTimeMs: number;
|
|
10
|
+
_eventCallback: RaftConnEventFn;
|
|
11
|
+
constructor(bleManager: BleManager, uuidsOfServicesToScanFor: Array<string>, eventCallback: RaftConnEventFn);
|
|
12
|
+
getDiscoveredDevices(): DiscoveredDevice[];
|
|
13
|
+
isScanInProgress(): boolean;
|
|
14
|
+
scanningStart(uuids: string[]): Promise<boolean>;
|
|
15
|
+
scanningStop(): void;
|
|
16
|
+
_discoveryFoundCB(error: BleError | null, scannedDevice: Device | null): void;
|
|
17
|
+
_discoverySetTimeLimit(timeLimitMs: number): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
3
|
+
//
|
|
4
|
+
// RaftChannelBLEScanner.native.ts
|
|
5
|
+
// Communications Connector for RaftJS
|
|
6
|
+
//
|
|
7
|
+
// Rob Dobson 2022-24
|
|
8
|
+
// (C) Robotical 2022-24
|
|
9
|
+
//
|
|
10
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const tslib_1 = require("tslib");
|
|
13
|
+
const RaftTypes_1 = require("./RaftTypes");
|
|
14
|
+
const RaftLog_1 = tslib_1.__importDefault(require("./RaftLog"));
|
|
15
|
+
const RaftConnEvents_1 = require("./RaftConnEvents");
|
|
16
|
+
class RaftChannelBLEScanner {
|
|
17
|
+
constructor(bleManager, uuidsOfServicesToScanFor, eventCallback) {
|
|
18
|
+
// Services to scan for
|
|
19
|
+
this._defaultUUIDsOfServicesToScanFor = [];
|
|
20
|
+
// Scanned devices found on BLE
|
|
21
|
+
this._discoveredDevices = [];
|
|
22
|
+
// Time to scan for
|
|
23
|
+
this._discoveryTimeMs = 10000;
|
|
24
|
+
this._bleManager = bleManager;
|
|
25
|
+
this._defaultUUIDsOfServicesToScanFor = uuidsOfServicesToScanFor;
|
|
26
|
+
this._eventCallback = eventCallback;
|
|
27
|
+
}
|
|
28
|
+
// Get discovered Devices
|
|
29
|
+
getDiscoveredDevices() {
|
|
30
|
+
return this._discoveredDevices;
|
|
31
|
+
}
|
|
32
|
+
// Check is a scan is in progress
|
|
33
|
+
isScanInProgress() {
|
|
34
|
+
return RaftChannelBLEScanner._scanInProgress;
|
|
35
|
+
}
|
|
36
|
+
async scanningStart(uuids) {
|
|
37
|
+
// Handle discovery
|
|
38
|
+
RaftLog_1.default.debug('Starting Scanning...');
|
|
39
|
+
// Clear list
|
|
40
|
+
this._discoveredDevices = [];
|
|
41
|
+
// Disconnect any connections
|
|
42
|
+
RaftChannelBLEScanner._scanInProgress = true;
|
|
43
|
+
// Start scan
|
|
44
|
+
try {
|
|
45
|
+
this._bleManager.startDeviceScan(uuids.length > 0 ? uuids : this._defaultUUIDsOfServicesToScanFor, { allowDuplicates: true }, (error, device) => {
|
|
46
|
+
// RaftLog.debug(`discoveryFoundCB error ${error}`);
|
|
47
|
+
this._discoveryFoundCB(error, device);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
RaftLog_1.default.warn(`Error starting scan ${e}`);
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
// Set a time limit
|
|
55
|
+
this._discoverySetTimeLimit(this._discoveryTimeMs);
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
scanningStop() {
|
|
59
|
+
RaftLog_1.default.debug('scanningStop');
|
|
60
|
+
// Emit finished if we were scanning
|
|
61
|
+
RaftLog_1.default.debug(`IS SCANNING IN PROGRESS: ${RaftChannelBLEScanner._scanInProgress}`);
|
|
62
|
+
if (RaftChannelBLEScanner._scanInProgress) {
|
|
63
|
+
RaftLog_1.default.debug(`sending BLE_SCANNING_FINISHED event`);
|
|
64
|
+
this._eventCallback(RaftConnEvents_1.RaftConnEvent.BLE_SCANNING_FINISHED, { discoveredDevices: this._discoveredDevices });
|
|
65
|
+
}
|
|
66
|
+
// Cancel scanning
|
|
67
|
+
this._bleManager.stopDeviceScan();
|
|
68
|
+
RaftChannelBLEScanner._scanInProgress = false;
|
|
69
|
+
}
|
|
70
|
+
// Callback from BLE-PLX library on device discovered
|
|
71
|
+
_discoveryFoundCB(error, scannedDevice) {
|
|
72
|
+
if (error) {
|
|
73
|
+
//RaftLog.warn(`⚠️ Scan Error >> ${error.toString()}`);
|
|
74
|
+
RaftLog_1.default.warn(`⚠️ Scan Error >> ${JSON.stringify(error)}`);
|
|
75
|
+
// Event if we were scanning
|
|
76
|
+
if (RaftChannelBLEScanner._scanInProgress) {
|
|
77
|
+
this._eventCallback(RaftConnEvents_1.RaftConnEvent.BLE_SCANNING_FINISHED, {
|
|
78
|
+
discoveredDevices: this._discoveredDevices,
|
|
79
|
+
});
|
|
80
|
+
RaftChannelBLEScanner._scanInProgress = false;
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// See if already in the list
|
|
85
|
+
const deviceAlreadyFound = this._discoveredDevices.find(item => item.id === scannedDevice.id);
|
|
86
|
+
RaftLog_1.default.debug(`✅ Scanning... >> ${scannedDevice}`);
|
|
87
|
+
if (deviceAlreadyFound) {
|
|
88
|
+
// update the rssi value if it's not 127
|
|
89
|
+
if (scannedDevice.rssi !== null && scannedDevice.rssi !== 127) {
|
|
90
|
+
deviceAlreadyFound._rssi = scannedDevice.rssi;
|
|
91
|
+
this._eventCallback(RaftConnEvents_1.RaftConnEvent.BLE_DEVICE_FOUND, {
|
|
92
|
+
discoveredDevice: deviceAlreadyFound
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (scannedDevice !== null) {
|
|
98
|
+
if (!scannedDevice.localName) {
|
|
99
|
+
// if the name of the device is null, don't add this device
|
|
100
|
+
// the first time round. Second time this device comes up
|
|
101
|
+
// will have all the needed info
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const newDiscoveredDevice = new RaftTypes_1.DiscoveredDevice(scannedDevice.localName !== null ? scannedDevice.localName : '', scannedDevice.name !== null ? scannedDevice.name : '', scannedDevice.id, scannedDevice.rssi !== null ? scannedDevice.rssi : -150, scannedDevice.serviceUUIDs);
|
|
105
|
+
this._discoveredDevices.push(newDiscoveredDevice);
|
|
106
|
+
// send the newly found ric to the state so it can pop-up on the front-end
|
|
107
|
+
this._eventCallback(RaftConnEvents_1.RaftConnEvent.BLE_DEVICE_FOUND, {
|
|
108
|
+
discoveredDevice: newDiscoveredDevice
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
RaftLog_1.default.debug(`🤖 Scanned RICs >> ${this._discoveredDevices}`);
|
|
112
|
+
}
|
|
113
|
+
// Time-limit on device scanning
|
|
114
|
+
_discoverySetTimeLimit(timeLimitMs) {
|
|
115
|
+
setTimeout(() => {
|
|
116
|
+
// Stop scanning
|
|
117
|
+
this._bleManager.stopDeviceScan();
|
|
118
|
+
// Check we were scanning
|
|
119
|
+
if (RaftChannelBLEScanner._scanInProgress) {
|
|
120
|
+
// Sort by signal strength
|
|
121
|
+
// this._discoveredDevices.sort((a, b) => {
|
|
122
|
+
// return b!.rssi! - a!.rssi!;
|
|
123
|
+
// });
|
|
124
|
+
// Debug
|
|
125
|
+
const msg = `🤖 ${this._discoveredDevices.length} RICs found! Choose one to connect`;
|
|
126
|
+
RaftLog_1.default.debug(msg);
|
|
127
|
+
// Finished event
|
|
128
|
+
this._eventCallback(RaftConnEvents_1.RaftConnEvent.BLE_SCANNING_FINISHED, {
|
|
129
|
+
discoveredDevices: this._discoveredDevices,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
RaftChannelBLEScanner._scanInProgress = false;
|
|
133
|
+
}, timeLimitMs);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
RaftChannelBLEScanner._scanInProgress = false;
|
|
137
|
+
exports.default = RaftChannelBLEScanner;
|
|
138
|
+
//# sourceMappingURL=RaftChannelBLEScanner.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RaftChannelBLEScanner.native.js","sourceRoot":"","sources":["../../src/RaftChannelBLEScanner.native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import RaftChannel from "./RaftChannel";
|
|
2
|
+
import RaftMsgHandler from "./RaftMsgHandler";
|
|
3
|
+
import { RaftConnEventFn } from "./RaftConnEvents";
|
|
4
|
+
import { ConnectorOptions } from "./RaftSystemType";
|
|
5
|
+
export default class RaftChannelSimulated implements RaftChannel {
|
|
6
|
+
private _raftMsgHandler;
|
|
7
|
+
private _isConnected;
|
|
8
|
+
private _simulatedDeviceInfo;
|
|
9
|
+
private _simulatedDeviceInfoTimers;
|
|
10
|
+
private _simulatedDeviceInfoTimeMs;
|
|
11
|
+
private _onConnEvent;
|
|
12
|
+
private _requestedBatchAckSize;
|
|
13
|
+
private _requestedFileBlockSize;
|
|
14
|
+
fhBatchAckSize(): number;
|
|
15
|
+
fhFileBlockSize(): number;
|
|
16
|
+
isConnected(): boolean;
|
|
17
|
+
setMsgHandler(raftMsgHandler: RaftMsgHandler): void;
|
|
18
|
+
requiresSubscription(): boolean;
|
|
19
|
+
ricRestCmdBeforeDisconnect(): string | null;
|
|
20
|
+
setOnConnEvent(connEventFn: RaftConnEventFn): void;
|
|
21
|
+
getConnectedLocator(): string | object;
|
|
22
|
+
connect(locator: string | object, connectorOptions: ConnectorOptions): Promise<boolean>;
|
|
23
|
+
disconnect(): Promise<void>;
|
|
24
|
+
pauseConnection(pause: boolean): void;
|
|
25
|
+
sendTxMsg(msg: Uint8Array, sendWithResponse: boolean): Promise<boolean>;
|
|
26
|
+
sendTxMsgNoAwait(msg: Uint8Array, sendWithResponse: boolean): Promise<boolean>;
|
|
27
|
+
sendTxMsgRaw(msg: string): boolean;
|
|
28
|
+
sendTxMsgRawAndWaitForReply<T>(msgPayload: Uint8Array): T;
|
|
29
|
+
private _createSimulatedDeviceInfoMsg;
|
|
30
|
+
private _parseAttrType;
|
|
31
|
+
private _generateAttributeScaledValues;
|
|
32
|
+
private _generateThermalGridValues;
|
|
33
|
+
private _fillCustomRawData;
|
|
34
|
+
private _getGridDimensions;
|
|
35
|
+
private _prepareRawValue;
|
|
36
|
+
private _writeRawValueToBuffer;
|
|
37
|
+
private _byteSizeForType;
|
|
38
|
+
private _clampRawValue;
|
|
39
|
+
private _isFloatType;
|
|
40
|
+
private _bytesToHexStr;
|
|
41
|
+
private _deviceTypeInfo;
|
|
42
|
+
}
|