-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathKconfig
More file actions
599 lines (503 loc) · 18.1 KB
/
Copy pathKconfig
File metadata and controls
599 lines (503 loc) · 18.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
#
# Copyright (c) 2023 Nordic Semiconductor
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
config USE_SLIMENRF_CONSOLE
bool "Use basic console"
default y
help
Use basic console for commands.
choice
prompt "Battery voltage mapping"
default BATTERY_USE_REG_LDO_MAPPING
config BATTERY_USE_REG_BUCK_MAPPING
bool "Use buck regulator mapping (3.7V battery, DCDC)"
help
Use a constant power mapping for battery voltage.
Preffered for systems with a buck regulator.
Measured at a system voltage of 3.0V.
config BATTERY_USE_REG_LDO_MAPPING
bool "Use LDO linear regulator mapping (3.7V battery, LDO)"
help
Use a constant current mapping for battery voltage.
Preferred for systems with a linear regulator.
config BATTERY_NO_MAPPING
bool "Disable battery voltage mapping"
help
Always map to 100% battery. Disables battery monitoring.
endchoice
choice
prompt "Status LED color mapping"
default LED_TRI_COLOR
config LED_RGB_COLOR
bool "Use RGB color mapping"
help
Use RGB or RG color mapping for LED status if available.
config LED_TRI_COLOR
bool "Use default color mapping"
help
Use the default color mapping for LED status.
endchoice
menu "Status LED default status color"
depends on LED_RGB_COLOR
config LED_DEFAULT_COLOR_R
int "Red value"
range 0 10000
default 4000
depends on LED_RGB_COLOR
help
Red color for default status.
Valid range is 0 to 10000.
config LED_DEFAULT_COLOR_G
int "Green value"
range 0 10000
default 6000
depends on LED_RGB_COLOR
help
Green color for default status.
Valid range is 0 to 10000.
config LED_DEFAULT_COLOR_B
int "Blue value"
range 0 10000
default 0
depends on LED_RGB_COLOR
help
Blue color for default status.
Valid range is 0 to 10000.
endmenu
config USER_EXTRA_ACTIONS
bool "Multiple press actions"
help
Allow user to use multiple presses to calibrate, pair, or enter DFU.
When enabled, sw0 long-hold pairing reset is disabled; use the
multiple-press pairing action instead.
By default, DFU is available when holding down sw0 and plugging in a USB cable.
config IGNORE_RESET
bool "Ignore reset"
default y
help
If sw0 is available, don't perform any extra actions on reset.
config USER_SHUTDOWN
bool "User shutdown support"
default y
help
Allow user to use reset or sw0 to shutdown.
config IGNORE_CHARGE_WAKE_ON_VBUS
bool "Ignore charge wake on VBUS"
default n
depends on USER_SHUTDOWN
help
When VBUS is present, do not configure charge status pins as wake
sources during system shutdown. This keeps charge state transitions
from waking the device while USB power is already connected.
config USE_IMU_WAKE_UP
bool "IMU wake up support"
default n
help
Use IMU wake up state if IMU wake up is present.
config DELAY_SLEEP_ON_STATUS
bool "Delay IMU wake up mode on status flags"
default y
depends on USE_IMU_WAKE_UP
help
Delay IMU wake up state if there is an active status flag or in pairing mode.
config WOM_USE_DCDC
bool "Use DCDC in IMU wake up mode"
depends on USE_IMU_WAKE_UP
help
Use DCDC instead of LDO in IMU wake up state if it is more efficient.
config CONNECTION_TIMEOUT_DELAY
int "Connection timeout delay (ms)"
default 300000
depends on USER_SHUTDOWN
help
Connection timeout duration when receiver is not detected.
choice
prompt "Sensor rotation"
default SENSOR_ROTATION_90
config SENSOR_ROTATION_0
bool "0 degrees"
config SENSOR_ROTATION_90
bool "90 degrees"
config SENSOR_ROTATION_180
bool "180 degrees"
config SENSOR_ROTATION_270
bool "270 degrees"
config SENSOR_ROTATION_0_FLIPPED
bool "0 degrees flipped"
config SENSOR_ROTATION_90_FLIPPED
bool "90 degrees flipped"
config SENSOR_ROTATION_180_FLIPPED
bool "180 degrees flipped"
config SENSOR_ROTATION_270_FLIPPED
bool "270 degrees flipped"
endchoice
menu "Sensor power saving"
config SENSOR_LP_TIMEOUT
int "Sensor low power delay (ms)"
default 500
help
Low power timeout during no motion.
config SENSOR_USE_LOW_POWER_2
bool "Use additional low power modes"
help
Use a higher latency sensor mode during no motion.
config USE_IMU_TIMEOUT
bool "Use IMU wake up state"
default y
depends on USE_IMU_WAKE_UP
help
Use IMU wake up state during no motion.
config IMU_TIMEOUT_RAMP_MIN
int "Sensor timeout minimum delay (ms)"
default 5000
depends on USE_IMU_TIMEOUT || SENSOR_USE_LOW_POWER_2
help
Minimum timeout during no motion. Initial period on wake up.
config IMU_TIMEOUT_RAMP_MAX
int "Sensor timeout maximum delay (ms)"
default 15000
depends on USE_IMU_TIMEOUT || SENSOR_USE_LOW_POWER_2
help
Maximum timeout during no motion.
config USE_ACTIVE_TIMEOUT
bool "Use activity timeout"
default y
depends on USE_IMU_WAKE_UP || USER_SHUTDOWN
help
Delay IMU wake up state or user shutdown during activity.
choice
prompt "Activity timeout mode"
default SLEEP_ON_ACTIVE_TIMEOUT
depends on USE_ACTIVE_TIMEOUT
config SLEEP_ON_ACTIVE_TIMEOUT
bool "IMU wake up"
depends on USE_IMU_WAKE_UP
help
Use IMU wake up state when activity timeout elapses.
config SHUTDOWN_ON_ACTIVE_TIMEOUT
bool "User shutdown"
depends on USER_SHUTDOWN
help
Use user shutdown when activity timeout elapses.
endchoice
config ACTIVE_TIMEOUT_THRESHOLD
int "Activity timeout threshold (ms)"
default 15000
depends on USE_ACTIVE_TIMEOUT
help
Trigger activity timeout after a certain threshold of activity.
config ACTIVE_TIMEOUT_DELAY
int "Activity timeout delay (ms)"
default 1800000
depends on USE_ACTIVE_TIMEOUT
help
Activity timeout duration when triggered.
config DYNAMIC_ACTIVE_TIMEOUT
bool "Adapt activity timeout after wake-on-motion"
default y
depends on USE_ACTIVE_TIMEOUT && SLEEP_ON_ACTIVE_TIMEOUT
help
Shorten the activity timeout after low-activity wake-on-motion cycles.
Meaningful activity restores ACTIVE_TIMEOUT_DELAY.
config ACTIVE_TIMEOUT_IDLE_WAKE_DELAY
int "Low-activity wake timeout (ms)"
default 90000
range 1000 3600000
depends on DYNAMIC_ACTIVE_TIMEOUT
config ACTIVE_TIMEOUT_REPEAT_WAKE_DELAY
int "Repeated low-activity wake timeout (ms)"
default 90000
range 1000 3600000
depends on DYNAMIC_ACTIVE_TIMEOUT
config ACTIVE_TIMEOUT_REPEAT_WAKE_COUNT
int "Low-activity wakes before shortest timeout"
default 2
range 1 255
depends on DYNAMIC_ACTIVE_TIMEOUT
config ACTIVE_TIMEOUT_MEANINGFUL_MOTION_MS
int "Weighted motion score needed to restore normal timeout"
default 15000
range 1000 600000
depends on DYNAMIC_ACTIVE_TIMEOUT
help
Integer motion score threshold. Strong motion adds three points per
millisecond, moderate motion adds one, and weak motion subtracts one.
config DISABLE_SENSOR_GPIOS_ON_SHUTDOWN
bool "Disable Sensor GPIOs on shutdown"
default y
help
Disable all sensor related GPIOs when system shutdown.
May reduce power consumption.
config SENSOR_FAST_WOM_WAKE
bool "Fast wake-on-motion sensor resume"
default n
depends on USE_IMU_WAKE_UP
help
Mark IMU wake-on-motion poweroff entries so the next boot can use a
narrower sensor resume path. Supported IMU drivers may skip their
pre-init soft reset after a real WoM wake and rebuild runtime FIFO/ODR
state directly from the known WOM configuration.
endmenu
config SENSOR_RETAINED_SCAN_POWER_UP_DELAY_MS
int "Sensor scan delay with retained sensor identity (ms)"
default 5
range 0 50
help
Delay before probing sensors when retained memory already names the IMU.
Cold scans still wait 50 ms, and failed fast scans wait the remaining
time before retrying, so this mainly reduces normal wake-from-WOM boot
latency without removing the conservative cold-start fallback.
config SENSOR_ACCEL_ODR
int "Accelerometer output data rate (Hz)"
default 100
help
Requested accelerometer output data rate. Actual rate will be raised to the nearest supported rate.
A higher rate will increase the time to read and process sensor data.
config SENSOR_GYRO_ODR
int "Gyrometer output data rate (Hz)"
default 200
help
Requested gyrometer output data rate. Actual rate will be raised to the nearest supported rate.
A higher rate will increase the time to read and process sensor data.
A lower rate is recommended for IMUs with poor gyrometer rate noise density. (Ex. BMI270, LSM6DS3TR-C)
config SENSOR_GYRO_OVERSAMPLING
int "Gyroscope Δq-merge factor (INT_merge)"
default 1
range 1 16
help
Number of high-rate gyroscope samples to merge via quaternion increments
(Δq product / INT_merge) before one fusion gyro update.
Preserves coning that plain ω averaging destroys.
Pipeline per sample: firmware compensation (TCal/ZRO/D_offset + sens)
first, then Δq built with frozen fusion residual bias, then one
update_gyro of the equivalent rate (fusion bias re-added so the
filter's internal subtract matches N×update_gyro strapdown).
Set to 1 to disable (one fusion update per gyro sample).
Example: SENSOR_GYRO_ODR=1600 and SENSOR_GYRO_OVERSAMPLING=4 →
1600 Hz strapdown Δq merged into one 400 Hz fusion gyro step.
Effective fusion gyro rate = ODR / oversampling factor.
On I2C IMU hosts, firmware forces N=1 and requests chip ODR at that
fusion rate (I2C cannot sustain hi-res FIFO at high ODR). SPI unchanged.
Raw data-collection gyrQuat TX uses the same N: uncalibrated Δq
every N chip samples; raw meta gyro_odr advertises that TX/fusion
rate, with chip Hz in the trailing fields.
Accelerometer oversampling (if enabled) stays separate and still averages.
config SENSOR_ACCEL_OVERSAMPLING
int "Accelerometer oversampling factor"
default 1
range 1 16
help
Number of accelerometer samples to average before fusion.
Set to 1 to disable oversampling.
For example, set SENSOR_ACCEL_ODR=1000 and SENSOR_ACCEL_OVERSAMPLING=10
to achieve effective 100Hz with noise reduction from 10x oversampling.
The effective accel rate for fusion will be ODR / oversampling factor.
config SENSOR_ACCEL_FS
int "Accelerometer full scale (g)"
default 16
help
Requested accelerometer full scale. Actual scale will be raised to the nearest supported scale.
A lower scale may improve noise performance, but is more likely to saturate.
config SENSOR_GYRO_FS
int "Gyrometer full scale (dps)"
default 4000
help
Requested gyrometer full scale. Actual scale will be raised to the nearest supported scale.
A lower scale may improve noise performance, but is more likely to saturate.
config SENSOR_MAG_ODR
int "Magnetometer ODR (Hz)"
default 200
help
Requested magnetometer output data rate in Hz.
Fixed at magnetometer init for the session (nearest supported continuous rate).
Common values: 100, 200. Higher rates may not be supported by all sensors.
choice
prompt "Sensor fusion"
default SENSOR_USE_VQF
help
Select the sensor fusion method.
config SENSOR_USE_VQF
bool "Use VQF"
help
Use VQF for sensor fusion.
Based on Kalman filter.
config SENSOR_USE_EQF
bool "Use EqF"
help
Use ABC-EqF n=0 (Equivariant Filter) for sensor fusion.
Kalman filter on SO(3)×R³ with constant magnetometer trust.
Lower heading drift than VQF under low magnetic disturbance,
but does not perform as well as the VQF on 6D.
endchoice
config VQF_ADAPTIVE_TAU_ACC
bool "VQF adaptive tauAcc (experimental)"
default n
depends on SENSOR_USE_VQF
help
Enable adaptive tauAcc adjustment based on motion intensity.
Uses a three-regime strategy (rest / gentle / aggressive) with
smoothed transitions to avoid Butterworth LP filter transients.
This feature is experimental and may affect heading stability.
config VQF_BENCH
bool "Enable VQF benchmark console command"
default n
depends on SENSOR_USE_VQF && USE_SLIMENRF_CONSOLE
help
Compile in the `vqfbench` console command and its benchmark working
storage. Keep this disabled for normal firmware builds to avoid the
extra RAM cost from static benchmark buffers.
config SENSOR_USE_6_SIDE_CALIBRATION
bool "Use 6-side calibration"
default y
depends on USE_SLIMENRF_CONSOLE
help
Use 6-side calibration for accelerometer.
Calibration can be completed through the basic console.
config SENSOR_USE_SENS_CALIBRATION
bool "Use gyro sensitivity calibration"
default y
depends on USE_SLIMENRF_CONSOLE
help
Use sensitivity calibration for gyroscope.
There are two ways to calibrate from the console:
- Manual: rotate the tracker a number of times around each axis, note the
resulting yaw drift in degrees, and enter the three observed values with
'sens <x>,<y>,<z>'.
- Automated: run 'sens auto <x|y|z> [revolutions]' and spin the tracker the
requested number of full turns about one axis; the firmware integrates the
gyro rate and computes the scale factor for that axis automatically.
config SENSOR_SENS_REV
int "Number of rotations (rev)"
default 2
depends on SENSOR_USE_SENS_CALIBRATION
help
Number of rotations used in calculating sensitivity calibration.
config SENSOR_USE_TCAL
bool "Enable temperature calibration (T-Cal)"
default y
help
Enable temperature calibration (T-Cal) support.
This controls whether the firmware collects/uses temperature-related
calibration data to compensate gyroscope bias drift.
menu "Temperature Calibration Settings"
depends on SENSOR_USE_TCAL
config SENSOR_POLY_DEGREE
int "Polynomial degree"
default 3
help
The degree of the polynomial to fit (e.g., 3 for a cubic curve).
config SENSOR_POLY_TEMP_MIN
int "Calibration minimum temperature (C)"
default 10
config SENSOR_POLY_TEMP_MAX
int "Calibration maximum temperature (C)"
default 45
config SENSOR_POLY_STEPS_PER_DEGREE
int "Calibration steps per degree C"
default 2
help
Enter the number of calibration points to take per degree Celsius.
For 0.5 C steps, enter 2.
For 1.0 C steps, enter 1.
config SENSOR_USE_BOOT_CALIBRATION
bool "Enable automatic boot calibration"
default n
depends on SENSOR_USE_TCAL
help
Automatically perform boot calibration after device startup.
When enabled, the device will measure gyroscope bias at boot time
and calculate D_offset correction based on the temperature calibration
curve. This helps compensate for run-to-run bias drift.
Boot calibration occurs within 15-50 seconds after boot when the
device is stationary and requires at least 4 temperature calibration
points to be effective.
endmenu
config RADIO_TX_POWER
int "Radio output power (dBm)"
default 8
help
Radio output power level.
A lower value may reduce power consumption.
config RADIO_RF_CHANNEL
int "Radio RF channel"
default 2
help
Radio RF channel (0-100).
Must match the receiver channel.
config RADIO_RETRANSMIT_DELAY
int "Radio retransmit delay (µs)"
default 600
help
Radio retransmit delay.
config CONNECTION_ENABLE_ACK
bool "Enable connection ACK"
default y
help
Enable connection ACK for reliable data transfer.
config CONNECTION_OVER_HID
bool "Use HID for data output"
depends on USB_DEVICE_STACK_NEXT && USBD_HID_SUPPORT && UART_CONSOLE
default n
help
Use HID if available.
Otherwise, use ESB only.
config SLIMEVR_USB_DEVICE_VID
hex "SlimeVR USB vendor ID"
default 0x1209
help
USB vendor ID used by the SlimeVR USBD_NEXT device.
config SLIMEVR_USB_DEVICE_PID
hex "SlimeVR USB product ID"
default 0x7692
help
USB product ID used by the SlimeVR tracker firmware.
config SLIMEVR_USB_DEVICE_MANUFACTURER
string "SlimeVR USB manufacturer"
default "SlimeVR"
help
USB manufacturer string and console banner prefix.
config SLIMEVR_USB_DEVICE_PRODUCT
string "SlimeVR USB product"
default "SlimeNRF Tracker"
help
USB product string and console banner name.
config SLIMEVR_USB_DEVICE_MAX_POWER
int "SlimeVR USB max power"
range 0 250
default 100
help
USB bMaxPower value in 2 mA units.
config CLOCK_USE_LFXO
bool "Use external low-frequency crystal oscillator (LFXO)"
default y
help
Enable external 32.768 kHz crystal oscillator for LF clock.
This provides better TDMA timing precision.
Disable this option if your board does not have an external
LFXO crystal. Using LFXO without a crystal will cause the
system to hang or IMU detection to fail.
config CONNECTION_TDMA
bool "Enable TDMA transmit scheduling"
default n if !CLOCK_USE_LFXO
default y if CLOCK_USE_LFXO
help
Enable Time Division Multiple Access scheduling for ESB radio.
When enabled, each tracker transmits only within its assigned
time slot to avoid collisions with other trackers.
Requires server time synchronization via PING/PONG.
Can also be toggled at runtime via console command.
config CLOCK_USE_LF_SYNTH
bool "Use LF synthesizer for low-frequency clock"
default y if CONNECTION_TDMA && !CLOCK_USE_LFXO
default n
help
Use the LF synthesizer (derived from HFXO) for the low-frequency
clock instead of LFXO or LFRC.
config CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION
bool "Enable RC oscillator calibration for K32SRC"
default y if CLOCK_USE_LF_SYNTH && CONNECTION_TDMA
default n
rsource "Kconfig.sensors_drivers"
source "Kconfig.zephyr"