@depz/sensor-sdk 0.1.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 (130) hide show
  1. package/README.md +69 -0
  2. package/dist/dataset.d.ts +93 -0
  3. package/dist/dataset.d.ts.map +1 -0
  4. package/dist/dataset.js +253 -0
  5. package/dist/dataset.js.map +1 -0
  6. package/dist/device/device.d.ts +185 -0
  7. package/dist/device/device.d.ts.map +1 -0
  8. package/dist/device/device.js +421 -0
  9. package/dist/device/device.js.map +1 -0
  10. package/dist/device/link.d.ts +62 -0
  11. package/dist/device/link.d.ts.map +1 -0
  12. package/dist/device/link.js +130 -0
  13. package/dist/device/link.js.map +1 -0
  14. package/dist/discovery.d.ts +109 -0
  15. package/dist/discovery.d.ts.map +1 -0
  16. package/dist/discovery.js +281 -0
  17. package/dist/discovery.js.map +1 -0
  18. package/dist/errors.d.ts +39 -0
  19. package/dist/errors.d.ts.map +1 -0
  20. package/dist/errors.js +69 -0
  21. package/dist/errors.js.map +1 -0
  22. package/dist/index.d.ts +42 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +31 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/protocol/bno086.d.ts +36 -0
  27. package/dist/protocol/bno086.d.ts.map +1 -0
  28. package/dist/protocol/bno086.js +38 -0
  29. package/dist/protocol/bno086.js.map +1 -0
  30. package/dist/protocol/common.d.ts +103 -0
  31. package/dist/protocol/common.d.ts.map +1 -0
  32. package/dist/protocol/common.js +121 -0
  33. package/dist/protocol/common.js.map +1 -0
  34. package/dist/protocol/crc.d.ts +17 -0
  35. package/dist/protocol/crc.d.ts.map +1 -0
  36. package/dist/protocol/crc.js +55 -0
  37. package/dist/protocol/crc.js.map +1 -0
  38. package/dist/protocol/framing.d.ts +65 -0
  39. package/dist/protocol/framing.d.ts.map +1 -0
  40. package/dist/protocol/framing.js +152 -0
  41. package/dist/protocol/framing.js.map +1 -0
  42. package/dist/protocol/fwdepz.d.ts +21 -0
  43. package/dist/protocol/fwdepz.d.ts.map +1 -0
  44. package/dist/protocol/fwdepz.js +46 -0
  45. package/dist/protocol/fwdepz.js.map +1 -0
  46. package/dist/protocol/identity.d.ts +14 -0
  47. package/dist/protocol/identity.d.ts.map +1 -0
  48. package/dist/protocol/identity.js +28 -0
  49. package/dist/protocol/identity.js.map +1 -0
  50. package/dist/protocol/sr04.d.ts +38 -0
  51. package/dist/protocol/sr04.d.ts.map +1 -0
  52. package/dist/protocol/sr04.js +58 -0
  53. package/dist/protocol/sr04.js.map +1 -0
  54. package/dist/protocol/usb-ids.d.ts +60 -0
  55. package/dist/protocol/usb-ids.d.ts.map +1 -0
  56. package/dist/protocol/usb-ids.js +79 -0
  57. package/dist/protocol/usb-ids.js.map +1 -0
  58. package/dist/protocol/vl53l8.d.ts +59 -0
  59. package/dist/protocol/vl53l8.d.ts.map +1 -0
  60. package/dist/protocol/vl53l8.js +116 -0
  61. package/dist/protocol/vl53l8.js.map +1 -0
  62. package/dist/sensors/bno086/bno086.d.ts +197 -0
  63. package/dist/sensors/bno086/bno086.d.ts.map +1 -0
  64. package/dist/sensors/bno086/bno086.js +543 -0
  65. package/dist/sensors/bno086/bno086.js.map +1 -0
  66. package/dist/sensors/bno086/reports.d.ts +289 -0
  67. package/dist/sensors/bno086/reports.d.ts.map +1 -0
  68. package/dist/sensors/bno086/reports.js +397 -0
  69. package/dist/sensors/bno086/reports.js.map +1 -0
  70. package/dist/sensors/bno086/sh2.d.ts +307 -0
  71. package/dist/sensors/bno086/sh2.d.ts.map +1 -0
  72. package/dist/sensors/bno086/sh2.js +480 -0
  73. package/dist/sensors/bno086/sh2.js.map +1 -0
  74. package/dist/sensors/bno086/shtp.d.ts +98 -0
  75. package/dist/sensors/bno086/shtp.d.ts.map +1 -0
  76. package/dist/sensors/bno086/shtp.js +205 -0
  77. package/dist/sensors/bno086/shtp.js.map +1 -0
  78. package/dist/sensors/sr04.d.ts +65 -0
  79. package/dist/sensors/sr04.d.ts.map +1 -0
  80. package/dist/sensors/sr04.js +121 -0
  81. package/dist/sensors/sr04.js.map +1 -0
  82. package/dist/sensors/vl53l8/assets/ch.d.ts +16 -0
  83. package/dist/sensors/vl53l8/assets/ch.d.ts.map +1 -0
  84. package/dist/sensors/vl53l8/assets/ch.js +22 -0
  85. package/dist/sensors/vl53l8/assets/ch.js.map +1 -0
  86. package/dist/sensors/vl53l8/assets/cx.d.ts +16 -0
  87. package/dist/sensors/vl53l8/assets/cx.d.ts.map +1 -0
  88. package/dist/sensors/vl53l8/assets/cx.js +22 -0
  89. package/dist/sensors/vl53l8/assets/cx.js.map +1 -0
  90. package/dist/sensors/vl53l8/assets/decode.d.ts +7 -0
  91. package/dist/sensors/vl53l8/assets/decode.d.ts.map +1 -0
  92. package/dist/sensors/vl53l8/assets/decode.js +35 -0
  93. package/dist/sensors/vl53l8/assets/decode.js.map +1 -0
  94. package/dist/sensors/vl53l8/assets/index.d.ts +19 -0
  95. package/dist/sensors/vl53l8/assets/index.d.ts.map +1 -0
  96. package/dist/sensors/vl53l8/assets/index.js +11 -0
  97. package/dist/sensors/vl53l8/assets/index.js.map +1 -0
  98. package/dist/sensors/vl53l8/cnh.d.ts +113 -0
  99. package/dist/sensors/vl53l8/cnh.d.ts.map +1 -0
  100. package/dist/sensors/vl53l8/cnh.js +299 -0
  101. package/dist/sensors/vl53l8/cnh.js.map +1 -0
  102. package/dist/sensors/vl53l8/uld.d.ts +346 -0
  103. package/dist/sensors/vl53l8/uld.d.ts.map +1 -0
  104. package/dist/sensors/vl53l8/uld.js +1388 -0
  105. package/dist/sensors/vl53l8/uld.js.map +1 -0
  106. package/dist/sensors/vl53l8/vl53l8.d.ts +182 -0
  107. package/dist/sensors/vl53l8/vl53l8.d.ts.map +1 -0
  108. package/dist/sensors/vl53l8/vl53l8.js +411 -0
  109. package/dist/sensors/vl53l8/vl53l8.js.map +1 -0
  110. package/dist/transport/loopback.d.ts +18 -0
  111. package/dist/transport/loopback.d.ts.map +1 -0
  112. package/dist/transport/loopback.js +53 -0
  113. package/dist/transport/loopback.js.map +1 -0
  114. package/dist/transport/node.d.ts +51 -0
  115. package/dist/transport/node.d.ts.map +1 -0
  116. package/dist/transport/node.js +123 -0
  117. package/dist/transport/node.js.map +1 -0
  118. package/dist/transport/replay.d.ts +68 -0
  119. package/dist/transport/replay.d.ts.map +1 -0
  120. package/dist/transport/replay.js +196 -0
  121. package/dist/transport/replay.js.map +1 -0
  122. package/dist/transport/types.d.ts +23 -0
  123. package/dist/transport/types.d.ts.map +1 -0
  124. package/dist/transport/types.js +7 -0
  125. package/dist/transport/types.js.map +1 -0
  126. package/dist/transport/webserial.d.ts +69 -0
  127. package/dist/transport/webserial.d.ts.map +1 -0
  128. package/dist/transport/webserial.js +196 -0
  129. package/dist/transport/webserial.js.map +1 -0
  130. package/package.json +77 -0
@@ -0,0 +1,307 @@
1
+ /**
2
+ * SH-2 control-channel builders and parsers (contracts/05_SENSOR_BNO086.md §6).
3
+ *
4
+ * Pure request-builders + response-parsers — no I/O, no timing. The device
5
+ * layer owns the SHTP framing, sequence numbers for the SHTP header, and the
6
+ * waiting/correlation. All multi-byte fields little-endian.
7
+ *
8
+ * Mirrors the Python reference `depz_sensor_sdk.bno086.sh2`.
9
+ */
10
+ import { DepzError } from "../../errors.js";
11
+ /** SH-2 level failure (bad response status, FRS error, ...). */
12
+ export declare class Sh2Error extends DepzError {
13
+ }
14
+ /** Report IDs on SHTP channel 2 (control). */
15
+ export declare enum ControlReport {
16
+ CommandResponse = 241,
17
+ CommandRequest = 242,
18
+ FrsReadResponse = 243,
19
+ FrsReadRequest = 244,
20
+ FrsWriteResponse = 245,
21
+ FrsWriteData = 246,
22
+ FrsWriteRequest = 247,
23
+ ProductIdResponse = 248,
24
+ ProductIdRequest = 249,
25
+ GetFeatureResponse = 252,
26
+ SetFeatureCommand = 253,
27
+ GetFeatureRequest = 254
28
+ }
29
+ /** `command` field of Command Request/Response (0xF2/0xF1). */
30
+ export declare enum Sh2Command {
31
+ Errors = 1,
32
+ Counter = 2,
33
+ Tare = 3,
34
+ Initialize = 4,
35
+ SaveDcd = 6,
36
+ MeCalibrate = 7,
37
+ PeriodicDcdConfig = 9,
38
+ GetOscillatorType = 10,
39
+ ClearDcdAndReset = 11
40
+ }
41
+ /** Get-Oscillator-Type (command 0x0A) result (r[0]). */
42
+ export declare enum OscillatorType {
43
+ Internal = 0,
44
+ ExtCrystal = 1,
45
+ ExtClock = 2
46
+ }
47
+ /** `source` field of an error record (SH-2 §6.4.1). */
48
+ export declare enum ErrorSource {
49
+ MotionEngine = 1,
50
+ MotionHub = 2,
51
+ SensorHub = 3,
52
+ Chip = 4,
53
+ /** Sentinel: end of the error queue. */
54
+ NoMoreErrors = 255
55
+ }
56
+ /** Counter subcommands (command 0x02, P0). */
57
+ export declare const COUNTS_GET = 0;
58
+ export declare const COUNTS_CLEAR = 1;
59
+ /** Counter command 0x02: get event counts for `sensorId`. */
60
+ export declare function countsGetParams(sensorId: number): Uint8Array;
61
+ /** Counter command 0x02: clear event counts for `sensorId`. */
62
+ export declare function countsClearParams(sensorId: number): Uint8Array;
63
+ /** Errors command 0x01: return errors of `severity` or greater (0 = all). */
64
+ export declare function errorsParams(severity?: number): Uint8Array;
65
+ /** One error queue entry (command 0x01 response, r[0..5]). */
66
+ export interface ErrorRecord {
67
+ severity: number;
68
+ seq: number;
69
+ /** ErrorSource. */
70
+ source: number;
71
+ error: number;
72
+ module: number;
73
+ code: number;
74
+ }
75
+ export declare function errorRecordFromResponse(resp: CommandResponse): ErrorRecord;
76
+ /** Per-sensor event counts (command 0x02 get response, 2 messages). */
77
+ export interface Counts {
78
+ sensorId: number;
79
+ offered: number;
80
+ accepted: number;
81
+ on: number;
82
+ attempted: number;
83
+ }
84
+ /** Rotation vector used as the tare reference (Tare Now P2). */
85
+ export declare enum TareBasis {
86
+ RotationVector = 0,
87
+ GameRotationVector = 1,
88
+ GeomagneticRotationVector = 2,
89
+ GyroIntegratedRv = 3,
90
+ ArvrStabilizedRv = 4,
91
+ ArvrStabilizedGameRv = 5
92
+ }
93
+ export declare enum TareAxis {
94
+ X = 1,
95
+ Y = 2,
96
+ Z = 4,
97
+ All = 7
98
+ }
99
+ /**
100
+ * Set Feature Command (0xFD), 17 bytes.
101
+ *
102
+ * `intervalUs` = 0 disables the sensor. `sensitivity` units are
103
+ * sensor-dependent (change sensitivity, u16); `flags` bit meanings per SH-2
104
+ * §6.5.4; `cfgWord` is the sensor-specific configuration u32.
105
+ */
106
+ export declare function buildSetFeature(sensorId: number, intervalUs: number, batchUs?: number, sensitivity?: number, flags?: number, cfgWord?: number): Uint8Array;
107
+ /** Get Feature Request (0xFE), 2 bytes. */
108
+ export declare function buildGetFeatureRequest(sensorId: number): Uint8Array;
109
+ /** Get Feature Response (0xFC), 17 bytes — the rates in effect. */
110
+ export interface FeatureResponse {
111
+ sensorId: number;
112
+ flags: number;
113
+ sensitivity: number;
114
+ /** Actual report interval granted by the hub. */
115
+ intervalUs: number;
116
+ batchUs: number;
117
+ cfgWord: number;
118
+ }
119
+ export declare function unpackFeatureResponse(payload: Uint8Array): FeatureResponse;
120
+ export declare function buildProductIdRequest(): Uint8Array;
121
+ /**
122
+ * Product ID Response (0xF8), 16 bytes. The sensor sends one response per
123
+ * subsystem (typically 2); resetCause per SH-2 §6.4.5.2.
124
+ */
125
+ export interface ProductId {
126
+ resetCause: number;
127
+ swVersionMajor: number;
128
+ swVersionMinor: number;
129
+ swPartNumber: number;
130
+ swBuildNumber: number;
131
+ swVersionPatch: number;
132
+ /** "major.minor.patch". */
133
+ version: string;
134
+ }
135
+ export declare function unpackProductId(payload: Uint8Array): ProductId;
136
+ /** Command Request (0xF2), 12 bytes: id, seq, command, P0..P8. */
137
+ export declare function buildCommandRequest(seq: number, command: number, params?: Uint8Array): Uint8Array;
138
+ /**
139
+ * Command Response (0xF1), 16 bytes.
140
+ *
141
+ * `commandSeq` echoes the request's sequence number (correlate on it plus
142
+ * `command`); `responseSeq` counts multiple responses to one request.
143
+ * R0 is the status word for most commands (0 = success).
144
+ */
145
+ export interface CommandResponse {
146
+ seq: number;
147
+ command: number;
148
+ commandSeq: number;
149
+ responseSeq: number;
150
+ /** R0..R10. */
151
+ r: number[];
152
+ /** R0. */
153
+ status: number;
154
+ }
155
+ export declare function unpackCommandResponse(payload: Uint8Array): CommandResponse;
156
+ /** Tare subcommand 0 — tare `axes` (bitmap X=1,Y=2,Z=4) using `basis`. */
157
+ export declare function tareNowParams(axes?: number, basis?: number): Uint8Array;
158
+ /** Tare subcommand 1 — persist current tare into FRS. */
159
+ export declare function persistTareParams(): Uint8Array;
160
+ /**
161
+ * Tare subcommand 2 — set reorientation quaternion.
162
+ *
163
+ * P1..P8 are four int16 Q14 components (the 8 available parameter bytes only
164
+ * fit Q14 halves; the *FRS* System Orientation record is the one that stores
165
+ * Q30 words). All-zero clears the reorientation.
166
+ */
167
+ export declare function setReorientationParams(x: number, y: number, z: number, w: number): Uint8Array;
168
+ /** ME Calibration (command 0x07). subcommand 0 = configure, 1 = get. */
169
+ export declare function meCalibrationParams(accel: boolean, gyro: boolean, mag: boolean, planar?: boolean, subcommand?: number): Uint8Array;
170
+ /** Subcommand: report current ME calibration config. */
171
+ export declare const ME_CAL_GET = 1;
172
+ /**
173
+ * Periodic DCD save config (command 0x09). P0: 0 = enable, 1 = disable.
174
+ * No command response is generated.
175
+ */
176
+ export declare function periodicDcdParams(enable: boolean): Uint8Array;
177
+ /** FRS record IDs used by this SDK (SH-2 figure 28; metadata records). */
178
+ export declare enum FrsRecordId {
179
+ StaticCalibrationAgm = 31097,
180
+ NominalCalibration = 19789,
181
+ DynamicCalibration = 7967,
182
+ MePowerMgmt = 54242,
183
+ /** Mounting quaternion, 4 × Q30 words. */
184
+ SystemOrientation = 11582,
185
+ AccelOrientation = 11585,
186
+ GyroscopeOrientation = 11590,
187
+ MagnetometerOrientation = 11596,
188
+ ArvrStabilizationRv = 15917,
189
+ ArvrStabilizationGrv = 15918,
190
+ SigMotionDetectConfig = 49780,
191
+ ShakeDetectConfig = 32125,
192
+ StabilityDetectorConfig = 60805,
193
+ /** Personal-activity-classifier config. */
194
+ ActivityTrackerConfig = 60808
195
+ }
196
+ /** Per-sensor metadata FRS record IDs (subset used by getMetadata()). */
197
+ export declare const METADATA_RECORDS: Record<number, number>;
198
+ /** FRS Read Response status (low nibble of the len/status byte). */
199
+ export declare enum FrsStatus {
200
+ NoError = 0,
201
+ UnrecognizedFrsType = 1,
202
+ Busy = 2,
203
+ ReadCompleted = 3,
204
+ OffsetOutOfRange = 4,
205
+ RecordEmpty = 5,
206
+ BlockCompleted = 6,
207
+ BlockAndReadCompleted = 7,
208
+ DeviceError = 8
209
+ }
210
+ export declare enum FrsWriteStatus {
211
+ WordsReceived = 0,
212
+ UnrecognizedFrsType = 1,
213
+ Busy = 2,
214
+ WriteCompleted = 3,
215
+ WriteModeReady = 4,
216
+ WriteFailed = 5,
217
+ NotInWriteMode = 6,
218
+ InvalidLength = 7,
219
+ RecordValid = 8,
220
+ RecordInvalid = 9
221
+ }
222
+ /** FRS Read Request (0xF4), 8 bytes. blockWords = 0 reads the record. */
223
+ export declare function buildFrsReadRequest(frsType: number, offsetWords?: number, blockWords?: number): Uint8Array;
224
+ /** FRS Read Response (0xF3), 16 bytes; up to two data words per packet. */
225
+ export interface FrsReadResponse {
226
+ /** FrsStatus. */
227
+ status: number;
228
+ /** Valid words in data0/data1 (0–2). */
229
+ dataLength: number;
230
+ offsetWords: number;
231
+ data0: number;
232
+ data1: number;
233
+ frsType: number;
234
+ }
235
+ export declare function unpackFrsReadResponse(payload: Uint8Array): FrsReadResponse;
236
+ /** FRS Write Request (0xF7), 6 bytes. lengthWords = 0 erases the record. */
237
+ export declare function buildFrsWriteRequest(frsType: number, lengthWords: number): Uint8Array;
238
+ /** FRS Write Data (0xF6), 12 bytes; 1 or 2 words per packet. */
239
+ export declare function buildFrsWriteData(offsetWords: number, words: number[]): Uint8Array;
240
+ /** FRS Write Response (0xF5), 4 bytes. */
241
+ export interface FrsWriteResponse {
242
+ /** FrsWriteStatus. */
243
+ status: number;
244
+ offsetWords: number;
245
+ }
246
+ export declare function unpackFrsWriteResponse(payload: Uint8Array): FrsWriteResponse;
247
+ /**
248
+ * Multi-packet FRS read state machine (pure — feed parsed responses).
249
+ *
250
+ * Usage: send `request()`, then `feed()` every 0xF3 for this record until it
251
+ * returns true; `words` holds the record. Error statuses throw.
252
+ */
253
+ export declare class FrsReadSession {
254
+ readonly frsType: number;
255
+ words: number[];
256
+ done: boolean;
257
+ constructor(frsType: number);
258
+ request(): Uint8Array;
259
+ feed(resp: FrsReadResponse): boolean;
260
+ }
261
+ /**
262
+ * Multi-packet FRS write state machine (pure).
263
+ *
264
+ * Usage: send `request()`; then for every 0xF5 call `feed()` — it returns
265
+ * the next Write Data payload to send, or null; `done` flips on
266
+ * WriteCompleted. Error statuses throw.
267
+ */
268
+ export declare class FrsWriteSession {
269
+ readonly frsType: number;
270
+ readonly words: number[];
271
+ offset: number;
272
+ done: boolean;
273
+ constructor(frsType: number, words: number[]);
274
+ request(): Uint8Array;
275
+ private nextData;
276
+ feed(resp: FrsWriteResponse): Uint8Array | null;
277
+ }
278
+ /**
279
+ * Parsed sensor metadata FRS record; `rawWords` is authoritative.
280
+ *
281
+ * Field packing follows the sh2 reference driver (revision-gated fields are
282
+ * 0 when the record predates them).
283
+ */
284
+ export interface SensorMetadata {
285
+ meVersion: number;
286
+ mhVersion: number;
287
+ shVersion: number;
288
+ /** Same units & Q point as the sensor's reports. */
289
+ rangeRaw: number;
290
+ resolutionRaw: number;
291
+ revision: number;
292
+ /** mA in Q10. */
293
+ powerMaQ10: number;
294
+ minPeriodUs: number;
295
+ /** Revision >= 4 only. */
296
+ maxPeriodUs: number;
297
+ fifoMax: number;
298
+ fifoReserved: number;
299
+ batchBufferBytes: number;
300
+ qPoint1: number;
301
+ qPoint2: number;
302
+ /** Revision >= 3 only. */
303
+ qPoint3: number;
304
+ rawWords: number[];
305
+ }
306
+ export declare function sensorMetadataFromWords(words: number[]): SensorMetadata;
307
+ //# sourceMappingURL=sh2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sh2.d.ts","sourceRoot":"","sources":["../../../src/sensors/bno086/sh2.ts"],"names":[],"mappings":"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"}