@robdobsn/raftjs 1.7.2 → 1.7.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/dist/web/RaftAttributeHandler.d.ts +2 -0
- package/dist/web/RaftAttributeHandler.js +107 -5
- package/dist/web/RaftAttributeHandler.js.map +1 -1
- package/dist/web/RaftConnector.d.ts +2 -1
- package/dist/web/RaftConnector.js +14 -0
- package/dist/web/RaftConnector.js.map +1 -1
- package/dist/web/RaftDeviceInfo.d.ts +6 -0
- package/dist/web/RaftMsgHandler.d.ts +1 -1
- package/dist/web/RaftMsgHandler.js +1 -1
- package/dist/web/RaftMsgHandler.js.map +1 -1
- package/dist/web/RaftTypes.d.ts +2 -1
- package/dist/web/RaftTypes.js.map +1 -1
- package/package.json +5 -2
- package/.editorconfig +0 -14
- package/.gitattributes +0 -11
- package/.nvmrc +0 -1
- package/TODO.md +0 -1
- package/dist/react-native/RaftAttributeHandler.d.ts +0 -12
- package/dist/react-native/RaftAttributeHandler.js +0 -249
- package/dist/react-native/RaftAttributeHandler.js.map +0 -1
- package/dist/react-native/RaftChannel.d.ts +0 -20
- package/dist/react-native/RaftChannel.js +0 -12
- package/dist/react-native/RaftChannel.js.map +0 -1
- package/dist/react-native/RaftChannelBLE.native.d.ts +0 -95
- package/dist/react-native/RaftChannelBLE.native.js +0 -482
- package/dist/react-native/RaftChannelBLE.native.js.map +0 -1
- package/dist/react-native/RaftChannelBLE.web.d.ts +0 -40
- package/dist/react-native/RaftChannelBLE.web.js +0 -300
- package/dist/react-native/RaftChannelBLE.web.js.map +0 -1
- package/dist/react-native/RaftChannelBLEFactory.d.ts +0 -10
- package/dist/react-native/RaftChannelBLEFactory.js +0 -17
- package/dist/react-native/RaftChannelBLEFactory.js.map +0 -1
- package/dist/react-native/RaftChannelBLEScanner.native.d.ts +0 -18
- package/dist/react-native/RaftChannelBLEScanner.native.js +0 -138
- package/dist/react-native/RaftChannelBLEScanner.native.js.map +0 -1
- package/dist/react-native/RaftChannelSimulated.d.ts +0 -32
- package/dist/react-native/RaftChannelSimulated.js +0 -418
- package/dist/react-native/RaftChannelSimulated.js.map +0 -1
- package/dist/react-native/RaftChannelWebSerial.d.ts +0 -39
- package/dist/react-native/RaftChannelWebSerial.js +0 -329
- package/dist/react-native/RaftChannelWebSerial.js.map +0 -1
- package/dist/react-native/RaftChannelWebSocket.d.ts +0 -30
- package/dist/react-native/RaftChannelWebSocket.js +0 -207
- package/dist/react-native/RaftChannelWebSocket.js.map +0 -1
- package/dist/react-native/RaftCommsStats.d.ts +0 -39
- package/dist/react-native/RaftCommsStats.js +0 -128
- package/dist/react-native/RaftCommsStats.js.map +0 -1
- package/dist/react-native/RaftConnEvents.d.ts +0 -39
- package/dist/react-native/RaftConnEvents.js +0 -54
- package/dist/react-native/RaftConnEvents.js.map +0 -1
- package/dist/react-native/RaftConnector.d.ts +0 -245
- package/dist/react-native/RaftConnector.js +0 -621
- package/dist/react-native/RaftConnector.js.map +0 -1
- package/dist/react-native/RaftCustomAttrHandler.d.ts +0 -4
- package/dist/react-native/RaftCustomAttrHandler.js +0 -50
- package/dist/react-native/RaftCustomAttrHandler.js.map +0 -1
- package/dist/react-native/RaftDeviceInfo.d.ts +0 -63
- package/dist/react-native/RaftDeviceInfo.js +0 -36
- package/dist/react-native/RaftDeviceInfo.js.map +0 -1
- package/dist/react-native/RaftDeviceManager.d.ts +0 -40
- package/dist/react-native/RaftDeviceManager.js +0 -499
- package/dist/react-native/RaftDeviceManager.js.map +0 -1
- package/dist/react-native/RaftDeviceMgrIF.d.ts +0 -15
- package/dist/react-native/RaftDeviceMgrIF.js +0 -11
- package/dist/react-native/RaftDeviceMgrIF.js.map +0 -1
- package/dist/react-native/RaftDeviceMsg.d.ts +0 -9
- package/dist/react-native/RaftDeviceMsg.js +0 -11
- package/dist/react-native/RaftDeviceMsg.js.map +0 -1
- package/dist/react-native/RaftDeviceStates.d.ts +0 -37
- package/dist/react-native/RaftDeviceStates.js +0 -60
- package/dist/react-native/RaftDeviceStates.js.map +0 -1
- package/dist/react-native/RaftFileHandler.d.ts +0 -52
- package/dist/react-native/RaftFileHandler.js +0 -502
- package/dist/react-native/RaftFileHandler.js.map +0 -1
- package/dist/react-native/RaftLog.d.ts +0 -22
- package/dist/react-native/RaftLog.js +0 -63
- package/dist/react-native/RaftLog.js.map +0 -1
- package/dist/react-native/RaftMiniHDLC.d.ts +0 -18
- package/dist/react-native/RaftMiniHDLC.js +0 -383
- package/dist/react-native/RaftMiniHDLC.js.map +0 -1
- package/dist/react-native/RaftMsgHandler.d.ts +0 -62
- package/dist/react-native/RaftMsgHandler.js +0 -511
- package/dist/react-native/RaftMsgHandler.js.map +0 -1
- package/dist/react-native/RaftMsgTrackInfo.d.ts +0 -17
- package/dist/react-native/RaftMsgTrackInfo.js +0 -42
- package/dist/react-native/RaftMsgTrackInfo.js.map +0 -1
- package/dist/react-native/RaftProtocolDefs.d.ts +0 -30
- package/dist/react-native/RaftProtocolDefs.js +0 -48
- package/dist/react-native/RaftProtocolDefs.js.map +0 -1
- package/dist/react-native/RaftStreamHandler.d.ts +0 -38
- package/dist/react-native/RaftStreamHandler.js +0 -257
- package/dist/react-native/RaftStreamHandler.js.map +0 -1
- package/dist/react-native/RaftStruct.d.ts +0 -3
- package/dist/react-native/RaftStruct.js +0 -208
- package/dist/react-native/RaftStruct.js.map +0 -1
- package/dist/react-native/RaftSysTypeManager.d.ts +0 -14
- package/dist/react-native/RaftSysTypeManager.js +0 -53
- package/dist/react-native/RaftSysTypeManager.js.map +0 -1
- package/dist/react-native/RaftSystemType.d.ts +0 -28
- package/dist/react-native/RaftSystemType.js +0 -3
- package/dist/react-native/RaftSystemType.js.map +0 -1
- package/dist/react-native/RaftSystemUtils.d.ts +0 -136
- package/dist/react-native/RaftSystemUtils.js +0 -410
- package/dist/react-native/RaftSystemUtils.js.map +0 -1
- package/dist/react-native/RaftTypes.d.ts +0 -194
- package/dist/react-native/RaftTypes.js +0 -153
- package/dist/react-native/RaftTypes.js.map +0 -1
- package/dist/react-native/RaftUpdateEvents.d.ts +0 -33
- package/dist/react-native/RaftUpdateEvents.js +0 -46
- package/dist/react-native/RaftUpdateEvents.js.map +0 -1
- package/dist/react-native/RaftUpdateManager.d.ts +0 -61
- package/dist/react-native/RaftUpdateManager.js +0 -621
- package/dist/react-native/RaftUpdateManager.js.map +0 -1
- package/dist/react-native/RaftUtils.d.ts +0 -126
- package/dist/react-native/RaftUtils.js +0 -467
- package/dist/react-native/RaftUtils.js.map +0 -1
- package/dist/react-native/RaftWifiTypes.d.ts +0 -23
- package/dist/react-native/RaftWifiTypes.js +0 -43
- package/dist/react-native/RaftWifiTypes.js.map +0 -1
- package/dist/react-native/main.d.ts +0 -25
- package/dist/react-native/main.js +0 -51
- package/dist/react-native/main.js.map +0 -1
- package/eslint.config.mjs +0 -33
- package/examples/dashboard/package.json +0 -36
- package/examples/dashboard/src/CommandPanel.tsx +0 -147
- package/examples/dashboard/src/ConnManager.ts +0 -164
- package/examples/dashboard/src/DeviceActionsForm.tsx +0 -133
- package/examples/dashboard/src/DeviceAttrsForm.tsx +0 -49
- package/examples/dashboard/src/DeviceLineChart.tsx +0 -163
- package/examples/dashboard/src/DevicePanel.tsx +0 -166
- package/examples/dashboard/src/DevicesPanel.tsx +0 -58
- package/examples/dashboard/src/DispLedGrid.tsx +0 -110
- package/examples/dashboard/src/DispOneLed.tsx +0 -20
- package/examples/dashboard/src/LatencyTest.ts +0 -130
- package/examples/dashboard/src/LatencyTestPanel.tsx +0 -92
- package/examples/dashboard/src/Main.tsx +0 -234
- package/examples/dashboard/src/SettingsManager.ts +0 -67
- package/examples/dashboard/src/SettingsScreen.tsx +0 -174
- package/examples/dashboard/src/StatusPanel.tsx +0 -71
- package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +0 -163
- package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +0 -91
- package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +0 -30
- package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +0 -91
- package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +0 -70
- package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +0 -33
- package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +0 -342
- package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +0 -170
- package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +0 -123
- package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +0 -207
- package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +0 -464
- package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +0 -146
- package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +0 -97
- package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +0 -371
- package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +0 -20
- package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +0 -119
- package/examples/dashboard/src/index.html +0 -15
- package/examples/dashboard/src/index.tsx +0 -13
- package/examples/dashboard/src/styles.css +0 -408
- package/examples/dashboard/tsconfig.json +0 -18
- package/jest.config.js +0 -11
- package/src/RaftAttributeHandler.ts +0 -298
- package/src/RaftChannel.ts +0 -32
- package/src/RaftChannelBLE.native.ts +0 -616
- package/src/RaftChannelBLE.web.ts +0 -372
- package/src/RaftChannelBLEFactory.ts +0 -13
- package/src/RaftChannelBLEScanner.native.ts +0 -184
- package/src/RaftChannelSimulated.ts +0 -482
- package/src/RaftChannelWebSerial.ts +0 -420
- package/src/RaftChannelWebSocket.ts +0 -258
- package/src/RaftCommsStats.ts +0 -142
- package/src/RaftConnEvents.ts +0 -58
- package/src/RaftConnector.ts +0 -743
- package/src/RaftCustomAttrHandler.ts +0 -54
- package/src/RaftDeviceInfo.ts +0 -102
- package/src/RaftDeviceManager.ts +0 -607
- package/src/RaftDeviceMgrIF.ts +0 -33
- package/src/RaftDeviceMsg.ts +0 -20
- package/src/RaftDeviceStates.ts +0 -92
- package/src/RaftFileHandler.ts +0 -668
- package/src/RaftLog.ts +0 -70
- package/src/RaftMiniHDLC.ts +0 -396
- package/src/RaftMsgHandler.ts +0 -813
- package/src/RaftMsgTrackInfo.ts +0 -51
- package/src/RaftProtocolDefs.ts +0 -46
- package/src/RaftStreamHandler.ts +0 -328
- package/src/RaftStruct.ts +0 -209
- package/src/RaftSysTypeManager.ts +0 -60
- package/src/RaftSystemType.ts +0 -32
- package/src/RaftSystemUtils.ts +0 -487
- package/src/RaftTypes.ts +0 -278
- package/src/RaftUpdateEvents.ts +0 -48
- package/src/RaftUpdateManager.ts +0 -781
- package/src/RaftUtils.ts +0 -494
- package/src/RaftWifiTypes.ts +0 -36
- package/src/main.ts +0 -38
- package/testdata/TestDeviceTypeRecs.json +0 -492
- package/tsconfig.json +0 -30
- package/tsconfig.react-native.json +0 -29
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
3
|
-
//
|
|
4
|
-
// Raft Protocol Definitions
|
|
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
|
-
exports.RaftCommsMsgProtocol = exports.RaftCommsMsgTypeCode = exports.RICRESTElemCode = exports.RICREST_BRIDGE_PAYLOAD_POS = exports.RICREST_BRIDGE_ID_POS = exports.RICREST_FILEBLOCK_PAYLOAD_POS = exports.RICREST_FILEBLOCK_FILEPOS_POS_BYTES = exports.RICREST_FILEBLOCK_FILEPOS_POS = exports.RICREST_FILEBLOCK_CHANNEL_POS = exports.RICREST_HEADER_PAYLOAD_POS = exports.RICREST_REST_ELEM_CODE_POS = exports.RICSERIAL_PAYLOAD_POS = exports.RICSERIAL_PROTOCOL_POS = exports.RICSERIAL_MSG_NUM_POS = void 0;
|
|
13
|
-
// RIC Protocols
|
|
14
|
-
exports.RICSERIAL_MSG_NUM_POS = 0;
|
|
15
|
-
exports.RICSERIAL_PROTOCOL_POS = 1;
|
|
16
|
-
exports.RICSERIAL_PAYLOAD_POS = 2;
|
|
17
|
-
exports.RICREST_REST_ELEM_CODE_POS = 0;
|
|
18
|
-
exports.RICREST_HEADER_PAYLOAD_POS = 1;
|
|
19
|
-
exports.RICREST_FILEBLOCK_CHANNEL_POS = 0;
|
|
20
|
-
exports.RICREST_FILEBLOCK_FILEPOS_POS = 0;
|
|
21
|
-
exports.RICREST_FILEBLOCK_FILEPOS_POS_BYTES = 4;
|
|
22
|
-
exports.RICREST_FILEBLOCK_PAYLOAD_POS = 4;
|
|
23
|
-
exports.RICREST_BRIDGE_ID_POS = 2;
|
|
24
|
-
exports.RICREST_BRIDGE_PAYLOAD_POS = 3;
|
|
25
|
-
// Protocol enums
|
|
26
|
-
var RICRESTElemCode;
|
|
27
|
-
(function (RICRESTElemCode) {
|
|
28
|
-
RICRESTElemCode[RICRESTElemCode["RICREST_ELEM_CODE_URL"] = 0] = "RICREST_ELEM_CODE_URL";
|
|
29
|
-
RICRESTElemCode[RICRESTElemCode["RICREST_ELEM_CODE_CMDRESPJSON"] = 1] = "RICREST_ELEM_CODE_CMDRESPJSON";
|
|
30
|
-
RICRESTElemCode[RICRESTElemCode["RICREST_ELEM_CODE_BODY"] = 2] = "RICREST_ELEM_CODE_BODY";
|
|
31
|
-
RICRESTElemCode[RICRESTElemCode["RICREST_ELEM_CODE_COMMAND_FRAME"] = 3] = "RICREST_ELEM_CODE_COMMAND_FRAME";
|
|
32
|
-
RICRESTElemCode[RICRESTElemCode["RICREST_ELEM_CODE_FILEBLOCK"] = 4] = "RICREST_ELEM_CODE_FILEBLOCK";
|
|
33
|
-
})(RICRESTElemCode || (exports.RICRESTElemCode = RICRESTElemCode = {}));
|
|
34
|
-
var RaftCommsMsgTypeCode;
|
|
35
|
-
(function (RaftCommsMsgTypeCode) {
|
|
36
|
-
RaftCommsMsgTypeCode[RaftCommsMsgTypeCode["MSG_TYPE_COMMAND"] = 0] = "MSG_TYPE_COMMAND";
|
|
37
|
-
RaftCommsMsgTypeCode[RaftCommsMsgTypeCode["MSG_TYPE_RESPONSE"] = 1] = "MSG_TYPE_RESPONSE";
|
|
38
|
-
RaftCommsMsgTypeCode[RaftCommsMsgTypeCode["MSG_TYPE_PUBLISH"] = 2] = "MSG_TYPE_PUBLISH";
|
|
39
|
-
RaftCommsMsgTypeCode[RaftCommsMsgTypeCode["MSG_TYPE_REPORT"] = 3] = "MSG_TYPE_REPORT";
|
|
40
|
-
})(RaftCommsMsgTypeCode || (exports.RaftCommsMsgTypeCode = RaftCommsMsgTypeCode = {}));
|
|
41
|
-
var RaftCommsMsgProtocol;
|
|
42
|
-
(function (RaftCommsMsgProtocol) {
|
|
43
|
-
RaftCommsMsgProtocol[RaftCommsMsgProtocol["MSG_PROTOCOL_ROSSERIAL"] = 0] = "MSG_PROTOCOL_ROSSERIAL";
|
|
44
|
-
RaftCommsMsgProtocol[RaftCommsMsgProtocol["MSG_PROTOCOL_RESERVED_1"] = 1] = "MSG_PROTOCOL_RESERVED_1";
|
|
45
|
-
RaftCommsMsgProtocol[RaftCommsMsgProtocol["MSG_PROTOCOL_RICREST"] = 2] = "MSG_PROTOCOL_RICREST";
|
|
46
|
-
RaftCommsMsgProtocol[RaftCommsMsgProtocol["MSG_PROTOCOL_BRIDGE_RICREST"] = 3] = "MSG_PROTOCOL_BRIDGE_RICREST";
|
|
47
|
-
})(RaftCommsMsgProtocol || (exports.RaftCommsMsgProtocol = RaftCommsMsgProtocol = {}));
|
|
48
|
-
//# sourceMappingURL=RaftProtocolDefs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RaftProtocolDefs.js","sourceRoot":"","sources":["../../src/RaftProtocolDefs.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,4BAA4B;AAC5B,iBAAiB;AACjB,EAAE;AACF,wCAAwC;AACxC,oCAAoC;AACpC,EAAE;AACF,iHAAiH;;;AAEjH,gBAAgB;AACH,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAC1B,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAC3B,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAC1B,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAC/B,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAC/B,QAAA,6BAA6B,GAAG,CAAC,CAAC;AAClC,QAAA,6BAA6B,GAAG,CAAC,CAAC;AAClC,QAAA,mCAAmC,GAAG,CAAC,CAAC;AACxC,QAAA,6BAA6B,GAAG,CAAC,CAAC;AAClC,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAC1B,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAE5C,iBAAiB;AACjB,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,uFAAqB,CAAA;IACrB,uGAA6B,CAAA;IAC7B,yFAAsB,CAAA;IACtB,2GAA+B,CAAA;IAC/B,mGAA2B,CAAA;AAC7B,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B;AAED,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,uFAAgB,CAAA;IAChB,yFAAiB,CAAA;IACjB,uFAAgB,CAAA;IAChB,qFAAe,CAAA;AACjB,CAAC,EALW,oBAAoB,oCAApB,oBAAoB,QAK/B;AAED,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC9B,mGAA0B,CAAA;IAC1B,qGAA2B,CAAA;IAC3B,+FAAwB,CAAA;IACxB,6GAA+B,CAAA;AACjC,CAAC,EALW,oBAAoB,oCAApB,oBAAoB,QAK/B"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import RaftMsgHandler from './RaftMsgHandler';
|
|
2
|
-
import RaftCommsStats from './RaftCommsStats';
|
|
3
|
-
import RaftConnector from './RaftConnector';
|
|
4
|
-
export default class RaftStreamHandler {
|
|
5
|
-
private _streamID;
|
|
6
|
-
DEFAULT_MAX_BLOCK_SIZE: number;
|
|
7
|
-
private _maxBlockSize;
|
|
8
|
-
private _msgHandler;
|
|
9
|
-
private _commsStats;
|
|
10
|
-
private _raftConnector;
|
|
11
|
-
private _soktoReceived;
|
|
12
|
-
private _soktoPos;
|
|
13
|
-
private _streamIsStarting;
|
|
14
|
-
private _lastStreamStartTime;
|
|
15
|
-
private _isStreaming;
|
|
16
|
-
private _isPaused;
|
|
17
|
-
private _streamBuffer;
|
|
18
|
-
private _audioDuration;
|
|
19
|
-
private _audioByteRate;
|
|
20
|
-
private _streamPos;
|
|
21
|
-
private _numBlocksWithoutPause;
|
|
22
|
-
private _legacySoktoMode;
|
|
23
|
-
private soundFinishPoint;
|
|
24
|
-
constructor(msgHandler: RaftMsgHandler, commsStats: RaftCommsStats, raftConnector: RaftConnector);
|
|
25
|
-
setNumBlocksWithoutPause(numBlocks: number): void;
|
|
26
|
-
setLegacySoktoMode(legacyMode: boolean): void;
|
|
27
|
-
streamAudio(streamContents: Uint8Array, clearExisting: boolean, audioDuration: number): void;
|
|
28
|
-
streamCancel(): Promise<void>;
|
|
29
|
-
isStreamStarting(): boolean;
|
|
30
|
-
clearFinishPointTimeout(): void;
|
|
31
|
-
streamingPerformanceChecker(): void;
|
|
32
|
-
private _sendStreamStartMsg;
|
|
33
|
-
get maxBlockSize(): number;
|
|
34
|
-
set maxBlockSize(maxBlockSize: number);
|
|
35
|
-
private _sendStreamEndMsg;
|
|
36
|
-
private _sendStreamBuffer;
|
|
37
|
-
onSoktoMsg(soktoPos: number): void;
|
|
38
|
-
}
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
3
|
-
//
|
|
4
|
-
// RafStreamHandler
|
|
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 RaftLog_1 = tslib_1.__importDefault(require("./RaftLog"));
|
|
14
|
-
const RaftTypes_1 = require("./RaftTypes");
|
|
15
|
-
const RaftConnEvents_1 = require("./RaftConnEvents");
|
|
16
|
-
const RaftProtocolDefs_1 = require("./RaftProtocolDefs");
|
|
17
|
-
class RaftStreamHandler {
|
|
18
|
-
constructor(msgHandler, commsStats, raftConnector) {
|
|
19
|
-
// Queue of audio stream requests
|
|
20
|
-
/*
|
|
21
|
-
private _streamAudioQueue: {
|
|
22
|
-
streamContents: Uint8Array;
|
|
23
|
-
audioDuration: number;
|
|
24
|
-
}[] = [];
|
|
25
|
-
*/
|
|
26
|
-
// Stream state
|
|
27
|
-
this._streamID = null;
|
|
28
|
-
this.DEFAULT_MAX_BLOCK_SIZE = 475;
|
|
29
|
-
this._maxBlockSize = this.DEFAULT_MAX_BLOCK_SIZE;
|
|
30
|
-
// Flow control
|
|
31
|
-
this._soktoReceived = false;
|
|
32
|
-
this._soktoPos = 0;
|
|
33
|
-
this._streamIsStarting = false;
|
|
34
|
-
this._lastStreamStartTime = 0;
|
|
35
|
-
this._isStreaming = false;
|
|
36
|
-
this._isPaused = false;
|
|
37
|
-
this._streamBuffer = new Uint8Array();
|
|
38
|
-
this._audioDuration = 0;
|
|
39
|
-
this._audioByteRate = 0;
|
|
40
|
-
this._streamPos = 0;
|
|
41
|
-
this._numBlocksWithoutPause = 15;
|
|
42
|
-
this._legacySoktoMode = false;
|
|
43
|
-
// soundFinishPoint timer
|
|
44
|
-
this.soundFinishPoint = null;
|
|
45
|
-
this._raftConnector = raftConnector;
|
|
46
|
-
this._msgHandler = msgHandler;
|
|
47
|
-
this._commsStats = commsStats;
|
|
48
|
-
this.onSoktoMsg = this.onSoktoMsg.bind(this);
|
|
49
|
-
}
|
|
50
|
-
setNumBlocksWithoutPause(numBlocks) {
|
|
51
|
-
this._numBlocksWithoutPause = numBlocks;
|
|
52
|
-
}
|
|
53
|
-
setLegacySoktoMode(legacyMode) {
|
|
54
|
-
RaftLog_1.default.debug(`Setting legacy sokto mode to ${legacyMode}`);
|
|
55
|
-
this._legacySoktoMode = legacyMode;
|
|
56
|
-
}
|
|
57
|
-
// Start streaming audio
|
|
58
|
-
streamAudio(streamContents, clearExisting, audioDuration) {
|
|
59
|
-
if (!clearExisting)
|
|
60
|
-
RaftLog_1.default.debug(`only clearExisting = true is supported right now.`);
|
|
61
|
-
// TODO - if clearExisting is not set, form a queue
|
|
62
|
-
if (this._streamIsStarting || this._lastStreamStartTime > (Date.now() - 500)) {
|
|
63
|
-
RaftLog_1.default.error(`Unable to start sound, too soon since last request`);
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
this._isPaused = true;
|
|
67
|
-
this._streamIsStarting = true;
|
|
68
|
-
this._lastStreamStartTime = Date.now();
|
|
69
|
-
this._soktoReceived = false;
|
|
70
|
-
this._soktoPos = 0;
|
|
71
|
-
this._streamPos = 0;
|
|
72
|
-
this._streamBuffer = streamContents;
|
|
73
|
-
this._audioDuration = audioDuration;
|
|
74
|
-
this._audioByteRate = (streamContents.length / audioDuration) * 1000;
|
|
75
|
-
this.clearFinishPointTimeout();
|
|
76
|
-
this._sendStreamStartMsg("audio.mp3", "streamaudio", RaftTypes_1.RaftStreamType.REAL_TIME_STREAM, streamContents).then((result) => {
|
|
77
|
-
this._isPaused = false;
|
|
78
|
-
this._streamIsStarting = false;
|
|
79
|
-
if (!result) {
|
|
80
|
-
RaftLog_1.default.error(`Unable to start stream. ufStart message send failed`);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
//this.streamingPerformanceChecker();
|
|
84
|
-
if (!this._isStreaming) {
|
|
85
|
-
this._isStreaming = true;
|
|
86
|
-
this._sendStreamBuffer();
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
async streamCancel() {
|
|
91
|
-
this._streamBuffer = new Uint8Array();
|
|
92
|
-
this.clearFinishPointTimeout();
|
|
93
|
-
}
|
|
94
|
-
isStreamStarting() {
|
|
95
|
-
return this._streamIsStarting;
|
|
96
|
-
}
|
|
97
|
-
clearFinishPointTimeout() {
|
|
98
|
-
if (this.soundFinishPoint) {
|
|
99
|
-
clearTimeout(this.soundFinishPoint);
|
|
100
|
-
this.soundFinishPoint = null;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
streamingPerformanceChecker() {
|
|
104
|
-
if (this._audioDuration) {
|
|
105
|
-
this.clearFinishPointTimeout();
|
|
106
|
-
this.soundFinishPoint = setTimeout(() => {
|
|
107
|
-
// if the streaming hasn't finished before the end of the audio
|
|
108
|
-
// we can assume we are having streaming issues
|
|
109
|
-
// publish event in case we are having issues
|
|
110
|
-
this._raftConnector.onConnEvent(RaftConnEvents_1.RaftConnEvent.CONN_STREAMING_ISSUE);
|
|
111
|
-
this.clearFinishPointTimeout();
|
|
112
|
-
}, this._audioDuration + 500);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Send the start message
|
|
116
|
-
async _sendStreamStartMsg(streamName, targetEndpoint, streamTypeEnum, streamContents) {
|
|
117
|
-
// Stream start command message
|
|
118
|
-
const streamType = 'rtstream';
|
|
119
|
-
const cmdMsg = `{"cmdName":"ufStart","reqStr":"ufStart","fileType":"${streamType}","fileName":"${streamName}","endpoint":"${targetEndpoint}","fileLen":${streamContents.length}}`;
|
|
120
|
-
// Debug
|
|
121
|
-
RaftLog_1.default.debug(`sendStreamStartMsg ${cmdMsg}`);
|
|
122
|
-
// Send
|
|
123
|
-
let streamStartResp = null;
|
|
124
|
-
try {
|
|
125
|
-
streamStartResp = await this._msgHandler.sendRICREST(cmdMsg, RaftProtocolDefs_1.RICRESTElemCode.RICREST_ELEM_CODE_COMMAND_FRAME);
|
|
126
|
-
}
|
|
127
|
-
catch (err) {
|
|
128
|
-
RaftLog_1.default.error(`sendStreamStartMsg error ${err}`);
|
|
129
|
-
return false;
|
|
130
|
-
}
|
|
131
|
-
// Extract params
|
|
132
|
-
if (streamStartResp && (streamStartResp.rslt === 'ok')) {
|
|
133
|
-
this._streamID = streamStartResp.streamID;
|
|
134
|
-
this._maxBlockSize = streamStartResp.maxBlockSize || this.DEFAULT_MAX_BLOCK_SIZE;
|
|
135
|
-
this.streamingPerformanceChecker();
|
|
136
|
-
RaftLog_1.default.verbose(`sendStreamStartMsg streamID ${this._streamID} maxBlockSize ${this._maxBlockSize} streamType ${streamTypeEnum}`);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
RaftLog_1.default.warn(`sendStreamStartMsg failed ${streamStartResp ? streamStartResp.rslt : 'no response'}`);
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
get maxBlockSize() {
|
|
145
|
-
return this._maxBlockSize;
|
|
146
|
-
}
|
|
147
|
-
set maxBlockSize(maxBlockSize) {
|
|
148
|
-
this._maxBlockSize = maxBlockSize;
|
|
149
|
-
this.DEFAULT_MAX_BLOCK_SIZE = maxBlockSize;
|
|
150
|
-
}
|
|
151
|
-
async _sendStreamEndMsg(streamID) {
|
|
152
|
-
if (streamID === null) {
|
|
153
|
-
return false;
|
|
154
|
-
}
|
|
155
|
-
// Stram end command message
|
|
156
|
-
const cmdMsg = `{"cmdName":"ufEnd","reqStr":"ufEnd","streamID":${streamID}}`;
|
|
157
|
-
// Debug
|
|
158
|
-
RaftLog_1.default.debug(`sendStreamEndMsg ${cmdMsg}`);
|
|
159
|
-
// Send
|
|
160
|
-
let streamEndResp = null;
|
|
161
|
-
try {
|
|
162
|
-
streamEndResp = await this._msgHandler.sendRICREST(cmdMsg, RaftProtocolDefs_1.RICRESTElemCode.RICREST_ELEM_CODE_COMMAND_FRAME);
|
|
163
|
-
}
|
|
164
|
-
catch (err) {
|
|
165
|
-
RaftLog_1.default.error(`sendStreamEndMsg error ${err}`);
|
|
166
|
-
return false;
|
|
167
|
-
}
|
|
168
|
-
return streamEndResp.rslt === 'ok';
|
|
169
|
-
}
|
|
170
|
-
/*
|
|
171
|
-
private async _sendAudioStopMsg(): Promise<RaftOKFail> {
|
|
172
|
-
const cmdMsg = `{"cmdName":"audio/stop"}`;
|
|
173
|
-
|
|
174
|
-
// Debug
|
|
175
|
-
RaftLog.debug(`sendAudioStopMsg ${cmdMsg}`);
|
|
176
|
-
|
|
177
|
-
// Send
|
|
178
|
-
return this._msgHandler.sendRICREST<RaftOKFail>(
|
|
179
|
-
cmdMsg,
|
|
180
|
-
RICRESTElemCode.RICREST_ELEM_CODE_COMMAND_FRAME,
|
|
181
|
-
);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
private async _sendStreamCancelMsg(): Promise<RaftOKFail> {
|
|
186
|
-
// File cancel command message
|
|
187
|
-
const cmdMsg = `{"cmdName":"ufCancel","reqStr":"ufCancel","streamID":${this._streamID}}`;
|
|
188
|
-
|
|
189
|
-
// Debug
|
|
190
|
-
RaftLog.debug(`sendStreamCancelMsg ${cmdMsg}`);
|
|
191
|
-
|
|
192
|
-
// Send
|
|
193
|
-
return this._msgHandler.sendRICREST<RaftOKFail>(
|
|
194
|
-
cmdMsg,
|
|
195
|
-
RICRESTElemCode.RICREST_ELEM_CODE_COMMAND_FRAME,
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
*/
|
|
199
|
-
async _sendStreamBuffer() {
|
|
200
|
-
const streamStartTime = Date.now();
|
|
201
|
-
// Check streamID is valid
|
|
202
|
-
if (this._streamID === null) {
|
|
203
|
-
return false;
|
|
204
|
-
}
|
|
205
|
-
let blockNum = 0;
|
|
206
|
-
// Send stream blocks
|
|
207
|
-
while (this._soktoPos < this._streamBuffer.length || this._isPaused) {
|
|
208
|
-
if (this._isPaused) {
|
|
209
|
-
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
210
|
-
continue;
|
|
211
|
-
}
|
|
212
|
-
// Check for new sokto
|
|
213
|
-
if (this._soktoReceived) {
|
|
214
|
-
if (this._legacySoktoMode)
|
|
215
|
-
this._streamPos = this._soktoPos;
|
|
216
|
-
// apart from when in legacy mode, the sokto message is now informational only,
|
|
217
|
-
// to allow the central to slow down sending of data if it is swamping the peripheral
|
|
218
|
-
RaftLog_1.default.verbose(`sendStreamContents ${Date.now() - streamStartTime}ms soktoReceived for ${this._streamPos}`);
|
|
219
|
-
this._soktoReceived = false;
|
|
220
|
-
// receiving an sokto message before the completion of the stream means that the streaming is not keeping up
|
|
221
|
-
this._raftConnector.onConnEvent(RaftConnEvents_1.RaftConnEvent.CONN_STREAMING_ISSUE);
|
|
222
|
-
}
|
|
223
|
-
// Send stream block
|
|
224
|
-
const blockSize = Math.min(this._streamBuffer.length - this._streamPos, this._maxBlockSize);
|
|
225
|
-
const block = this._streamBuffer.slice(this._streamPos, this._streamPos + blockSize);
|
|
226
|
-
if (block.length > 0) {
|
|
227
|
-
const sentOk = await this._msgHandler.sendStreamBlock(block, this._streamPos, this._streamID);
|
|
228
|
-
this._commsStats.recordStreamBytes(block.length);
|
|
229
|
-
RaftLog_1.default.verbose(`sendStreamContents ${sentOk ? "OK" : "FAILED"} ${Date.now() - streamStartTime}ms pos ${this._streamPos} ${blockSize} ${block.length} ${this._soktoPos}`);
|
|
230
|
-
if (!sentOk) {
|
|
231
|
-
return false;
|
|
232
|
-
}
|
|
233
|
-
this._streamPos += blockSize;
|
|
234
|
-
blockNum += 1;
|
|
235
|
-
if (this._audioByteRate && blockNum > this._numBlocksWithoutPause) {
|
|
236
|
-
const pauseTime = ((blockSize / this._audioByteRate) * 1000) - 10;
|
|
237
|
-
RaftLog_1.default.verbose(`Pausing for ${pauseTime} ms between audio packets. Bit rate ${this._audioByteRate * 8}`);
|
|
238
|
-
await new Promise((resolve) => setTimeout(resolve, pauseTime));
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
// Wait to ensure we don't hog the CPU
|
|
242
|
-
await new Promise((resolve) => setTimeout(resolve, 1));
|
|
243
|
-
}
|
|
244
|
-
this._isStreaming = false;
|
|
245
|
-
this.clearFinishPointTimeout();
|
|
246
|
-
await this._sendStreamEndMsg(this._streamID);
|
|
247
|
-
return true;
|
|
248
|
-
}
|
|
249
|
-
onSoktoMsg(soktoPos) {
|
|
250
|
-
// Get how far we've progressed in file
|
|
251
|
-
this._soktoPos = soktoPos;
|
|
252
|
-
this._soktoReceived = true;
|
|
253
|
-
RaftLog_1.default.debug(`onSoktoMsg received file up to ${this._soktoPos}`);
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
exports.default = RaftStreamHandler;
|
|
257
|
-
//# sourceMappingURL=RaftStreamHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RaftStreamHandler.js","sourceRoot":"","sources":["../../src/RaftStreamHandler.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,mBAAmB;AACnB,iBAAiB;AACjB,EAAE;AACF,wCAAwC;AACxC,oCAAoC;AACpC,EAAE;AACF,iHAAiH;;;AAEjH,gEAA+B;AAG/B,2CAA8E;AAE9E,qDAAiD;AACjD,yDAAoD;AAEpD,MAAqB,iBAAiB;IA4CpC,YAAY,UAA0B,EAAE,UAA0B,EAAE,aAA4B;QA1ChG,iCAAiC;QACjC;;;;;UAKE;QAEF,eAAe;QACP,cAAS,GAAkB,IAAI,CAAC;QACxC,2BAAsB,GAAG,GAAG,CAAC;QACrB,kBAAa,GAAW,IAAI,CAAC,sBAAsB,CAAC;QAW5D,eAAe;QACP,mBAAc,GAAG,KAAK,CAAC;QACvB,cAAS,GAAG,CAAC,CAAC;QAEd,sBAAiB,GAAG,KAAK,CAAC;QAC1B,yBAAoB,GAAG,CAAC,CAAC;QAEzB,iBAAY,GAAG,KAAK,CAAC;QACrB,cAAS,GAAG,KAAK,CAAC;QAClB,kBAAa,GAAG,IAAI,UAAU,EAAE,CAAC;QACjC,mBAAc,GAAG,CAAC,CAAC;QACnB,mBAAc,GAAG,CAAC,CAAC;QACnB,eAAU,GAAG,CAAC,CAAC;QACf,2BAAsB,GAAG,EAAE,CAAC;QAC5B,qBAAgB,GAAG,KAAK,CAAC;QAGjC,yBAAyB;QACjB,qBAAgB,GAA0B,IAAI,CAAC;QAGrD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,wBAAwB,CAAC,SAAiB;QACxC,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAC1C,CAAC;IAED,kBAAkB,CAAC,UAAmB;QACpC,iBAAO,CAAC,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;IACrC,CAAC;IAED,wBAAwB;IACxB,WAAW,CAAC,cAA0B,EAAE,aAAsB,EAAE,aAAqB;QACnF,IAAI,CAAC,aAAa;YAChB,iBAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAErE,mDAAmD;QACnD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;YAC7E,iBAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,aAAa,CAAC,GAAC,IAAI,CAAC;QAEnE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,0BAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,IAAI,CACxG,CAAC,MAAe,EAAE,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM,EAAC,CAAC;gBACX,iBAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YACD,qCAAqC;YACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAC,CAAC;gBACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QAEH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAGD,uBAAuB;QACrB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,2BAA2B;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtC,+DAA+D;gBAC/D,+CAA+C;gBAE/C,6CAA6C;gBAC7C,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,8BAAa,CAAC,oBAAoB,CAAC,CAAC;gBAEpE,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,yBAAyB;IACjB,KAAK,CAAC,mBAAmB,CAC/B,UAAkB,EAClB,cAAsB,EACtB,cAA8B,EAC9B,cAA0B;QAE1B,+BAA+B;QAC/B,MAAM,UAAU,GAAG,UAAU,CAAC;QAC9B,MAAM,MAAM,GAAG,uDAAuD,UAAU,iBAAiB,UAAU,iBAAiB,cAAc,eAAe,cAAc,CAAC,MAAM,GAAG,CAAC;QAElL,QAAQ;QACR,iBAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;QAE9C,OAAO;QACP,IAAI,eAAe,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC;YACH,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAClD,MAAM,EACN,kCAAe,CAAC,+BAA+B,CAChD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iBAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,iBAAiB;QACjB,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,YAAY,IAAI,IAAI,CAAC,sBAAsB,CAAC;YACjF,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,iBAAO,CAAC,OAAO,CACb,+BAA+B,IAAI,CAAC,SAAS,iBAAiB,IAAI,CAAC,aAAa,eAAe,cAAc,EAAE,CAChH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,iBAAO,CAAC,IAAI,CAAC,6BAA6B,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACpG,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY,CAAE,YAAoB;QACpC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,QAAuB;QAEvB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,kDAAkD,QAAQ,GAAG,CAAC;QAE7E,QAAQ;QACR,iBAAO,CAAC,KAAK,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QAE5C,OAAO;QACP,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAChD,MAAM,EACN,kCAAe,CAAC,+BAA+B,CAChD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iBAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC;IACrC,CAAC;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BE;IAEM,KAAK,CAAC,iBAAiB;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEnC,0BAA0B;QAC1B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,qBAAqB;QACrB,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpE,IAAI,IAAI,CAAC,SAAS,EAAC,CAAC;gBAClB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvD,SAAS;YACX,CAAC;YAED,sBAAsB;YACtB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,gBAAgB;oBACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;gBACnC,gFAAgF;gBAChF,qFAAqF;gBACrF,iBAAO,CAAC,OAAO,CAAC,sBAAsB,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,wBAAwB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC7G,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAE5B,4GAA4G;gBAC5G,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,8BAAa,CAAC,oBAAoB,CAAC,CAAC;YACtE,CAAC;YAED,oBAAoB;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;YACrF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9F,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEjD,iBAAO,CAAC,OAAO,CACb,sBAAsB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,UAAU,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CACzJ,CAAC;gBACF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;gBAC7B,QAAQ,IAAI,CAAC,CAAC;gBAEd,IAAI,IAAI,CAAC,cAAc,IAAI,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAC,CAAC;oBACjE,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBAChE,iBAAO,CAAC,OAAO,CAAC,eAAe,SAAS,uCAAuC,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,CAAA;oBACzG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YAED,sCAAsC;YACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,QAAgB;QACzB,uCAAuC;QACvC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,iBAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACpE,CAAC;CACF;AArTD,oCAqTC"}
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
3
|
-
//
|
|
4
|
-
// RaftStruct
|
|
5
|
-
// Part of RaftJS
|
|
6
|
-
//
|
|
7
|
-
// Rob Dobson 2024
|
|
8
|
-
// (C) 2024 All rights reserved
|
|
9
|
-
//
|
|
10
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.structUnpack = structUnpack;
|
|
13
|
-
exports.structSizeOf = structSizeOf;
|
|
14
|
-
exports.structPack = structPack;
|
|
15
|
-
function structUnpack(format, data) {
|
|
16
|
-
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
17
|
-
const results = [];
|
|
18
|
-
let offset = 0;
|
|
19
|
-
let littleEndian = false;
|
|
20
|
-
for (const char of format) {
|
|
21
|
-
switch (char) {
|
|
22
|
-
case "<":
|
|
23
|
-
littleEndian = true;
|
|
24
|
-
break;
|
|
25
|
-
case ">":
|
|
26
|
-
littleEndian = false;
|
|
27
|
-
break;
|
|
28
|
-
case "x": // Padding byte
|
|
29
|
-
offset += 1;
|
|
30
|
-
break;
|
|
31
|
-
case "c": // Char
|
|
32
|
-
results.push(view.getUint8(offset));
|
|
33
|
-
offset += 1;
|
|
34
|
-
break;
|
|
35
|
-
case "b": // Signed 8-bit integer
|
|
36
|
-
results.push(view.getInt8(offset));
|
|
37
|
-
offset += 1;
|
|
38
|
-
break;
|
|
39
|
-
case "B": // Unsigned 8-bit integer
|
|
40
|
-
results.push(view.getUint8(offset));
|
|
41
|
-
offset += 1;
|
|
42
|
-
break;
|
|
43
|
-
case "h": // Signed 16-bit integer
|
|
44
|
-
results.push(view.getInt16(offset, littleEndian));
|
|
45
|
-
offset += 2;
|
|
46
|
-
break;
|
|
47
|
-
case "H": // Unsigned 16-bit integer (big-endian)
|
|
48
|
-
results.push(view.getUint16(offset, littleEndian));
|
|
49
|
-
offset += 2;
|
|
50
|
-
break;
|
|
51
|
-
case "i": // Signed 32-bit integer (big-endian)
|
|
52
|
-
results.push(view.getInt32(offset, littleEndian));
|
|
53
|
-
offset += 4;
|
|
54
|
-
break;
|
|
55
|
-
case "I": // Unsigned 32-bit integer (big-endian)
|
|
56
|
-
results.push(view.getUint32(offset, littleEndian));
|
|
57
|
-
offset += 4;
|
|
58
|
-
break;
|
|
59
|
-
case "l": // Signed 32-bit integer (big-endian)
|
|
60
|
-
results.push(view.getInt32(offset, littleEndian));
|
|
61
|
-
offset += 4;
|
|
62
|
-
break;
|
|
63
|
-
case "L": // Unsigned 32-bit integer (big-endian)
|
|
64
|
-
results.push(view.getUint32(offset, littleEndian));
|
|
65
|
-
offset += 4;
|
|
66
|
-
break;
|
|
67
|
-
// case "q": // Signed 64-bit integer (big-endian)
|
|
68
|
-
// results.push(view.getBigInt64(offset, littleEndian));
|
|
69
|
-
// offset += 8;
|
|
70
|
-
// break;
|
|
71
|
-
// case "Q": // Unsigned 64-bit integer (big-endian)
|
|
72
|
-
// results.push(view.getBigUint64(offset, littleEndian));
|
|
73
|
-
// offset += 8;
|
|
74
|
-
// break;
|
|
75
|
-
case "f": // 32-bit float (big-endian)
|
|
76
|
-
results.push(view.getFloat32(offset, littleEndian));
|
|
77
|
-
offset += 4;
|
|
78
|
-
break;
|
|
79
|
-
case "d": // 64-bit float (big-endian)
|
|
80
|
-
results.push(view.getFloat64(offset, littleEndian));
|
|
81
|
-
offset += 8;
|
|
82
|
-
break;
|
|
83
|
-
default:
|
|
84
|
-
throw new Error(`Unknown format character: ${char}`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return results;
|
|
88
|
-
}
|
|
89
|
-
function structSizeOf(format) {
|
|
90
|
-
let size = 0;
|
|
91
|
-
for (const char of format) {
|
|
92
|
-
switch (char) {
|
|
93
|
-
case "<":
|
|
94
|
-
case ">":
|
|
95
|
-
break;
|
|
96
|
-
case "x": // Padding byte
|
|
97
|
-
size += 1;
|
|
98
|
-
break;
|
|
99
|
-
case "c": // Char
|
|
100
|
-
case "b": // Signed 8-bit integer
|
|
101
|
-
case "B": // Unsigned 8-bit integer
|
|
102
|
-
size += 1;
|
|
103
|
-
break;
|
|
104
|
-
case "h": // Signed 16-bit integer
|
|
105
|
-
case "H": // Unsigned 16-bit integer
|
|
106
|
-
size += 2;
|
|
107
|
-
break;
|
|
108
|
-
case "i": // Signed 32-bit integer
|
|
109
|
-
case "I": // Unsigned 32-bit integer
|
|
110
|
-
case "l": // Signed 32-bit integer
|
|
111
|
-
case "L": // Unsigned 32-bit integer
|
|
112
|
-
size += 4;
|
|
113
|
-
break;
|
|
114
|
-
// case "q": // Signed 64-bit integer
|
|
115
|
-
// case "Q": // Unsigned 64-bit integer
|
|
116
|
-
// size += 8;
|
|
117
|
-
// break;
|
|
118
|
-
case "f": // 32-bit float
|
|
119
|
-
size += 4;
|
|
120
|
-
break;
|
|
121
|
-
case "d": // 64-bit float
|
|
122
|
-
size += 8;
|
|
123
|
-
break;
|
|
124
|
-
default:
|
|
125
|
-
throw new Error(`Unknown format character: ${char}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return size;
|
|
129
|
-
}
|
|
130
|
-
function structPack(format, values) {
|
|
131
|
-
const size = structSizeOf(format);
|
|
132
|
-
const buffer = new ArrayBuffer(size);
|
|
133
|
-
const view = new DataView(buffer);
|
|
134
|
-
let offset = 0;
|
|
135
|
-
let littleEndian = false;
|
|
136
|
-
const valIdx = 0;
|
|
137
|
-
for (let i = 0; i < format.length; i++) {
|
|
138
|
-
const char = format[i];
|
|
139
|
-
const value = values[valIdx];
|
|
140
|
-
switch (char) {
|
|
141
|
-
case "<":
|
|
142
|
-
littleEndian = true;
|
|
143
|
-
break;
|
|
144
|
-
case ">":
|
|
145
|
-
littleEndian = false;
|
|
146
|
-
break;
|
|
147
|
-
case "x": // Padding byte
|
|
148
|
-
offset += 1;
|
|
149
|
-
break;
|
|
150
|
-
case "c": // Char
|
|
151
|
-
view.setInt8(offset, value);
|
|
152
|
-
offset += 1;
|
|
153
|
-
break;
|
|
154
|
-
case "b": // Signed 8-bit integer
|
|
155
|
-
view.setInt8(offset, value);
|
|
156
|
-
offset += 1;
|
|
157
|
-
break;
|
|
158
|
-
case "B": // Unsigned 8-bit integer
|
|
159
|
-
view.setUint8(offset, value);
|
|
160
|
-
offset += 1;
|
|
161
|
-
break;
|
|
162
|
-
case "h": // Signed 16-bit integer
|
|
163
|
-
view.setInt16(offset, value, littleEndian);
|
|
164
|
-
offset += 2;
|
|
165
|
-
break;
|
|
166
|
-
case "H": // Unsigned 16-bit integer
|
|
167
|
-
view.setUint16(offset, value, littleEndian);
|
|
168
|
-
offset += 2;
|
|
169
|
-
break;
|
|
170
|
-
case "i": // Signed 32-bit integer
|
|
171
|
-
view.setInt32(offset, value, littleEndian);
|
|
172
|
-
offset += 4;
|
|
173
|
-
break;
|
|
174
|
-
case "I": // Unsigned 32-bit integer
|
|
175
|
-
view.setUint32(offset, value, littleEndian);
|
|
176
|
-
offset += 4;
|
|
177
|
-
break;
|
|
178
|
-
case "l": // Signed 32-bit integer
|
|
179
|
-
view.setInt32(offset, value, littleEndian);
|
|
180
|
-
offset += 4;
|
|
181
|
-
break;
|
|
182
|
-
case "L": // Unsigned 32-bit integer
|
|
183
|
-
view.setUint32(offset, value, littleEndian);
|
|
184
|
-
offset += 4;
|
|
185
|
-
break;
|
|
186
|
-
// case "q": // Signed 64-bit integer
|
|
187
|
-
// view.setBigInt64(offset, BigInt(value), littleEndian);
|
|
188
|
-
// offset += 8;
|
|
189
|
-
// break;
|
|
190
|
-
// case "Q": // Unsigned 64-bit integer
|
|
191
|
-
// view.setBigUint64(offset, BigInt(value), littleEndian);
|
|
192
|
-
// offset += 8;
|
|
193
|
-
// break;
|
|
194
|
-
case "f": // 32-bit float
|
|
195
|
-
view.setFloat32(offset, value, littleEndian);
|
|
196
|
-
offset += 4;
|
|
197
|
-
break;
|
|
198
|
-
case "d": // 64-bit float
|
|
199
|
-
view.setFloat64(offset, value, littleEndian);
|
|
200
|
-
offset += 8;
|
|
201
|
-
break;
|
|
202
|
-
default:
|
|
203
|
-
throw new Error(`Unknown format character: ${char}`);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
return new Uint8Array(buffer);
|
|
207
|
-
}
|
|
208
|
-
//# sourceMappingURL=RaftStruct.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RaftStruct.js","sourceRoot":"","sources":["../../src/RaftStruct.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
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
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,53 +0,0 @@
|
|
|
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
|
-
sysType.BLEServiceUUIDs.forEach((uuid) => serviceUUIDs.add(uuid));
|
|
48
|
-
});
|
|
49
|
-
return Array.from(serviceUUIDs);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.default = RaftSysTypeManager;
|
|
53
|
-
//# sourceMappingURL=RaftSysTypeManager.js.map
|