@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.
Files changed (198) hide show
  1. package/dist/web/RaftAttributeHandler.d.ts +2 -0
  2. package/dist/web/RaftAttributeHandler.js +107 -5
  3. package/dist/web/RaftAttributeHandler.js.map +1 -1
  4. package/dist/web/RaftConnector.d.ts +2 -1
  5. package/dist/web/RaftConnector.js +14 -0
  6. package/dist/web/RaftConnector.js.map +1 -1
  7. package/dist/web/RaftDeviceInfo.d.ts +6 -0
  8. package/dist/web/RaftMsgHandler.d.ts +1 -1
  9. package/dist/web/RaftMsgHandler.js +1 -1
  10. package/dist/web/RaftMsgHandler.js.map +1 -1
  11. package/dist/web/RaftTypes.d.ts +2 -1
  12. package/dist/web/RaftTypes.js.map +1 -1
  13. package/package.json +5 -2
  14. package/.editorconfig +0 -14
  15. package/.gitattributes +0 -11
  16. package/.nvmrc +0 -1
  17. package/TODO.md +0 -1
  18. package/dist/react-native/RaftAttributeHandler.d.ts +0 -12
  19. package/dist/react-native/RaftAttributeHandler.js +0 -249
  20. package/dist/react-native/RaftAttributeHandler.js.map +0 -1
  21. package/dist/react-native/RaftChannel.d.ts +0 -20
  22. package/dist/react-native/RaftChannel.js +0 -12
  23. package/dist/react-native/RaftChannel.js.map +0 -1
  24. package/dist/react-native/RaftChannelBLE.native.d.ts +0 -95
  25. package/dist/react-native/RaftChannelBLE.native.js +0 -482
  26. package/dist/react-native/RaftChannelBLE.native.js.map +0 -1
  27. package/dist/react-native/RaftChannelBLE.web.d.ts +0 -40
  28. package/dist/react-native/RaftChannelBLE.web.js +0 -300
  29. package/dist/react-native/RaftChannelBLE.web.js.map +0 -1
  30. package/dist/react-native/RaftChannelBLEFactory.d.ts +0 -10
  31. package/dist/react-native/RaftChannelBLEFactory.js +0 -17
  32. package/dist/react-native/RaftChannelBLEFactory.js.map +0 -1
  33. package/dist/react-native/RaftChannelBLEScanner.native.d.ts +0 -18
  34. package/dist/react-native/RaftChannelBLEScanner.native.js +0 -138
  35. package/dist/react-native/RaftChannelBLEScanner.native.js.map +0 -1
  36. package/dist/react-native/RaftChannelSimulated.d.ts +0 -32
  37. package/dist/react-native/RaftChannelSimulated.js +0 -418
  38. package/dist/react-native/RaftChannelSimulated.js.map +0 -1
  39. package/dist/react-native/RaftChannelWebSerial.d.ts +0 -39
  40. package/dist/react-native/RaftChannelWebSerial.js +0 -329
  41. package/dist/react-native/RaftChannelWebSerial.js.map +0 -1
  42. package/dist/react-native/RaftChannelWebSocket.d.ts +0 -30
  43. package/dist/react-native/RaftChannelWebSocket.js +0 -207
  44. package/dist/react-native/RaftChannelWebSocket.js.map +0 -1
  45. package/dist/react-native/RaftCommsStats.d.ts +0 -39
  46. package/dist/react-native/RaftCommsStats.js +0 -128
  47. package/dist/react-native/RaftCommsStats.js.map +0 -1
  48. package/dist/react-native/RaftConnEvents.d.ts +0 -39
  49. package/dist/react-native/RaftConnEvents.js +0 -54
  50. package/dist/react-native/RaftConnEvents.js.map +0 -1
  51. package/dist/react-native/RaftConnector.d.ts +0 -245
  52. package/dist/react-native/RaftConnector.js +0 -621
  53. package/dist/react-native/RaftConnector.js.map +0 -1
  54. package/dist/react-native/RaftCustomAttrHandler.d.ts +0 -4
  55. package/dist/react-native/RaftCustomAttrHandler.js +0 -50
  56. package/dist/react-native/RaftCustomAttrHandler.js.map +0 -1
  57. package/dist/react-native/RaftDeviceInfo.d.ts +0 -63
  58. package/dist/react-native/RaftDeviceInfo.js +0 -36
  59. package/dist/react-native/RaftDeviceInfo.js.map +0 -1
  60. package/dist/react-native/RaftDeviceManager.d.ts +0 -40
  61. package/dist/react-native/RaftDeviceManager.js +0 -499
  62. package/dist/react-native/RaftDeviceManager.js.map +0 -1
  63. package/dist/react-native/RaftDeviceMgrIF.d.ts +0 -15
  64. package/dist/react-native/RaftDeviceMgrIF.js +0 -11
  65. package/dist/react-native/RaftDeviceMgrIF.js.map +0 -1
  66. package/dist/react-native/RaftDeviceMsg.d.ts +0 -9
  67. package/dist/react-native/RaftDeviceMsg.js +0 -11
  68. package/dist/react-native/RaftDeviceMsg.js.map +0 -1
  69. package/dist/react-native/RaftDeviceStates.d.ts +0 -37
  70. package/dist/react-native/RaftDeviceStates.js +0 -60
  71. package/dist/react-native/RaftDeviceStates.js.map +0 -1
  72. package/dist/react-native/RaftFileHandler.d.ts +0 -52
  73. package/dist/react-native/RaftFileHandler.js +0 -502
  74. package/dist/react-native/RaftFileHandler.js.map +0 -1
  75. package/dist/react-native/RaftLog.d.ts +0 -22
  76. package/dist/react-native/RaftLog.js +0 -63
  77. package/dist/react-native/RaftLog.js.map +0 -1
  78. package/dist/react-native/RaftMiniHDLC.d.ts +0 -18
  79. package/dist/react-native/RaftMiniHDLC.js +0 -383
  80. package/dist/react-native/RaftMiniHDLC.js.map +0 -1
  81. package/dist/react-native/RaftMsgHandler.d.ts +0 -62
  82. package/dist/react-native/RaftMsgHandler.js +0 -511
  83. package/dist/react-native/RaftMsgHandler.js.map +0 -1
  84. package/dist/react-native/RaftMsgTrackInfo.d.ts +0 -17
  85. package/dist/react-native/RaftMsgTrackInfo.js +0 -42
  86. package/dist/react-native/RaftMsgTrackInfo.js.map +0 -1
  87. package/dist/react-native/RaftProtocolDefs.d.ts +0 -30
  88. package/dist/react-native/RaftProtocolDefs.js +0 -48
  89. package/dist/react-native/RaftProtocolDefs.js.map +0 -1
  90. package/dist/react-native/RaftStreamHandler.d.ts +0 -38
  91. package/dist/react-native/RaftStreamHandler.js +0 -257
  92. package/dist/react-native/RaftStreamHandler.js.map +0 -1
  93. package/dist/react-native/RaftStruct.d.ts +0 -3
  94. package/dist/react-native/RaftStruct.js +0 -208
  95. package/dist/react-native/RaftStruct.js.map +0 -1
  96. package/dist/react-native/RaftSysTypeManager.d.ts +0 -14
  97. package/dist/react-native/RaftSysTypeManager.js +0 -53
  98. package/dist/react-native/RaftSysTypeManager.js.map +0 -1
  99. package/dist/react-native/RaftSystemType.d.ts +0 -28
  100. package/dist/react-native/RaftSystemType.js +0 -3
  101. package/dist/react-native/RaftSystemType.js.map +0 -1
  102. package/dist/react-native/RaftSystemUtils.d.ts +0 -136
  103. package/dist/react-native/RaftSystemUtils.js +0 -410
  104. package/dist/react-native/RaftSystemUtils.js.map +0 -1
  105. package/dist/react-native/RaftTypes.d.ts +0 -194
  106. package/dist/react-native/RaftTypes.js +0 -153
  107. package/dist/react-native/RaftTypes.js.map +0 -1
  108. package/dist/react-native/RaftUpdateEvents.d.ts +0 -33
  109. package/dist/react-native/RaftUpdateEvents.js +0 -46
  110. package/dist/react-native/RaftUpdateEvents.js.map +0 -1
  111. package/dist/react-native/RaftUpdateManager.d.ts +0 -61
  112. package/dist/react-native/RaftUpdateManager.js +0 -621
  113. package/dist/react-native/RaftUpdateManager.js.map +0 -1
  114. package/dist/react-native/RaftUtils.d.ts +0 -126
  115. package/dist/react-native/RaftUtils.js +0 -467
  116. package/dist/react-native/RaftUtils.js.map +0 -1
  117. package/dist/react-native/RaftWifiTypes.d.ts +0 -23
  118. package/dist/react-native/RaftWifiTypes.js +0 -43
  119. package/dist/react-native/RaftWifiTypes.js.map +0 -1
  120. package/dist/react-native/main.d.ts +0 -25
  121. package/dist/react-native/main.js +0 -51
  122. package/dist/react-native/main.js.map +0 -1
  123. package/eslint.config.mjs +0 -33
  124. package/examples/dashboard/package.json +0 -36
  125. package/examples/dashboard/src/CommandPanel.tsx +0 -147
  126. package/examples/dashboard/src/ConnManager.ts +0 -164
  127. package/examples/dashboard/src/DeviceActionsForm.tsx +0 -133
  128. package/examples/dashboard/src/DeviceAttrsForm.tsx +0 -49
  129. package/examples/dashboard/src/DeviceLineChart.tsx +0 -163
  130. package/examples/dashboard/src/DevicePanel.tsx +0 -166
  131. package/examples/dashboard/src/DevicesPanel.tsx +0 -58
  132. package/examples/dashboard/src/DispLedGrid.tsx +0 -110
  133. package/examples/dashboard/src/DispOneLed.tsx +0 -20
  134. package/examples/dashboard/src/LatencyTest.ts +0 -130
  135. package/examples/dashboard/src/LatencyTestPanel.tsx +0 -92
  136. package/examples/dashboard/src/Main.tsx +0 -234
  137. package/examples/dashboard/src/SettingsManager.ts +0 -67
  138. package/examples/dashboard/src/SettingsScreen.tsx +0 -174
  139. package/examples/dashboard/src/StatusPanel.tsx +0 -71
  140. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +0 -163
  141. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +0 -91
  142. package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +0 -30
  143. package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +0 -91
  144. package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +0 -70
  145. package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +0 -33
  146. package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +0 -342
  147. package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +0 -170
  148. package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +0 -123
  149. package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +0 -207
  150. package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +0 -464
  151. package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +0 -146
  152. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +0 -97
  153. package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +0 -371
  154. package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +0 -20
  155. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +0 -119
  156. package/examples/dashboard/src/index.html +0 -15
  157. package/examples/dashboard/src/index.tsx +0 -13
  158. package/examples/dashboard/src/styles.css +0 -408
  159. package/examples/dashboard/tsconfig.json +0 -18
  160. package/jest.config.js +0 -11
  161. package/src/RaftAttributeHandler.ts +0 -298
  162. package/src/RaftChannel.ts +0 -32
  163. package/src/RaftChannelBLE.native.ts +0 -616
  164. package/src/RaftChannelBLE.web.ts +0 -372
  165. package/src/RaftChannelBLEFactory.ts +0 -13
  166. package/src/RaftChannelBLEScanner.native.ts +0 -184
  167. package/src/RaftChannelSimulated.ts +0 -482
  168. package/src/RaftChannelWebSerial.ts +0 -420
  169. package/src/RaftChannelWebSocket.ts +0 -258
  170. package/src/RaftCommsStats.ts +0 -142
  171. package/src/RaftConnEvents.ts +0 -58
  172. package/src/RaftConnector.ts +0 -743
  173. package/src/RaftCustomAttrHandler.ts +0 -54
  174. package/src/RaftDeviceInfo.ts +0 -102
  175. package/src/RaftDeviceManager.ts +0 -607
  176. package/src/RaftDeviceMgrIF.ts +0 -33
  177. package/src/RaftDeviceMsg.ts +0 -20
  178. package/src/RaftDeviceStates.ts +0 -92
  179. package/src/RaftFileHandler.ts +0 -668
  180. package/src/RaftLog.ts +0 -70
  181. package/src/RaftMiniHDLC.ts +0 -396
  182. package/src/RaftMsgHandler.ts +0 -813
  183. package/src/RaftMsgTrackInfo.ts +0 -51
  184. package/src/RaftProtocolDefs.ts +0 -46
  185. package/src/RaftStreamHandler.ts +0 -328
  186. package/src/RaftStruct.ts +0 -209
  187. package/src/RaftSysTypeManager.ts +0 -60
  188. package/src/RaftSystemType.ts +0 -32
  189. package/src/RaftSystemUtils.ts +0 -487
  190. package/src/RaftTypes.ts +0 -278
  191. package/src/RaftUpdateEvents.ts +0 -48
  192. package/src/RaftUpdateManager.ts +0 -781
  193. package/src/RaftUtils.ts +0 -494
  194. package/src/RaftWifiTypes.ts +0 -36
  195. package/src/main.ts +0 -38
  196. package/testdata/TestDeviceTypeRecs.json +0 -492
  197. package/tsconfig.json +0 -30
  198. 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":"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"}
@@ -1,3 +0,0 @@
1
- export declare function structUnpack(format: string, data: Uint8Array): number[];
2
- export declare function structSizeOf(format: string): number;
3
- export declare function structPack(format: string, values: number[]): Uint8Array;
@@ -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