From 7bd5e871890415c27fa14b360ea7b2651c5fd659 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sat, 5 Mar 2016 09:42:18 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9011 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/lib/peripherals/include/hal_gyroscope.h | 97 +++++++++++++++++++++++++ os/hal/lib/peripherals/include/hal_sensors.h | 98 ++++++++++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 os/hal/lib/peripherals/include/hal_gyroscope.h create mode 100644 os/hal/lib/peripherals/include/hal_sensors.h (limited to 'os/hal/lib') diff --git a/os/hal/lib/peripherals/include/hal_gyroscope.h b/os/hal/lib/peripherals/include/hal_gyroscope.h new file mode 100644 index 000000000..b973b0059 --- /dev/null +++ b/os/hal/lib/peripherals/include/hal_gyroscope.h @@ -0,0 +1,97 @@ +/* + ChibiOS - Copyright (C) 2016 Rocco Marco Guglielmi + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file hal_gyroscope.h + * @brief Generic gyroscope interface header. + * + * @addtogroup HAL_GYROSCOPE + * @{ + */ + +#ifndef _HAL_GYROSCOPE_H_ +#define _HAL_GYROSCOPE_H_ + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief @p BaseSensor virtual methods table. + */ +struct BaseSensorVMT { + _base_sensor_methods +}; + +/** + * @brief Base stream class. + * @details This class represents a generic blocking unbuffered sequential + * data stream. + */ +typedef struct { + /** @brief Virtual Methods Table.*/ + const struct BaseSensorVMT *vmt; + _base_sensor_data +} BaseSensor; + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ + +/** + * @brief BaseGyroscope specific methods. + */ +#define _base_gyroscope_methods \ + _base_sensor_methods \ + /* Reads the sensor raw data.*/ \ + msg_t (*reset_calibration)(void); \ + /* Invokes the calibration procedure.*/ \ + msg_t (*calibrate)(void); + +/** + * @brief @p BaseSensor specific data. + * @note It is empty because @p BaseSensor is only an interface + * without implementation. + */ +#define _base_gyroscope_data + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _HAL_GYROSCOPE_H_ */ + +/** @} */ diff --git a/os/hal/lib/peripherals/include/hal_sensors.h b/os/hal/lib/peripherals/include/hal_sensors.h new file mode 100644 index 000000000..b3ed9dd5d --- /dev/null +++ b/os/hal/lib/peripherals/include/hal_sensors.h @@ -0,0 +1,98 @@ +/* + ChibiOS - Copyright (C) 2016 Rocco Marco Guglielmi + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file hal_sensors.h + * @brief Generic sensors interface header. + * + * @addtogroup HAL_SENSORS + * @{ + */ + +#ifndef _HAL_SENSORS_H_ +#define _HAL_SENSORS_H_ + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief @p BaseSensor virtual methods table. + */ +struct BaseSensorVMT { + _base_sensor_methods +}; + +/** + * @brief Base stream class. + * @details This class represents a generic blocking unbuffered sequential + * data stream. + */ +typedef struct { + /** @brief Virtual Methods Table.*/ + const struct BaseSensorVMT *vmt; + _base_sensor_data +} BaseSensor; + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ + +/** + * @brief BaseSensor specific methods. + */ +#define _base_sensor_methods \ + /* Get number of axes.*/ \ + size_t (*get_axes_number)(void); \ + /* Reads the sensor raw data.*/ \ + msg_t (*read_raw)(uint32_t axes[]); \ + /* Reads the sensor returning normalized data.*/ \ + msg_t (*read_cooked)(float axes[]); + +/** + * @brief @p BaseSensor specific data. + * @note It is empty because @p BaseSensor is only an interface + * without implementation. + */ +#define _base_sensor_data + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _HAL_SENSORS_H_ */ + +/** @} */ -- cgit v1.2.3