@@ -433,9 +433,9 @@ static int adxl362_sample_fetch(struct device *dev, enum sensor_channel chan)
433
433
434
434
z = (buf [1 ] << 8 ) + buf [0 ];
435
435
436
- data -> acc_x = (s32_t )x * (adxl362_data .selected_range / 2 );
437
- data -> acc_y = (s32_t )y * (adxl362_data .selected_range / 2 );
438
- data -> acc_z = (s32_t )z * (adxl362_data .selected_range / 2 );
436
+ data -> acc_x = (s32_t )x * (adxl362_data .selected_range );
437
+ data -> acc_y = (s32_t )y * (adxl362_data .selected_range );
438
+ data -> acc_z = (s32_t )z * (adxl362_data .selected_range );
439
439
440
440
ret = adxl362_read_temperature (dev , & data -> temp );
441
441
if (ret ) {
@@ -445,6 +445,14 @@ static int adxl362_sample_fetch(struct device *dev, enum sensor_channel chan)
445
445
return 0 ;
446
446
}
447
447
448
+ static void adxl362_accel_convert (struct sensor_value * val , s16_t value )
449
+ {
450
+ s32_t micro_ms2 = value * (SENSOR_G / (16 * 1000 ));
451
+
452
+ val -> val1 = micro_ms2 / 100000 ;
453
+ val -> val2 = micro_ms2 % 100000 ;
454
+ }
455
+
448
456
static int adxl362_channel_get (struct device * dev ,
449
457
enum sensor_channel chan ,
450
458
struct sensor_value * val )
@@ -453,16 +461,13 @@ static int adxl362_channel_get(struct device *dev,
453
461
454
462
switch (chan ) {
455
463
case SENSOR_CHAN_ACCEL_X : /* Acceleration on the X axis, in m/s^2. */
456
- val -> val1 = data -> acc_x / 1000 ;
457
- val -> val2 = (data -> acc_x % 1000 ) * 1000 ;
464
+ adxl362_accel_convert (val , data -> acc_x );
458
465
break ;
459
466
case SENSOR_CHAN_ACCEL_Y : /* Acceleration on the Y axis, in m/s^2. */
460
- val -> val1 = data -> acc_y / 1000 ;
461
- val -> val2 = (data -> acc_y % 1000 ) * 1000 ;
467
+ adxl362_accel_convert (val , data -> acc_y );
462
468
break ;
463
469
case SENSOR_CHAN_ACCEL_Z : /* Acceleration on the Z axis, in m/s^2. */
464
- val -> val1 = data -> acc_z / 1000 ;
465
- val -> val2 = (data -> acc_z % 1000 ) * 1000 ;
470
+ adxl362_accel_convert (val , data -> acc_z );
466
471
break ;
467
472
case SENSOR_CHAN_DIE_TEMP : /* Temperature in degrees Celsius. */
468
473
val -> val1 = data -> temp / 1000 ;
0 commit comments