@depz/sensor-sdk 0.2.1 → 0.3.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 (166) hide show
  1. package/README.md +13 -5
  2. package/dist/dataset.d.ts.map +1 -1
  3. package/dist/dataset.js +66 -2
  4. package/dist/dataset.js.map +1 -1
  5. package/dist/device/device.d.ts +6 -0
  6. package/dist/device/device.d.ts.map +1 -1
  7. package/dist/device/device.js +29 -6
  8. package/dist/device/device.js.map +1 -1
  9. package/dist/discovery.d.ts.map +1 -1
  10. package/dist/discovery.js +25 -2
  11. package/dist/discovery.js.map +1 -1
  12. package/dist/index.d.ts +21 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +16 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/protocol/bno055.d.ts +101 -0
  17. package/dist/protocol/bno055.d.ts.map +1 -0
  18. package/dist/protocol/bno055.js +105 -0
  19. package/dist/protocol/bno055.js.map +1 -0
  20. package/dist/protocol/identity.d.ts +1 -1
  21. package/dist/protocol/identity.d.ts.map +1 -1
  22. package/dist/protocol/identity.js +6 -0
  23. package/dist/protocol/identity.js.map +1 -1
  24. package/dist/protocol/vl53l7.d.ts +77 -0
  25. package/dist/protocol/vl53l7.d.ts.map +1 -0
  26. package/dist/protocol/vl53l7.js +99 -0
  27. package/dist/protocol/vl53l7.js.map +1 -0
  28. package/dist/protocol/vl53lx.d.ts +72 -0
  29. package/dist/protocol/vl53lx.d.ts.map +1 -0
  30. package/dist/protocol/vl53lx.js +87 -0
  31. package/dist/protocol/vl53lx.js.map +1 -0
  32. package/dist/sensors/bno055/bno055.d.ts +207 -0
  33. package/dist/sensors/bno055/bno055.d.ts.map +1 -0
  34. package/dist/sensors/bno055/bno055.js +547 -0
  35. package/dist/sensors/bno055/bno055.js.map +1 -0
  36. package/dist/sensors/bno055/regs.d.ts +271 -0
  37. package/dist/sensors/bno055/regs.d.ts.map +1 -0
  38. package/dist/sensors/bno055/regs.js +366 -0
  39. package/dist/sensors/bno055/regs.js.map +1 -0
  40. package/dist/sensors/bno086/bno086.d.ts +15 -0
  41. package/dist/sensors/bno086/bno086.d.ts.map +1 -1
  42. package/dist/sensors/bno086/bno086.js +43 -1
  43. package/dist/sensors/bno086/bno086.js.map +1 -1
  44. package/dist/sensors/bno086/sh2.d.ts.map +1 -1
  45. package/dist/sensors/bno086/sh2.js +5 -2
  46. package/dist/sensors/bno086/sh2.js.map +1 -1
  47. package/dist/sensors/reg-bridge.d.ts +35 -0
  48. package/dist/sensors/reg-bridge.d.ts.map +1 -0
  49. package/dist/sensors/reg-bridge.js +44 -0
  50. package/dist/sensors/reg-bridge.js.map +1 -0
  51. package/dist/sensors/vl53l4/vl53l4.d.ts.map +1 -1
  52. package/dist/sensors/vl53l4/vl53l4.js +18 -30
  53. package/dist/sensors/vl53l4/vl53l4.js.map +1 -1
  54. package/dist/sensors/vl53l7/vl53l7.d.ts +97 -0
  55. package/dist/sensors/vl53l7/vl53l7.d.ts.map +1 -0
  56. package/dist/sensors/vl53l7/vl53l7.js +138 -0
  57. package/dist/sensors/vl53l7/vl53l7.js.map +1 -0
  58. package/dist/sensors/vl53l8/assets/index.d.ts +5 -1
  59. package/dist/sensors/vl53l8/assets/index.d.ts.map +1 -1
  60. package/dist/sensors/vl53l8/assets/index.js +7 -1
  61. package/dist/sensors/vl53l8/assets/index.js.map +1 -1
  62. package/dist/sensors/vl53l8/assets/l7ch.d.ts +12 -0
  63. package/dist/sensors/vl53l8/assets/l7ch.d.ts.map +1 -0
  64. package/dist/sensors/vl53l8/assets/l7ch.js +18 -0
  65. package/dist/sensors/vl53l8/assets/l7ch.js.map +1 -0
  66. package/dist/sensors/vl53l8/assets/l7cx.d.ts +14 -0
  67. package/dist/sensors/vl53l8/assets/l7cx.d.ts.map +1 -0
  68. package/dist/sensors/vl53l8/assets/l7cx.js +20 -0
  69. package/dist/sensors/vl53l8/assets/l7cx.js.map +1 -0
  70. package/dist/sensors/vl53l8/cnh.d.ts +4 -3
  71. package/dist/sensors/vl53l8/cnh.d.ts.map +1 -1
  72. package/dist/sensors/vl53l8/cnh.js +4 -3
  73. package/dist/sensors/vl53l8/cnh.js.map +1 -1
  74. package/dist/sensors/vl53l8/uld.d.ts +50 -9
  75. package/dist/sensors/vl53l8/uld.d.ts.map +1 -1
  76. package/dist/sensors/vl53l8/uld.js +241 -35
  77. package/dist/sensors/vl53l8/uld.js.map +1 -1
  78. package/dist/sensors/vl53l8/vl53l8.d.ts +8 -3
  79. package/dist/sensors/vl53l8/vl53l8.d.ts.map +1 -1
  80. package/dist/sensors/vl53l8/vl53l8.js +41 -39
  81. package/dist/sensors/vl53l8/vl53l8.js.map +1 -1
  82. package/dist/sensors/vl53lx/decode.d.ts +70 -0
  83. package/dist/sensors/vl53lx/decode.d.ts.map +1 -0
  84. package/dist/sensors/vl53lx/decode.js +108 -0
  85. package/dist/sensors/vl53lx/decode.js.map +1 -0
  86. package/dist/sensors/vl53lx/uld/arith.d.ts +23 -0
  87. package/dist/sensors/vl53lx/uld/arith.d.ts.map +1 -0
  88. package/dist/sensors/vl53lx/uld/arith.js +42 -0
  89. package/dist/sensors/vl53lx/uld/arith.js.map +1 -0
  90. package/dist/sensors/vl53lx/uld/bare/core.d.ts +345 -0
  91. package/dist/sensors/vl53lx/uld/bare/core.d.ts.map +1 -0
  92. package/dist/sensors/vl53lx/uld/bare/core.js +1085 -0
  93. package/dist/sensors/vl53lx/uld/bare/core.js.map +1 -0
  94. package/dist/sensors/vl53lx/uld/bare/driver.d.ts +91 -0
  95. package/dist/sensors/vl53lx/uld/bare/driver.d.ts.map +1 -0
  96. package/dist/sensors/vl53lx/uld/bare/driver.js +206 -0
  97. package/dist/sensors/vl53lx/uld/bare/driver.js.map +1 -0
  98. package/dist/sensors/vl53lx/uld/bare/hist.d.ts +180 -0
  99. package/dist/sensors/vl53lx/uld/bare/hist.d.ts.map +1 -0
  100. package/dist/sensors/vl53lx/uld/bare/hist.js +949 -0
  101. package/dist/sensors/vl53lx/uld/bare/hist.js.map +1 -0
  102. package/dist/sensors/vl53lx/uld/bare/image.d.ts +53 -0
  103. package/dist/sensors/vl53lx/uld/bare/image.d.ts.map +1 -0
  104. package/dist/sensors/vl53lx/uld/bare/image.js +108 -0
  105. package/dist/sensors/vl53lx/uld/bare/image.js.map +1 -0
  106. package/dist/sensors/vl53lx/uld/bare/imath.d.ts +39 -0
  107. package/dist/sensors/vl53lx/uld/bare/imath.d.ts.map +1 -0
  108. package/dist/sensors/vl53lx/uld/bare/imath.js +99 -0
  109. package/dist/sensors/vl53lx/uld/bare/imath.js.map +1 -0
  110. package/dist/sensors/vl53lx/uld/bare/index.d.ts +22 -0
  111. package/dist/sensors/vl53lx/uld/bare/index.d.ts.map +1 -0
  112. package/dist/sensors/vl53lx/uld/bare/index.js +22 -0
  113. package/dist/sensors/vl53lx/uld/bare/index.js.map +1 -0
  114. package/dist/sensors/vl53lx/uld/bare/nvm.d.ts +85 -0
  115. package/dist/sensors/vl53lx/uld/bare/nvm.d.ts.map +1 -0
  116. package/dist/sensors/vl53lx/uld/bare/nvm.js +148 -0
  117. package/dist/sensors/vl53lx/uld/bare/nvm.js.map +1 -0
  118. package/dist/sensors/vl53lx/uld/bare/regs.d.ts +54 -0
  119. package/dist/sensors/vl53lx/uld/bare/regs.d.ts.map +1 -0
  120. package/dist/sensors/vl53lx/uld/bare/regs.js +496 -0
  121. package/dist/sensors/vl53lx/uld/bare/regs.js.map +1 -0
  122. package/dist/sensors/vl53lx/uld/bare/tuning.d.ts +15 -0
  123. package/dist/sensors/vl53lx/uld/bare/tuning.d.ts.map +1 -0
  124. package/dist/sensors/vl53lx/uld/bare/tuning.js +303 -0
  125. package/dist/sensors/vl53lx/uld/bare/tuning.js.map +1 -0
  126. package/dist/sensors/vl53lx/uld/base.d.ts +129 -0
  127. package/dist/sensors/vl53lx/uld/base.d.ts.map +1 -0
  128. package/dist/sensors/vl53lx/uld/base.js +166 -0
  129. package/dist/sensors/vl53lx/uld/base.js.map +1 -0
  130. package/dist/sensors/vl53lx/uld/l0x.d.ts +306 -0
  131. package/dist/sensors/vl53lx/uld/l0x.d.ts.map +1 -0
  132. package/dist/sensors/vl53lx/uld/l0x.js +1492 -0
  133. package/dist/sensors/vl53lx/uld/l0x.js.map +1 -0
  134. package/dist/sensors/vl53lx/uld/l1.d.ts +69 -0
  135. package/dist/sensors/vl53lx/uld/l1.d.ts.map +1 -0
  136. package/dist/sensors/vl53lx/uld/l1.js +262 -0
  137. package/dist/sensors/vl53lx/uld/l1.js.map +1 -0
  138. package/dist/sensors/vl53lx/uld/l3.d.ts +25 -0
  139. package/dist/sensors/vl53lx/uld/l3.d.ts.map +1 -0
  140. package/dist/sensors/vl53lx/uld/l3.js +51 -0
  141. package/dist/sensors/vl53lx/uld/l3.js.map +1 -0
  142. package/dist/sensors/vl53lx/uld/l4.d.ts +22 -0
  143. package/dist/sensors/vl53lx/uld/l4.d.ts.map +1 -0
  144. package/dist/sensors/vl53lx/uld/l4.js +99 -0
  145. package/dist/sensors/vl53lx/uld/l4.js.map +1 -0
  146. package/dist/sensors/vl53lx/uld/link.d.ts +42 -0
  147. package/dist/sensors/vl53lx/uld/link.d.ts.map +1 -0
  148. package/dist/sensors/vl53lx/uld/link.js +28 -0
  149. package/dist/sensors/vl53lx/uld/link.js.map +1 -0
  150. package/dist/sensors/vl53lx/uld/registry.d.ts +68 -0
  151. package/dist/sensors/vl53lx/uld/registry.d.ts.map +1 -0
  152. package/dist/sensors/vl53lx/uld/registry.js +139 -0
  153. package/dist/sensors/vl53lx/uld/registry.js.map +1 -0
  154. package/dist/sensors/vl53lx/uld/vl53l1-die.d.ts +172 -0
  155. package/dist/sensors/vl53lx/uld/vl53l1-die.d.ts.map +1 -0
  156. package/dist/sensors/vl53lx/uld/vl53l1-die.js +431 -0
  157. package/dist/sensors/vl53lx/uld/vl53l1-die.js.map +1 -0
  158. package/dist/sensors/vl53lx/vl53lx.d.ts +323 -0
  159. package/dist/sensors/vl53lx/vl53lx.d.ts.map +1 -0
  160. package/dist/sensors/vl53lx/vl53lx.js +688 -0
  161. package/dist/sensors/vl53lx/vl53lx.js.map +1 -0
  162. package/dist/transport/webserial.d.ts +4 -0
  163. package/dist/transport/webserial.d.ts.map +1 -1
  164. package/dist/transport/webserial.js +58 -12
  165. package/dist/transport/webserial.js.map +1 -1
  166. package/package.json +9 -2
@@ -0,0 +1,323 @@
1
+ /**
2
+ * VL53L 1D ToF family — VL53L0X, VL53L1CX, VL53L1CB, VL53L3CX, VL53L4CD,
3
+ * VL53L4CX — over the `APP_VL53L0_4` register bridge (contracts/12).
4
+ *
5
+ * The MCU is a thin I2C bridge that knows no sensor; every ULD runs here on
6
+ * the host (`uld/`). Two axes pick how a board is driven (`uld/registry.ts`):
7
+ * the **product** (whose parameter set to load — normally the part the
8
+ * board's device name carries; naming a neighbour borrows its driver) and the
9
+ * **driver kind** (`uld`, `ulp` or `histogram`). Every product answers with
10
+ * the same `Vl53lxMeasurement`; what differs is `supports(group)`.
11
+ *
12
+ * Mirrors the Python reference `depz_sensor_sdk.vl53lx`. TS-only difference:
13
+ * the product-level description is `identifyProduct()`, because
14
+ * `DepzDevice.identify()` already classifies the firmware.
15
+ */
16
+ import { DepzDevice, StreamQueue, type DeviceOptions } from "../../device/device.js";
17
+ import type { PacketEvent } from "../../protocol/framing.js";
18
+ import { XSHUT_OFF, XSHUT_ON, XSHUT_RESET } from "../../protocol/vl53l4.js";
19
+ import { type Vl53lxInfo } from "../../protocol/vl53lx.js";
20
+ import type { SerialTransport } from "../../transport/types.js";
21
+ import { SensorDriver, type Measurement, type Target } from "./uld/base.js";
22
+ import { ProtocolError, Vl53Error, type BridgeDevice } from "./uld/link.js";
23
+ export { XSHUT_OFF, XSHUT_ON, XSHUT_RESET };
24
+ /**
25
+ * Statuses that mean "this distance is real". A histogram product reports 6
26
+ * on the first frame of a stream and 11 on a merged pulse: use this, not
27
+ * `status === 0`, as the validity test on histogram products.
28
+ */
29
+ export declare const PLOTTABLE_STATUSES: readonly number[];
30
+ /**
31
+ * One ranging result, the same shape for every product of the family. On
32
+ * the histogram driver `targets` holds every return strongest-first and the
33
+ * top-level fields repeat `targets[0]`; `bins` carries the raw histogram
34
+ * (the driver's bin object). On the light drivers `targets` is empty and
35
+ * `bins` is null. `extra` is driver-specific — show it, don't branch on it.
36
+ */
37
+ export interface Vl53lxMeasurement extends Measurement {
38
+ /** MCU uptime at the INT edge (stream) / read (poll). */
39
+ timestampUs: bigint;
40
+ bins: unknown;
41
+ /** `status === 0`. On histogram products prefer `plottable`. */
42
+ valid: boolean;
43
+ /** The frame has a usable range (PLOTTABLE_STATUSES). */
44
+ plottable: boolean;
45
+ }
46
+ /**
47
+ * The distances a chart should draw for one measurement: the plottable
48
+ * targets in driver order, or the single distance on a light driver.
49
+ */
50
+ export declare function plotDistances(m: Measurement): number[];
51
+ /** The first plottable target, or null when the frame produced nothing usable. */
52
+ export declare function primaryTarget(m: Measurement): Target | null;
53
+ /**
54
+ * What the device class needs from the histogram (Bare) driver beyond
55
+ * `SensorDriver`: `binData(raw)` steps the frame-pair state and returns the
56
+ * bin object, `toMeasurement(bins)` finds the targets. Both run exactly once
57
+ * per frame.
58
+ */
59
+ export interface HistogramDriverApi {
60
+ binData(raw: Uint8Array): unknown;
61
+ toMeasurement(bins: unknown): Measurement;
62
+ }
63
+ /** The optional capability groups' methods (see `supports()`). */
64
+ interface DriverExtras {
65
+ getOffset(): Promise<number>;
66
+ setOffset(offsetMm: number): Promise<void>;
67
+ getXtalk(): Promise<number>;
68
+ setXtalk(xtalkKcps: number): Promise<void>;
69
+ calibrateOffset(targetDistMm: number, nbSamples?: number): Promise<number>;
70
+ calibrateXtalk(targetDistMm: number, nbSamples?: number): Promise<number>;
71
+ getDetectionThresholds(): Promise<[number, number, number]>;
72
+ setDetectionThresholds(low: number, high: number, window: number): Promise<void>;
73
+ getSignalThreshold(): Promise<number>;
74
+ setSignalThreshold(signalKcps: number): Promise<void>;
75
+ getSigmaThreshold(): Promise<number>;
76
+ setSigmaThreshold(sigmaMm: number): Promise<void>;
77
+ getRoi(): Promise<[number, number]>;
78
+ setRoi(x: number, y: number): Promise<void>;
79
+ getRoiCenter(): Promise<number>;
80
+ setRoiCenter(centerSpad: number): Promise<void>;
81
+ startTemperatureUpdate(): Promise<void>;
82
+ performRefSpadManagement(): Promise<[number, number]>;
83
+ }
84
+ /** Everything about what is connected (`identifyProduct()`). */
85
+ export interface Vl53lxProductInfo {
86
+ board: string;
87
+ detected: string | null;
88
+ product: string | null;
89
+ driver: string | null;
90
+ driverClass: string;
91
+ kinds: string[];
92
+ modelId: number;
93
+ /** Cross-check only: L1CX/L1CB and L4CD/L4CX share their ids. */
94
+ modelIdOk: boolean;
95
+ supports: ReadonlySet<string>;
96
+ modes: readonly string[];
97
+ reachMm: number | null;
98
+ driverReachMm: number | null;
99
+ budgetMs: readonly [number, number];
100
+ budgetChoices: number[];
101
+ histogram: boolean;
102
+ maxKhz: number;
103
+ caveat: string | null;
104
+ }
105
+ export interface Vl53lxOptions extends DeviceOptions {
106
+ /** ULD sleep implementation (tests inject an instant one). */
107
+ sleepImpl?: (ms: number) => Promise<void>;
108
+ }
109
+ export interface Vl53lxConfigureOptions {
110
+ /** Timing budget, ms (see budgetChoices()). Default 50. */
111
+ budgetMs?: number;
112
+ /** 0 = continuous; otherwise the period between measurements (> budget). */
113
+ interMs?: number;
114
+ /** One of `modes`, applied before the budget. */
115
+ mode?: string | null;
116
+ /** Re-apply a stored offset calibration. */
117
+ offsetMm?: number | null;
118
+ /** Re-apply a stored crosstalk calibration. */
119
+ xtalkKcps?: number | null;
120
+ }
121
+ /**
122
+ * A board of the VL53L 1D family (firmware `APP_VL53L0_4`).
123
+ *
124
+ * `init()` binds the (product, driver kind) pair and runs the ULD's
125
+ * sensorInit; `configure()` re-initialises and applies the ranging
126
+ * configuration — call it before every run. Then `startRanging()` arms the MCU
127
+ * stream and measurements arrive via `onMeasurement` / `measurements()` /
128
+ * `getMeasurement()`. Configuration must not change while ranging.
129
+ *
130
+ * This generic class serves any product (read from the board's device name,
131
+ * or `product` at init); the per-product subclasses (`Vl53l0x`...) fix it.
132
+ */
133
+ export declare class Vl53lx extends DepzDevice {
134
+ /** The product this class drives; null = read it from the device name. */
135
+ static readonly PRODUCT: string | null;
136
+ protected driverInst: SensorDriver | null;
137
+ protected productName: string | null;
138
+ protected driverKindName: string | null;
139
+ protected caveat: string | null;
140
+ private boardNameCache;
141
+ private measureCbs;
142
+ private measureQueues;
143
+ protected rangingFlag: boolean;
144
+ private streamParseErrorCount;
145
+ /** Keeps asynchronous histogram decodes in frame order. */
146
+ private decodeChain;
147
+ /** MCU timestamp of the latest register read (poll-mode measurements). */
148
+ private lastRegTimestampUs;
149
+ private readonly sleepImpl;
150
+ private readonly platform;
151
+ /**
152
+ * The `BridgeDevice` the ULD ports talk to: register transfers split at the
153
+ * bridge's 253-byte limit; a non-OK status or a missing answer surfaces as
154
+ * `ProtocolError`, exactly what the ports catch.
155
+ */
156
+ readonly bridge: BridgeDevice;
157
+ /**
158
+ * A reset makes the die NACK for a moment (the VL53L0X soft reset does it);
159
+ * the driver waits those out, and they are no bus fault.
160
+ */
161
+ private sensorInit;
162
+ /** StatusError / DepzTimeoutError (and a short register read) → ProtocolError. */
163
+ private static asProtocolError;
164
+ constructor(transport: SerialTransport, opts?: Vl53lxOptions);
165
+ private get classProduct();
166
+ /**
167
+ * The board's device name (bootloader metablock), e.g.
168
+ * `DEPZ ToF Sensor VL53L4CX USB v2.1 TOVJALN523`. Read once, then cached.
169
+ */
170
+ boardName(): Promise<string>;
171
+ /** The product the device name carries, or null on an unstamped board. */
172
+ detected(): Promise<string | null>;
173
+ /** The product init() bound (null before init). */
174
+ get product(): string | null;
175
+ get driverKind(): string | null;
176
+ /** The ULD port in use — escape hatch for product-specific calls. */
177
+ get driver(): SensorDriver;
178
+ get initialized(): boolean;
179
+ /** The driver kinds a product has (default: this board's). */
180
+ driverKinds(product?: string): Promise<string[]>;
181
+ /**
182
+ * Bind the (product, driver kind) pair and initialise the sensor.
183
+ *
184
+ * `product` defaults to this class's product, else the board's device name;
185
+ * `driver` defaults to the product's first kind (`uld`, else `ulp`, else
186
+ * `histogram`). A pair the table has no row for throws
187
+ * `NotImplementedError` naming what the product has.
188
+ */
189
+ init(driver?: string | null, opts?: {
190
+ product?: string | null;
191
+ }): Promise<void>;
192
+ /** Everything about what is connected (needs init()). */
193
+ identifyProduct(): Promise<Vl53lxProductInfo>;
194
+ /**
195
+ * The lines a UI should show about the chosen pair: product named by hand,
196
+ * a borrowed driver, a pair that reaches less than the board is rated for,
197
+ * the driver's caveat.
198
+ */
199
+ notes(): Promise<string[]>;
200
+ /**
201
+ * Whether this product/driver serves an optional capability group: mode,
202
+ * timing, offset, calib_offset, xtalk, calib_xtalk, thresholds,
203
+ * signal_thresh, sigma_thresh, roi, temp_update, refspad.
204
+ */
205
+ supports(group: string): boolean;
206
+ /** Named ranging modes, first = what init leaves; [] if none. */
207
+ get modes(): readonly string[];
208
+ /**
209
+ * Drive XSHUT: XSHUT_OFF / XSHUT_ON / XSHUT_RESET (1 ms pulse + 5 ms wait;
210
+ * the host confirms the boot). OFF and RESET stop the stream; the sensor
211
+ * then holds none of the configuration — init() again.
212
+ */
213
+ xshut(action: number): Promise<void>;
214
+ /** RPT_VL53_INFO — the bridge's own counters; safe while streaming. */
215
+ bridgeInfo(): Promise<Vl53lxInfo>;
216
+ /**
217
+ * Re-initialise the sensor and apply a ranging configuration. The re-init
218
+ * is deliberate (the only way to know what the configuration registers
219
+ * hold). `mode` goes on before the budget; `offsetMm` / `xtalkKcps`
220
+ * re-apply a stored calibration.
221
+ */
222
+ configure(opts?: Vl53lxConfigureOptions): Promise<void>;
223
+ /** → [timingBudgetMs, interMeasurementMs]; 0 for the period = continuous. */
224
+ getRangeTiming(): Promise<[number, number]>;
225
+ /** The ranging mode in use, or null on a product without modes. */
226
+ getMode(): Promise<string | null>;
227
+ /** The only budgets accepted right now (ascending), or [] for any in range. */
228
+ budgetChoices(): number[];
229
+ /** The nearest budget this product will actually accept. */
230
+ snapBudget(budgetMs: number): number;
231
+ getOffsetMm(): Promise<number>;
232
+ setOffsetMm(offsetMm: number): Promise<void>;
233
+ getXtalkKcps(): Promise<number>;
234
+ setXtalkKcps(xtalkKcps: number): Promise<void>;
235
+ /**
236
+ * Offset calibration against a flat target at `targetDistMm`; returns the
237
+ * offset now programmed. Store it on the host (sensor RAM, lost on reset).
238
+ */
239
+ calibrateOffset(targetDistMm: number, nbSamples?: number): Promise<number>;
240
+ /** Crosstalk calibration; returns the xtalk now programmed (kcps). */
241
+ calibrateXtalk(targetDistMm: number, nbSamples?: number): Promise<number>;
242
+ /** → [distanceLowMm, distanceHighMm, window]. */
243
+ getDetectionThresholds(): Promise<[number, number, number]>;
244
+ /** Arm the distance-window interrupt; stays armed until the next init/configure. */
245
+ setDetectionThresholds(distanceLowMm: number, distanceHighMm: number, window: number): Promise<void>;
246
+ getSignalThresholdKcps(): Promise<number>;
247
+ setSignalThresholdKcps(signalKcps: number): Promise<void>;
248
+ getSigmaThresholdMm(): Promise<number>;
249
+ setSigmaThresholdMm(sigmaMm: number): Promise<void>;
250
+ /** → [x, y] SPAD window size. */
251
+ getRoi(): Promise<[number, number]>;
252
+ setRoi(x: number, y: number): Promise<void>;
253
+ getRoiCenter(): Promise<number>;
254
+ setRoiCenter(centerSpad: number): Promise<void>;
255
+ /** Re-run VHV after an ambient change over 8 °C. */
256
+ startTemperatureUpdate(): Promise<void>;
257
+ /** VL53L0X: re-measure the reference SPADs → [count, isAperture]. */
258
+ performRefSpadManagement(): Promise<[number, number]>;
259
+ /**
260
+ * Start the sensor's ranging loop and arm the MCU stream: one
261
+ * RPT_VL53_STREAM per INT edge, followed on the MCU by the driver's
262
+ * interrupt-release writes.
263
+ */
264
+ startRanging(): Promise<void>;
265
+ stopRanging(): Promise<void>;
266
+ get ranging(): boolean;
267
+ /**
268
+ * Single poll-mode measurement: start ranging, wait for data-ready, read,
269
+ * release the interrupt, stop. Rejects while the stream runs.
270
+ */
271
+ measureOnce(timeoutMs?: number): Promise<Vl53lxMeasurement>;
272
+ /** Subscribe to streamed measurements. Returns an unsubscribe function. */
273
+ onMeasurement(cb: (m: Vl53lxMeasurement) => void): () => void;
274
+ /** Async iterator over measurements — bounded, drop-oldest (contract 07 §3). */
275
+ measurements(maxsize?: number): StreamQueue<Vl53lxMeasurement>;
276
+ /** Wait for the next streamed measurement. */
277
+ getMeasurement(timeoutMs?: number): Promise<Vl53lxMeasurement>;
278
+ /** Stream reports dropped because the driver failed to decode them. */
279
+ get streamParseErrors(): number;
280
+ /** Drop counters of all live measurement queues (diagnostics). */
281
+ get streamDroppedCounts(): number[];
282
+ protected need(group: string): SensorDriver & DriverExtras;
283
+ protected requireNotRanging(): void;
284
+ private emit;
285
+ protected handleReport(pkt: PacketEvent): boolean;
286
+ }
287
+ /**
288
+ * VL53L0X (2 m, 1-byte register addresses, 400 kHz): ULD API 1.0.4 with
289
+ * ranging profiles, offset and crosstalk calibration, ref-SPAD management.
290
+ */
291
+ export declare class Vl53l0x extends Vl53lx {
292
+ static readonly PRODUCT: string | null;
293
+ }
294
+ /** VL53L1CX (4 m): VL53L1X ULD (short / long) or the histogram driver. */
295
+ export declare class Vl53l1cx extends Vl53lx {
296
+ static readonly PRODUCT: string | null;
297
+ }
298
+ /** VL53L1CB (8 m, cover-glass module): same die and drivers as VL53L1CX. */
299
+ export declare class Vl53l1cb extends Vl53lx {
300
+ static readonly PRODUCT: string | null;
301
+ }
302
+ /** VL53L3CX (3 m): ST's ULP driver (single target) or the histogram driver. */
303
+ export declare class Vl53l3cx extends Vl53lx {
304
+ static readonly PRODUCT: string | null;
305
+ }
306
+ /**
307
+ * VL53L4CX (6 m): the histogram driver only — to run it light, borrow a
308
+ * sibling's with `init(undefined, { product: "VL53L4CD" })`.
309
+ */
310
+ export declare class Vl53l4cx extends Vl53lx {
311
+ static readonly PRODUCT: string | null;
312
+ }
313
+ /** Class per product (VL53L4CD on this firmware uses the generic class). */
314
+ export declare const VL53LX_CLASS_BY_PRODUCT: Readonly<Record<string, typeof Vl53lx>>;
315
+ /**
316
+ * Pick the 1D-family class (contract 12 §1): the production PID model, then
317
+ * the product the device name carries, then the generic class.
318
+ */
319
+ export declare function resolveVl53lxClass(usbModel: string | null | undefined, deviceName: string | null | undefined): typeof Vl53lx;
320
+ export declare const VL53LX_PRODUCTS: readonly ["VL53L0X", "VL53L1CX", "VL53L1CB", "VL53L3CX", "VL53L4CD", "VL53L4CX"];
321
+ export declare const VL53LX_DRIVER_KINDS: readonly ["uld", "ulp", "histogram"];
322
+ export { ProtocolError, Vl53Error };
323
+ //# sourceMappingURL=vl53lx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vl53lx.d.ts","sourceRoot":"","sources":["../../../src/sensors/vl53lx/vl53lx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAEL,SAAS,EACT,QAAQ,EACR,WAAW,EAQZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAML,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAkB,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAG5E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAAe,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,gEAAgE;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;CACpB;AAoBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,CAKtD;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IAClC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;CAC3C;AAED,kEAAkE;AAClE,UAAU,YAAY;IACpB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3E,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,sBAAsB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AAED,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,8DAA8D;IAC9D,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAMD;;;;;;;;;;;GAWG;AACH,qBAAa,MAAO,SAAQ,UAAU;IACpC,0EAA0E;IAC1E,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9C,SAAS,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,CAAQ;IACjD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5C,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,aAAa,CAAwC;IAC7D,SAAS,CAAC,WAAW,UAAS;IAC9B,OAAO,CAAC,qBAAqB,CAAK;IAClC,2DAA2D;IAC3D,OAAO,CAAC,WAAW,CAAoC;IACvD,0EAA0E;IAC1E,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,CA4E3B;IAEF;;;OAGG;YACW,UAAU;IAKxB,kFAAkF;IAClF,OAAO,CAAC,MAAM,CAAC,eAAe;gBAWlB,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,aAAa;IAM5D,OAAO,KAAK,YAAY,GAEvB;IAID;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC,0EAA0E;IACpE,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,mDAAmD;IACnD,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAE3B;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,CAE9B;IAED,qEAAqE;IACrE,IAAI,MAAM,IAAI,YAAY,CAGzB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,8DAA8D;IACxD,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOtD;;;;;;;OAOG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzF,yDAAyD;IACnD,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAyBnD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAsBhC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC,iEAAiE;IACjE,IAAI,KAAK,IAAI,SAAS,MAAM,EAAE,CAE7B;IAID;;;;OAIG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C,uEAAuE;IACvE,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAQjC;;;;;OAKG;IACG,SAAS,CAAC,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjE,6EAA6E;IAC7E,cAAc,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI3C,mEAAmE;IAC7D,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIvC,+EAA+E;IAC/E,aAAa,IAAI,MAAM,EAAE;IAIzB,4DAA4D;IAC5D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAcpC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD;;;OAGG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhF,sEAAsE;IAChE,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/E,iDAAiD;IACjD,sBAAsB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAI3D,oFAAoF;IAC9E,sBAAsB,CAC1B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAKhB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,iCAAiC;IACjC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI7B,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,oDAAoD;IAC9C,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7C,qEAAqE;IAC/D,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAO3D;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACG,WAAW,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuB/D,2EAA2E;IAC3E,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAO7D,gFAAgF;IAChF,YAAY,CAAC,OAAO,SAAK,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAU1D,8CAA8C;IACxC,cAAc,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwBlE,uEAAuE;IACvE,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,kEAAkE;IAClE,IAAI,mBAAmB,IAAI,MAAM,EAAE,CAElC;IAID,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY;IAW1D,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAInC,OAAO,CAAC,IAAI;cAKO,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;CAiC3D;AAED;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,MAAM;IACjC,gBAAyB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAa;CAC7D;AAED,0EAA0E;AAC1E,qBAAa,QAAS,SAAQ,MAAM;IAClC,gBAAyB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAc;CAC9D;AAED,4EAA4E;AAC5E,qBAAa,QAAS,SAAQ,MAAM;IAClC,gBAAyB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAc;CAC9D;AAED,+EAA+E;AAC/E,qBAAa,QAAS,SAAQ,MAAM;IAClC,gBAAyB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAc;CAC9D;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,MAAM;IAClC,gBAAyB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAc;CAC9D;AAED,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC,CAM3E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACpC,OAAO,MAAM,CAMf;AAED,eAAO,MAAM,eAAe,kFAAoB,CAAC;AACjD,eAAO,MAAM,mBAAmB,sCAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC"}