@depz/sensor-sdk 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) 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/discovery.d.ts.map +1 -1
  6. package/dist/discovery.js +25 -2
  7. package/dist/discovery.js.map +1 -1
  8. package/dist/index.d.ts +21 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +16 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/protocol/bno055.d.ts +101 -0
  13. package/dist/protocol/bno055.d.ts.map +1 -0
  14. package/dist/protocol/bno055.js +105 -0
  15. package/dist/protocol/bno055.js.map +1 -0
  16. package/dist/protocol/identity.d.ts +1 -1
  17. package/dist/protocol/identity.d.ts.map +1 -1
  18. package/dist/protocol/identity.js +6 -0
  19. package/dist/protocol/identity.js.map +1 -1
  20. package/dist/protocol/vl53l7.d.ts +77 -0
  21. package/dist/protocol/vl53l7.d.ts.map +1 -0
  22. package/dist/protocol/vl53l7.js +99 -0
  23. package/dist/protocol/vl53l7.js.map +1 -0
  24. package/dist/protocol/vl53lx.d.ts +72 -0
  25. package/dist/protocol/vl53lx.d.ts.map +1 -0
  26. package/dist/protocol/vl53lx.js +87 -0
  27. package/dist/protocol/vl53lx.js.map +1 -0
  28. package/dist/sensors/bno055/bno055.d.ts +207 -0
  29. package/dist/sensors/bno055/bno055.d.ts.map +1 -0
  30. package/dist/sensors/bno055/bno055.js +547 -0
  31. package/dist/sensors/bno055/bno055.js.map +1 -0
  32. package/dist/sensors/bno055/regs.d.ts +271 -0
  33. package/dist/sensors/bno055/regs.d.ts.map +1 -0
  34. package/dist/sensors/bno055/regs.js +366 -0
  35. package/dist/sensors/bno055/regs.js.map +1 -0
  36. package/dist/sensors/bno086/bno086.d.ts +13 -0
  37. package/dist/sensors/bno086/bno086.d.ts.map +1 -1
  38. package/dist/sensors/bno086/bno086.js +26 -1
  39. package/dist/sensors/bno086/bno086.js.map +1 -1
  40. package/dist/sensors/bno086/sh2.d.ts.map +1 -1
  41. package/dist/sensors/bno086/sh2.js +5 -2
  42. package/dist/sensors/bno086/sh2.js.map +1 -1
  43. package/dist/sensors/vl53l7/vl53l7.d.ts +97 -0
  44. package/dist/sensors/vl53l7/vl53l7.d.ts.map +1 -0
  45. package/dist/sensors/vl53l7/vl53l7.js +138 -0
  46. package/dist/sensors/vl53l7/vl53l7.js.map +1 -0
  47. package/dist/sensors/vl53l8/assets/index.d.ts +5 -1
  48. package/dist/sensors/vl53l8/assets/index.d.ts.map +1 -1
  49. package/dist/sensors/vl53l8/assets/index.js +7 -1
  50. package/dist/sensors/vl53l8/assets/index.js.map +1 -1
  51. package/dist/sensors/vl53l8/assets/l7ch.d.ts +12 -0
  52. package/dist/sensors/vl53l8/assets/l7ch.d.ts.map +1 -0
  53. package/dist/sensors/vl53l8/assets/l7ch.js +18 -0
  54. package/dist/sensors/vl53l8/assets/l7ch.js.map +1 -0
  55. package/dist/sensors/vl53l8/assets/l7cx.d.ts +14 -0
  56. package/dist/sensors/vl53l8/assets/l7cx.d.ts.map +1 -0
  57. package/dist/sensors/vl53l8/assets/l7cx.js +20 -0
  58. package/dist/sensors/vl53l8/assets/l7cx.js.map +1 -0
  59. package/dist/sensors/vl53l8/cnh.d.ts +4 -3
  60. package/dist/sensors/vl53l8/cnh.d.ts.map +1 -1
  61. package/dist/sensors/vl53l8/cnh.js +4 -3
  62. package/dist/sensors/vl53l8/cnh.js.map +1 -1
  63. package/dist/sensors/vl53l8/uld.d.ts +50 -9
  64. package/dist/sensors/vl53l8/uld.d.ts.map +1 -1
  65. package/dist/sensors/vl53l8/uld.js +241 -35
  66. package/dist/sensors/vl53l8/uld.js.map +1 -1
  67. package/dist/sensors/vl53l8/vl53l8.d.ts +8 -3
  68. package/dist/sensors/vl53l8/vl53l8.d.ts.map +1 -1
  69. package/dist/sensors/vl53l8/vl53l8.js +12 -7
  70. package/dist/sensors/vl53l8/vl53l8.js.map +1 -1
  71. package/dist/sensors/vl53lx/decode.d.ts +70 -0
  72. package/dist/sensors/vl53lx/decode.d.ts.map +1 -0
  73. package/dist/sensors/vl53lx/decode.js +108 -0
  74. package/dist/sensors/vl53lx/decode.js.map +1 -0
  75. package/dist/sensors/vl53lx/uld/arith.d.ts +23 -0
  76. package/dist/sensors/vl53lx/uld/arith.d.ts.map +1 -0
  77. package/dist/sensors/vl53lx/uld/arith.js +42 -0
  78. package/dist/sensors/vl53lx/uld/arith.js.map +1 -0
  79. package/dist/sensors/vl53lx/uld/bare/core.d.ts +359 -0
  80. package/dist/sensors/vl53lx/uld/bare/core.d.ts.map +1 -0
  81. package/dist/sensors/vl53lx/uld/bare/core.js +1112 -0
  82. package/dist/sensors/vl53lx/uld/bare/core.js.map +1 -0
  83. package/dist/sensors/vl53lx/uld/bare/driver.d.ts +100 -0
  84. package/dist/sensors/vl53lx/uld/bare/driver.d.ts.map +1 -0
  85. package/dist/sensors/vl53lx/uld/bare/driver.js +226 -0
  86. package/dist/sensors/vl53lx/uld/bare/driver.js.map +1 -0
  87. package/dist/sensors/vl53lx/uld/bare/hist.d.ts +180 -0
  88. package/dist/sensors/vl53lx/uld/bare/hist.d.ts.map +1 -0
  89. package/dist/sensors/vl53lx/uld/bare/hist.js +949 -0
  90. package/dist/sensors/vl53lx/uld/bare/hist.js.map +1 -0
  91. package/dist/sensors/vl53lx/uld/bare/image.d.ts +53 -0
  92. package/dist/sensors/vl53lx/uld/bare/image.d.ts.map +1 -0
  93. package/dist/sensors/vl53lx/uld/bare/image.js +108 -0
  94. package/dist/sensors/vl53lx/uld/bare/image.js.map +1 -0
  95. package/dist/sensors/vl53lx/uld/bare/imath.d.ts +39 -0
  96. package/dist/sensors/vl53lx/uld/bare/imath.d.ts.map +1 -0
  97. package/dist/sensors/vl53lx/uld/bare/imath.js +99 -0
  98. package/dist/sensors/vl53lx/uld/bare/imath.js.map +1 -0
  99. package/dist/sensors/vl53lx/uld/bare/index.d.ts +22 -0
  100. package/dist/sensors/vl53lx/uld/bare/index.d.ts.map +1 -0
  101. package/dist/sensors/vl53lx/uld/bare/index.js +22 -0
  102. package/dist/sensors/vl53lx/uld/bare/index.js.map +1 -0
  103. package/dist/sensors/vl53lx/uld/bare/nvm.d.ts +85 -0
  104. package/dist/sensors/vl53lx/uld/bare/nvm.d.ts.map +1 -0
  105. package/dist/sensors/vl53lx/uld/bare/nvm.js +148 -0
  106. package/dist/sensors/vl53lx/uld/bare/nvm.js.map +1 -0
  107. package/dist/sensors/vl53lx/uld/bare/regs.d.ts +54 -0
  108. package/dist/sensors/vl53lx/uld/bare/regs.d.ts.map +1 -0
  109. package/dist/sensors/vl53lx/uld/bare/regs.js +496 -0
  110. package/dist/sensors/vl53lx/uld/bare/regs.js.map +1 -0
  111. package/dist/sensors/vl53lx/uld/bare/tuning.d.ts +15 -0
  112. package/dist/sensors/vl53lx/uld/bare/tuning.d.ts.map +1 -0
  113. package/dist/sensors/vl53lx/uld/bare/tuning.js +303 -0
  114. package/dist/sensors/vl53lx/uld/bare/tuning.js.map +1 -0
  115. package/dist/sensors/vl53lx/uld/base.d.ts +134 -0
  116. package/dist/sensors/vl53lx/uld/base.d.ts.map +1 -0
  117. package/dist/sensors/vl53lx/uld/base.js +171 -0
  118. package/dist/sensors/vl53lx/uld/base.js.map +1 -0
  119. package/dist/sensors/vl53lx/uld/l0x.d.ts +334 -0
  120. package/dist/sensors/vl53lx/uld/l0x.d.ts.map +1 -0
  121. package/dist/sensors/vl53lx/uld/l0x.js +1532 -0
  122. package/dist/sensors/vl53lx/uld/l0x.js.map +1 -0
  123. package/dist/sensors/vl53lx/uld/l1.d.ts +69 -0
  124. package/dist/sensors/vl53lx/uld/l1.d.ts.map +1 -0
  125. package/dist/sensors/vl53lx/uld/l1.js +262 -0
  126. package/dist/sensors/vl53lx/uld/l1.js.map +1 -0
  127. package/dist/sensors/vl53lx/uld/l3.d.ts +25 -0
  128. package/dist/sensors/vl53lx/uld/l3.d.ts.map +1 -0
  129. package/dist/sensors/vl53lx/uld/l3.js +51 -0
  130. package/dist/sensors/vl53lx/uld/l3.js.map +1 -0
  131. package/dist/sensors/vl53lx/uld/l4.d.ts +20 -0
  132. package/dist/sensors/vl53lx/uld/l4.d.ts.map +1 -0
  133. package/dist/sensors/vl53lx/uld/l4.js +95 -0
  134. package/dist/sensors/vl53lx/uld/l4.js.map +1 -0
  135. package/dist/sensors/vl53lx/uld/link.d.ts +42 -0
  136. package/dist/sensors/vl53lx/uld/link.d.ts.map +1 -0
  137. package/dist/sensors/vl53lx/uld/link.js +28 -0
  138. package/dist/sensors/vl53lx/uld/link.js.map +1 -0
  139. package/dist/sensors/vl53lx/uld/registry.d.ts +68 -0
  140. package/dist/sensors/vl53lx/uld/registry.d.ts.map +1 -0
  141. package/dist/sensors/vl53lx/uld/registry.js +139 -0
  142. package/dist/sensors/vl53lx/uld/registry.js.map +1 -0
  143. package/dist/sensors/vl53lx/uld/vl53l1-die.d.ts +190 -0
  144. package/dist/sensors/vl53lx/uld/vl53l1-die.d.ts.map +1 -0
  145. package/dist/sensors/vl53lx/uld/vl53l1-die.js +457 -0
  146. package/dist/sensors/vl53lx/uld/vl53l1-die.js.map +1 -0
  147. package/dist/sensors/vl53lx/vl53lx.d.ts +332 -0
  148. package/dist/sensors/vl53lx/vl53lx.d.ts.map +1 -0
  149. package/dist/sensors/vl53lx/vl53lx.js +694 -0
  150. package/dist/sensors/vl53lx/vl53lx.js.map +1 -0
  151. package/package.json +9 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * uld/bare/driver — the SensorDriver the device class talks to, on top of
3
+ * BareDriver. Mirror of the Python `depz_sensor_sdk.vl53lx.uld.bare.driver`.
4
+ *
5
+ * `core.BareDriver` configures the die and hands back a 24-bin histogram
6
+ * frame; `hist.ts` turns that frame into targets. This is the adapter between
7
+ * them and the family contract, so ranging, streaming and every UI work on
8
+ * the histogram products without a special case.
9
+ *
10
+ * What this driver gives that the light ones do not: several targets per
11
+ * frame. The first frame of a stream reports status 6 (no wrap-around check
12
+ * done): the checks that would upgrade it need the frame before.
13
+ *
14
+ * `binData(raw)` and `toMeasurement(bins)` are synchronous so the device class
15
+ * can decode streamed frames inside its report handler; both are stateful
16
+ * (A/B frame alternation, frame history) — decode every frame exactly once.
17
+ */
18
+ import { SensorDriver, type BridgePlatform, type Measurement } from "../base.js";
19
+ import { BareDriver, type HistogramBinData } from "./core.js";
20
+ export { HistogramBinData } from "./core.js";
21
+ export declare const GPIO_HV_MUX__CTRL = 48;
22
+ export declare const GPIO__TIO_HV_STATUS = 49;
23
+ export declare const SYSTEM__INTERRUPT_CLEAR = 134;
24
+ export declare const FIRMWARE__SYSTEM_STATUS = 229;
25
+ export declare const PAD_I2C_HV__CONFIG = 45;
26
+ /**
27
+ * Bits 2 and 5, the byte `VL53L4CD_I2C_FAST_MODE_PLUS` writes to this
28
+ * register in the C ULD. ST's histogram preset leaves the pad at 0x00; the pad
29
+ * is a property of the die, so it is set here and never cleared.
30
+ */
31
+ export declare const FMP_PAD_CONFIG = 18;
32
+ export declare const DEFAULT_MODE = "medium";
33
+ /** VL53L1CX / L1CB / L3CX / L4CX in histogram mode: multi-target ranging. */
34
+ export declare class VL53LX extends SensorDriver {
35
+ static readonly ADDR_WIDTH = 2;
36
+ static readonly CLEAR_STEPS: ReadonlyArray<readonly [number, number]>;
37
+ static readonly MAX_KHZ = 1000;
38
+ static readonly SUPPORTS: ReadonlySet<string>;
39
+ static readonly MODES: readonly string[];
40
+ static readonly BUDGET_MS: readonly [number, number];
41
+ static readonly HISTOGRAM = true;
42
+ readonly bare: BareDriver;
43
+ private mode;
44
+ private dieModes;
45
+ private dieBudgetMs;
46
+ private budgetMs;
47
+ private interMs;
48
+ private lastStreamCount;
49
+ private readonly history;
50
+ constructor(platform: BridgePlatform, product: string);
51
+ get MODES(): readonly string[];
52
+ get BUDGET_MS(): readonly [number, number];
53
+ modelId(): Promise<number>;
54
+ waitBoot(timeoutS?: number): Promise<void>;
55
+ /**
56
+ * Reset the part, configure it for histogram ranging and leave the bus at
57
+ * this die's ceiling. The bus is raised only after the FM+ pad byte has
58
+ * reached the device.
59
+ */
60
+ sensorInit(): Promise<void>;
61
+ /**
62
+ * short / medium / long — the device preset mode: the VCSEL period, which
63
+ * sets where the phase wraps (1.6 / 2.4 / 4.0 m), and the valid phase
64
+ * window inside it (`reachMm()`). Host-side only.
65
+ */
66
+ setMode(name: string): Promise<void>;
67
+ getMode(): Promise<string>;
68
+ /**
69
+ * The valid phase window of the preset mode, which the post-processing
70
+ * applies: 992 / 1785 / 3373 mm for short / medium / long at the usual
71
+ * oscillator. Past it the target is status 4, although the bins only wrap
72
+ * further out. Host-side: no sensor traffic.
73
+ */
74
+ reachMm(): Promise<number | null>;
75
+ driverInfo(): Promise<Record<string, unknown>>;
76
+ startRanging(): Promise<void>;
77
+ stopRanging(): Promise<void>;
78
+ streamBlock(): [number, number];
79
+ decode(raw: Uint8Array): Measurement;
80
+ readMeasurement(): Promise<Measurement>;
81
+ /**
82
+ * The raw frame. `raw` is the streamed block when the bridge read it
83
+ * (synchronous); without it the block is read here (async).
84
+ */
85
+ binData(raw: Uint8Array): HistogramBinData;
86
+ binData(): Promise<HistogramBinData>;
87
+ private binDataFrom;
88
+ toMeasurement(bins: HistogramBinData): Measurement;
89
+ checkForDataReady(): Promise<boolean>;
90
+ clearInterrupt(): Promise<void>;
91
+ /**
92
+ * The budget covers the whole measurement, of which the range timeout is
93
+ * one sixth after a fixed guard comes off. 0 = continuous. Host-side only:
94
+ * the image reaches the sensor at startRanging().
95
+ */
96
+ setRangeTiming(timingBudgetMs: number, interMeasurementMs: number): Promise<void>;
97
+ /** → [timing budget ms, inter-measurement ms]. */
98
+ getRangeTiming(): Promise<[number, number]>;
99
+ }
100
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * uld/bare/driver — the SensorDriver the device class talks to, on top of
3
+ * BareDriver. Mirror of the Python `depz_sensor_sdk.vl53lx.uld.bare.driver`.
4
+ *
5
+ * `core.BareDriver` configures the die and hands back a 24-bin histogram
6
+ * frame; `hist.ts` turns that frame into targets. This is the adapter between
7
+ * them and the family contract, so ranging, streaming and every UI work on
8
+ * the histogram products without a special case.
9
+ *
10
+ * What this driver gives that the light ones do not: several targets per
11
+ * frame. The first frame of a stream reports status 6 (no wrap-around check
12
+ * done): the checks that would upgrade it need the frame before.
13
+ *
14
+ * `binData(raw)` and `toMeasurement(bins)` are synchronous so the device class
15
+ * can decode streamed frames inside its report handler; both are stateful
16
+ * (A/B frame alternation, frame history) — decode every frame exactly once.
17
+ */
18
+ import { SensorDriver } from "../base.js";
19
+ import { I2C_KHZ_BOOT, Vl53Error } from "../link.js";
20
+ import { phaseWindowMm } from "../vl53l1-die.js";
21
+ import { BareDriver, CLEAR_RANGE_INT, DISTANCE_MODES, HISTOGRAM_BIN_DATA_I2C_INDEX, HISTOGRAM_BIN_DATA_I2C_SIZE_BYTES, TIMING_DIVISOR, TIMING_GUARD_US, } from "./core.js";
22
+ import { FrameHistory, processData, toMeasurement } from "./hist.js";
23
+ import { floorDiv } from "./imath.js";
24
+ export { HistogramBinData } from "./core.js";
25
+ // The VL53L1 die's own registers, the few this adapter needs by name.
26
+ export const GPIO_HV_MUX__CTRL = 0x0030;
27
+ export const GPIO__TIO_HV_STATUS = 0x0031;
28
+ export const SYSTEM__INTERRUPT_CLEAR = 0x0086;
29
+ export const FIRMWARE__SYSTEM_STATUS = 0x00e5;
30
+ export const PAD_I2C_HV__CONFIG = 0x002d;
31
+ /**
32
+ * Bits 2 and 5, the byte `VL53L4CD_I2C_FAST_MODE_PLUS` writes to this
33
+ * register in the C ULD. ST's histogram preset leaves the pad at 0x00; the pad
34
+ * is a property of the die, so it is set here and never cleared.
35
+ */
36
+ export const FMP_PAD_CONFIG = 0x12;
37
+ export const DEFAULT_MODE = "medium";
38
+ /** VL53L1CX / L1CB / L3CX / L4CX in histogram mode: multi-target ranging. */
39
+ export class VL53LX extends SensorDriver {
40
+ static ADDR_WIDTH = 2;
41
+ // One write clears the interrupt and lets the next frame run (measured
42
+ // over 40 frames on both dies: no misses, stream count unbroken).
43
+ static CLEAR_STEPS = [
44
+ [SYSTEM__INTERRUPT_CLEAR, CLEAR_RANGE_INT],
45
+ ];
46
+ static MAX_KHZ = 1000; // with Fast Mode Plus on the sensor pad
47
+ static SUPPORTS = new Set(["mode", "timing"]);
48
+ static MODES = DISTANCE_MODES;
49
+ // TIMING_GUARD_US comes off the budget before it is divided, and the range
50
+ // timeout is capped at FDA_MAX_TIMING_BUDGET_US: 2..551 ms, rounded inwards.
51
+ // Both MODES and BUDGET_MS are narrowed per die in sensorInit().
52
+ static BUDGET_MS = [2, 550];
53
+ static HISTOGRAM = true;
54
+ bare;
55
+ mode = DEFAULT_MODE;
56
+ // The die's own MODES / BUDGET_MS once NVM is read (null = the class's).
57
+ dieModes = null;
58
+ dieBudgetMs = null;
59
+ budgetMs = 33;
60
+ interMs = 0;
61
+ // The A/B alternation rides on the ll-driver state; with the clear done by
62
+ // the bridge, the state is advanced when a frame arrives. Which frame that
63
+ // is comes from the device's own `result__stream_count`, not a call count.
64
+ lastStreamCount = null;
65
+ // The phase and event consistency checks read the frame before this one.
66
+ history = new FrameHistory();
67
+ constructor(platform, product) {
68
+ super(platform, product);
69
+ this.bare = new BareDriver(platform);
70
+ }
71
+ get MODES() {
72
+ return this.dieModes ?? VL53LX.MODES;
73
+ }
74
+ get BUDGET_MS() {
75
+ return this.dieBudgetMs ?? VL53LX.BUDGET_MS;
76
+ }
77
+ // ── identity ──
78
+ modelId() {
79
+ return this.p.rdWord(0x010f);
80
+ }
81
+ // ── lifecycle ──
82
+ async waitBoot(timeoutS = 1.0) {
83
+ const deadline = Date.now() + timeoutS * 1000;
84
+ for (;;) {
85
+ if ((await this.p.rdByte(FIRMWARE__SYSTEM_STATUS)) === 0x03)
86
+ return;
87
+ if (Date.now() > deadline) {
88
+ throw new Vl53Error("timeout waiting for FIRMWARE__SYSTEM_STATUS == 0x03");
89
+ }
90
+ await this.p.sleepMs(1);
91
+ }
92
+ }
93
+ /**
94
+ * Reset the part, configure it for histogram ranging and leave the bus at
95
+ * this die's ceiling. The bus is raised only after the FM+ pad byte has
96
+ * reached the device.
97
+ */
98
+ async sensorInit() {
99
+ await this.p.setAddrWidth(this.ADDR_WIDTH);
100
+ await this.p.setI2cSpeed(I2C_KHZ_BOOT);
101
+ await this.p.xshutReset();
102
+ await this.waitBoot();
103
+ await this.bare.dataInit();
104
+ // The die is known once NVM is read: an L4 has no short mode and a
105
+ // 200 ms budget ceiling, as in ST's L4CX BareDriver.
106
+ this.dieModes = this.bare.distanceModes();
107
+ this.dieBudgetMs = [2, floorDiv(this.bare.fdaMaxTimingBudgetUs(), 1000)];
108
+ await this.setMode(this.mode);
109
+ await this.p.wrByte(PAD_I2C_HV__CONFIG, FMP_PAD_CONFIG);
110
+ if (this.MAX_KHZ !== I2C_KHZ_BOOT)
111
+ await this.p.setI2cSpeed(this.MAX_KHZ);
112
+ }
113
+ /**
114
+ * short / medium / long — the device preset mode: the VCSEL period, which
115
+ * sets where the phase wraps (1.6 / 2.4 / 4.0 m), and the valid phase
116
+ * window inside it (`reachMm()`). Host-side only.
117
+ */
118
+ async setMode(name) {
119
+ if (!this.MODES.includes(name)) {
120
+ throw new Vl53Error(`no such mode: ${name} (have ${this.MODES.join(", ")})`);
121
+ }
122
+ this.mode = name;
123
+ this.bare.setDistanceMode(name);
124
+ // The preset rewrites the whole static config, pad byte included; put FM+
125
+ // back or the first range-start write would switch the pad off at 1 MHz.
126
+ this.bare.img.static_config.v.pad_i2c_hv__config = FMP_PAD_CONFIG;
127
+ await this.setRangeTiming(this.budgetMs, this.interMs);
128
+ }
129
+ async getMode() {
130
+ return this.mode;
131
+ }
132
+ /**
133
+ * The valid phase window of the preset mode, which the post-processing
134
+ * applies: 992 / 1785 / 3373 mm for short / medium / long at the usual
135
+ * oscillator. Past it the target is status 4, although the bins only wrap
136
+ * further out. Host-side: no sensor traffic.
137
+ */
138
+ async reachMm() {
139
+ return phaseWindowMm(this.bare.img.static_nvm_managed.v.osc_measured__fast_osc__frequency, this.bare.hpp.valid_phase_high);
140
+ }
141
+ // ── driver-specific readout ──
142
+ async driverInfo() {
143
+ return {
144
+ "range timeout us": this.bare.rangeConfigTimeoutUs,
145
+ "MM1/MM2 offset mm": this.bare.hpp.range_offset_mm / 4,
146
+ };
147
+ }
148
+ async startRanging() {
149
+ this.lastStreamCount = null;
150
+ this.history.reset();
151
+ await this.bare.loadPatch();
152
+ await this.bare.initAndStartRange();
153
+ // The interrupt line comes out of reset already asserted: one clear
154
+ // deasserts it (ST's ClearInterruptAndStartMeasurement).
155
+ await this.bare.clearInterruptAndStartNextRange();
156
+ }
157
+ async stopRanging() {
158
+ await this.bare.stopRange();
159
+ await this.bare.unloadPatch();
160
+ }
161
+ // ── data ──
162
+ streamBlock() {
163
+ return [HISTOGRAM_BIN_DATA_I2C_INDEX, HISTOGRAM_BIN_DATA_I2C_SIZE_BYTES];
164
+ }
165
+ decode(raw) {
166
+ return this.toMeasurement(this.binData(raw));
167
+ }
168
+ async readMeasurement() {
169
+ return this.toMeasurement(await this.binData());
170
+ }
171
+ binData(raw) {
172
+ if (raw === undefined) {
173
+ const [addr, length] = this.streamBlock();
174
+ return this.p.rdMulti(addr, length).then((r) => this.binDataFrom(r));
175
+ }
176
+ return this.binDataFrom(raw);
177
+ }
178
+ binDataFrom(raw) {
179
+ const streamCount = raw[3]; // result__stream_count
180
+ if (streamCount !== this.lastStreamCount) {
181
+ if (this.lastStreamCount !== null) {
182
+ // What clear_interrupt_and_start_next_range() does to the state
183
+ // machine, without the register writes: one frame further on.
184
+ this.bare.state.updateRd(this.bare.img.system_control.v.system__mode_start, this.bare.img.dynamic_config.v.system__grouped_parameter_hold);
185
+ }
186
+ this.lastStreamCount = streamCount;
187
+ }
188
+ return this.bare.getHistogramBinData(raw);
189
+ }
190
+ toMeasurement(bins) {
191
+ const results = processData(bins, this.bare.hpp);
192
+ // Once per frame, and only here: the history is a state machine.
193
+ this.history.apply(results, bins, this.bare.state.rd_device_state, this.bare.hpp);
194
+ return toMeasurement(results, bins);
195
+ }
196
+ // ── interrupt ──
197
+ async checkForDataReady() {
198
+ const intPol = ((await this.p.rdByte(GPIO_HV_MUX__CTRL)) & 0x10) >> 4 === 1 ? 0 : 1;
199
+ return ((await this.p.rdByte(GPIO__TIO_HV_STATUS)) & 1) === intPol;
200
+ }
201
+ async clearInterrupt() {
202
+ await this.p.wrByte(SYSTEM__INTERRUPT_CLEAR, CLEAR_RANGE_INT);
203
+ }
204
+ // ── timing ──
205
+ /**
206
+ * The budget covers the whole measurement, of which the range timeout is
207
+ * one sixth after a fixed guard comes off. 0 = continuous. Host-side only:
208
+ * the image reaches the sensor at startRanging().
209
+ */
210
+ async setRangeTiming(timingBudgetMs, interMeasurementMs) {
211
+ const [low, high] = this.BUDGET_MS;
212
+ if (!(timingBudgetMs >= low && timingBudgetMs <= high)) {
213
+ throw new Vl53Error(`timing_budget_ms must be ${low}..${high}`);
214
+ }
215
+ this.budgetMs = timingBudgetMs;
216
+ this.interMs = interMeasurementMs;
217
+ this.bare.setMeasurementTimingBudgetUs(timingBudgetMs * 1000);
218
+ this.bare.setInterMeasurementPeriodMs(interMeasurementMs);
219
+ }
220
+ /** → [timing budget ms, inter-measurement ms]. */
221
+ async getRangeTiming() {
222
+ const budgetUs = this.bare.rangeConfigTimeoutUs * TIMING_DIVISOR + TIMING_GUARD_US;
223
+ return [floorDiv(budgetUs, 1000), this.bare.interMeasurementPeriodMs];
224
+ }
225
+ }
226
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * uld/bare/hist — histogram post-processing: 24 bins → targets.
3
+ * Mirror of the Python `depz_sensor_sdk.vl53lx.uld.bare.hist` (a port of
4
+ * `VL53LX_hist_process_data()`; ST ships the C obfuscated, the C names are in
5
+ * the comments next to ours).
6
+ *
7
+ * In one paragraph: fold repeated bin codes together, estimate the ambient
8
+ * floor, drop the ambient-only bins, work out per-bin detection thresholds,
9
+ * and mark every bin above its threshold. Runs of marked bins are pulses.
10
+ * Each pulse is isolated, filtered with a three-tap window, and the zero
11
+ * crossing between the two halves is interpolated to a sub-bin phase. Phase
12
+ * converts to millimetres against `zero_distance_phase`; event sums convert
13
+ * to rates; the filter sums to sigma. `FrameHistory` compares consecutive
14
+ * frames (phase and event consistency), which is what turns "no wrap check
15
+ * done" into "valid" or "wrapped target".
16
+ *
17
+ * Not here (as in Python): crosstalk compensation, the ambient dmax estimate
18
+ * (a stub on purpose — our boards ship the FMT region blank) and the
19
+ * crosstalk-monitor consistency check.
20
+ *
21
+ * **Integers.** Python floors (`//`), C truncates (`cdiv`); both are kept
22
+ * exactly where the Python has them. Three places can leave 2^53 and run in
23
+ * BigInt: the sigma estimate (64-bit saturation ceilings), the phase
24
+ * interpolation (4096² scaling) and the per-SPAD / events-consistency maths.
25
+ */
26
+ import { type Measurement } from "../base.js";
27
+ import { type HistPostProcessConfig, type HistogramBinData } from "./core.js";
28
+ export declare const MAX_BIN_SEQUENCE_LENGTH = 6;
29
+ export declare const MAX_BIN_SEQUENCE_CODE = 15;
30
+ export declare const MAX_PULSES = 8;
31
+ export declare const MAX_RANGE_RESULTS = 4;
32
+ export declare const MAX_ALLOWED_PHASE = 65535;
33
+ export declare const SPAD_TOTAL_COUNT_MAX: number;
34
+ export declare const SPAD_TOTAL_COUNT_RES_THRES: number;
35
+ export declare const SPEED_OF_LIGHT_IN_AIR_DIV_8: number;
36
+ export declare const SIGMA_INVALID = 65535;
37
+ export declare const DEVICEERROR_NOUPDATE = 0;
38
+ export declare const DEVICEERROR_RANGEPHASECHECK = 5;
39
+ export declare const DEVICEERROR_SIGMATHRESHOLDCHECK = 6;
40
+ export declare const DEVICEERROR_PHASECONSISTENCY = 7;
41
+ export declare const DEVICEERROR_RANGECOMPLETE = 9;
42
+ export declare const DEVICEERROR_RANGECOMPLETE_NO_WRAP_CHECK = 19;
43
+ export declare const DEVICEERROR_EVENTCONSISTENCY = 20;
44
+ export declare const DEVICEERROR_RANGECOMPLETE_MERGED_PULSE = 22;
45
+ export declare const DEVICEERROR_PREV_RANGE_NO_TARGETS = 23;
46
+ export declare const HIST_TARGET_ORDER_STRONGEST_FIRST = 1;
47
+ export declare const HIST_TARGET_ORDER_CLOSEST_FIRST = 2;
48
+ export declare const RANGESTATUS_RANGE_VALID = 0;
49
+ export declare const RANGESTATUS_SIGMA_FAIL = 1;
50
+ export declare const RANGESTATUS_OUTOFBOUNDS_FAIL = 4;
51
+ export declare const RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK = 6;
52
+ export declare const RANGESTATUS_WRAP_TARGET_FAIL = 7;
53
+ export declare const RANGESTATUS_RANGE_VALID_MERGED_PULSE = 11;
54
+ export declare const RANGESTATUS_TARGET_PRESENT_LACK_OF_SIGNAL = 12;
55
+ export declare const RANGESTATUS_NONE = 255;
56
+ /** VL53LX_isqrt() — floor of the square root, on a uint32 argument. */
57
+ export declare function isqrt(num: number): number;
58
+ /** VL53LX_calc_pll_period_mm(). */
59
+ export declare function calcPllPeriodMm(fastOscFrequency: number): number;
60
+ /** VL53LX_rate_maths(): events over a duration → count rate in 9.7 Mcps. */
61
+ export declare function rateMaths(events: number, timeUs: number): number;
62
+ /** VL53LX_rate_per_spad_maths(). */
63
+ export declare function ratePerSpadMaths(fracBits: number, peakCountRate: number, numSpads: number, maxOutputValue: number): number;
64
+ /** VL53LX_events_per_spad_maths() → kcps per SPAD (BigInt: `total << 11`). */
65
+ export declare function eventsPerSpadMaths(events: number, numSpads: number, duration: number): number;
66
+ /** VL53LX_range_maths(): phase → millimetres. */
67
+ export declare function rangeMaths(fastOscFrequency: number, phase: number, zeroDistancePhase: number, fractionalBits: number, gainFactor: number, rangeOffsetMm: number): number;
68
+ /** `VL53LX_range_data_t`: one target. C field names kept. */
69
+ export declare class RangeData {
70
+ range_id: number;
71
+ start_bin: number;
72
+ first_bin: number;
73
+ peak_bin: number;
74
+ last_bin: number;
75
+ end_bin: number;
76
+ width_bins: number;
77
+ window_bins: number;
78
+ vcsel_width: number;
79
+ fast_osc_frequency: number;
80
+ zero_distance_phase: number;
81
+ spads: number;
82
+ total_periods_elapsed: number;
83
+ peak_duration_us: number;
84
+ woi_duration_us: number;
85
+ ambient_events: number;
86
+ total_events: number;
87
+ signal_events: number;
88
+ peak_signal_count_rate_mcps: number;
89
+ avg_signal_count_rate_mcps: number;
90
+ ambient_count_rate_mcps: number;
91
+ total_rate_per_spad_mcps: number;
92
+ signal_events_per_spad_kcps: number;
93
+ sigma: number;
94
+ phase_start: number;
95
+ phase_mean: number;
96
+ phase_end: number;
97
+ min_range_mm: number;
98
+ median_range_mm: number;
99
+ max_range_mm: number;
100
+ range_status: number;
101
+ get sigma_mm(): number;
102
+ /** peak_signal_count_rate_mcps is 9.7 Mcps. */
103
+ get signal_kcps(): number;
104
+ get ambient_kcps(): number;
105
+ }
106
+ /** `VL53LX_range_results_t`, reduced to the single-zone case. */
107
+ export declare class RangeResults {
108
+ stream_count: number;
109
+ targets: RangeData[];
110
+ ambient_dmax_mm: number[];
111
+ wrap_dmax_mm: number;
112
+ }
113
+ /** `VL53LX_hist_pulse_data_t`: one run of bins above the threshold. */
114
+ export declare class PulseData {
115
+ start_bin: number;
116
+ first_bin: number;
117
+ peak_bin: number;
118
+ last_bin: number;
119
+ end_bin: number;
120
+ width_bins: number;
121
+ filter_woi: number;
122
+ ambient_events: number;
123
+ total_events: number;
124
+ signal_events: number;
125
+ phase_start: number;
126
+ phase_mean: number;
127
+ phase_end: number;
128
+ sigma: number;
129
+ }
130
+ /** VL53LX_f_031: fold the six bin-sequence codes together (repeats averaged). */
131
+ export declare function averageRepeatedBins(src: HistogramBinData): HistogramBinData;
132
+ /** VL53LX_hist_calc_zero_distance_phase */
133
+ export declare function calcZeroDistancePhase(bins: HistogramBinData): void;
134
+ /** VL53LX_hist_estimate_ambient_from_thresholded_bins() */
135
+ export declare function estimateAmbientFromThresholdedBins(ambientThresholdSigma: number, bins: HistogramBinData): void;
136
+ /** VL53LX_hist_estimate_ambient_from_ambient_bins() */
137
+ export declare function estimateAmbientFromAmbientBins(bins: HistogramBinData): void;
138
+ /** VL53LX_hist_remove_ambient_bins: drop the ambient-only bins off the front. */
139
+ export declare function removeAmbientBins(bins: HistogramBinData): void;
140
+ /**
141
+ * `VL53LX_hist_process_data()` + `VL53LX_f_025`, with crosstalk off.
142
+ * `binsInput` is what `BareDriver.getHistogramBinData()` returns; `hpp` is the
143
+ * driver's `HistPostProcessConfig`. Pure (does not modify `binsInput`).
144
+ */
145
+ export declare function processData(binsInput: HistogramBinData, hpp: HistPostProcessConfig, mergeNb?: number): RangeResults;
146
+ interface PrevTarget {
147
+ ambient_events: number;
148
+ total_events: number;
149
+ phase_mean: number;
150
+ range_status: number;
151
+ }
152
+ /**
153
+ * The frame before this one, reduced to what the consistency checks read
154
+ * (`VL53LX_zone_hist_info_t` / `VL53LX_zone_objects_t` for our single zone).
155
+ * The driver owns one and hands it every frame, exactly once.
156
+ */
157
+ export declare class FrameHistory {
158
+ rd_device_state: string | null;
159
+ total_periods_elapsed: number;
160
+ spads: number;
161
+ targets: PrevTarget[];
162
+ /** Forget the stream so far; the next `apply()` only remembers. */
163
+ reset(): void;
164
+ /** Check `results` against the remembered frame, then remember it (C order). */
165
+ apply(results: RangeResults, bins: HistogramBinData, rdDeviceState: string, hpp: HistPostProcessConfig): void;
166
+ /** `VL53LX_hist_phase_consistency_check()`. */
167
+ private phaseConsistencyCheck;
168
+ }
169
+ /** ConvertStatusHisto() (vl53lx_api.c), the cases the histogram path produces. */
170
+ export declare function convertStatus(deviceError: number): number;
171
+ /** UM2931 range status names, as uld/l4 spells them. */
172
+ export declare const STATUS_NAMES: Readonly<Record<number, string>>;
173
+ /**
174
+ * RangeResults → the family-wide Measurement. Every return goes into
175
+ * `targets`; the first one is also the measurement itself. `extra` keeps the
176
+ * Python key names (display only).
177
+ */
178
+ export declare function toMeasurement(results: RangeResults, bins: HistogramBinData): Measurement;
179
+ export {};
180
+ //# sourceMappingURL=hist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hist.d.ts","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/hist.ts"],"names":[],"mappings":"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"}