8#include <nuttx/sensors/sensor.h>
15#include "dawn/debug.hxx"
16#include "dawn/porting/config.hxx"
26int sensor_open(
const char *path)
30 fd = open(path, O_CLOEXEC | O_RDWR | O_NONBLOCK);
31 DAWNINFO(
"CIOSensor: open %s %d\n", path, fd);
34 DAWNERR(
"Failed to open SENSOR file %s (error %d)\n", path, fd);
44void sensor_close(
int fd)
56int sensor_read(
int fd,
void *data,
size_t len)
60 ret = read(fd, data, len);
63 DAWNERR(
"read failed %d\n", -errno);
67 return static_cast<int>(ret);
75int sensor_user_register(
const char *path,
size_t event_size, uint32_t queue_size,
bool persist)
77 struct sensor_reginfo_s reginfo;
82 std::memset(®info, 0,
sizeof(reginfo));
83 strlcpy(reginfo.path, path,
sizeof(reginfo.path));
84 reginfo.esize = event_size;
85 reginfo.nbuffer = queue_size;
86 reginfo.persist = persist;
88 fd = open(
"/dev/usensor", O_CLOEXEC | O_WRONLY);
91 DAWNERR(
"Failed to open /dev/usensor (error %d)\n", -errno);
96 ioctl(fd, SNIOC_REGISTER,
static_cast<unsigned long>(
reinterpret_cast<uintptr_t
>(®info)));
111int sensor_user_unregister(
const char *path)
117 fd = open(
"/dev/usensor", O_CLOEXEC | O_WRONLY);
123 ret = ioctl(fd, SNIOC_UNREGISTER,
static_cast<unsigned long>(
reinterpret_cast<uintptr_t
>(path)));
139int sensor_open_write(
const char *path)
143 fd = open(path, O_CLOEXEC | O_WRONLY | O_NONBLOCK);
144 DAWNINFO(
"CIOSensorProducer: open %s %d\n", path, fd);
147 DAWNERR(
"Failed to open SENSOR producer file %s (error %d)\n", path, fd);
158int sensor_write(
int fd,
const void *data,
size_t len)
162 ret = write(fd, data, len);
165 DAWNERR(
"write failed %d\n", -errno);
169 return static_cast<int>(ret);