mirror of
https://github.com/apache/nuttx.git
synced 2026-08-01 20:28:58 +00:00
sensors/adxl362_uorb: support for fixed-point data
support for fixed-point data for adxl362_uorb Signed-off-by: raiden00pl <raiden00@railab.me>
This commit is contained in:
parent
25ddf14cf5
commit
a5d9f14215
1 changed files with 16 additions and 17 deletions
|
|
@ -43,12 +43,6 @@
|
|||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Only float data type supported now */
|
||||
|
||||
#ifdef CONFIG_SENSORS_USE_B16
|
||||
# error fixed-point data type not supported yet
|
||||
#endif
|
||||
|
||||
#define ADXL362_SPI_FREQUENCY 1000000
|
||||
#define ADXL362_SPI_MODE SPIDEV_MODE0
|
||||
|
||||
|
|
@ -112,7 +106,7 @@ struct adxl362_sensor_s
|
|||
struct sensor_lowerhalf_s lower;
|
||||
FAR struct spi_dev_s *spi;
|
||||
int devno;
|
||||
float scale;
|
||||
sensor_data_t scale;
|
||||
#ifdef CONFIG_SENSORS_ADXL362_POLL
|
||||
bool enabled;
|
||||
uint32_t interval;
|
||||
|
|
@ -489,10 +483,12 @@ static int adxl362_fetch(FAR struct sensor_lowerhalf_s *lower,
|
|||
adxl362_getregs(priv, ADXL362_XDATA_L, (FAR uint8_t *)data, 8);
|
||||
|
||||
accel.timestamp = sensor_get_timestamp();
|
||||
accel.x = (float)adxl362_data(&data[0]) * priv->scale;
|
||||
accel.y = (float)adxl362_data(&data[2]) * priv->scale;
|
||||
accel.z = (float)adxl362_data(&data[4]) * priv->scale;
|
||||
accel.temperature = (float)adxl362_data(&data[6]) * ADXL362_TEMP_SCALE;
|
||||
|
||||
accel.x = sensor_data_muli(priv->scale, adxl362_data(&data[0]));
|
||||
accel.y = sensor_data_muli(priv->scale, adxl362_data(&data[2]));
|
||||
accel.z = sensor_data_muli(priv->scale, adxl362_data(&data[4]));
|
||||
accel.temperature = sensor_data_muli(
|
||||
sensor_data_ftof(ADXL362_TEMP_SCALE), adxl362_data(&data[6]));
|
||||
|
||||
memcpy(buffer, &accel, sizeof(accel));
|
||||
|
||||
|
|
@ -546,11 +542,14 @@ static int adxl362_thread(int argc, FAR char **argv)
|
|||
adxl362_getregs(priv, ADXL362_XDATA_L, (FAR uint8_t *)data, 8);
|
||||
|
||||
accel.timestamp = sensor_get_timestamp();
|
||||
accel.x = (float)adxl362_data(&data[0]) * priv->scale;
|
||||
accel.y = (float)adxl362_data(&data[2]) * priv->scale;
|
||||
accel.z = (float)adxl362_data(&data[4]) * priv->scale;
|
||||
accel.temperature =
|
||||
(float)adxl362_data(&data[6]) * ADXL362_TEMP_SCALE;
|
||||
accel.x = sensor_data_muli(priv->scale,
|
||||
adxl362_data(&data[0]));
|
||||
accel.y = sensor_data_muli(priv->scale,
|
||||
adxl362_data(&data[2]));
|
||||
accel.z = sensor_data_muli(priv->scale,
|
||||
adxl362_data(&data[4]));
|
||||
accel.temperature = sensor_data_muli(
|
||||
sensor_data_ftof(ADXL362_TEMP_SCALE), adxl362_data(&data[6]));
|
||||
|
||||
priv->lower.push_event(priv->lower.priv, &accel, sizeof(accel));
|
||||
}
|
||||
|
|
@ -609,7 +608,7 @@ int adxl362_register(int devno, FAR struct spi_dev_s *spi)
|
|||
priv->lower.ops = &g_adxl362_accel_ops;
|
||||
priv->lower.type = SENSOR_TYPE_ACCELEROMETER;
|
||||
priv->lower.nbuffer = 1;
|
||||
priv->scale = (CONSTANTS_ONE_G / 1000.0f);
|
||||
priv->scale = sensor_data_ftof(CONSTANTS_ONE_G / 1000.0f);
|
||||
priv->devno = devno;
|
||||
#ifdef CONFIG_SENSORS_ADXL362_POLL
|
||||
priv->enabled = false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue