8#include <nuttx/sensors/sensor.h>
12#include "dawn/io/common.hxx"
13#include "dawn/porting/config.hxx"
17#define SENSOR_PATH_FMT "/dev/uorb/sensor_%s%s%d"
28 struct io_sensor_map_info_s
35 }
typedef SIOSensorMapInfo;
39 static const SIOSensorMapInfo *getSensorInfo(int16_t cls)
41 static const SIOSensorMapInfo map[] = {
44 sizeof(
struct sensor_accel),
46 offsetof(struct sensor_accel, x)},
47 {CIOCommon::IO_CLASS_SENSOR_MAGNETICFIELD,
49 sizeof(
struct sensor_mag),
51 offsetof(struct sensor_mag, x)},
52 {CIOCommon::IO_CLASS_SENSOR_GYROSCOPE,
54 sizeof(
struct sensor_gyro),
56 offsetof(struct sensor_gyro, x)},
57 {CIOCommon::IO_CLASS_SENSOR_LIGHT,
59 sizeof(
struct sensor_light),
61 offsetof(struct sensor_light, light)},
62 {CIOCommon::IO_CLASS_SENSOR_BAROMETER,
64 sizeof(
struct sensor_baro),
66 offsetof(struct sensor_baro, pressure)},
67 {CIOCommon::IO_CLASS_SENSOR_PROXIMITY,
69 sizeof(
struct sensor_prox),
71 offsetof(struct sensor_prox, proximity)},
72 {CIOCommon::IO_CLASS_SENSOR_HUMIDITY,
74 sizeof(
struct sensor_humi),
76 offsetof(struct sensor_humi, humidity)},
77 {CIOCommon::IO_CLASS_SENSOR_TEMPERATURE,
79 sizeof(
struct sensor_temp),
81 offsetof(struct sensor_temp, temperature)},
82 {CIOCommon::IO_CLASS_SENSOR_ATEMPERATURE,
84 sizeof(
struct sensor_temp),
86 offsetof(struct sensor_temp, temperature)},
87 {CIOCommon::IO_CLASS_SENSOR_RGB,
89 sizeof(
struct sensor_rgb),
91 offsetof(struct sensor_rgb, r)},
92 {CIOCommon::IO_CLASS_SENSOR_IR,
94 sizeof(
struct sensor_ir),
96 offsetof(struct sensor_ir, ir)},
97 {CIOCommon::IO_CLASS_SENSOR_UV,
99 sizeof(
struct sensor_uv),
101 offsetof(struct sensor_uv, uvi)},
102 {CIOCommon::IO_CLASS_SENSOR_GAS,
104 sizeof(
struct sensor_gas),
106 offsetof(struct sensor_gas, gas_resistance)},
109 for (
size_t i = 0; i <
sizeof(map) /
sizeof(map[0]); i++)
111 if (map[i].cls == cls)
120 static int16_t producerToSensorClass(int16_t cls)
122 static_assert(CIOCommon::IO_CLASS_SENSOR_PRODUCER_GAS -
123 CIOCommon::IO_CLASS_SENSOR_PRODUCER_ACCELEROMETER ==
124 CIOCommon::IO_CLASS_SENSOR_GAS - CIOCommon::IO_CLASS_SENSOR_ACCELEROMETER,
125 "Sensor and sensor producer class ranges must stay aligned");
127 if (cls < CIOCommon::IO_CLASS_SENSOR_PRODUCER_ACCELEROMETER ||
128 cls > CIOCommon::IO_CLASS_SENSOR_PRODUCER_GAS)
130 return CIOCommon::IO_CLASS_ANY;
133 return cls - CIOCommon::IO_CLASS_SENSOR_PRODUCER_ACCELEROMETER +
134 CIOCommon::IO_CLASS_SENSOR_ACCELEROMETER;
@ IO_CLASS_SENSOR_ACCELEROMETER
Accelerometer sensor.
Out-of-tree user-extension hooks for Dawn.