@robotical/raftjs 1.3.5 → 1.4.0

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 (128) hide show
  1. package/dist/react-native/RaftAttributeHandler.d.ts +1 -1
  2. package/dist/react-native/RaftAttributeHandler.js +18 -10
  3. package/dist/react-native/RaftAttributeHandler.js.map +1 -1
  4. package/dist/react-native/RaftChannelBLE.native.d.ts +11 -11
  5. package/dist/react-native/RaftChannelBLE.native.js +61 -41
  6. package/dist/react-native/RaftChannelBLE.native.js.map +1 -1
  7. package/dist/react-native/RaftChannelBLE.web.d.ts +3 -4
  8. package/dist/react-native/RaftChannelBLE.web.js +7 -8
  9. package/dist/react-native/RaftChannelBLE.web.js.map +1 -1
  10. package/dist/react-native/RaftChannelBLEScanner.native.d.ts +6 -6
  11. package/dist/react-native/RaftChannelBLEScanner.native.js +38 -46
  12. package/dist/react-native/RaftChannelBLEScanner.native.js.map +1 -1
  13. package/dist/react-native/RaftConnector.d.ts +3 -3
  14. package/dist/react-native/RaftConnector.js +4 -4
  15. package/dist/react-native/RaftConnector.js.map +1 -1
  16. package/dist/react-native/RaftCustomAttrHandler.d.ts +1 -1
  17. package/dist/react-native/RaftCustomAttrHandler.js +4 -4
  18. package/dist/react-native/RaftCustomAttrHandler.js.map +1 -1
  19. package/dist/react-native/RaftDeviceInfo.d.ts +3 -0
  20. package/dist/react-native/RaftDeviceManager.d.ts +16 -11
  21. package/dist/react-native/RaftDeviceManager.js +196 -50
  22. package/dist/react-native/RaftDeviceManager.js.map +1 -1
  23. package/dist/react-native/RaftDeviceMgrIF.d.ts +9 -6
  24. package/dist/react-native/RaftDeviceStates.d.ts +5 -1
  25. package/dist/react-native/RaftDeviceStates.js +3 -3
  26. package/dist/react-native/RaftDeviceStates.js.map +1 -1
  27. package/dist/react-native/RaftMsgHandler.d.ts +1 -1
  28. package/dist/react-native/RaftMsgHandler.js +1 -2
  29. package/dist/react-native/RaftMsgHandler.js.map +1 -1
  30. package/dist/react-native/RaftStruct.d.ts +3 -0
  31. package/dist/react-native/RaftStruct.js +208 -0
  32. package/dist/react-native/RaftStruct.js.map +1 -0
  33. package/dist/react-native/RaftSysTypeManager.d.ts +14 -0
  34. package/dist/react-native/RaftSysTypeManager.js +53 -0
  35. package/dist/react-native/RaftSysTypeManager.js.map +1 -0
  36. package/dist/react-native/RaftSystemType.d.ts +3 -0
  37. package/dist/react-native/RaftTypes.d.ts +14 -15
  38. package/dist/react-native/RaftTypes.js +13 -50
  39. package/dist/react-native/RaftTypes.js.map +1 -1
  40. package/dist/react-native/RaftUpdateManager.js +6 -3
  41. package/dist/react-native/RaftUpdateManager.js.map +1 -1
  42. package/dist/react-native/RaftUtils.d.ts +1 -0
  43. package/dist/react-native/RaftUtils.js +17 -4
  44. package/dist/react-native/RaftUtils.js.map +1 -1
  45. package/dist/react-native/main.d.ts +2 -1
  46. package/dist/react-native/main.js +4 -4
  47. package/dist/react-native/main.js.map +1 -1
  48. package/dist/web/RaftAttributeHandler.d.ts +1 -1
  49. package/dist/web/RaftAttributeHandler.js +18 -10
  50. package/dist/web/RaftAttributeHandler.js.map +1 -1
  51. package/dist/web/RaftChannelBLE.web.d.ts +3 -4
  52. package/dist/web/RaftChannelBLE.web.js +7 -8
  53. package/dist/web/RaftChannelBLE.web.js.map +1 -1
  54. package/dist/web/RaftConnector.d.ts +3 -3
  55. package/dist/web/RaftConnector.js +4 -4
  56. package/dist/web/RaftConnector.js.map +1 -1
  57. package/dist/web/RaftCustomAttrHandler.d.ts +1 -1
  58. package/dist/web/RaftCustomAttrHandler.js +4 -4
  59. package/dist/web/RaftCustomAttrHandler.js.map +1 -1
  60. package/dist/web/RaftDeviceInfo.d.ts +3 -0
  61. package/dist/web/RaftDeviceManager.d.ts +16 -11
  62. package/dist/web/RaftDeviceManager.js +196 -50
  63. package/dist/web/RaftDeviceManager.js.map +1 -1
  64. package/dist/web/RaftDeviceMgrIF.d.ts +9 -6
  65. package/dist/web/RaftDeviceStates.d.ts +5 -1
  66. package/dist/web/RaftDeviceStates.js +3 -3
  67. package/dist/web/RaftDeviceStates.js.map +1 -1
  68. package/dist/web/RaftMsgHandler.d.ts +1 -1
  69. package/dist/web/RaftMsgHandler.js +1 -2
  70. package/dist/web/RaftMsgHandler.js.map +1 -1
  71. package/dist/web/RaftStruct.d.ts +3 -0
  72. package/dist/web/RaftStruct.js +208 -0
  73. package/dist/web/RaftStruct.js.map +1 -0
  74. package/dist/web/RaftSysTypeManager.d.ts +14 -0
  75. package/dist/web/RaftSysTypeManager.js +53 -0
  76. package/dist/web/RaftSysTypeManager.js.map +1 -0
  77. package/dist/web/RaftSystemType.d.ts +3 -0
  78. package/dist/web/RaftTypes.d.ts +14 -15
  79. package/dist/web/RaftTypes.js +13 -50
  80. package/dist/web/RaftTypes.js.map +1 -1
  81. package/dist/web/RaftUpdateManager.js +6 -3
  82. package/dist/web/RaftUpdateManager.js.map +1 -1
  83. package/dist/web/RaftUtils.d.ts +1 -0
  84. package/dist/web/RaftUtils.js +17 -4
  85. package/dist/web/RaftUtils.js.map +1 -1
  86. package/dist/web/main.d.ts +2 -1
  87. package/dist/web/main.js +4 -4
  88. package/dist/web/main.js.map +1 -1
  89. package/examples/dashboard/package.json +8 -15
  90. package/examples/dashboard/src/ConnManager.ts +18 -14
  91. package/examples/dashboard/src/DeviceActionsForm.tsx +49 -49
  92. package/examples/dashboard/src/DeviceLineChart.tsx +44 -20
  93. package/examples/dashboard/src/DevicePanel.tsx +33 -2
  94. package/examples/dashboard/src/DevicesPanel.tsx +5 -4
  95. package/examples/dashboard/src/LatencyTest.ts +130 -0
  96. package/examples/dashboard/src/LatencyTestPanel.tsx +92 -0
  97. package/examples/dashboard/src/Main.tsx +191 -73
  98. package/examples/dashboard/src/SettingsManager.ts +67 -0
  99. package/examples/dashboard/src/SettingsScreen.tsx +174 -0
  100. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +14 -8
  101. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +12 -5
  102. package/examples/dashboard/src/SystemTypeGeneric/StateInfoGeneric.ts +30 -0
  103. package/examples/dashboard/src/SystemTypeGeneric/SystemTypeGeneric.ts +91 -0
  104. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +23 -4
  105. package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +1 -1
  106. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +5 -2
  107. package/examples/dashboard/src/index.html +2 -2
  108. package/examples/dashboard/src/index.tsx +0 -2
  109. package/examples/dashboard/src/styles.css +14 -0
  110. package/package.json +6 -14
  111. package/src/RaftAttributeHandler.ts +23 -14
  112. package/src/RaftChannelBLE.native.ts +77 -53
  113. package/src/RaftChannelBLE.web.ts +8 -8
  114. package/src/RaftChannelBLEScanner.native.ts +38 -44
  115. package/src/RaftConnector.ts +5 -5
  116. package/src/RaftCustomAttrHandler.ts +5 -5
  117. package/src/RaftDeviceInfo.ts +3 -0
  118. package/src/RaftDeviceManager.ts +236 -65
  119. package/src/RaftDeviceMgrIF.ts +11 -6
  120. package/src/RaftDeviceStates.ts +7 -3
  121. package/src/RaftMsgHandler.ts +1 -2
  122. package/src/RaftStruct.ts +209 -0
  123. package/src/RaftSysTypeManager.ts +60 -0
  124. package/src/RaftSystemType.ts +3 -0
  125. package/src/RaftTypes.ts +30 -33
  126. package/src/RaftUpdateManager.ts +6 -3
  127. package/src/RaftUtils.ts +14 -4
  128. package/src/main.ts +2 -2
@@ -0,0 +1,209 @@
1
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // RaftStruct
4
+ // Part of RaftJS
5
+ //
6
+ // Rob Dobson 2024
7
+ // (C) 2024 All rights reserved
8
+ //
9
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
10
+
11
+ export function structUnpack(format: string, data: Uint8Array): number[] {
12
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
13
+ const results: number[] = [];
14
+ let offset = 0;
15
+ let littleEndian = false;
16
+
17
+ for (const char of format) {
18
+ switch (char) {
19
+ case "<":
20
+ littleEndian = true;
21
+ break;
22
+ case ">":
23
+ littleEndian = false;
24
+ break;
25
+ case "x": // Padding byte
26
+ offset += 1;
27
+ break;
28
+ case "c": // Char
29
+ results.push(view.getUint8(offset));
30
+ offset += 1;
31
+ break;
32
+ case "b": // Signed 8-bit integer
33
+ results.push(view.getInt8(offset));
34
+ offset += 1;
35
+ break;
36
+ case "B": // Unsigned 8-bit integer
37
+ results.push(view.getUint8(offset));
38
+ offset += 1;
39
+ break;
40
+ case "h": // Signed 16-bit integer
41
+ results.push(view.getInt16(offset, littleEndian));
42
+ offset += 2;
43
+ break;
44
+ case "H": // Unsigned 16-bit integer (big-endian)
45
+ results.push(view.getUint16(offset, littleEndian));
46
+ offset += 2;
47
+ break;
48
+ case "i": // Signed 32-bit integer (big-endian)
49
+ results.push(view.getInt32(offset, littleEndian));
50
+ offset += 4;
51
+ break;
52
+ case "I": // Unsigned 32-bit integer (big-endian)
53
+ results.push(view.getUint32(offset, littleEndian));
54
+ offset += 4;
55
+ break;
56
+ case "l": // Signed 32-bit integer (big-endian)
57
+ results.push(view.getInt32(offset, littleEndian));
58
+ offset += 4;
59
+ break;
60
+ case "L": // Unsigned 32-bit integer (big-endian)
61
+ results.push(view.getUint32(offset, littleEndian));
62
+ offset += 4;
63
+ break;
64
+ // case "q": // Signed 64-bit integer (big-endian)
65
+ // results.push(view.getBigInt64(offset, littleEndian));
66
+ // offset += 8;
67
+ // break;
68
+ // case "Q": // Unsigned 64-bit integer (big-endian)
69
+ // results.push(view.getBigUint64(offset, littleEndian));
70
+ // offset += 8;
71
+ // break;
72
+ case "f": // 32-bit float (big-endian)
73
+ results.push(view.getFloat32(offset, littleEndian));
74
+ offset += 4;
75
+ break;
76
+ case "d": // 64-bit float (big-endian)
77
+ results.push(view.getFloat64(offset, littleEndian));
78
+ offset += 8;
79
+ break;
80
+ default:
81
+ throw new Error(`Unknown format character: ${char}`);
82
+ }
83
+ }
84
+
85
+ return results;
86
+ }
87
+
88
+ export function structSizeOf(format: string): number {
89
+ let size = 0;
90
+ for (const char of format) {
91
+ switch (char) {
92
+ case "<":
93
+ case ">":
94
+ break;
95
+ case "x": // Padding byte
96
+ size += 1;
97
+ break;
98
+ case "c": // Char
99
+ case "b": // Signed 8-bit integer
100
+ case "B": // Unsigned 8-bit integer
101
+ size += 1;
102
+ break;
103
+ case "h": // Signed 16-bit integer
104
+ case "H": // Unsigned 16-bit integer
105
+ size += 2;
106
+ break;
107
+ case "i": // Signed 32-bit integer
108
+ case "I": // Unsigned 32-bit integer
109
+ case "l": // Signed 32-bit integer
110
+ case "L": // Unsigned 32-bit integer
111
+ size += 4;
112
+ break;
113
+ // case "q": // Signed 64-bit integer
114
+ // case "Q": // Unsigned 64-bit integer
115
+ // size += 8;
116
+ // break;
117
+ case "f": // 32-bit float
118
+ size += 4;
119
+ break;
120
+ case "d": // 64-bit float
121
+ size += 8;
122
+ break;
123
+ default:
124
+ throw new Error(`Unknown format character: ${char}`);
125
+ }
126
+ }
127
+ return size;
128
+ }
129
+
130
+ export function structPack(format: string, values: number[]): Uint8Array {
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
+
137
+ let valIdx = 0;
138
+ for (let i = 0; i < format.length; i++) {
139
+ const char = format[i];
140
+ const value = values[valIdx];
141
+ switch (char) {
142
+ case "<":
143
+ littleEndian = true;
144
+ break;
145
+ case ">":
146
+ littleEndian = false;
147
+ break;
148
+ case "x": // Padding byte
149
+ offset += 1;
150
+ break;
151
+ case "c": // Char
152
+ view.setInt8(offset, value);
153
+ offset += 1;
154
+ break;
155
+ case "b": // Signed 8-bit integer
156
+ view.setInt8(offset, value);
157
+ offset += 1;
158
+ break;
159
+ case "B": // Unsigned 8-bit integer
160
+ view.setUint8(offset, value);
161
+ offset += 1;
162
+ break;
163
+ case "h": // Signed 16-bit integer
164
+ view.setInt16(offset, value, littleEndian);
165
+ offset += 2;
166
+ break;
167
+ case "H": // Unsigned 16-bit integer
168
+ view.setUint16(offset, value, littleEndian);
169
+ offset += 2;
170
+ break;
171
+ case "i": // Signed 32-bit integer
172
+ view.setInt32(offset, value, littleEndian);
173
+ offset += 4;
174
+ break;
175
+ case "I": // Unsigned 32-bit integer
176
+ view.setUint32(offset, value, littleEndian);
177
+ offset += 4;
178
+ break;
179
+ case "l": // Signed 32-bit integer
180
+ view.setInt32(offset, value, littleEndian);
181
+ offset += 4;
182
+ break;
183
+ case "L": // Unsigned 32-bit integer
184
+ view.setUint32(offset, value, littleEndian);
185
+ offset += 4;
186
+ break;
187
+ // case "q": // Signed 64-bit integer
188
+ // view.setBigInt64(offset, BigInt(value), littleEndian);
189
+ // offset += 8;
190
+ // break;
191
+ // case "Q": // Unsigned 64-bit integer
192
+ // view.setBigUint64(offset, BigInt(value), littleEndian);
193
+ // offset += 8;
194
+ // break;
195
+ case "f": // 32-bit float
196
+ view.setFloat32(offset, value, littleEndian);
197
+ offset += 4;
198
+ break;
199
+ case "d": // 64-bit float
200
+ view.setFloat64(offset, value, littleEndian);
201
+ offset += 8;
202
+ break;
203
+ default:
204
+ throw new Error(`Unknown format character: ${char}`);
205
+ }
206
+ }
207
+
208
+ return new Uint8Array(buffer);
209
+ }
@@ -0,0 +1,60 @@
1
+ import { RaftSystemType } from "./RaftSystemType";
2
+
3
+ type RaftSystemTypeCreator = () => RaftSystemType;
4
+
5
+ export default class RaftSysTypeManager {
6
+ // Singleton instance
7
+ private static _instance: RaftSysTypeManager;
8
+
9
+ // System type map
10
+ private _sysTypes: Map<string, RaftSystemTypeCreator> = new Map();
11
+ private _defaultSysTypeFactory: RaftSystemTypeCreator | null = null;
12
+
13
+ // Get instance (Singleton)
14
+ public static getInstance(): RaftSysTypeManager {
15
+ if (!RaftSysTypeManager._instance) {
16
+ RaftSysTypeManager._instance = new RaftSysTypeManager();
17
+ }
18
+ return RaftSysTypeManager._instance;
19
+ }
20
+
21
+ // Add a system type by name with its factory
22
+ public addSystemType(sysType: string, factory: RaftSystemTypeCreator): void {
23
+ if (this._sysTypes.has(sysType)) {
24
+ throw new Error(`System type '${sysType}' is already registered.`);
25
+ }
26
+ this._sysTypes.set(sysType, factory);
27
+ }
28
+
29
+ // Set the default system type factory
30
+ public addDefaultSystemType(factory: RaftSystemTypeCreator): void {
31
+ this._defaultSysTypeFactory = factory;
32
+ }
33
+
34
+ // Create a system type by name
35
+ public createSystemType(sysType: string): RaftSystemType | null {
36
+ const factory = this._sysTypes.get(sysType);
37
+ if (!factory) {
38
+ return null;
39
+ }
40
+ return factory();
41
+ }
42
+
43
+ // Create the default system type
44
+ public createDefaultSystemType(): RaftSystemType | null {
45
+ if (!this._defaultSysTypeFactory) {
46
+ return null;
47
+ }
48
+ return this._defaultSysTypeFactory();
49
+ }
50
+
51
+ // Get a list of all unique BLE service UUIDs
52
+ getAllServiceUUIDs(): string[] {
53
+ const serviceUUIDs = new Set<string>();
54
+ this._sysTypes.forEach((factory) => {
55
+ const sysType = factory();
56
+ sysType.BLEServiceUUIDs.forEach((uuid) => serviceUUIDs.add(uuid));
57
+ });
58
+ return Array.from(serviceUUIDs);
59
+ }
60
+ }
@@ -16,6 +16,9 @@ export interface ConnectorOptions {
16
16
  export interface RaftSystemType {
17
17
  nameForDialogs: string;
18
18
  defaultWiFiHostname: string;
19
+ BLEServiceUUIDs: string[];
20
+ BLECmdUUID: string;
21
+ BLERespUUID: string;
19
22
  firmwareDestName: string;
20
23
  normalFileDestName: string;
21
24
  connectorOptions: ConnectorOptions;
package/src/RaftTypes.ts CHANGED
@@ -32,7 +32,7 @@ export type RaftEventFn = (
32
32
  eventType: string,
33
33
  eventEnum: RaftConnEvent | RaftUpdateEvent | RaftPublishEvent,
34
34
  eventName: string,
35
- data?: object | string | null,
35
+ data?: object | string | null
36
36
  ) => void;
37
37
 
38
38
  export interface RaftSubscription {
@@ -59,30 +59,22 @@ export class RaftSystemInfo {
59
59
  Friendly? = "";
60
60
  }
61
61
 
62
- export class RaftCalibInfo {
63
- rslt = '';
64
- calDone = 0;
65
- validMs? = 0;
62
+ export type RaftCalibInfo = {
63
+ rslt: string;
64
+ calDone: number;
65
+ validMs? : number;
66
66
  }
67
67
 
68
+ // NOTE: Do not put any methods in any of the response classes as they
69
+ // are simply wrappers around JSON and will not necessarily be constructed
70
+ // as objects
68
71
  export class RaftOKFail {
69
- RAFT_OK = 'ok';
70
- set(rsltFlag: boolean) {
71
- if (rsltFlag) {
72
- this.rslt = this.RAFT_OK;
73
- } else {
74
- this.rslt = 'fail';
75
- }
76
- }
77
- rslt = 'commsFail';
78
- isOk() {
79
- return this.rslt === this.RAFT_OK;
80
- }
72
+ rslt = 'failComms';
81
73
  }
82
74
 
83
- export class RaftReportMsg {
75
+ export type RaftReportMsg = {
84
76
  msgType?: string;
85
- rslt = '';
77
+ rslt: string;
86
78
  timeReceived?: number;
87
79
  hexRd?: string;
88
80
  elemName?: string;
@@ -92,19 +84,19 @@ export class RaftReportMsg {
92
84
  msgBody?: string;
93
85
  }
94
86
 
95
- export class RaftHWFWStat {
96
- s = '';
97
- m = '';
98
- v = '';
99
- n = '';
100
- p = 0;
101
- i = 0;
87
+ export type RaftHWFWStat = {
88
+ s: string;
89
+ m: string;
90
+ v: string;
91
+ n: string;
92
+ p: number;
93
+ i: number;
102
94
  }
103
95
 
104
- export class RaftHWFWUpdRslt {
105
- req = '';
106
- rslt = 'commsFail';
107
- st: RaftHWFWStat = new RaftHWFWStat();
96
+ export type RaftHWFWUpdRslt = {
97
+ req: string;
98
+ rslt: string;
99
+ st: RaftHWFWStat;
108
100
  }
109
101
 
110
102
  export type RaftFWInfo = {
@@ -248,16 +240,18 @@ export type PystatusMsgType = {
248
240
  };
249
241
 
250
242
  // Phone BLE
251
- export class DiscoveredRIC {
243
+ export class DiscoveredDevice {
252
244
  _localName = '';
253
245
  _name = '';
254
246
  _id = '';
255
247
  _rssi = -150;
256
- constructor(localName: string, name: string, id: string, rssi: number) {
248
+ _serviceUUIDs: string[] | null = [];
249
+ constructor(localName: string, name: string, id: string, rssi: number, serviceUUIDs: string[] | null) {
257
250
  this._localName = localName;
258
251
  this._name = name;
259
252
  this._id = id;
260
253
  this._rssi = rssi;
254
+ this._serviceUUIDs = serviceUUIDs;
261
255
  }
262
256
  get name(): string {
263
257
  if (this._localName !== null && this._localName.length > 0) {
@@ -276,6 +270,9 @@ export class DiscoveredRIC {
276
270
  if (this._rssi !== null) return this._rssi;
277
271
  return -100;
278
272
  }
273
+ get serviceUUIDs(): string[] | null {
274
+ return this._serviceUUIDs;
275
+ }
279
276
  }
280
277
 
281
- export type DiscoveredRICsCB = (discoveredRICs: DiscoveredRIC[]) => void;
278
+ export type DiscoveredDevicesCB = (discoveredDevicess: DiscoveredDevice[]) => void;
@@ -8,7 +8,6 @@
8
8
  //
9
9
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
10
10
 
11
- import axios from "axios";
12
11
  import RaftChannel from "./RaftChannel";
13
12
  import RaftFileHandler from "./RaftFileHandler";
14
13
  import RaftLog from "./RaftLog";
@@ -91,8 +90,12 @@ export default class RICUpdateManager {
91
90
 
92
91
  // debug
93
92
  RaftLog.debug(`Update URL: ${updateURL}`);
94
- const response = await axios.get(updateURL);
95
- this._latestVersionInfo = response.data;
93
+ const response = await fetch(updateURL, { method: 'GET' });
94
+ if (!response.ok) {
95
+ RaftLog.debug(`HTTP error! status: ${response.status}`);
96
+ return RaftUpdateEvent.UPDATE_CANT_REACH_SERVER;
97
+ }
98
+ this._latestVersionInfo = await response.json();
96
99
  } catch (error) {
97
100
  RaftLog.debug(`Failed to get latest version from internet ${error}`);
98
101
  }
package/src/RaftUtils.ts CHANGED
@@ -9,8 +9,6 @@
9
9
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
10
10
 
11
11
  import RaftLog from "./RaftLog";
12
- import semverGt from "semver/functions/gt";
13
- import semverEq from "semver/functions/eq";
14
12
 
15
13
  export default class RaftUtils {
16
14
  static _isEndianSet = false;
@@ -446,9 +444,21 @@ export default class RaftUtils {
446
444
  }
447
445
  }
448
446
 
447
+ static semverGt(v1: string, v2: string): boolean {
448
+ const [major1, minor1, patch1] = v1.split('.').map(Number);
449
+ const [major2, minor2, patch2] = v2.split('.').map(Number);
450
+ if (major1 !== major2) return major1 > major2;
451
+ if (minor1 !== minor2) return minor1 > minor2;
452
+ return patch1 > patch2;
453
+ }
454
+
449
455
  static isVersionGreater(v1: string, v2: string) {
450
456
  try {
451
- return semverGt(v1, v2);
457
+ const [major1, minor1, patch1] = v1.split('.').map(Number);
458
+ const [major2, minor2, patch2] = v2.split('.').map(Number);
459
+ if (major1 !== major2) return major1 > major2;
460
+ if (minor1 !== minor2) return minor1 > minor2;
461
+ return patch1 > patch2;
452
462
  } catch (e) {
453
463
  // one of the two versions is invalid, return true
454
464
  RaftLog.warn(`isVersionGreater - invalid version ${v1} or ${v2} ${e}`);
@@ -458,7 +468,7 @@ export default class RaftUtils {
458
468
 
459
469
  static isVersionEqual(v1: string, v2: string) {
460
470
  try {
461
- return semverEq(v1, v2);
471
+ return v1 === v2;
462
472
  } catch (e) {
463
473
  // one of the two versions is invalid, return false
464
474
  RaftLog.error(`isVersionEqual - invalid version ${v1} or ${v2} ${e}`);
package/src/main.ts CHANGED
@@ -23,10 +23,10 @@ export { default as RaftMsgHandler } from './RaftMsgHandler'
23
23
  export { default as RaftStreamHandler } from './RaftStreamHandler';
24
24
  export { default as RaftSystemUtils } from './RaftSystemUtils';
25
25
  export { default as RaftUtils } from './RaftUtils';
26
- export { DeviceManager } from './RaftDeviceManager';
26
+ export { default as RaftSysTypeManager } from './RaftSysTypeManager';
27
+ export { default as RaftDeviceMgrIF } from './RaftDeviceMgrIF';
27
28
  export { DeviceManager as RaftDeviceManager } from './RaftDeviceManager';
28
29
 
29
-
30
30
  export * from './RaftTypes';
31
31
  export * from './RaftSystemType';
32
32
  export * from './RaftWifiTypes';