Added samples that show off trigger functionality, removed fxos8700 driver specific sample Signed-off-by: Krystof Sadlik <krystof.sadlik@nxp.com>
58 lines
1.3 KiB
C
58 lines
1.3 KiB
C
/*
|
|
* Copyright 2024 NXP
|
|
* Copyright (c) 2018 Phytec Messtechnik GmbH
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <zephyr/kernel.h>
|
|
#include <zephyr/drivers/sensor.h>
|
|
#include <stdio.h>
|
|
|
|
K_SEM_DEFINE(sem, 0, 1); /* starts off "not available" */
|
|
|
|
static void trigger_handler(const struct device *dev, const struct sensor_trigger *trigger)
|
|
{
|
|
ARG_UNUSED(trigger);
|
|
|
|
/* Always fetch the sample to clear the data ready interrupt in the
|
|
* sensor.
|
|
*/
|
|
if (sensor_sample_fetch(dev)) {
|
|
printf("sensor_sample_fetch failed\n");
|
|
return;
|
|
}
|
|
|
|
k_sem_give(&sem);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
struct sensor_value data[3];
|
|
const struct device *const dev = DEVICE_DT_GET(DT_ALIAS(accel0));
|
|
|
|
struct sensor_trigger trig = {
|
|
.type = SENSOR_TRIG_DATA_READY,
|
|
.chan = SENSOR_CHAN_ACCEL_XYZ,
|
|
};
|
|
|
|
if (!device_is_ready(dev)) {
|
|
printf("Device %s is not ready\n", dev->name);
|
|
return 0;
|
|
}
|
|
|
|
if (sensor_trigger_set(dev, &trig, trigger_handler)) {
|
|
printf("Could not set trigger\n");
|
|
return 0;
|
|
}
|
|
|
|
while (1) {
|
|
k_sem_take(&sem, K_FOREVER);
|
|
sensor_channel_get(dev, SENSOR_CHAN_ACCEL_XYZ, data);
|
|
|
|
/* Print accel x,y,z data */
|
|
printf("%16s [m/s^2]: (%12.6f, %12.6f, %12.6f)\n", dev->name,
|
|
sensor_value_to_double(&data[0]), sensor_value_to_double(&data[1]),
|
|
sensor_value_to_double(&data[2]));
|
|
}
|
|
}
|