From 48f7fcd2f0256e6c3a75aade4b2f249c2574bcdf Mon Sep 17 00:00:00 2001 From: Armando Visconti Date: Fri, 28 Feb 2025 18:20:05 +0100 Subject: [PATCH] samples/sensor: stream_fifo: initialize gbias Add an example of how to initialize gbias. The real application should restore latest valid values taken from non-volatile memory. Signed-off-by: Armando Visconti --- samples/sensor/stream_fifo/src/main.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/samples/sensor/stream_fifo/src/main.c b/samples/sensor/stream_fifo/src/main.c index 9b7564bd1be..45dd3cab8f4 100644 --- a/samples/sensor/stream_fifo/src/main.c +++ b/samples/sensor/stream_fifo/src/main.c @@ -230,6 +230,8 @@ static void check_sensor_is_off(const struct device *dev) int main(void) { + struct sensor_value gbias[3]; + for (size_t i = 0; i < ARRAY_SIZE(sensors); i++) { if (!device_is_ready(sensors[i])) { printk("sensor: device %s not ready.\n", sensors[i]->name); @@ -237,6 +239,20 @@ int main(void) } check_sensor_is_off(sensors[i]); + /* + * Set GBIAS as 0.5 rad/s, -1 rad/s, 0.2 rad/s + * + * (here application should initialize gbias x/y/z with latest values + * calculated from previous run and probably saved to non volatile memory) + */ + gbias[0].val1 = 0; + gbias[0].val2 = 500000; + gbias[1].val1 = -1; + gbias[1].val2 = 0; + gbias[2].val1 = 0; + gbias[2].val2 = 200000; + sensor_attr_set(sensors[i], SENSOR_CHAN_GBIAS_XYZ, SENSOR_ATTR_OFFSET, gbias); + k_thread_create(&thread_id[i], thread_stack[i], TASK_STACK_SIZE, print_stream, (void *)sensors[i], (void *)iodevs[i], NULL, K_PRIO_COOP(5), K_INHERIT_PERMS, K_FOREVER);