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:
raiden00pl 2025-12-01 15:08:53 +01:00 committed by Xiang Xiao
parent 25ddf14cf5
commit a5d9f14215

View file

@ -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;