blob: 79bb8d6cc5f0be0defa842a281368276ca8956f5 [file] [log] [blame]
Andrew Boie6d79fe52017-09-29 02:56:55 -07001/*
2 * Copyright (c) 2017 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
Anas Nashif8c1f89f2019-06-25 15:54:00 -04007#include <drivers/sensor.h>
Andrew Boie6d79fe52017-09-29 02:56:55 -07008#include <syscall_handler.h>
9
Andrew Boie8345e5e2018-05-04 15:57:57 -070010Z_SYSCALL_HANDLER(sensor_attr_set, dev, chan, attr, val)
Andrew Boie6d79fe52017-09-29 02:56:55 -070011{
Andrew Boie8345e5e2018-05-04 15:57:57 -070012 Z_OOPS(Z_SYSCALL_DRIVER_SENSOR(dev, attr_set));
13 Z_OOPS(Z_SYSCALL_MEMORY_READ(val, sizeof(struct sensor_value)));
Patrik Flykt4344e272019-03-08 14:19:05 -070014 return z_impl_sensor_attr_set((struct device *)dev, chan, attr,
Andrew Boie6d79fe52017-09-29 02:56:55 -070015 (const struct sensor_value *)val);
16}
17
Flavio Ceolin20e5c252018-11-01 13:09:43 -070018Z_SYSCALL_HANDLER(sensor_sample_fetch, dev)
Andrew Boie6d79fe52017-09-29 02:56:55 -070019{
Andrew Boie8345e5e2018-05-04 15:57:57 -070020 Z_OOPS(Z_SYSCALL_DRIVER_SENSOR(dev, sample_fetch));
Patrik Flykt4344e272019-03-08 14:19:05 -070021 return z_impl_sensor_sample_fetch((struct device *)dev);
Leandro Pereirac2003672018-04-04 13:50:32 -070022}
23
Andrew Boie8345e5e2018-05-04 15:57:57 -070024Z_SYSCALL_HANDLER(sensor_sample_fetch_chan, dev, type)
Leandro Pereirac2003672018-04-04 13:50:32 -070025{
Andrew Boie8345e5e2018-05-04 15:57:57 -070026 Z_OOPS(Z_SYSCALL_DRIVER_SENSOR(dev, sample_fetch));
Patrik Flykt4344e272019-03-08 14:19:05 -070027 return z_impl_sensor_sample_fetch_chan((struct device *)dev, type);
Andrew Boie6d79fe52017-09-29 02:56:55 -070028}
29
Andrew Boie8345e5e2018-05-04 15:57:57 -070030Z_SYSCALL_HANDLER(sensor_channel_get, dev, chan, val)
Andrew Boie6d79fe52017-09-29 02:56:55 -070031{
Andrew Boie8345e5e2018-05-04 15:57:57 -070032 Z_OOPS(Z_SYSCALL_DRIVER_SENSOR(dev, channel_get));
33 Z_OOPS(Z_SYSCALL_MEMORY_WRITE(val, sizeof(struct sensor_value)));
Patrik Flykt4344e272019-03-08 14:19:05 -070034 return z_impl_sensor_channel_get((struct device *)dev, chan,
Andrew Boie6d79fe52017-09-29 02:56:55 -070035 (struct sensor_value *)val);
36}