@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,92 +0,0 @@
1
- // src/LatencyTestPanel.tsx
2
- import React, { useEffect, useState } from 'react';
3
- import './styles.css';
4
- import ConnManager from "./ConnManager";
5
- import LatencyTest from './LatencyTest';
6
- import SettingsManager from './SettingsManager';
7
- import { DeviceAttributeState, DeviceState } from '../../../src/RaftDeviceStates';
8
-
9
- const connManager = ConnManager.getInstance();
10
- const settingsManager = SettingsManager.getInstance();
11
-
12
- const LatencyTestPanel = () => {
13
-
14
- const latencyTest = LatencyTest.getInstance();
15
- const [stats, setStats] = useState(latencyTest.getLatencyStats());
16
- const [isWhite, setIsWhite] = useState<boolean>(true);
17
-
18
- const attributeName = settingsManager.getSetting('latencyAttributeName');
19
-
20
- useEffect(() => {
21
- const deviceManager = connManager.getConnector().getSystemType()?.deviceMgrIF;
22
- if (!deviceManager) {
23
- return;
24
- }
25
-
26
- const onNewDevice = (deviceKey: string, newDeviceState: DeviceState) => {
27
- console.log(`New device: ${deviceKey}`);
28
- };
29
-
30
- const onNewAttribute = (deviceKey: string, attribute: DeviceAttributeState) => {
31
- console.log(`New attribute: ${deviceKey}`);
32
- };
33
-
34
- const onNewAttributeData = (deviceKey: string, attribute: DeviceAttributeState) => {
35
- // console.log(`New attribute data: ${deviceKey}`);
36
- if (attribute.name === attributeName) {
37
- latencyTest.processAttrValues(attribute, Date.now());
38
- setStats(latencyTest.getLatencyStats());
39
- }
40
- };
41
-
42
- deviceManager.addNewDeviceCallback(onNewDevice);
43
- deviceManager.addNewAttributeCallback(onNewAttribute);
44
- deviceManager.addAttributeDataCallback(onNewAttributeData);
45
-
46
- // Cleanup callbacks when the component unmounts
47
- return () => {
48
- deviceManager.removeNewDeviceCallback(onNewDevice);
49
- deviceManager.removeNewAttributeCallback(onNewAttribute);
50
- deviceManager.removeAttributeDataCallback(onNewAttributeData);
51
- };
52
- }, [latencyTest, attributeName]);
53
-
54
- useEffect(() => {
55
- const interval = setInterval(() => {
56
- // Toggle `isWhite` and record the color change
57
- setIsWhite((prevIsWhite) => {
58
- const newColor = !prevIsWhite ? 'white' : 'black';
59
- latencyTest.recordColorChange(newColor, new Date().getTime());
60
- return !prevIsWhite;
61
- });
62
- }, 2500);
63
- return () => clearInterval(interval);
64
- }, []);
65
-
66
- return (
67
- <div className="info-boxes">
68
- <div className="info-box">
69
- <h3>Latency Stats</h3>
70
- <div style={{ display: 'flex', alignItems: 'center' }}>
71
- <div
72
- className="latency-test-panel"
73
- style={{
74
- width: '200px',
75
- height: '150px',
76
- backgroundColor: isWhite ? '#fff' : '#000',
77
- border: '1px solid #666',
78
- borderRadius: '8px',
79
- marginRight: '20px',
80
- }}
81
- />
82
- <div>
83
- <div>Mean Latency: {stats.meanLatency ? `${stats.meanLatency.toFixed(1)} ms` : 'N/A'}</div>
84
- <div>Std Dev: {stats.stdDevLatency ? `${stats.stdDevLatency.toFixed(1)} ms` : 'N/A'}</div>
85
- </div>
86
- </div>
87
- </div>
88
- </div>
89
- );
90
- };
91
-
92
- export default LatencyTestPanel;
@@ -1,234 +0,0 @@
1
- import React, { useEffect, useState, useRef } from 'react';
2
- import './styles.css';
3
- import SettingsScreen from './SettingsScreen';
4
- import ConnManager from './ConnManager';
5
- import {
6
- RaftConnEvent,
7
- RaftUpdateEvent,
8
- RaftPublishEvent,
9
- RaftSysTypeManager,
10
- } from '../../../src/main';
11
- import StatusPanel from './StatusPanel';
12
- import DevicesPanel from './DevicesPanel';
13
- import CommandPanel from './CommandPanel';
14
- import LatencyTestPanel from './LatencyTestPanel';
15
- import SettingsManager from './SettingsManager';
16
-
17
- const sysTypeManager = RaftSysTypeManager.getInstance();
18
- const connManager = ConnManager.getInstance();
19
-
20
- export default function Main() {
21
- const [connectionStatus, setConnectionStatus] = useState<RaftConnEvent>(
22
- RaftConnEvent.CONN_DISCONNECTED
23
- );
24
- const [connectionTime, setConnectionTime] = useState<Date | null>(null);
25
- const [elapsedTime, setElapsedTime] = useState<string | null>(null);
26
- const [menuOpen, setMenuOpen] = useState(false);
27
- const [showSettings, setShowSettings] = useState(false);
28
- const menuRef = useRef<HTMLDivElement>(null);
29
- const settingsManager = SettingsManager.getInstance();
30
- const [latencyTestEnabled, setLatencyTestEnabled] = useState(
31
- settingsManager.getSetting('latencyTest')
32
- );
33
-
34
- const [ipAddress, setIpAddress] = useState<string>(
35
- localStorage.getItem('lastIpAddress') || ''
36
- );
37
-
38
- const [serialNo, setSerialNo] = useState<string>('');
39
-
40
- const handleConnect = () => {
41
- if (ipAddress.trim() === '') {
42
- console.error('No IP address entered');
43
- return;
44
- }
45
- connManager.connect('WebSocket', ipAddress, [], null);
46
- localStorage.setItem('lastIpAddress', ipAddress);
47
- };
48
-
49
- const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
50
- if (event.key === 'Enter') {
51
- handleConnect();
52
- }
53
- };
54
-
55
- useEffect(() => {
56
- const listener = (
57
- eventType: string,
58
- eventEnum: RaftConnEvent | RaftUpdateEvent | RaftPublishEvent,
59
- eventName: string,
60
- data?: object | string | null
61
- ) => {
62
- if (eventType === 'conn') {
63
- if (
64
- eventEnum === RaftConnEvent.CONN_CONNECTED ||
65
- eventEnum === RaftConnEvent.CONN_DISCONNECTED
66
- ) {
67
- setConnectionStatus(eventEnum);
68
- setConnectionTime(new Date());
69
- }
70
- }
71
- };
72
-
73
- connManager.setConnectionEventListener(listener);
74
-
75
- return () => {
76
- connManager.setConnectionEventListener(() => { });
77
- };
78
- }, []);
79
-
80
- useEffect(() => {
81
- const handleClickOutside = (event: MouseEvent) => {
82
- if (menuRef.current && !menuRef.current.contains(event.target as Node)) {
83
- setMenuOpen(false);
84
- }
85
- };
86
- document.addEventListener('mousedown', handleClickOutside);
87
- return () => {
88
- document.removeEventListener('mousedown', handleClickOutside);
89
- };
90
- }, []);
91
-
92
- useEffect(() => {
93
- const interval = setInterval(() => {
94
- setLatencyTestEnabled(settingsManager.getSetting('latencyTest'));
95
- }, 100);
96
- return () => clearInterval(interval);
97
- }, []);
98
-
99
- useEffect(() => {
100
- if (connectionStatus === RaftConnEvent.CONN_CONNECTED && connectionTime) {
101
- const interval = setInterval(() => {
102
- const now = new Date();
103
- const elapsed = now.getTime() - connectionTime.getTime();
104
-
105
- const hours = Math.floor(elapsed / 3600000).toString().padStart(2, '0');
106
- const minutes = Math.floor((elapsed % 3600000) / 60000).toString().padStart(2, '0');
107
- const seconds = Math.floor((elapsed % 60000) / 1000).toString().padStart(2, '0');
108
- const milliseconds = (elapsed % 1000).toString().padStart(3, '0');
109
-
110
- setElapsedTime(`${hours}:${minutes}:${seconds}:${milliseconds}`);
111
- }, 50);
112
-
113
- return () => clearInterval(interval);
114
- } else {
115
- setElapsedTime(null);
116
- }
117
- }, [connectionStatus, connectionTime]);
118
-
119
- return (
120
- <div className="content-outer">
121
- {showSettings ? (
122
- <SettingsScreen onBack={() => setShowSettings(false)} />
123
- ) : (
124
- <>
125
- <div className="header">
126
- <h1>RaftJS Dashboard</h1>
127
- <div
128
- className="menu-icon header-menu-icon"
129
- onClick={() => setMenuOpen(!menuOpen)}
130
- >
131
-
132
- </div>
133
- {menuOpen && (
134
- <div className="dropdown-menu" ref={menuRef}>
135
- <div
136
- className="menu-item"
137
- onClick={() => {
138
- setMenuOpen(false);
139
- setShowSettings(true);
140
- }}
141
- >
142
- Settings
143
- </div>
144
- </div>
145
- )}
146
- </div>
147
- <div className="content-body">
148
- {connectionStatus === RaftConnEvent.CONN_CONNECTED ? (
149
- <>
150
- <div className="connected-panel">
151
- <div className="info-boxes">
152
- <div className="info-box">
153
- <div className="conn-indication">
154
- <h3>Connected</h3>
155
- </div>
156
- <div>
157
- <button
158
- className="action-button"
159
- onClick={() => connManager.disconnect()}
160
- >
161
- Disconnect
162
- </button>
163
- </div>
164
- <div>
165
- {elapsedTime && <p>{elapsedTime}</p>}
166
- </div>
167
- </div>
168
- </div>
169
- <StatusPanel />
170
- {latencyTestEnabled && <LatencyTestPanel />}
171
- <CommandPanel />
172
- </div>
173
- <DevicesPanel />
174
- </>
175
- ) : (
176
- <>
177
- <div className="info-boxes">
178
- <div className="info-box">
179
- <h3>WebSocket</h3>
180
- <input
181
- className="ip-addr-input"
182
- id="ip-addr"
183
- type="text"
184
- placeholder="IP Address"
185
- value={ipAddress}
186
- onChange={(e) => setIpAddress(e.target.value)}
187
- onKeyDown={handleKeyDown}
188
- />
189
- <button
190
- className="action-button"
191
- onClick={handleConnect}
192
- >
193
- Connect
194
- </button>
195
- </div>
196
- <div className="info-box">
197
- <h3>WebBLE</h3>
198
- <input
199
- className="serial-no-input"
200
- id="serial-no"
201
- type="text"
202
- placeholder="Serial No (ignored if empty)"
203
- value={serialNo}
204
- onChange={(e) => setSerialNo(e.target.value)}
205
- />
206
- <button
207
- className="action-button"
208
- onClick={() => {
209
- connManager.connect('WebBLE', '', sysTypeManager.getAllServiceUUIDs(), serialNo);
210
- }}
211
- >
212
- Connect
213
- </button>
214
- </div>
215
- <div className="info-box">
216
- <h3>WebSerial</h3>
217
- <button
218
- className="action-button"
219
- onClick={() => {
220
- connManager.connect('WebSerial', '', [], null);
221
- }}
222
- >
223
- Connect
224
- </button>
225
- </div>
226
- </div>
227
- </>
228
- )}
229
- </div>
230
- </>
231
- )}
232
- </div>
233
- );
234
- }
@@ -1,67 +0,0 @@
1
- export type Settings = {
2
- showCharts: boolean;
3
- maxChartDataPoints: number;
4
- maxDatapointsToStore: number;
5
- latencyTest: boolean;
6
- latencyAttributeName: string;
7
- latencyChangeThreshold: number;
8
- };
9
-
10
- class SettingsManager {
11
- private static instance: SettingsManager;
12
- private settings: Settings;
13
- private storageKey = "RaftJS_Settings";
14
- private maxChartDataPoints_default = 50;
15
- private maxDatapointsToStore_default = 1000;
16
-
17
- private constructor() {
18
- // Load settings from localStorage or use default values
19
- const savedSettings = localStorage.getItem(this.storageKey);
20
- this.settings = savedSettings
21
- ? JSON.parse(savedSettings)
22
- : {
23
- latencyTest: false,
24
- showCharts: true,
25
- maxChartDataPoints: this.maxChartDataPoints_default,
26
- maxDatapointsToStore: this.maxDatapointsToStore_default,
27
- };
28
- }
29
-
30
- static getInstance(): SettingsManager {
31
- if (!SettingsManager.instance) {
32
- SettingsManager.instance = new SettingsManager();
33
- }
34
- return SettingsManager.instance;
35
- }
36
-
37
- getSetting<K extends keyof Settings>(key: K): Settings[K] {
38
- return this.settings[key];
39
- }
40
-
41
- setSetting<K extends keyof Settings>(key: K, value: Settings[K]): void {
42
- this.settings[key] = value;
43
- this.saveSettings();
44
- }
45
-
46
- getAllSettings(): Settings {
47
- return this.settings;
48
- }
49
-
50
- // Save settings to localStorage
51
- private saveSettings(): void {
52
- localStorage.setItem(this.storageKey, JSON.stringify(this.settings));
53
- }
54
-
55
- // Reset to default settings
56
- resetSettings(): void {
57
- this.settings = {
58
- latencyTest: false,
59
- showCharts: true,
60
- maxChartDataPoints: this.maxChartDataPoints_default,
61
- maxDatapointsToStore: this.maxDatapointsToStore_default,
62
- };
63
- this.saveSettings();
64
- }
65
- }
66
-
67
- export default SettingsManager;
@@ -1,174 +0,0 @@
1
- // src/SettingsScreen.tsx
2
- import React, { useState, useEffect } from 'react';
3
- import SettingsManager from './SettingsManager';
4
- import ConnManager from './ConnManager';
5
-
6
- const connManager = ConnManager.getInstance();
7
-
8
- const SettingsScreen = ({ onBack }: { onBack: () => void }) => {
9
- const settingsManager = SettingsManager.getInstance();
10
-
11
- const [latencyTest, setLatencyTest] = useState<boolean>(
12
- settingsManager.getSetting('latencyTest')
13
- );
14
- const [showCharts, setShowCharts] = useState<boolean>(
15
- settingsManager.getSetting('showCharts')
16
- );
17
- const [maxChartDataPoints, setMaxChartDataPoints] = useState<number>(
18
- settingsManager.getSetting('maxChartDataPoints')
19
- );
20
- const [maxDatapointsToStore, setMaxDatapointsToStore] = useState<number>(
21
- settingsManager.getSetting('maxDatapointsToStore')
22
- );
23
- const [latencyAttributeName, setLatencyAttributeName] = useState<string>(
24
- settingsManager.getSetting('latencyAttributeName') || 'amb0'
25
- );
26
- const [latencyChangeThreshold, setLatencyChangeThreshold] = useState<number>(
27
- settingsManager.getSetting('latencyChangeThreshold') || 100
28
- );
29
-
30
- const handleSaveAndReturn = () => {
31
- // Save settings to SettingsManager
32
- settingsManager.setSetting('latencyTest', latencyTest);
33
- settingsManager.setSetting('showCharts', showCharts);
34
- settingsManager.setSetting('maxChartDataPoints', maxChartDataPoints);
35
- settingsManager.setSetting('maxDatapointsToStore', maxDatapointsToStore);
36
-
37
- // Log and update maxDatapointsToStore in DeviceManager
38
- console.log(
39
- `Set maxDatapointsToStore to ${maxDatapointsToStore} ` +
40
- `${connManager.getConnector().getSystemType()} ` +
41
- `${connManager.getConnector().getSystemType()?.deviceMgrIF}` +
42
- `${connManager.getConnector().getSystemType()?.deviceMgrIF?.setMaxDataPointsToStore}`
43
- );
44
-
45
- connManager.getConnector().getSystemType()?.deviceMgrIF?.setMaxDataPointsToStore(maxDatapointsToStore);
46
-
47
-
48
- if (latencyTest) {
49
- settingsManager.setSetting('latencyAttributeName', latencyAttributeName);
50
- settingsManager.setSetting('latencyChangeThreshold', latencyChangeThreshold);
51
- }
52
-
53
- onBack();
54
- };
55
-
56
- return (
57
- <div className="content-outer">
58
- <div className="header">
59
- <h1>RaftJS Dashboard Settings</h1>
60
- </div>
61
- <div className="content-body">
62
- <div className="info-boxes">
63
- <div className="info-box">
64
-
65
- <div className="settings-item">
66
- <label>
67
- <input
68
- type="checkbox"
69
- checked={showCharts}
70
- onChange={(e) => setShowCharts(e.target.checked)}
71
- />
72
- Show Charts
73
- </label>
74
- </div>
75
-
76
- <div className="settings-item">
77
- <label>
78
- Max Chart Points
79
- <input
80
- type="number"
81
- min="1"
82
- max="500"
83
- value={maxChartDataPoints}
84
- onChange={(e) =>
85
- setMaxChartDataPoints(
86
- Math.min(parseInt(e.target.value, 10) || 1, 500)
87
- )
88
- }
89
- style={{ width: '50px', marginLeft: '10px' }}
90
- />
91
- </label>
92
- </div>
93
-
94
- <div className="settings-item">
95
- <label>
96
- Max Stored Points
97
- <input
98
- type="number"
99
- min="1"
100
- max="100000"
101
- value={maxDatapointsToStore}
102
- onChange={(e) =>
103
- setMaxDatapointsToStore(
104
- Math.min(parseInt(e.target.value, 10) || 1, 100000)
105
- )
106
- }
107
- style={{ width: '50px', marginLeft: '10px' }}
108
- />
109
- </label>
110
- </div>
111
-
112
- <div className="settings-item">
113
- <label>
114
- <input
115
- type="checkbox"
116
- checked={latencyTest}
117
- onChange={(e) => setLatencyTest(e.target.checked)}
118
- />
119
- Latency Test
120
- </label>
121
- </div>
122
-
123
- {latencyTest && (
124
- <>
125
- <div className="settings-item">
126
- <label>
127
- Attribute Name
128
- <input
129
- type="text"
130
- value={latencyAttributeName}
131
- onChange={(e) => setLatencyAttributeName(e.target.value)}
132
- style={{ marginLeft: '10px' }}
133
- />
134
- </label>
135
- </div>
136
- <div className="settings-item">
137
- <label>
138
- Change Threshold
139
- <input
140
- type="number"
141
- min="1"
142
- value={latencyChangeThreshold}
143
- onChange={(e) =>
144
- setLatencyChangeThreshold(parseInt(e.target.value, 10) || 1)
145
- }
146
- style={{ width: '60px', marginLeft: '10px' }}
147
- />
148
- </label>
149
- </div>
150
- </>
151
- )}
152
-
153
- <button className="action-button" onClick={handleSaveAndReturn}>
154
- Save and Return
155
- </button>
156
-
157
- <button
158
- className="action-button"
159
- style={{ marginTop: '10px' }}
160
- onClick={() => {
161
- settingsManager.resetSettings();
162
- window.location.reload();
163
- }}
164
- >
165
- Reset to Defaults
166
- </button>
167
- </div>
168
- </div>
169
- </div>
170
- </div>
171
- );
172
- };
173
-
174
- export default SettingsScreen;
@@ -1,71 +0,0 @@
1
- import React, { useEffect, useState } from 'react';
2
- import './styles.css';
3
- import { RaftSystemInfo } from "../../../src/main";
4
- import ConnManager from "./ConnManager";
5
-
6
- const connManager = ConnManager.getInstance();
7
-
8
- export default function StatusPanel() {
9
- const [systemInfo, setSystemInfo] = useState<RaftSystemInfo>(new RaftSystemInfo());
10
-
11
- // Use useEffect to fetch system info when the component mounts
12
- useEffect(() => {
13
- if (connManager.isConnected()) {
14
- connManager.getConnector().getRaftSystemUtils().getSystemInfo().then((sysInfo: RaftSystemInfo) => {
15
- console.log(`System Info: ${JSON.stringify(sysInfo)}`);
16
- setSystemInfo(sysInfo);
17
- });
18
- }
19
- }, []); // Empty dependency == on component mount
20
-
21
- return (
22
- <div className="info-boxes">
23
-
24
- <div className="info-box">
25
- <h3>SysInfo</h3>
26
- {
27
- (systemInfo !== undefined) && (systemInfo.validMs) && (systemInfo.validMs > 0) ?
28
- <div className="info">
29
- <div className="info-line">
30
- <div className="info-label">System Name:</div>
31
- <div className="info-value">{systemInfo.SystemName}</div>
32
- </div>
33
-
34
- <div className="info-line">
35
- <div className="info-label">System Version:</div>
36
- <div className="info-value">{systemInfo.SystemVersion}</div>
37
- </div>
38
-
39
- <div className="info-line">
40
- <div className="info-label">HwRev:</div>
41
- <div className="info-value">{systemInfo.HwRev}</div>
42
- </div>
43
-
44
- <div className="info-line">
45
- <div className="info-label">MAC:</div>
46
- <div className="info-value">{systemInfo.MAC}</div>
47
- </div>
48
-
49
- <div className="info-line">
50
- <div className="info-label">SerialNo:</div>
51
- <div className="info-value">{systemInfo.SerialNo}</div>
52
- </div>
53
-
54
- <div className="info-line">
55
- <div className="info-label">Friendly:</div>
56
- <div className="info-value">{systemInfo.Friendly}</div>
57
- </div>
58
- </div>
59
- :
60
- <div className="info">
61
- <div className="info-line">
62
- <div className="info-label">System Info:</div>
63
- <div className="info-value">Not available</div>
64
- </div>
65
- </div>
66
- }
67
- </div>
68
- </div>
69
- );
70
-
71
- }