@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,142 @@
1
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // RaftCommStats
4
+ // Part of RaftJS
5
+ //
6
+ // Rob Dobson & Chris Greening 2020-2024
7
+ // (C) 2020-2024 All rights reserved
8
+ //
9
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
10
+
11
+ export default class RaftCommsStats {
12
+ _msgRxCount = 0;
13
+ _msgRxCountInWindow = 0;
14
+ _msgRxLastCalcMs = 0;
15
+ _msgRxRate = 0;
16
+ _msgTooShort = 0;
17
+ _msgTxCount = 0;
18
+ _msgTxCountInWindow = 0;
19
+ _msgTxLastCalcMs = 0;
20
+ _msgTxRate = 0;
21
+ _msgNumCollisions = 0;
22
+ _msgNumUnmatched = 0;
23
+ _msgRoundtripWorstMs = 0;
24
+ _msgRoundtripBestMs = 0;
25
+ _msgRoundtripLastMs = 0;
26
+ _msgTimeout = 0;
27
+ _msgRetry = 0;
28
+
29
+ _msgNoConnection = 0;
30
+ _streamBytes = 0;
31
+ _fileBytes = 0;
32
+
33
+ clear() {
34
+ this._msgRxCount = 0;
35
+ this._msgRxCountInWindow = 0;
36
+ this._msgRxLastCalcMs = Date.now();
37
+ this._msgRxRate = 0;
38
+ this._msgTooShort = 0;
39
+ this._msgTxCount = 0;
40
+ this._msgTxCountInWindow = 0;
41
+ this._msgTxLastCalcMs = Date.now();
42
+ this._msgTxRate = 0;
43
+ this._msgNumCollisions = 0;
44
+ this._msgNumUnmatched = 0;
45
+ this._msgRoundtripBestMs = 0;
46
+ this._msgRoundtripWorstMs = 0;
47
+ this._msgRoundtripLastMs = 0;
48
+ this._msgTimeout = 0;
49
+ this._msgRetry = 0;
50
+ this._msgNoConnection = 0;
51
+ this._streamBytes = 0;
52
+ this._fileBytes = 0;
53
+ }
54
+
55
+ msgRx(): void {
56
+ this._msgRxCount++;
57
+ this._msgRxCountInWindow++;
58
+ }
59
+
60
+ getMsgRxRate(): number {
61
+ if (this._msgRxLastCalcMs + 1000 < Date.now()) {
62
+ this._msgRxRate =
63
+ (1000.0 * this._msgRxCountInWindow) /
64
+ (Date.now() - this._msgRxLastCalcMs);
65
+ this._msgRxLastCalcMs = Date.now();
66
+ this._msgRxCountInWindow = 0;
67
+ }
68
+ return this._msgRxRate;
69
+ }
70
+
71
+ msgTooShort(): void {
72
+ this._msgTooShort++;
73
+ }
74
+
75
+ msgTx(): void {
76
+ this._msgTxCount++;
77
+ this._msgTxCountInWindow++;
78
+ }
79
+
80
+ getMsgTxRate(): number {
81
+ if (this._msgTxLastCalcMs + 1000 < Date.now()) {
82
+ this._msgTxRate =
83
+ (1000.0 * this._msgTxCountInWindow) /
84
+ (Date.now() - this._msgTxLastCalcMs);
85
+ this._msgTxLastCalcMs = Date.now();
86
+ this._msgTxCountInWindow = 0;
87
+ }
88
+ return this._msgTxRate;
89
+ }
90
+
91
+ getRTWorstMs(): number {
92
+ return this._msgRoundtripWorstMs;
93
+ }
94
+
95
+ getRTLastMs(): number {
96
+ return this._msgRoundtripLastMs;
97
+ }
98
+
99
+ getRTBestMs(): number {
100
+ return this._msgRoundtripBestMs;
101
+ }
102
+
103
+ getRetries(): number {
104
+ return this._msgRetry;
105
+ }
106
+
107
+ recordMsgNumCollision(): void {
108
+ this._msgNumCollisions++;
109
+ }
110
+
111
+ recordMsgNumUnmatched(): void {
112
+ this._msgNumUnmatched++;
113
+ }
114
+
115
+ recordMsgResp(roundTripMs: number): void {
116
+ if (this._msgRoundtripWorstMs < roundTripMs)
117
+ this._msgRoundtripWorstMs = roundTripMs;
118
+ if (this._msgRoundtripBestMs == 0 || this._msgRoundtripBestMs > roundTripMs)
119
+ this._msgRoundtripBestMs = roundTripMs;
120
+ this._msgRoundtripLastMs = roundTripMs;
121
+ }
122
+
123
+ recordMsgTimeout(): void {
124
+ this._msgTimeout++;
125
+ }
126
+
127
+ recordMsgNoConnection(): void {
128
+ this._msgNoConnection++;
129
+ }
130
+
131
+ recordMsgRetry(): void {
132
+ this._msgRetry++;
133
+ }
134
+
135
+ recordStreamBytes(bytes: number): void {
136
+ this._streamBytes += bytes;
137
+ }
138
+
139
+ recordFileBytes(bytes: number): void {
140
+ this._fileBytes += bytes;
141
+ }
142
+ }
@@ -0,0 +1,46 @@
1
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // RaftConnEvents
4
+ // Part of RaftJS
5
+ //
6
+ // Rob Dobson & Chris Greening 2020-2024
7
+ // (C) 2020-2024 All rights reserved
8
+ //
9
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
10
+
11
+ export enum RaftConnEvent {
12
+ CONN_CONNECTING,
13
+ CONN_CONNECTED,
14
+ CONN_CONNECTION_FAILED,
15
+ CONN_DISCONNECTED,
16
+ CONN_REJECTED,
17
+ CONN_ISSUE_DETECTED,
18
+ CONN_ISSUE_RESOLVED,
19
+ CONN_VERIFYING_CORRECT,
20
+ CONN_VERIFIED_CORRECT,
21
+ CONN_GETTING_INFO,
22
+ CONN_GOT_INFO,
23
+ CONN_BLUETOOTH_STATE,
24
+ CONN_STREAMING_ISSUE
25
+ }
26
+
27
+ export const RaftConnEventNames = {
28
+ [RaftConnEvent.CONN_CONNECTING]: 'CONNECTING',
29
+ [RaftConnEvent.CONN_CONNECTED]: 'CONNECTED',
30
+ [RaftConnEvent.CONN_CONNECTION_FAILED]: 'CONNECTION_FAILED',
31
+ [RaftConnEvent.CONN_DISCONNECTED]: 'DISCONNECTED',
32
+ [RaftConnEvent.CONN_REJECTED]: 'REJECTED',
33
+ [RaftConnEvent.CONN_ISSUE_DETECTED]: 'ISSUE_DETECTED',
34
+ [RaftConnEvent.CONN_ISSUE_RESOLVED]: 'ISSUE_RESOLVED',
35
+ [RaftConnEvent.CONN_VERIFYING_CORRECT]: 'VERIFYING_CORRECT',
36
+ [RaftConnEvent.CONN_VERIFIED_CORRECT]: 'VERIFIED_CORRECT',
37
+ [RaftConnEvent.CONN_GETTING_INFO]: 'GETTING_INFO',
38
+ [RaftConnEvent.CONN_GOT_INFO]: 'GOT_INFO',
39
+ [RaftConnEvent.CONN_BLUETOOTH_STATE]: 'BLUETOOTH_STATE',
40
+ [RaftConnEvent.CONN_STREAMING_ISSUE]: 'STREAMING_ISSUE',
41
+ };
42
+
43
+ export type RaftConnEventFn = (
44
+ eventType: RaftConnEvent,
45
+ data?: string[] | string | null,
46
+ ) => void;