@robdobsn/raftjs 1.1.1

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 (149) hide show
  1. package/.editorconfig +14 -0
  2. package/.gitattributes +11 -0
  3. package/.nvmrc +1 -0
  4. package/LICENSE +22 -0
  5. package/README.md +11 -0
  6. package/TODO.md +1 -0
  7. package/dist/RaftAttributeHandler.d.ts +12 -0
  8. package/dist/RaftAttributeHandler.js +241 -0
  9. package/dist/RaftAttributeHandler.js.map +1 -0
  10. package/dist/RaftChannel.d.ts +18 -0
  11. package/dist/RaftChannel.js +12 -0
  12. package/dist/RaftChannel.js.map +1 -0
  13. package/dist/RaftChannelWebBLE.d.ts +38 -0
  14. package/dist/RaftChannelWebBLE.js +274 -0
  15. package/dist/RaftChannelWebBLE.js.map +1 -0
  16. package/dist/RaftChannelWebSerial.d.ts +37 -0
  17. package/dist/RaftChannelWebSerial.js +319 -0
  18. package/dist/RaftChannelWebSerial.js.map +1 -0
  19. package/dist/RaftChannelWebSocket.d.ts +28 -0
  20. package/dist/RaftChannelWebSocket.js +197 -0
  21. package/dist/RaftChannelWebSocket.js.map +1 -0
  22. package/dist/RaftCommsStats.d.ts +39 -0
  23. package/dist/RaftCommsStats.js +128 -0
  24. package/dist/RaftCommsStats.js.map +1 -0
  25. package/dist/RaftConnEvents.d.ts +31 -0
  26. package/dist/RaftConnEvents.js +44 -0
  27. package/dist/RaftConnEvents.js.map +1 -0
  28. package/dist/RaftConnector.d.ts +242 -0
  29. package/dist/RaftConnector.js +613 -0
  30. package/dist/RaftConnector.js.map +1 -0
  31. package/dist/RaftCustomAttrHandler.d.ts +4 -0
  32. package/dist/RaftCustomAttrHandler.js +50 -0
  33. package/dist/RaftCustomAttrHandler.js.map +1 -0
  34. package/dist/RaftDeviceInfo.d.ts +64 -0
  35. package/dist/RaftDeviceInfo.js +36 -0
  36. package/dist/RaftDeviceInfo.js.map +1 -0
  37. package/dist/RaftDeviceManager.d.ts +37 -0
  38. package/dist/RaftDeviceManager.js +450 -0
  39. package/dist/RaftDeviceManager.js.map +1 -0
  40. package/dist/RaftDeviceMsg.d.ts +9 -0
  41. package/dist/RaftDeviceMsg.js +11 -0
  42. package/dist/RaftDeviceMsg.js.map +1 -0
  43. package/dist/RaftDeviceStates.d.ts +33 -0
  44. package/dist/RaftDeviceStates.js +60 -0
  45. package/dist/RaftDeviceStates.js.map +1 -0
  46. package/dist/RaftFileHandler.d.ts +52 -0
  47. package/dist/RaftFileHandler.js +502 -0
  48. package/dist/RaftFileHandler.js.map +1 -0
  49. package/dist/RaftLog.d.ts +22 -0
  50. package/dist/RaftLog.js +63 -0
  51. package/dist/RaftLog.js.map +1 -0
  52. package/dist/RaftMiniHDLC.d.ts +18 -0
  53. package/dist/RaftMiniHDLC.js +383 -0
  54. package/dist/RaftMiniHDLC.js.map +1 -0
  55. package/dist/RaftMsgHandler.d.ts +57 -0
  56. package/dist/RaftMsgHandler.js +480 -0
  57. package/dist/RaftMsgHandler.js.map +1 -0
  58. package/dist/RaftMsgTrackInfo.d.ts +17 -0
  59. package/dist/RaftMsgTrackInfo.js +42 -0
  60. package/dist/RaftMsgTrackInfo.js.map +1 -0
  61. package/dist/RaftProtocolDefs.d.ts +30 -0
  62. package/dist/RaftProtocolDefs.js +48 -0
  63. package/dist/RaftProtocolDefs.js.map +1 -0
  64. package/dist/RaftStreamHandler.d.ts +38 -0
  65. package/dist/RaftStreamHandler.js +257 -0
  66. package/dist/RaftStreamHandler.js.map +1 -0
  67. package/dist/RaftSystemType.d.ts +21 -0
  68. package/dist/RaftSystemType.js +3 -0
  69. package/dist/RaftSystemType.js.map +1 -0
  70. package/dist/RaftSystemUtils.d.ts +136 -0
  71. package/dist/RaftSystemUtils.js +410 -0
  72. package/dist/RaftSystemUtils.js.map +1 -0
  73. package/dist/RaftTypes.d.ts +184 -0
  74. package/dist/RaftTypes.js +157 -0
  75. package/dist/RaftTypes.js.map +1 -0
  76. package/dist/RaftUpdateEvents.d.ts +33 -0
  77. package/dist/RaftUpdateEvents.js +46 -0
  78. package/dist/RaftUpdateEvents.js.map +1 -0
  79. package/dist/RaftUpdateManager.d.ts +61 -0
  80. package/dist/RaftUpdateManager.js +618 -0
  81. package/dist/RaftUpdateManager.js.map +1 -0
  82. package/dist/RaftUtils.d.ts +125 -0
  83. package/dist/RaftUtils.js +454 -0
  84. package/dist/RaftUtils.js.map +1 -0
  85. package/dist/RaftWifiTypes.d.ts +23 -0
  86. package/dist/RaftWifiTypes.js +43 -0
  87. package/dist/RaftWifiTypes.js.map +1 -0
  88. package/dist/TestDataGen.d.ts +7 -0
  89. package/dist/TestDataGen.js +133 -0
  90. package/dist/TestDataGen.js.map +1 -0
  91. package/dist/main.d.ts +18 -0
  92. package/dist/main.js +42 -0
  93. package/dist/main.js.map +1 -0
  94. package/eslint.config.mjs +33 -0
  95. package/examples/dashboard/package.json +39 -0
  96. package/examples/dashboard/src/ConnManager.ts +86 -0
  97. package/examples/dashboard/src/Main.tsx +100 -0
  98. package/examples/dashboard/src/StatusScreen.tsx +72 -0
  99. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +144 -0
  100. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +77 -0
  101. package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +70 -0
  102. package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +33 -0
  103. package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +342 -0
  104. package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +170 -0
  105. package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +123 -0
  106. package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +207 -0
  107. package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +464 -0
  108. package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +146 -0
  109. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +32 -0
  110. package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +371 -0
  111. package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +20 -0
  112. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +113 -0
  113. package/examples/dashboard/src/index.html +15 -0
  114. package/examples/dashboard/src/index.tsx +15 -0
  115. package/examples/dashboard/src/styles.css +122 -0
  116. package/examples/dashboard/tsconfig.json +18 -0
  117. package/jest.config.js +11 -0
  118. package/package.json +50 -0
  119. package/src/RaftAttributeHandler.ts +289 -0
  120. package/src/RaftChannel.ts +30 -0
  121. package/src/RaftChannelWebBLE.ts +342 -0
  122. package/src/RaftChannelWebSerial.ts +408 -0
  123. package/src/RaftChannelWebSocket.ts +245 -0
  124. package/src/RaftCommsStats.ts +142 -0
  125. package/src/RaftConnEvents.ts +46 -0
  126. package/src/RaftConnector.ts +745 -0
  127. package/src/RaftCustomAttrHandler.ts +54 -0
  128. package/src/RaftDeviceInfo.ts +104 -0
  129. package/src/RaftDeviceManager.ts +542 -0
  130. package/src/RaftDeviceMsg.ts +20 -0
  131. package/src/RaftDeviceStates.ts +89 -0
  132. package/src/RaftFileHandler.ts +668 -0
  133. package/src/RaftLog.ts +70 -0
  134. package/src/RaftMiniHDLC.ts +396 -0
  135. package/src/RaftMsgHandler.ts +778 -0
  136. package/src/RaftMsgTrackInfo.ts +51 -0
  137. package/src/RaftProtocolDefs.ts +46 -0
  138. package/src/RaftStreamHandler.ts +328 -0
  139. package/src/RaftSystemType.ts +25 -0
  140. package/src/RaftSystemUtils.ts +487 -0
  141. package/src/RaftTypes.ts +250 -0
  142. package/src/RaftUpdateEvents.ts +48 -0
  143. package/src/RaftUpdateManager.ts +778 -0
  144. package/src/RaftUtils.ts +484 -0
  145. package/src/RaftWifiTypes.ts +36 -0
  146. package/src/TestDataGen.ts +157 -0
  147. package/src/main.ts +28 -0
  148. package/testdata/TestDeviceTypeRecs.json +492 -0
  149. package/tsconfig.json +27 -0
@@ -0,0 +1,242 @@
1
+ import RaftChannel from "./RaftChannel";
2
+ import RaftMsgHandler, { RaftMsgResultCode } from "./RaftMsgHandler";
3
+ import RaftCommsStats from "./RaftCommsStats";
4
+ import { RaftEventFn, RaftOKFail, RaftFileDownloadResult, RaftProgressCBType, RaftBridgeSetupResp, RaftFileDownloadFn } from "./RaftTypes";
5
+ import RaftSystemUtils from "./RaftSystemUtils";
6
+ import { RaftConnEvent } from "./RaftConnEvents";
7
+ import { RaftGetSystemTypeCBType, RaftSystemType } from "./RaftSystemType";
8
+ import { RaftUpdateEvent } from "./RaftUpdateEvents";
9
+ export default class RaftConnector {
10
+ private _getSystemTypeCB;
11
+ private _systemType;
12
+ private _raftChannel;
13
+ private _channelConnMethod;
14
+ private _channelConnLocator;
15
+ private _commsStats;
16
+ private _raftMsgHandler;
17
+ private _raftSystemUtils;
18
+ private readonly _testConnPerfBlockSize;
19
+ private readonly _testConnPerfNumBlocks;
20
+ private readonly _connPerfRsltDelayMs;
21
+ private _retryIfLostEnabled;
22
+ private _retryIfLostForSecs;
23
+ private _retryIfLostIsConnected;
24
+ private _retryIfLostDisconnectTime;
25
+ private readonly _retryIfLostRetryDelayMs;
26
+ private _raftFileHandler;
27
+ private _raftStreamHandler;
28
+ private _onEventFn;
29
+ private _raftUpdateManager;
30
+ /**
31
+ * RaftConnector constructor
32
+ * @param getSystemTypeCB - callback to get system type
33
+ */
34
+ constructor(getSystemTypeCB?: RaftGetSystemTypeCBType | null);
35
+ /**
36
+ * Configure the file handler
37
+ * @param fileBlockSize - size of file blocks to send
38
+ * @param batchAckSize - number of blocks to send before waiting for ack
39
+ * @returns void
40
+ */
41
+ configureFileHandler(fileBlockSize: number, batchAckSize: number): void;
42
+ /**
43
+ * Set event listener
44
+ * @param onEventFn - event listener
45
+ * @returns void
46
+ * */
47
+ setEventListener(onEventFn: RaftEventFn): void;
48
+ /**
49
+ * isConnected
50
+ * @returns boolean - true if connected
51
+ * */
52
+ isConnected(): boolean;
53
+ /**
54
+ * Set try to reconnect if connection lost
55
+ * @param enableRetry - true to enable retry
56
+ * @param retryForSecs - retry for this many seconds
57
+ * @returns void
58
+ * */
59
+ setRetryConnectionIfLost(enableRetry: boolean, retryForSecs: number): void;
60
+ /**
61
+ * Get Raft system type (the type of hardware connected to - determined using the getSystemInfo API)
62
+ * @returns RaftSystemType | null - Raft system type
63
+ * */
64
+ getSystemType(): RaftSystemType | null;
65
+ /**
66
+ * Get connection method
67
+ * @returns string - connection method
68
+ * */
69
+ getConnMethod(): string;
70
+ /**
71
+ * Get connection locator
72
+ * @returns string | object - connection locator
73
+ * */
74
+ getConnLocator(): any | null;
75
+ /**
76
+ * Get Raft channel (this is the channel used for commuinications with the Raft application)
77
+ * @returns RaftChannel | null - Raft channel
78
+ * */
79
+ getRaftChannel(): RaftChannel | null;
80
+ /**
81
+ * Get Raft system utils (access to system information and control)
82
+ * @returns RaftSystemUtils - Raft system utils
83
+ * */
84
+ getRaftSystemUtils(): RaftSystemUtils;
85
+ /**
86
+ * Get communication stats
87
+ * @returns RaftCommsStats - communication stats
88
+ * */
89
+ getCommsStats(): RaftCommsStats;
90
+ /**
91
+ * Get Raft message handler (to allow message sending and receiving)
92
+ * @returns RaftMsgHandler - Raft message handler
93
+ * */
94
+ getRaftMsgHandler(): RaftMsgHandler;
95
+ /**
96
+ * Pause connection
97
+ * @param pause - true to pause, false to resume
98
+ */
99
+ pauseConnection(pause?: boolean): void;
100
+ /**
101
+ * Connect to a Raft application
102
+ *
103
+ * @param {string} method - can be "WebBLE", "WebSocket" or "WebSerial"
104
+ * @param {string | object} locator - either a string (WebSocket URL or serial port) or an object (WebBLE)
105
+ * @returns Promise<boolean>
106
+ *
107
+ */
108
+ connect(method: string, locator: string | object): Promise<boolean>;
109
+ disconnect(): Promise<void>;
110
+ /**
111
+ *
112
+ * sendRICRESTMsg
113
+ * @param commandName command API string
114
+ * @param params parameters (simple name value pairs only) to parameterize trajectory
115
+ * @returns Promise<RaftOKFail>
116
+ *
117
+ */
118
+ sendRICRESTMsg(commandName: string, params: object, bridgeID?: number | undefined): Promise<RaftOKFail>;
119
+ /**
120
+ * onRxReply - handle a reply message
121
+ * @param msgHandle number indicating the message that is being replied to (from the original message)
122
+ * @param msgRsltCode result code
123
+ * @param msgRsltJsonObj result object
124
+ */
125
+ onRxReply(msgHandle: number, msgRsltCode: RaftMsgResultCode, msgRsltJsonObj: object | null): void;
126
+ /**
127
+ * onRxUnnumberedMsg - handle an unnumbered message
128
+ * @param msgRsltJsonObj result object
129
+ */
130
+ onRxUnnumberedMsg(msgRsltJsonObj: {
131
+ [key: string]: number | string;
132
+ }): void;
133
+ /**
134
+ * onRxFileBlock - handle a file block
135
+ * @param filePos file position
136
+ * @param fileBlockData file block data
137
+ */
138
+ onRxFileBlock(filePos: number, fileBlockData: Uint8Array): void;
139
+ /**
140
+ * onRxOtherMsgType - handle other message types
141
+ * @param payload message payload
142
+ * @param frameTimeMs time of frame
143
+ */
144
+ onRxOtherMsgType(payload: Uint8Array, _frameTimeMs: number): void;
145
+ /**
146
+ * sendFile - send a file
147
+ * @param fileName name of file to send
148
+ * @param fileContents file contents
149
+ * @param progressCallback callback to receive progress updates
150
+ * @returns Promise<boolean> - true if file sent successfully
151
+ */
152
+ sendFile(fileName: string, fileContents: Uint8Array, progressCallback: ((sent: number, total: number, progress: number) => void) | undefined): Promise<boolean>;
153
+ /**
154
+ * streamAudio - stream audio
155
+ * @param streamContents audio data
156
+ * @param clearExisting true to clear existing audio
157
+ * @param duration duration of audio
158
+ */
159
+ streamAudio(streamContents: Uint8Array, clearExisting: boolean, duration: number): void;
160
+ /**
161
+ * isStreamStarting - check if stream is starting
162
+ */
163
+ isStreamStarting(): boolean;
164
+ /**
165
+ * fsGetContents - get file contents
166
+ * @param fileName name of file to get
167
+ * @param fileSource source of file to get (e.g. "fs" or "bridgeserial1", if omitted defaults to "fs")
168
+ * @param progressCallback callback to receive progress updates
169
+ * @returns Promise<RaftFileDownloadResult>
170
+ */
171
+ fsGetContents(fileName: string, fileSource: string, progressCallback: RaftProgressCBType | undefined): Promise<RaftFileDownloadResult>;
172
+ /**
173
+ * setLegacySoktoMode - set legacy sokto mode
174
+ * @param legacyMode true to set legacy mode
175
+ */
176
+ setLegacySoktoMode(legacyMode: boolean): void;
177
+ /**
178
+ * createCommsBridge - create a comms bridge
179
+ * @param bridgeSource source of bridge (e.g. "Serial1")
180
+ * @param bridgeName name of bridge
181
+ * @param idleCloseSecs idle close time seconds
182
+ * @returns Promise<RaftBridgeSetupResp>
183
+ */
184
+ createCommsBridge(bridgeSource: string, bridgeName: string, idleCloseSecs?: number): Promise<RaftBridgeSetupResp>;
185
+ /**
186
+ * ParkMiller random number generator
187
+ * @param seed
188
+ * @returns number
189
+ */
190
+ private parkmiller_next;
191
+ /**
192
+ * checkConnPerformance - check connection performance
193
+ * @returns Promise<number | undefined> - connection performance
194
+ */
195
+ checkConnPerformance(): Promise<number | undefined>;
196
+ /**
197
+ * onConnEvent - handle connection event
198
+ * @param eventEnum connection event enumeration
199
+ * @param data data associated with event
200
+ * @returns void
201
+ */
202
+ onConnEvent(eventEnum: RaftConnEvent, data?: object | string | null | undefined): void;
203
+ /**
204
+ * Retry connection
205
+ */
206
+ private _retryConnection;
207
+ /**
208
+ * Connect to channel
209
+ * @returns Promise<boolean> - true if connected
210
+ */
211
+ private _connectToChannel;
212
+ /**
213
+ * onUpdateEvent - handle update event
214
+ * @param eventEnum
215
+ * @param data
216
+ */
217
+ _onUpdateEvent(eventEnum: RaftUpdateEvent, data?: object | string | null | undefined): void;
218
+ /**
219
+ * otaUpdateCheck - check for OTA update
220
+ * @returns Promise<RaftUpdateEvent> - update event
221
+ * */
222
+ otaUpdateCheck(): Promise<RaftUpdateEvent>;
223
+ /**
224
+ * otaUpdateStart - start OTA update
225
+ * @returns Promise<RaftUpdateEvent> - update event
226
+ * */
227
+ otaUpdateStart(): Promise<RaftUpdateEvent>;
228
+ /**
229
+ * otaUpdateCancel - cancel OTA update
230
+ * @returns Promise<void>
231
+ * */
232
+ otaUpdateCancel(): Promise<void>;
233
+ /**
234
+ * setupUpdateManager - setup the update manager
235
+ * @param appVersion - app version
236
+ * @param appUpdateURL - app update URL
237
+ * @param firmwareBaseURL - firmware base URL
238
+ * @param fileDownloader - file downloader
239
+ * @returns void
240
+ * */
241
+ setupUpdateManager(appVersion: string, appUpdateURL: string, firmwareBaseURL: string, fileDownloader: RaftFileDownloadFn): void;
242
+ }