From 2bc539dc98841f5fd04f77475e5687913c11e88f Mon Sep 17 00:00:00 2001 From: Rocco Marco Guglielmi Date: Mon, 6 Jun 2016 18:51:33 +0000 Subject: Added new sensor classes. Small fixes on old classes. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9598 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/lib/peripherals/sensors/hal_accelerometer.h | 4 +- os/hal/lib/peripherals/sensors/hal_barometer.h | 217 +++++++++++++++++++++ os/hal/lib/peripherals/sensors/hal_compass.h | 4 +- os/hal/lib/peripherals/sensors/hal_gyroscope.h | 4 +- os/hal/lib/peripherals/sensors/hal_hygrometer.h | 217 +++++++++++++++++++++ os/hal/lib/peripherals/sensors/hal_thermometer.h | 217 +++++++++++++++++++++ 6 files changed, 657 insertions(+), 6 deletions(-) create mode 100644 os/hal/lib/peripherals/sensors/hal_barometer.h create mode 100644 os/hal/lib/peripherals/sensors/hal_hygrometer.h create mode 100644 os/hal/lib/peripherals/sensors/hal_thermometer.h (limited to 'os/hal/lib/peripherals') diff --git a/os/hal/lib/peripherals/sensors/hal_accelerometer.h b/os/hal/lib/peripherals/sensors/hal_accelerometer.h index f5a3be39d..6fb970213 100644 --- a/os/hal/lib/peripherals/sensors/hal_accelerometer.h +++ b/os/hal/lib/peripherals/sensors/hal_accelerometer.h @@ -98,12 +98,12 @@ typedef struct { * @brief Accelerometer get axes number. * * @param[in] ip pointer to a @p BaseAccelerometer class. - * @return The number of axes of the BaseSensor + * @return The number of axes of the BaseAccelerometer * * @api */ #define accelerometerGetAxesNumber(ip) \ - (ip)->vmt_baseaccelerometer->get_axes_number(ip) + (ip)->vmt_baseaccelerometer->get_channels_number(ip) /** * @brief Accelerometer read raw data. diff --git a/os/hal/lib/peripherals/sensors/hal_barometer.h b/os/hal/lib/peripherals/sensors/hal_barometer.h new file mode 100644 index 000000000..dd922c966 --- /dev/null +++ b/os/hal/lib/peripherals/sensors/hal_barometer.h @@ -0,0 +1,217 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + 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_barometer.h + * @brief Generic barometer interface header. + * + * @addtogroup HAL_BAROMETER + * @{ + */ + +#ifndef HAL_BAROMETER_H +#define HAL_BAROMETER_H + +#include "hal_sensors.h" + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief BaseBarometer specific methods. + */ +#define _base_barometer_methods_alone \ + /* Invoke the set bias procedure.*/ \ + msg_t (*set_bias)(void *instance, int32_t biases[]); \ + /* Remove bias stored data.*/ \ + msg_t (*reset_bias)(void *instance); \ + /* Invoke the set sensitivity procedure.*/ \ + msg_t (*set_sensitivity)(void *instance, float sensitivities[]); \ + /* Restore sensitivity stored data to default.*/ \ + msg_t (*reset_sensitivity)(void *instance); + + +/** + * @brief BaseBarometer specific methods with inherited ones. + */ +#define _base_barometer_methods \ + _base_sensor_methods \ + _base_barometer_methods_alone + +/** + * @brief @p BaseBarometer virtual methods table. + */ +struct BaseBarometerVMT { + _base_barometer_methods +}; + +/** + * @brief @p BaseBarometer specific data. + */ +#define _base_barometer_data \ + _base_sensor_data + +/** + * @brief Base barometer class. + * @details This class represents a generic barometer. + */ +typedef struct { + /** @brief Virtual Methods Table.*/ + const struct BaseBarometerVMT *vmt_basebarometer; + _base_barometer_data +} BaseBarometer; + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ +/** + * @name Macro Functions (BaseBarometer) + * @{ + */ +/** + * @brief Barometer get channels number. + * + * @param[in] ip pointer to a @p BaseBarometer class. + * @return The number of channels of the BaseBarometer + * + * @api + */ +#define barometerGetChannelsNumber(ip) \ + (ip)->vmt_basebarometer->get_channels_number(ip) + +/** + * @brief Barometer read raw data. + * + * @param[in] ip pointer to a @p BaseBarometer class. + * @param[in] dp pointer to a data array. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define barometerReadRaw(ip, dp) \ + (ip)->vmt_basebarometer->read_raw(ip, dp) + +/** + * @brief Barometer read cooked data. + * + * @param[in] ip pointer to a @p BaseBarometer class. + * @param[in] dp pointer to a data array. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define barometerReadCooked(ip, dp) \ + (ip)->vmt_basebarometer->read_cooked(ip, dp) + +/** + * @brief Updates barometer bias data from received buffer. + * @note The bias buffer must have the same length of the + * the barometer channels number. Bias must be computed on + * raw data and is a signed integer. + * + * @param[in] ip pointer to a @p BaseBarometer class. + * @param[in] bp pointer to a buffer of bias values. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define barometerSetBias(ip, bp) \ + (ip)->vmt_basebarometer->set_bias(ip, bp) + +/** + * @brief Reset barometer bias data restoring it to zero. + * + * @param[in] ip pointer to a @p BaseBarometer class. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define barometerResetBias(ip) \ + (ip)->vmt_basebarometer->reset_bias(ip) + +/** + * @brief Updates barometer sensitivity data from received buffer. + * @note The sensitivity buffer must have the same length of the + * the barometer channels number. + * + * @param[in] ip pointer to a @p BaseBarometer class. + * @param[in] sp pointer to a buffer of sensitivity values. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define barometerSetSensitivity(ip, sp) \ + (ip)->vmt_basebarometer->set_sensitivity(ip, sp) + +/** + * @brief Reset barometer sensitivity data restoring it to its typical + * value. + * + * @param[in] ip pointer to a @p BaseBarometer class. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define barometerResetSensitivity(ip) \ + (ip)->vmt_basebarometer->reset_sensitivity(ip) +/** @} */ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* HAL_BAROMETER_H */ + +/** @} */ diff --git a/os/hal/lib/peripherals/sensors/hal_compass.h b/os/hal/lib/peripherals/sensors/hal_compass.h index a9366b2c6..82396b82d 100644 --- a/os/hal/lib/peripherals/sensors/hal_compass.h +++ b/os/hal/lib/peripherals/sensors/hal_compass.h @@ -98,12 +98,12 @@ typedef struct { * @brief Compass get axes number. * * @param[in] ip pointer to a @p BaseCompass class. - * @return The number of axes of the BaseSensor + * @return The number of axes of the BaseCompass * * @api */ #define compassGetAxesNumber(ip) \ - (ip)->vmt_basecompass->get_axes_number(ip) + (ip)->vmt_basecompass->get_channels_number(ip) /** * @brief Compass read raw data. diff --git a/os/hal/lib/peripherals/sensors/hal_gyroscope.h b/os/hal/lib/peripherals/sensors/hal_gyroscope.h index 66be13792..3126224ca 100644 --- a/os/hal/lib/peripherals/sensors/hal_gyroscope.h +++ b/os/hal/lib/peripherals/sensors/hal_gyroscope.h @@ -101,12 +101,12 @@ typedef struct { * @brief Gyroscope get axes number. * * @param[in] ip pointer to a @p BaseGyroscope class. - * @return The number of axes of the BaseSensor + * @return The number of axes of the BaseGyroscope * * @api */ #define gyroscopeGetAxesNumber(ip) \ - (ip)->vmt_basegyroscope->get_axes_number(ip) + (ip)->vmt_basegyroscope->get_channels_number(ip) /** * @brief Gyroscope read raw data. diff --git a/os/hal/lib/peripherals/sensors/hal_hygrometer.h b/os/hal/lib/peripherals/sensors/hal_hygrometer.h new file mode 100644 index 000000000..31caca861 --- /dev/null +++ b/os/hal/lib/peripherals/sensors/hal_hygrometer.h @@ -0,0 +1,217 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + 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_hygrometer.h + * @brief Generic hygrometer interface header. + * + * @addtogroup HAL_HYGROMETER + * @{ + */ + +#ifndef HAL_HYGROMETER_H +#define HAL_HYGROMETER_H + +#include "hal_sensors.h" + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief BaseHygrometer specific methods. + */ +#define _base_hygrometer_methods_alone \ + /* Invoke the set bias procedure.*/ \ + msg_t (*set_bias)(void *instance, int32_t biases[]); \ + /* Remove bias stored data.*/ \ + msg_t (*reset_bias)(void *instance); \ + /* Invoke the set sensitivity procedure.*/ \ + msg_t (*set_sensitivity)(void *instance, float sensitivities[]); \ + /* Restore sensitivity stored data to default.*/ \ + msg_t (*reset_sensitivity)(void *instance); + + +/** + * @brief BaseHygrometer specific methods with inherited ones. + */ +#define _base_hygrometer_methods \ + _base_sensor_methods \ + _base_hygrometer_methods_alone + +/** + * @brief @p BaseHygrometer virtual methods table. + */ +struct BaseHygrometerVMT { + _base_hygrometer_methods +}; + +/** + * @brief @p BaseHygrometer specific data. + */ +#define _base_hygrometer_data \ + _base_sensor_data + +/** + * @brief Base hygrometer class. + * @details This class represents a generic hygrometer. + */ +typedef struct { + /** @brief Virtual Methods Table.*/ + const struct BaseHygrometerVMT *vmt_basehygrometer; + _base_hygrometer_data +} BaseHygrometer; + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ +/** + * @name Macro Functions (BaseHygrometer) + * @{ + */ +/** + * @brief Hygrometer get channels number. + * + * @param[in] ip pointer to a @p BaseHygrometer class. + * @return The number of channels of the BaseHygrometer + * + * @api + */ +#define hygrometerGetChannelsNumber(ip) \ + (ip)->vmt_basehygrometer->get_channels_number(ip) + +/** + * @brief Hygrometer read raw data. + * + * @param[in] ip pointer to a @p BaseHygrometer class. + * @param[in] dp pointer to a data array. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define hygrometerReadRaw(ip, dp) \ + (ip)->vmt_basehygrometer->read_raw(ip, dp) + +/** + * @brief Hygrometer read cooked data. + * + * @param[in] ip pointer to a @p BaseHygrometer class. + * @param[in] dp pointer to a data array. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define hygrometerReadCooked(ip, dp) \ + (ip)->vmt_basehygrometer->read_cooked(ip, dp) + +/** + * @brief Updates hygrometer bias data from received buffer. + * @note The bias buffer must have the same length of the + * the hygrometer channels number. Bias must be computed on + * raw data and is a signed integer. + * + * @param[in] ip pointer to a @p BaseHygrometer class. + * @param[in] bp pointer to a buffer of bias values. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define hygrometerSetBias(ip, bp) \ + (ip)->vmt_basehygrometer->set_bias(ip, bp) + +/** + * @brief Reset hygrometer bias data restoring it to zero. + * + * @param[in] ip pointer to a @p BaseHygrometer class. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define hygrometerResetBias(ip) \ + (ip)->vmt_basehygrometer->reset_bias(ip) + +/** + * @brief Updates hygrometer sensitivity data from received buffer. + * @note The sensitivity buffer must have the same length of the + * the hygrometer channels number. + * + * @param[in] ip pointer to a @p BaseHygrometer class. + * @param[in] sp pointer to a buffer of sensitivity values. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define hygrometerSetSensitivity(ip, sp) \ + (ip)->vmt_basehygrometer->set_sensitivity(ip, sp) + +/** + * @brief Reset hygrometer sensitivity data restoring it to its typical + * value. + * + * @param[in] ip pointer to a @p BaseHygrometer class. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define hygrometerResetSensitivity(ip) \ + (ip)->vmt_basehygrometer->reset_sensitivity(ip) +/** @} */ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* HAL_HYGROMETER_H */ + +/** @} */ diff --git a/os/hal/lib/peripherals/sensors/hal_thermometer.h b/os/hal/lib/peripherals/sensors/hal_thermometer.h new file mode 100644 index 000000000..51becfaa7 --- /dev/null +++ b/os/hal/lib/peripherals/sensors/hal_thermometer.h @@ -0,0 +1,217 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + 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_thermometer.h + * @brief Generic thermometer interface header. + * + * @addtogroup HAL_THERMOMETER + * @{ + */ + +#ifndef HAL_THERMOMETER_H +#define HAL_THERMOMETER_H + +#include "hal_sensors.h" + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver data structures and types. */ +/*===========================================================================*/ + +/** + * @brief BaseThermometer specific methods. + */ +#define _base_thermometer_methods_alone \ + /* Invoke the set bias procedure.*/ \ + msg_t (*set_bias)(void *instance, int32_t biases[]); \ + /* Remove bias stored data.*/ \ + msg_t (*reset_bias)(void *instance); \ + /* Invoke the set sensitivity procedure.*/ \ + msg_t (*set_sensitivity)(void *instance, float sensitivities[]); \ + /* Restore sensitivity stored data to default.*/ \ + msg_t (*reset_sensitivity)(void *instance); + + +/** + * @brief BaseThermometer specific methods with inherited ones. + */ +#define _base_thermometer_methods \ + _base_sensor_methods \ + _base_thermometer_methods_alone + +/** + * @brief @p BaseThermometer virtual methods table. + */ +struct BaseThermometerVMT { + _base_thermometer_methods +}; + +/** + * @brief @p BaseThermometer specific data. + */ +#define _base_thermometer_data \ + _base_sensor_data + +/** + * @brief Base thermometer class. + * @details This class represents a generic thermometer. + */ +typedef struct { + /** @brief Virtual Methods Table.*/ + const struct BaseThermometerVMT *vmt_basethermometer; + _base_thermometer_data +} BaseThermometer; + +/*===========================================================================*/ +/* Driver macros. */ +/*===========================================================================*/ +/** + * @name Macro Functions (BaseThermometer) + * @{ + */ +/** + * @brief Thermometer get channels number. + * + * @param[in] ip pointer to a @p BaseThermometer class. + * @return The number of channels of the BaseThermometer + * + * @api + */ +#define thermometerGetChannelsNumber(ip) \ + (ip)->vmt_basethermometer->get_channels_number(ip) + +/** + * @brief Thermometer read raw data. + * + * @param[in] ip pointer to a @p BaseThermometer class. + * @param[in] dp pointer to a data array. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define thermometerReadRaw(ip, dp) \ + (ip)->vmt_basethermometer->read_raw(ip, dp) + +/** + * @brief Thermometer read cooked data. + * + * @param[in] ip pointer to a @p BaseThermometer class. + * @param[in] dp pointer to a data array. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define thermometerReadCooked(ip, dp) \ + (ip)->vmt_basethermometer->read_cooked(ip, dp) + +/** + * @brief Updates thermometer bias data from received buffer. + * @note The bias buffer must have the same length of the + * the thermometer channels number. Bias must be computed on + * raw data and is a signed integer. + * + * @param[in] ip pointer to a @p BaseThermometer class. + * @param[in] bp pointer to a buffer of bias values. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define thermometerSetBias(ip, bp) \ + (ip)->vmt_basethermometer->set_bias(ip, bp) + +/** + * @brief Reset thermometer bias data restoring it to zero. + * + * @param[in] ip pointer to a @p BaseThermometer class. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define thermometerResetBias(ip) \ + (ip)->vmt_basethermometer->reset_bias(ip) + +/** + * @brief Updates thermometer sensitivity data from received buffer. + * @note The sensitivity buffer must have the same length of the + * the thermometer channels number. + * + * @param[in] ip pointer to a @p BaseThermometer class. + * @param[in] sp pointer to a buffer of sensitivity values. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define thermometerSetSensitivity(ip, sp) \ + (ip)->vmt_basethermometer->set_sensitivity(ip, sp) + +/** + * @brief Reset thermometer sensitivity data restoring it to its typical + * value. + * + * @param[in] ip pointer to a @p BaseThermometer class. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET if one or more errors occurred. + * + * @api + */ +#define thermometerResetSensitivity(ip) \ + (ip)->vmt_basethermometer->reset_sensitivity(ip) +/** @} */ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* HAL_THERMOMETER_H */ + +/** @} */ -- cgit v1.2.3