@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.
- package/README.md +13 -5
- package/dist/dataset.d.ts.map +1 -1
- package/dist/dataset.js +66 -2
- package/dist/dataset.js.map +1 -1
- package/dist/device/device.d.ts +6 -0
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/device.js +29 -6
- package/dist/device/device.js.map +1 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +25 -2
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +21 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/protocol/bno055.d.ts +101 -0
- package/dist/protocol/bno055.d.ts.map +1 -0
- package/dist/protocol/bno055.js +105 -0
- package/dist/protocol/bno055.js.map +1 -0
- package/dist/protocol/identity.d.ts +1 -1
- package/dist/protocol/identity.d.ts.map +1 -1
- package/dist/protocol/identity.js +6 -0
- package/dist/protocol/identity.js.map +1 -1
- package/dist/protocol/vl53l7.d.ts +77 -0
- package/dist/protocol/vl53l7.d.ts.map +1 -0
- package/dist/protocol/vl53l7.js +99 -0
- package/dist/protocol/vl53l7.js.map +1 -0
- package/dist/protocol/vl53lx.d.ts +72 -0
- package/dist/protocol/vl53lx.d.ts.map +1 -0
- package/dist/protocol/vl53lx.js +87 -0
- package/dist/protocol/vl53lx.js.map +1 -0
- package/dist/sensors/bno055/bno055.d.ts +207 -0
- package/dist/sensors/bno055/bno055.d.ts.map +1 -0
- package/dist/sensors/bno055/bno055.js +547 -0
- package/dist/sensors/bno055/bno055.js.map +1 -0
- package/dist/sensors/bno055/regs.d.ts +271 -0
- package/dist/sensors/bno055/regs.d.ts.map +1 -0
- package/dist/sensors/bno055/regs.js +366 -0
- package/dist/sensors/bno055/regs.js.map +1 -0
- package/dist/sensors/bno086/bno086.d.ts +15 -0
- package/dist/sensors/bno086/bno086.d.ts.map +1 -1
- package/dist/sensors/bno086/bno086.js +43 -1
- package/dist/sensors/bno086/bno086.js.map +1 -1
- package/dist/sensors/bno086/sh2.d.ts.map +1 -1
- package/dist/sensors/bno086/sh2.js +5 -2
- package/dist/sensors/bno086/sh2.js.map +1 -1
- package/dist/sensors/reg-bridge.d.ts +35 -0
- package/dist/sensors/reg-bridge.d.ts.map +1 -0
- package/dist/sensors/reg-bridge.js +44 -0
- package/dist/sensors/reg-bridge.js.map +1 -0
- package/dist/sensors/vl53l4/vl53l4.d.ts.map +1 -1
- package/dist/sensors/vl53l4/vl53l4.js +18 -30
- package/dist/sensors/vl53l4/vl53l4.js.map +1 -1
- package/dist/sensors/vl53l7/vl53l7.d.ts +97 -0
- package/dist/sensors/vl53l7/vl53l7.d.ts.map +1 -0
- package/dist/sensors/vl53l7/vl53l7.js +138 -0
- package/dist/sensors/vl53l7/vl53l7.js.map +1 -0
- package/dist/sensors/vl53l8/assets/index.d.ts +5 -1
- package/dist/sensors/vl53l8/assets/index.d.ts.map +1 -1
- package/dist/sensors/vl53l8/assets/index.js +7 -1
- package/dist/sensors/vl53l8/assets/index.js.map +1 -1
- package/dist/sensors/vl53l8/assets/l7ch.d.ts +12 -0
- package/dist/sensors/vl53l8/assets/l7ch.d.ts.map +1 -0
- package/dist/sensors/vl53l8/assets/l7ch.js +18 -0
- package/dist/sensors/vl53l8/assets/l7ch.js.map +1 -0
- package/dist/sensors/vl53l8/assets/l7cx.d.ts +14 -0
- package/dist/sensors/vl53l8/assets/l7cx.d.ts.map +1 -0
- package/dist/sensors/vl53l8/assets/l7cx.js +20 -0
- package/dist/sensors/vl53l8/assets/l7cx.js.map +1 -0
- package/dist/sensors/vl53l8/cnh.d.ts +4 -3
- package/dist/sensors/vl53l8/cnh.d.ts.map +1 -1
- package/dist/sensors/vl53l8/cnh.js +4 -3
- package/dist/sensors/vl53l8/cnh.js.map +1 -1
- package/dist/sensors/vl53l8/uld.d.ts +50 -9
- package/dist/sensors/vl53l8/uld.d.ts.map +1 -1
- package/dist/sensors/vl53l8/uld.js +241 -35
- package/dist/sensors/vl53l8/uld.js.map +1 -1
- package/dist/sensors/vl53l8/vl53l8.d.ts +8 -3
- package/dist/sensors/vl53l8/vl53l8.d.ts.map +1 -1
- package/dist/sensors/vl53l8/vl53l8.js +41 -39
- package/dist/sensors/vl53l8/vl53l8.js.map +1 -1
- package/dist/sensors/vl53lx/decode.d.ts +70 -0
- package/dist/sensors/vl53lx/decode.d.ts.map +1 -0
- package/dist/sensors/vl53lx/decode.js +108 -0
- package/dist/sensors/vl53lx/decode.js.map +1 -0
- package/dist/sensors/vl53lx/uld/arith.d.ts +23 -0
- package/dist/sensors/vl53lx/uld/arith.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/arith.js +42 -0
- package/dist/sensors/vl53lx/uld/arith.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/core.d.ts +345 -0
- package/dist/sensors/vl53lx/uld/bare/core.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/core.js +1085 -0
- package/dist/sensors/vl53lx/uld/bare/core.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/driver.d.ts +91 -0
- package/dist/sensors/vl53lx/uld/bare/driver.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/driver.js +206 -0
- package/dist/sensors/vl53lx/uld/bare/driver.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/hist.d.ts +180 -0
- package/dist/sensors/vl53lx/uld/bare/hist.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/hist.js +949 -0
- package/dist/sensors/vl53lx/uld/bare/hist.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/image.d.ts +53 -0
- package/dist/sensors/vl53lx/uld/bare/image.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/image.js +108 -0
- package/dist/sensors/vl53lx/uld/bare/image.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/imath.d.ts +39 -0
- package/dist/sensors/vl53lx/uld/bare/imath.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/imath.js +99 -0
- package/dist/sensors/vl53lx/uld/bare/imath.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/index.d.ts +22 -0
- package/dist/sensors/vl53lx/uld/bare/index.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/index.js +22 -0
- package/dist/sensors/vl53lx/uld/bare/index.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/nvm.d.ts +85 -0
- package/dist/sensors/vl53lx/uld/bare/nvm.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/nvm.js +148 -0
- package/dist/sensors/vl53lx/uld/bare/nvm.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/regs.d.ts +54 -0
- package/dist/sensors/vl53lx/uld/bare/regs.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/regs.js +496 -0
- package/dist/sensors/vl53lx/uld/bare/regs.js.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/tuning.d.ts +15 -0
- package/dist/sensors/vl53lx/uld/bare/tuning.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/bare/tuning.js +303 -0
- package/dist/sensors/vl53lx/uld/bare/tuning.js.map +1 -0
- package/dist/sensors/vl53lx/uld/base.d.ts +129 -0
- package/dist/sensors/vl53lx/uld/base.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/base.js +166 -0
- package/dist/sensors/vl53lx/uld/base.js.map +1 -0
- package/dist/sensors/vl53lx/uld/l0x.d.ts +306 -0
- package/dist/sensors/vl53lx/uld/l0x.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/l0x.js +1492 -0
- package/dist/sensors/vl53lx/uld/l0x.js.map +1 -0
- package/dist/sensors/vl53lx/uld/l1.d.ts +69 -0
- package/dist/sensors/vl53lx/uld/l1.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/l1.js +262 -0
- package/dist/sensors/vl53lx/uld/l1.js.map +1 -0
- package/dist/sensors/vl53lx/uld/l3.d.ts +25 -0
- package/dist/sensors/vl53lx/uld/l3.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/l3.js +51 -0
- package/dist/sensors/vl53lx/uld/l3.js.map +1 -0
- package/dist/sensors/vl53lx/uld/l4.d.ts +22 -0
- package/dist/sensors/vl53lx/uld/l4.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/l4.js +99 -0
- package/dist/sensors/vl53lx/uld/l4.js.map +1 -0
- package/dist/sensors/vl53lx/uld/link.d.ts +42 -0
- package/dist/sensors/vl53lx/uld/link.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/link.js +28 -0
- package/dist/sensors/vl53lx/uld/link.js.map +1 -0
- package/dist/sensors/vl53lx/uld/registry.d.ts +68 -0
- package/dist/sensors/vl53lx/uld/registry.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/registry.js +139 -0
- package/dist/sensors/vl53lx/uld/registry.js.map +1 -0
- package/dist/sensors/vl53lx/uld/vl53l1-die.d.ts +172 -0
- package/dist/sensors/vl53lx/uld/vl53l1-die.d.ts.map +1 -0
- package/dist/sensors/vl53lx/uld/vl53l1-die.js +431 -0
- package/dist/sensors/vl53lx/uld/vl53l1-die.js.map +1 -0
- package/dist/sensors/vl53lx/vl53lx.d.ts +323 -0
- package/dist/sensors/vl53lx/vl53lx.d.ts.map +1 -0
- package/dist/sensors/vl53lx/vl53lx.js +688 -0
- package/dist/sensors/vl53lx/vl53lx.js.map +1 -0
- package/dist/transport/webserial.d.ts +4 -0
- package/dist/transport/webserial.d.ts.map +1 -1
- package/dist/transport/webserial.js +58 -12
- package/dist/transport/webserial.js.map +1 -1
- 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":"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"}
|