@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,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* uld/bare/nvm — the raw NVM, which the register blocks do not cover.
|
|
3
|
+
* Mirror of the Python `depz_sensor_sdk.vl53lx.uld.bare.nvm`.
|
|
4
|
+
*
|
|
5
|
+
* Part of the factory calibration never appears in the register map: the
|
|
6
|
+
* optical centre, the 5x5 peak-rate map, the mode-mitigation offset
|
|
7
|
+
* calibration and the FMT range results. To get at them the driver stops the
|
|
8
|
+
* firmware, powers the NVM array and clocks words out of it one at a time —
|
|
9
|
+
* four writes and a read per 32-bit word. That cost is why this reads regions,
|
|
10
|
+
* not the whole array.
|
|
11
|
+
*
|
|
12
|
+
* Every region is wrapped in its own enable/disable pair (as
|
|
13
|
+
* `VL53LX_read_nvm_raw_data()` does): the sensor must not be left with its
|
|
14
|
+
* firmware stopped by an exception in the middle of a multi-region read.
|
|
15
|
+
*
|
|
16
|
+
* Reference: vl53lx_nvm.c, vl53lx_nvm_map.h.
|
|
17
|
+
*/
|
|
18
|
+
// ── registers (vl53lx_register_map.h) ────────────────────────────────────────
|
|
19
|
+
export const POWER_MANAGEMENT__GO1_POWER_FORCE = 0x0083;
|
|
20
|
+
export const FIRMWARE__ENABLE = 0x0085;
|
|
21
|
+
export const RANGING_CORE__CLK_CTRL1 = 0x0683;
|
|
22
|
+
export const RANGING_CORE__NVM_CTRL__MODE = 0x0780;
|
|
23
|
+
export const RANGING_CORE__NVM_CTRL__PDN = 0x0781;
|
|
24
|
+
export const RANGING_CORE__NVM_CTRL__READN = 0x0783;
|
|
25
|
+
export const RANGING_CORE__NVM_CTRL__PULSE_WIDTH_MSB = 0x0784;
|
|
26
|
+
export const RANGING_CORE__NVM_CTRL__DATAOUT_MMM = 0x0790;
|
|
27
|
+
export const RANGING_CORE__NVM_CTRL__ADDR = 0x0794;
|
|
28
|
+
// ── timings (vl53lx_nvm.h, vl53lx_ll_device.h) ───────────────────────────────
|
|
29
|
+
export const NVM_POWER_UP_DELAY_US = 50;
|
|
30
|
+
export const NVM_READ_TRIGGER_DELAY_US = 5;
|
|
31
|
+
export const ENABLE_POWERFORCE_SETTLING_TIME_US = 250;
|
|
32
|
+
export const NVM_CTRL_PULSE_WIDTH = 0x0004;
|
|
33
|
+
export const FMT_OPTICAL_CENTRE = [0x00b8, 4];
|
|
34
|
+
export const FMT_CAL_PEAK_RATE_MAP = [0x015c, 56];
|
|
35
|
+
export const FMT_ADDITIONAL_OFFSET_CAL = [0x0194, 8];
|
|
36
|
+
export const FMT_RANGE_RESULTS__140MM_DARK = [0x01ac, 16];
|
|
37
|
+
export const PEAK_RATE_MAP_WIDTH = 5;
|
|
38
|
+
export const PEAK_RATE_MAP_HEIGHT = 5;
|
|
39
|
+
export const PEAK_RATE_MAP_SAMPLES = PEAK_RATE_MAP_WIDTH * PEAK_RATE_MAP_HEIGHT;
|
|
40
|
+
function u16(buf, off) {
|
|
41
|
+
return (buf[off] << 8) | buf[off + 1];
|
|
42
|
+
}
|
|
43
|
+
/** Raw NVM access. Holds no state between reads — the sensor does. */
|
|
44
|
+
export class NvmReader {
|
|
45
|
+
p;
|
|
46
|
+
img;
|
|
47
|
+
constructor(p, img) {
|
|
48
|
+
this.p = p;
|
|
49
|
+
this.img = img;
|
|
50
|
+
}
|
|
51
|
+
// ── VL53LX_nvm_enable / _disable ──
|
|
52
|
+
async enable() {
|
|
53
|
+
// disable_firmware / enable_powerforce, both through system_control so
|
|
54
|
+
// the image stays truthful about what the device was told.
|
|
55
|
+
this.img.system_control.v.firmware__enable = 0;
|
|
56
|
+
await this.p.wrByte(FIRMWARE__ENABLE, 0);
|
|
57
|
+
this.img.system_control.v.power_management__go1_power_force = 1;
|
|
58
|
+
await this.p.wrByte(POWER_MANAGEMENT__GO1_POWER_FORCE, 1);
|
|
59
|
+
await this.p.sleepMs(1); // 250 us settling, rounded up
|
|
60
|
+
await this.p.wrByte(RANGING_CORE__NVM_CTRL__PDN, 0x01);
|
|
61
|
+
await this.p.wrByte(RANGING_CORE__CLK_CTRL1, 0x05);
|
|
62
|
+
await this.p.sleepMs(1); // 50 us power-up, rounded up
|
|
63
|
+
await this.p.wrByte(RANGING_CORE__NVM_CTRL__MODE, 0x01);
|
|
64
|
+
await this.p.wrWord(RANGING_CORE__NVM_CTRL__PULSE_WIDTH_MSB, NVM_CTRL_PULSE_WIDTH);
|
|
65
|
+
}
|
|
66
|
+
async disable() {
|
|
67
|
+
await this.p.wrByte(RANGING_CORE__NVM_CTRL__READN, 0x01);
|
|
68
|
+
await this.p.wrByte(RANGING_CORE__NVM_CTRL__PDN, 0x00);
|
|
69
|
+
this.img.system_control.v.power_management__go1_power_force = 0;
|
|
70
|
+
await this.p.wrByte(POWER_MANAGEMENT__GO1_POWER_FORCE, 0);
|
|
71
|
+
this.img.system_control.v.firmware__enable = 1;
|
|
72
|
+
await this.p.wrByte(FIRMWARE__ENABLE, 1);
|
|
73
|
+
}
|
|
74
|
+
// ── VL53LX_nvm_read ──
|
|
75
|
+
async readWords(startWord, count) {
|
|
76
|
+
const out = new Uint8Array(count * 4);
|
|
77
|
+
for (let i = 0; i < count; i++) {
|
|
78
|
+
await this.p.wrByte(RANGING_CORE__NVM_CTRL__ADDR, startWord + i);
|
|
79
|
+
await this.p.wrByte(RANGING_CORE__NVM_CTRL__READN, 0x00);
|
|
80
|
+
// 5 us trigger delay: a USB round trip is three orders of magnitude
|
|
81
|
+
// longer, so the next transfer is the wait.
|
|
82
|
+
await this.p.wrByte(RANGING_CORE__NVM_CTRL__READN, 0x01);
|
|
83
|
+
out.set(await this.p.rdMulti(RANGING_CORE__NVM_CTRL__DATAOUT_MMM, 4), i * 4);
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
// ── VL53LX_read_nvm_raw_data ──
|
|
88
|
+
/** [byte index, byte size] → the bytes. Both must be word-aligned. */
|
|
89
|
+
async readRegion(region) {
|
|
90
|
+
const [index, size] = region;
|
|
91
|
+
if (index & 3 || size & 3) {
|
|
92
|
+
throw new RangeError(`NVM region 0x${index.toString(16).toUpperCase().padStart(4, "0")}+${size} is not word-aligned`);
|
|
93
|
+
}
|
|
94
|
+
await this.enable();
|
|
95
|
+
try {
|
|
96
|
+
return await this.readWords(index >> 2, size >> 2);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
await this.disable();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// ── the four decoders the driver needs ──
|
|
103
|
+
async opticalCentre() {
|
|
104
|
+
const buf = await this.readRegion(FMT_OPTICAL_CENTRE);
|
|
105
|
+
// Stored as a distance down from 0x0100; on a never-programmed part the
|
|
106
|
+
// subtraction overflows and the driver zeroes it.
|
|
107
|
+
const x = 0x0100 - buf[2];
|
|
108
|
+
return { x_centre: x <= 0xff ? x : 0, y_centre: buf[3] };
|
|
109
|
+
}
|
|
110
|
+
async calPeakRateMap() {
|
|
111
|
+
const buf = await this.readRegion(FMT_CAL_PEAK_RATE_MAP);
|
|
112
|
+
const peak = [];
|
|
113
|
+
for (let i = 0; i < PEAK_RATE_MAP_SAMPLES; i++)
|
|
114
|
+
peak.push(u16(buf, 4 + 2 * i));
|
|
115
|
+
return {
|
|
116
|
+
cal_distance_mm: u16(buf, 0),
|
|
117
|
+
cal_reflectance_pc: u16(buf, 2) >> 6,
|
|
118
|
+
max_samples: PEAK_RATE_MAP_SAMPLES,
|
|
119
|
+
width: PEAK_RATE_MAP_WIDTH,
|
|
120
|
+
height: PEAK_RATE_MAP_HEIGHT,
|
|
121
|
+
peak_rate_mcps: peak,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
async additionalOffsetCalData() {
|
|
125
|
+
const buf = await this.readRegion(FMT_ADDITIONAL_OFFSET_CAL);
|
|
126
|
+
return {
|
|
127
|
+
result__mm_inner_actual_effective_spads: u16(buf, 0),
|
|
128
|
+
result__mm_outer_actual_effective_spads: u16(buf, 2),
|
|
129
|
+
result__mm_inner_peak_signal_count_rtn_mcps: u16(buf, 4),
|
|
130
|
+
result__mm_outer_peak_signal_count_rtn_mcps: u16(buf, 6),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
async fmtRangeResults(region = FMT_RANGE_RESULTS__140MM_DARK) {
|
|
134
|
+
const buf = await this.readRegion(region);
|
|
135
|
+
return {
|
|
136
|
+
result__actual_effective_rtn_spads: u16(buf, 0),
|
|
137
|
+
ref_spad_array__num_requested_ref_spads: buf[2],
|
|
138
|
+
ref_spad_array__ref_location: buf[3],
|
|
139
|
+
result__peak_signal_count_rate_rtn_mcps: u16(buf, 4),
|
|
140
|
+
result__ambient_count_rate_rtn_mcps: u16(buf, 6),
|
|
141
|
+
result__peak_signal_count_rate_ref_mcps: u16(buf, 8),
|
|
142
|
+
result__ambient_count_rate_ref_mcps: u16(buf, 10),
|
|
143
|
+
measured_distance_mm: u16(buf, 12),
|
|
144
|
+
measured_distance_stdev_mm: u16(buf, 14),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=nvm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nvm.js","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/nvm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* uld/bare/regs — the VL53LX register blocks, as ST's BareDriver sees them.
|
|
3
|
+
* Mirror of the Python `depz_sensor_sdk.vl53lx.uld.bare.regs`.
|
|
4
|
+
*
|
|
5
|
+
* The BareDriver does not touch registers one at a time. It keeps the device
|
|
6
|
+
* image in a handful of C structs (`VL53LX_static_config_t`, ...), each mapping
|
|
7
|
+
* onto one contiguous I2C block, and moves a whole block at a time. `BLOCKS`
|
|
8
|
+
* is that mapping: base address, byte length, whether the block is writable,
|
|
9
|
+
* and the field list with offset, width, signedness and the bit mask the C
|
|
10
|
+
* codec applies. Generated from the Python table (itself generated from
|
|
11
|
+
* `vl53lx_register_funcs.c`) — data, not hand-written: the masks and the
|
|
12
|
+
* reserved holes (general_config has one at offset 10) match the C driver.
|
|
13
|
+
*/
|
|
14
|
+
/** One register field: name, byte offset, byte width, signed, C codec mask. */
|
|
15
|
+
export interface RegField {
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly off: number;
|
|
18
|
+
readonly width: number;
|
|
19
|
+
readonly signed: boolean;
|
|
20
|
+
readonly mask: number | null;
|
|
21
|
+
}
|
|
22
|
+
export interface Block {
|
|
23
|
+
readonly base: number;
|
|
24
|
+
readonly size: number;
|
|
25
|
+
readonly writable: boolean;
|
|
26
|
+
readonly fields: readonly RegField[];
|
|
27
|
+
}
|
|
28
|
+
export type BlockName = "static_nvm_managed" | "customer_nvm_managed" | "static_config" | "general_config" | "timing_config" | "dynamic_config" | "system_control" | "system_results" | "core_results" | "debug_results" | "nvm_copy_data" | "patch_debug" | "gph_general_config" | "gph_static_config" | "gph_timing_config" | "fw_internal";
|
|
29
|
+
export declare const BLOCK_NAMES: readonly BlockName[];
|
|
30
|
+
export declare const BLOCKS: Readonly<Record<BlockName, Block>>;
|
|
31
|
+
/**
|
|
32
|
+
* One register block's worth of device image, addressed by field name.
|
|
33
|
+
*
|
|
34
|
+
* `v` holds the field values exactly as the Python `RegBlock` does: a write
|
|
35
|
+
* stores the value as given (unclipped — Python keeps `int(value)`), a decode
|
|
36
|
+
* stores it masked and sign-extended; the mask/width are applied only on
|
|
37
|
+
* `encode()`. `v` is sealed, so writing a field the block does not have
|
|
38
|
+
* throws (ES modules are strict mode), as Python's `AttributeError` does.
|
|
39
|
+
* Fields not named in the block (the reserved holes) keep whatever bytes were
|
|
40
|
+
* read, so a read-modify-write round trip is byte-exact.
|
|
41
|
+
*/
|
|
42
|
+
export declare class RegBlock {
|
|
43
|
+
readonly name: BlockName;
|
|
44
|
+
readonly block: Block;
|
|
45
|
+
readonly v: Record<string, number>;
|
|
46
|
+
private raw;
|
|
47
|
+
constructor(name: BlockName);
|
|
48
|
+
decode(raw: Uint8Array): this;
|
|
49
|
+
encode(): Uint8Array;
|
|
50
|
+
get base(): number;
|
|
51
|
+
get size(): number;
|
|
52
|
+
items(): Array<[string, number]>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=regs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regs.d.ts","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/regs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;CACtC;AAMD,MAAM,MAAM,SAAS,GACjB,oBAAoB,GACpB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,eAAe,GACf,aAAa,GACb,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,GACnB,aAAa,CAAC;AAElB,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAiB3C,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAsXrD,CAAC;AA8BF;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IAKP,QAAQ,CAAC,IAAI,EAAE,SAAS;IAJpC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAa;gBAEH,IAAI,EAAE,SAAS;IAQpC,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAa7B,MAAM,IAAI,UAAU;IAYpB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAGjC"}
|