In barometer and temperature class there are missed calibration methods (set_bias, reset_bias, set_sensitivity, reset_sensitivity).
Code: Select all
/**
* @name Macro Functions (BaseBarometer)
* @{
*/
/**
* @brief Barometer get axes number.
*
* @param[in] ip pointer to a @p BaseBarometer class.
* @return The number of axes of the BaseSensor
*
* @api
*/
#define barometerGetAxesNumber(ip) \
(ip)->vmt_basebarometer->get_axes_number(ip)
Now it is get_channels_number
Code: Select all
/**
* @brief BaseBarometer specific methods.
*/
#define _base_barometer_methods_alone \
/* Invoke the get pressure data.*/ \
msg_t (*get_pressure)(void *instance, int32_t pressure[]);
This is redundant. You already have the read_raw and read_cooked methods in the basesensor class and barometer/thermometer extend this class.
Take a look to LSM303DLHC. Here I have 3 VMT
Code: Select all
/**
* @brief LSM303DLHC 6-axis accelerometer/compass class.
*/
struct LSM303DLHCDriver {
/** @brief BaseSensor Virtual Methods Table. */
const struct BaseSensorVMT *vmt_basesensor;
/** @brief BaseAccelerometer Virtual Methods Table. */
const struct BaseAccelerometerVMT *vmt_baseaccelerometer;
/** @brief BaseCompass Virtual Methods Table. */
const struct BaseCompassVMT *vmt_basecompass;
/** @brief LSM303DLHC Accelerometer Virtual Methods Table. */
const struct LSM303DLHCACCVMT *vmt_lsm303dlhcacc;
/** @brief LSM303DLHC Compass Virtual Methods Table. */
const struct LSM303DLHCCOMPVMT *vmt_lsm303dlhccomp;
_lsm303dlhc_data
};
using
vmt_lsm303dlhcacc->read_raw I am able to read raw data from
accelermeter onlyusing
vmt_lsm303dlhccomp->read_raw I am able to read raw data from
compass onlyusing
vmt_basesensor->read_raw I am able to read raw data from
both subsystems