static void trigger_hdlr(struct device *bmi160, struct sensor_trigger *trigger) { if (trigger->type != SENSOR_TRIG_DELTA && trigger->type != SENSOR_TRIG_DATA_READY) { return; } if (sensor_sample_fetch(bmi160) < 0) { printk("Sample update error.\n"); return; } #if !defined(CONFIG_BMI160_GYRO_PMU_SUSPEND) if (trigger->chan == SENSOR_CHAN_GYRO_XYZ) { print_gyro_data(bmi160); } #endif #if !defined(CONFIG_BMI160_ACCEL_PMU_SUSPEND) if (trigger->chan == SENSOR_CHAN_ACCEL_XYZ) { print_accel_data(bmi160); } #endif }
static void test_polling_mode(struct device *bmi160) { s32_t remaining_test_time = MAX_TEST_TIME; struct sensor_value attr; #if defined(CONFIG_BMI160_ACCEL_ODR_RUNTIME) /* set sampling frequency to 100Hz for accel */ attr.val1 = 100; attr.val2 = 0; if (sensor_attr_set(bmi160, SENSOR_CHAN_ACCEL_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &attr) < 0) { printk("Cannot set sampling frequency for accelerometer.\n"); return; } #endif #if defined(CONFIG_BMI160_GYRO_ODR_RUNTIME) /* set sampling frequency to 3200Hz for gyro */ attr.val1 = 3200; attr.val2 = 0; if (sensor_attr_set(bmi160, SENSOR_CHAN_GYRO_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &attr) < 0) { printk("Cannot set sampling frequency for gyroscope.\n"); return; } #endif /* wait for the change to take effect */ k_sleep(SLEEPTIME); /* poll the data and print it */ do { if (sensor_sample_fetch(bmi160) < 0) { printk("Sample update error.\n"); return; } #if !defined(CONFIG_BMI160_GYRO_PMU_SUSPEND) print_gyro_data(bmi160); #endif #if !defined(CONFIG_BMI160_ACCEL_PMU_SUSPEND) print_accel_data(bmi160); #endif print_temp_data(bmi160); /* wait a while */ k_sleep(SLEEPTIME); remaining_test_time -= SLEEPTIME; } while (remaining_test_time > 0); }
static void trigger_handler(struct device *bmg160, struct sensor_trigger *trigger) { if (trigger->type != SENSOR_TRIG_DATA_READY && trigger->type != SENSOR_TRIG_DELTA) { printf("Gyro: trigger handler: unknown trigger type.\n"); return; } if (sensor_sample_fetch(bmg160) < 0) { printf("Gyro sample update error.\n"); } print_gyro_data(bmg160); }
static void test_polling_mode(struct device *bmg160) { uint32_t timer_data[2] = {0, 0}; int32_t remaining_test_time = MAX_TEST_TIME; struct nano_timer timer; nano_timer_init(&timer, timer_data); do { if (sensor_sample_fetch(bmg160) < 0) { printf("Gyro sample update error.\n"); } print_gyro_data(bmg160); print_temp_data(bmg160); /* wait a while */ nano_task_timer_start(&timer, SLEEPTIME); nano_task_timer_test(&timer, TICKS_UNLIMITED); remaining_test_time -= SLEEPTIME; } while (remaining_test_time > 0); }