Skip to content

Commit 0404a32

Browse files
committed
sensors/bh1749nuc_uorb: support for fixed-point data
support for fixed-point data for bh1749nuc_uorb Signed-off-by: raiden00pl <[email protected]>
1 parent 34b2ba0 commit 0404a32

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

drivers/sensors/bh1749nuc_uorb.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ struct bh1749nuc_sensor_dev_s
6464
{
6565
struct bh1749nuc_sensor_s priv[BH1749NUC_MAX_IDX];
6666
struct bh1749nuc_dev_s dev;
67-
float scale_r;
68-
float scale_g;
69-
float scale_b;
70-
float scale_ir;
67+
sensor_data_t scale_r;
68+
sensor_data_t scale_g;
69+
sensor_data_t scale_b;
70+
sensor_data_t scale_ir;
7171
mutex_t lock;
7272
#ifdef CONFIG_SENSORS_BH1749NUC_POLL
7373
sem_t run;
@@ -231,11 +231,11 @@ static int bh1749nuc_fetch(FAR struct sensor_lowerhalf_s *lower,
231231

232232
rgb_data.timestamp = now;
233233
tmp = bh1749nuc_read16(dev, BH1749NUC_RED_DATA_LSB);
234-
rgb_data.r = (tmp * priv->dev->scale_r);
234+
rgb_data.r = sensor_data_muli(priv->dev->scale_r, tmp);
235235
tmp = bh1749nuc_read16(dev, BH1749NUC_GREEN_DATA_LSB);
236-
rgb_data.g = (tmp * priv->dev->scale_g);
236+
rgb_data.g = sensor_data_muli(priv->dev->scale_g, tmp);
237237
tmp = bh1749nuc_read16(dev, BH1749NUC_BLUE_DATA_LSB);
238-
rgb_data.b = (tmp * priv->dev->scale_b);
238+
rgb_data.b = sensor_data_muli(priv->dev->scale_b, tmp);
239239

240240
memcpy(buffer, &rgb_data, sizeof(rgb_data));
241241
ret = sizeof(rgb_data);
@@ -250,7 +250,7 @@ static int bh1749nuc_fetch(FAR struct sensor_lowerhalf_s *lower,
250250

251251
ir_data.timestamp = now;
252252
tmp = bh1749nuc_read16(dev, BH1749NUC_IR_DATA_LSB);
253-
ir_data.ir = (tmp * priv->dev->scale_ir);
253+
ir_data.ir = sensor_data_muli(priv->dev->scale_ir, tmp);
254254

255255
memcpy(buffer, &ir_data, sizeof(ir_data));
256256
ret = sizeof(ir_data);
@@ -361,11 +361,11 @@ static int bh1749nuc_thread(int argc, FAR char **argv)
361361
{
362362
rgb_data.timestamp = now;
363363
tmp = bh1749nuc_read16(&dev->dev, BH1749NUC_RED_DATA_LSB);
364-
rgb_data.r = (tmp * dev->scale_r);
364+
rgb_data.r = sensor_data_muli(dev->scale_r, tmp);
365365
tmp = bh1749nuc_read16(&dev->dev, BH1749NUC_GREEN_DATA_LSB);
366-
rgb_data.g = (tmp * dev->scale_g);
366+
rgb_data.g = sensor_data_muli(dev->scale_g, tmp);
367367
tmp = bh1749nuc_read16(&dev->dev, BH1749NUC_BLUE_DATA_LSB);
368-
rgb_data.b = (tmp * dev->scale_b);
368+
rgb_data.b = sensor_data_muli(dev->scale_b, tmp);
369369

370370
rgb->lower.push_event(rgb->lower.priv,
371371
&rgb_data, sizeof(rgb_data));
@@ -375,7 +375,7 @@ static int bh1749nuc_thread(int argc, FAR char **argv)
375375
{
376376
ir_data.timestamp = now;
377377
tmp = bh1749nuc_read16(&dev->dev, BH1749NUC_IR_DATA_LSB);
378-
ir_data.ir = (tmp * dev->scale_ir);
378+
ir_data.ir = sensor_data_muli(dev->scale_ir, tmp);
379379

380380
ir->lower.push_event(ir->lower.priv,
381381
&ir_data, sizeof(ir_data));
@@ -459,10 +459,10 @@ int bh1749nuc_register_uorb(int devno, FAR struct bh1749nuc_config_s *config)
459459

460460
/* Return data in lux unit for RGB and IR */
461461

462-
dev->scale_r = (20.0f / 71.0f) * (1e-6 / 1.46e-7);
463-
dev->scale_g = (20.0f / 99.0f) * (1e-6 / 1.46e-7);
464-
dev->scale_b = (20.0f / 70.0f) * (1e-6 / 1.46e-7);
465-
dev->scale_ir = (20.0f / 25.0f) * (1e-6 / 1.46e-7);
462+
dev->scale_r = sensor_data_ftof((20.0f / 71.0f) * (1e-6 / 1.46e-7));
463+
dev->scale_g = sensor_data_ftof((20.0f / 99.0f) * (1e-6 / 1.46e-7));
464+
dev->scale_b = sensor_data_ftof((20.0f / 70.0f) * (1e-6 / 1.46e-7));
465+
dev->scale_ir = sensor_data_ftof((20.0f / 25.0f) * (1e-6 / 1.46e-7));
466466

467467
/* Register sensor */
468468

0 commit comments

Comments
 (0)