@robotical/raftjs 2.0.3 → 2.0.4
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.
- package/dist/react-native/RaftDeviceInfo.js +17 -3
- package/dist/react-native/RaftDeviceInfo.js.map +1 -1
- package/dist/react-native/RaftStruct.js +197 -147
- package/dist/react-native/RaftStruct.js.map +1 -1
- package/dist/web/RaftDeviceInfo.js +17 -3
- package/dist/web/RaftDeviceInfo.js.map +1 -1
- package/dist/web/RaftStruct.js +197 -147
- package/dist/web/RaftStruct.js.map +1 -1
- package/package.json +1 -1
- package/src/RaftDeviceInfo.ts +19 -3
- package/src/RaftStruct.ts +220 -147
package/dist/web/RaftStruct.js
CHANGED
|
@@ -12,118 +12,152 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.structUnpack = structUnpack;
|
|
13
13
|
exports.structSizeOf = structSizeOf;
|
|
14
14
|
exports.structPack = structPack;
|
|
15
|
+
function parseFormatInstructions(format) {
|
|
16
|
+
const instructions = [];
|
|
17
|
+
let idx = 0;
|
|
18
|
+
while (idx < format.length) {
|
|
19
|
+
const char = format[idx];
|
|
20
|
+
// Endianness specifiers
|
|
21
|
+
if (char === "<" || char === ">") {
|
|
22
|
+
instructions.push({ kind: "endian", littleEndian: char === "<" });
|
|
23
|
+
idx++;
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
// Ignore whitespace
|
|
27
|
+
if (/\s/.test(char)) {
|
|
28
|
+
idx++;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// Attribute code
|
|
32
|
+
const code = char;
|
|
33
|
+
idx++;
|
|
34
|
+
// Check for repeat count using [N] syntax
|
|
35
|
+
let repeat = 1;
|
|
36
|
+
if (idx < format.length && format[idx] === "[") {
|
|
37
|
+
const endIdx = format.indexOf("]", idx + 1);
|
|
38
|
+
if (endIdx === -1) {
|
|
39
|
+
throw new Error(`Invalid format string: missing closing ] in "${format}"`);
|
|
40
|
+
}
|
|
41
|
+
const repeatStr = format.slice(idx + 1, endIdx);
|
|
42
|
+
repeat = parseInt(repeatStr, 10);
|
|
43
|
+
if (!Number.isFinite(repeat) || repeat <= 0) {
|
|
44
|
+
throw new Error(`Invalid repeat count "${repeatStr}" in format string "${format}"`);
|
|
45
|
+
}
|
|
46
|
+
idx = endIdx + 1;
|
|
47
|
+
}
|
|
48
|
+
instructions.push({ kind: "spec", code, repeat });
|
|
49
|
+
}
|
|
50
|
+
return instructions;
|
|
51
|
+
}
|
|
15
52
|
function structUnpack(format, data) {
|
|
16
53
|
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
17
54
|
const results = [];
|
|
18
55
|
let offset = 0;
|
|
19
56
|
let littleEndian = false;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
offset
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
offset
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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}`);
|
|
57
|
+
const instructions = parseFormatInstructions(format);
|
|
58
|
+
for (const instruction of instructions) {
|
|
59
|
+
if (instruction.kind === "endian") {
|
|
60
|
+
littleEndian = instruction.littleEndian;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const { code, repeat } = instruction;
|
|
64
|
+
for (let count = 0; count < repeat; count++) {
|
|
65
|
+
switch (code) {
|
|
66
|
+
case "x": // Padding byte
|
|
67
|
+
offset += 1;
|
|
68
|
+
break;
|
|
69
|
+
case "c": // Char
|
|
70
|
+
case "B": // Unsigned 8-bit integer
|
|
71
|
+
case "?": // Boolean (stored as uint8)
|
|
72
|
+
results.push(view.getUint8(offset));
|
|
73
|
+
offset += 1;
|
|
74
|
+
break;
|
|
75
|
+
case "b": // Signed 8-bit integer
|
|
76
|
+
results.push(view.getInt8(offset));
|
|
77
|
+
offset += 1;
|
|
78
|
+
break;
|
|
79
|
+
case "h": // Signed 16-bit integer
|
|
80
|
+
results.push(view.getInt16(offset, littleEndian));
|
|
81
|
+
offset += 2;
|
|
82
|
+
break;
|
|
83
|
+
case "H": // Unsigned 16-bit integer
|
|
84
|
+
results.push(view.getUint16(offset, littleEndian));
|
|
85
|
+
offset += 2;
|
|
86
|
+
break;
|
|
87
|
+
case "i": // Signed 32-bit integer
|
|
88
|
+
case "l": // Signed 32-bit integer
|
|
89
|
+
results.push(view.getInt32(offset, littleEndian));
|
|
90
|
+
offset += 4;
|
|
91
|
+
break;
|
|
92
|
+
case "I": // Unsigned 32-bit integer
|
|
93
|
+
case "L": // Unsigned 32-bit integer
|
|
94
|
+
results.push(view.getUint32(offset, littleEndian));
|
|
95
|
+
offset += 4;
|
|
96
|
+
break;
|
|
97
|
+
// case "q": // Signed 64-bit integer
|
|
98
|
+
// results.push(Number(view.getBigInt64(offset, littleEndian)));
|
|
99
|
+
// offset += 8;
|
|
100
|
+
// break;
|
|
101
|
+
// case "Q": // Unsigned 64-bit integer
|
|
102
|
+
// results.push(Number(view.getBigUint64(offset, littleEndian)));
|
|
103
|
+
// offset += 8;
|
|
104
|
+
// break;
|
|
105
|
+
case "f": // 32-bit float
|
|
106
|
+
results.push(view.getFloat32(offset, littleEndian));
|
|
107
|
+
offset += 4;
|
|
108
|
+
break;
|
|
109
|
+
case "d": // 64-bit float
|
|
110
|
+
results.push(view.getFloat64(offset, littleEndian));
|
|
111
|
+
offset += 8;
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
throw new Error(`Unknown format character: ${code}`);
|
|
115
|
+
}
|
|
85
116
|
}
|
|
86
117
|
}
|
|
87
118
|
return results;
|
|
88
119
|
}
|
|
89
120
|
function structSizeOf(format) {
|
|
90
121
|
let size = 0;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
122
|
+
const instructions = parseFormatInstructions(format);
|
|
123
|
+
for (const instruction of instructions) {
|
|
124
|
+
if (instruction.kind === "endian") {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const { code, repeat } = instruction;
|
|
128
|
+
let unitSize;
|
|
129
|
+
switch (code) {
|
|
96
130
|
case "x": // Padding byte
|
|
97
|
-
size += 1;
|
|
98
|
-
break;
|
|
99
131
|
case "c": // Char
|
|
100
132
|
case "b": // Signed 8-bit integer
|
|
101
133
|
case "B": // Unsigned 8-bit integer
|
|
102
|
-
|
|
134
|
+
case "?": // Boolean (uint8)
|
|
135
|
+
unitSize = 1;
|
|
103
136
|
break;
|
|
104
137
|
case "h": // Signed 16-bit integer
|
|
105
138
|
case "H": // Unsigned 16-bit integer
|
|
106
|
-
|
|
139
|
+
unitSize = 2;
|
|
107
140
|
break;
|
|
108
141
|
case "i": // Signed 32-bit integer
|
|
109
142
|
case "I": // Unsigned 32-bit integer
|
|
110
143
|
case "l": // Signed 32-bit integer
|
|
111
144
|
case "L": // Unsigned 32-bit integer
|
|
112
|
-
|
|
145
|
+
unitSize = 4;
|
|
113
146
|
break;
|
|
114
147
|
// case "q": // Signed 64-bit integer
|
|
115
148
|
// case "Q": // Unsigned 64-bit integer
|
|
116
|
-
//
|
|
149
|
+
// unitSize = 8;
|
|
117
150
|
// break;
|
|
118
151
|
case "f": // 32-bit float
|
|
119
|
-
|
|
152
|
+
unitSize = 4;
|
|
120
153
|
break;
|
|
121
154
|
case "d": // 64-bit float
|
|
122
|
-
|
|
155
|
+
unitSize = 8;
|
|
123
156
|
break;
|
|
124
157
|
default:
|
|
125
|
-
throw new Error(`Unknown format character: ${
|
|
158
|
+
throw new Error(`Unknown format character: ${code}`);
|
|
126
159
|
}
|
|
160
|
+
size += unitSize * repeat;
|
|
127
161
|
}
|
|
128
162
|
return size;
|
|
129
163
|
}
|
|
@@ -133,74 +167,90 @@ function structPack(format, values) {
|
|
|
133
167
|
const view = new DataView(buffer);
|
|
134
168
|
let offset = 0;
|
|
135
169
|
let littleEndian = false;
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
offset
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
offset
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
170
|
+
const instructions = parseFormatInstructions(format);
|
|
171
|
+
let valueIdx = 0;
|
|
172
|
+
for (const instruction of instructions) {
|
|
173
|
+
if (instruction.kind === "endian") {
|
|
174
|
+
littleEndian = instruction.littleEndian;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const { code, repeat } = instruction;
|
|
178
|
+
for (let count = 0; count < repeat; count++) {
|
|
179
|
+
switch (code) {
|
|
180
|
+
case "x": // Padding byte
|
|
181
|
+
offset += 1;
|
|
182
|
+
break;
|
|
183
|
+
case "c": // Char
|
|
184
|
+
case "b": // Signed 8-bit integer
|
|
185
|
+
if (valueIdx >= values.length) {
|
|
186
|
+
throw new Error("Insufficient values provided for structPack");
|
|
187
|
+
}
|
|
188
|
+
view.setInt8(offset, values[valueIdx++]);
|
|
189
|
+
offset += 1;
|
|
190
|
+
break;
|
|
191
|
+
case "B": // Unsigned 8-bit integer
|
|
192
|
+
case "?": // Boolean (uint8)
|
|
193
|
+
if (valueIdx >= values.length) {
|
|
194
|
+
throw new Error("Insufficient values provided for structPack");
|
|
195
|
+
}
|
|
196
|
+
view.setUint8(offset, values[valueIdx++]);
|
|
197
|
+
offset += 1;
|
|
198
|
+
break;
|
|
199
|
+
case "h": // Signed 16-bit integer
|
|
200
|
+
if (valueIdx >= values.length) {
|
|
201
|
+
throw new Error("Insufficient values provided for structPack");
|
|
202
|
+
}
|
|
203
|
+
view.setInt16(offset, values[valueIdx++], littleEndian);
|
|
204
|
+
offset += 2;
|
|
205
|
+
break;
|
|
206
|
+
case "H": // Unsigned 16-bit integer
|
|
207
|
+
if (valueIdx >= values.length) {
|
|
208
|
+
throw new Error("Insufficient values provided for structPack");
|
|
209
|
+
}
|
|
210
|
+
view.setUint16(offset, values[valueIdx++], littleEndian);
|
|
211
|
+
offset += 2;
|
|
212
|
+
break;
|
|
213
|
+
case "i": // Signed 32-bit integer
|
|
214
|
+
case "l": // Signed 32-bit integer
|
|
215
|
+
if (valueIdx >= values.length) {
|
|
216
|
+
throw new Error("Insufficient values provided for structPack");
|
|
217
|
+
}
|
|
218
|
+
view.setInt32(offset, values[valueIdx++], littleEndian);
|
|
219
|
+
offset += 4;
|
|
220
|
+
break;
|
|
221
|
+
case "I": // Unsigned 32-bit integer
|
|
222
|
+
case "L": // Unsigned 32-bit integer
|
|
223
|
+
if (valueIdx >= values.length) {
|
|
224
|
+
throw new Error("Insufficient values provided for structPack");
|
|
225
|
+
}
|
|
226
|
+
view.setUint32(offset, values[valueIdx++], littleEndian);
|
|
227
|
+
offset += 4;
|
|
228
|
+
break;
|
|
229
|
+
// case "q": // Signed 64-bit integer
|
|
230
|
+
// view.setBigInt64(offset, BigInt(values[valueIdx++]), littleEndian);
|
|
231
|
+
// offset += 8;
|
|
232
|
+
// break;
|
|
233
|
+
// case "Q": // Unsigned 64-bit integer
|
|
234
|
+
// view.setBigUint64(offset, BigInt(values[valueIdx++]), littleEndian);
|
|
235
|
+
// offset += 8;
|
|
236
|
+
// break;
|
|
237
|
+
case "f": // 32-bit float
|
|
238
|
+
if (valueIdx >= values.length) {
|
|
239
|
+
throw new Error("Insufficient values provided for structPack");
|
|
240
|
+
}
|
|
241
|
+
view.setFloat32(offset, values[valueIdx++], littleEndian);
|
|
242
|
+
offset += 4;
|
|
243
|
+
break;
|
|
244
|
+
case "d": // 64-bit float
|
|
245
|
+
if (valueIdx >= values.length) {
|
|
246
|
+
throw new Error("Insufficient values provided for structPack");
|
|
247
|
+
}
|
|
248
|
+
view.setFloat64(offset, values[valueIdx++], littleEndian);
|
|
249
|
+
offset += 8;
|
|
250
|
+
break;
|
|
251
|
+
default:
|
|
252
|
+
throw new Error(`Unknown format character: ${code}`);
|
|
253
|
+
}
|
|
204
254
|
}
|
|
205
255
|
}
|
|
206
256
|
return new Uint8Array(buffer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RaftStruct.js","sourceRoot":"","sources":["../../src/RaftStruct.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,aAAa;AACb,iBAAiB;AACjB,EAAE;AACF,kBAAkB;AAClB,+BAA+B;AAC/B,EAAE;AACF,iHAAiH;;
|
|
1
|
+
{"version":3,"file":"RaftStruct.js","sourceRoot":"","sources":["../../src/RaftStruct.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/RaftDeviceInfo.ts
CHANGED
|
@@ -17,10 +17,26 @@ const attrTypeBits: { [key: string]: number } = {
|
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
export function getAttrTypeBits(attrType: string): number {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
let repeat = 1;
|
|
21
|
+
let baseAttrType = attrType;
|
|
22
|
+
|
|
23
|
+
const repeatStartIdx = attrType.indexOf("[");
|
|
24
|
+
if (repeatStartIdx >= 0) {
|
|
25
|
+
const repeatEndIdx = attrType.indexOf("]", repeatStartIdx + 1);
|
|
26
|
+
if (repeatEndIdx > repeatStartIdx) {
|
|
27
|
+
const repeatStr = attrType.slice(repeatStartIdx + 1, repeatEndIdx);
|
|
28
|
+
const parsedRepeat = parseInt(repeatStr, 10);
|
|
29
|
+
if (Number.isFinite(parsedRepeat) && parsedRepeat > 0) {
|
|
30
|
+
repeat = parsedRepeat;
|
|
31
|
+
}
|
|
32
|
+
baseAttrType = attrType.slice(0, repeatStartIdx);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (baseAttrType in attrTypeBits) {
|
|
37
|
+
return attrTypeBits[baseAttrType] * repeat;
|
|
22
38
|
}
|
|
23
|
-
return 8;
|
|
39
|
+
return 8 * repeat;
|
|
24
40
|
}
|
|
25
41
|
|
|
26
42
|
export function isAttrTypeSigned(attrType: string): boolean {
|