diff options
| author | Meco Man <[email protected]> | 2022-12-25 20:48:32 -0500 |
|---|---|---|
| committer | Man, Jianting (Meco) <[email protected]> | 2022-12-26 02:10:30 -0500 |
| commit | b1763e6903e18f1300c0c1fc707a9d7d62ac7cb3 (patch) | |
| tree | 7d305db109b066bc70e631620857d4bf4a0eb62e /components/drivers/sensor/sensor.c | |
| parent | 3a7ee55780b96183b6c600aee4b875dff5c97d0a (diff) | |
[sensor] add setting power/accuracy/fetch data mode commands
Diffstat (limited to 'components/drivers/sensor/sensor.c')
| -rw-r--r-- | components/drivers/sensor/sensor.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/components/drivers/sensor/sensor.c b/components/drivers/sensor/sensor.c index 8bd99d2c48..025182862b 100644 --- a/components/drivers/sensor/sensor.c +++ b/components/drivers/sensor/sensor.c @@ -358,7 +358,7 @@ static rt_err_t _sensor_control(rt_device_t dev, int cmd, void *args) break; case RT_SENSOR_CTRL_SET_ACCURACY_MODE: /* Configuration sensor power mode */ - mode = (rt_uint32_t)args; + mode = (rt_uint32_t)args & 0x000F; if (!(mode == RT_SENSOR_MODE_ACCURACY_HIGHEST || mode == RT_SENSOR_MODE_ACCURACY_HIGH ||\ mode == RT_SENSOR_MODE_ACCURACY_MEDIUM || mode == RT_SENSOR_MODE_ACCURACY_LOW ||\ mode == RT_SENSOR_MODE_ACCURACY_LOWEST || mode == RT_SENSOR_MODE_ACCURACY_NOTRUST)) @@ -369,13 +369,13 @@ static rt_err_t _sensor_control(rt_device_t dev, int cmd, void *args) result = local_ctrl(sensor, RT_SENSOR_CTRL_SET_ACCURACY_MODE, args); if (result == RT_EOK) { - RT_SENSOR_MODE_SET_ACCURACY(sensor->info.mode, (rt_uint32_t)args & 0x0F); + RT_SENSOR_MODE_SET_ACCURACY(sensor->info.mode, mode); LOG_D("set accuracy mode code: %d", RT_SENSOR_MODE_GET_ACCURACY(sensor->info.mode)); } break; case RT_SENSOR_CTRL_SET_POWER_MODE: /* Configuration sensor power mode */ - mode = (rt_uint32_t)args; + mode = (rt_uint32_t)args & 0x000F; if (!(mode == RT_SENSOR_MODE_POWER_HIGHEST || mode == RT_SENSOR_MODE_POWER_HIGH ||\ mode == RT_SENSOR_MODE_POWER_MEDIUM || mode == RT_SENSOR_MODE_POWER_LOW ||\ mode == RT_SENSOR_MODE_POWER_LOWEST || mode == RT_SENSOR_MODE_POWER_DOWN)) @@ -386,13 +386,13 @@ static rt_err_t _sensor_control(rt_device_t dev, int cmd, void *args) result = local_ctrl(sensor, RT_SENSOR_CTRL_SET_POWER_MODE, args); if (result == RT_EOK) { - RT_SENSOR_MODE_SET_POWER(sensor->info.mode, (rt_uint32_t)args & 0x0F); + RT_SENSOR_MODE_SET_POWER(sensor->info.mode, mode); LOG_D("set power mode code: %d", RT_SENSOR_MODE_GET_POWER(sensor->info.mode)); } break; case RT_SENSOR_CTRL_SET_FETCH_MODE: /* Configuration sensor power mode */ - mode = (rt_uint32_t)args; + mode = (rt_uint32_t)args & 0x000F; if (!(mode == RT_SENSOR_MODE_FETCH_POLLING || mode == RT_SENSOR_MODE_FETCH_INT ||\ mode == RT_SENSOR_MODE_FETCH_FIFO)) { @@ -402,7 +402,7 @@ static rt_err_t _sensor_control(rt_device_t dev, int cmd, void *args) result = local_ctrl(sensor, RT_SENSOR_CTRL_SET_FETCH_MODE, args); if (result == RT_EOK) { - RT_SENSOR_MODE_SET_FETCH(sensor->info.mode, (rt_uint32_t)args & 0x0F); + RT_SENSOR_MODE_SET_FETCH(sensor->info.mode, mode); LOG_D("set fetch mode code: %d", RT_SENSOR_MODE_GET_FETCH(sensor->info.mode)); } break; @@ -517,9 +517,10 @@ int rt_hw_sensor_register(rt_sensor_t sensor, LOG_I("sensor[%s] init success", device_name); rt_free(device_name); - /* set sensor accuracy and power as the hightest */ + /* set sensor accuracy and power as the hightest, and polling data as default */ rt_device_control(device, RT_SENSOR_CTRL_SET_ACCURACY_MODE, RT_SENSOR_MODE_ACCURACY_HIGHEST); rt_device_control(device, RT_SENSOR_CTRL_SET_POWER_MODE, RT_SENSOR_MODE_POWER_HIGHEST); + rt_device_control(device, RT_SENSOR_CTRL_SET_FETCH_MODE, RT_SENSOR_MODE_FETCH_POLLING); return RT_EOK; } |
