Skip to content

Commit cb0b5b0

Browse files
authored
[components][sensor]增加电源检测类型
1 parent 2401726 commit cb0b5b0

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

components/drivers/include/drivers/sensor.h

+11-2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ extern "C" {
5353
#define RT_SENSOR_CLASS_IAQ (19) /* IAQ sensor. */
5454
#define RT_SENSOR_CLASS_ETOH (20) /* EtOH sensor. */
5555
#define RT_SENSOR_CLASS_BP (21) /* Blood Pressure */
56+
#define RT_SENSOR_CLASS_VOLTAGE (22) /* Voltage sensor */
57+
#define RT_SENSOR_CLASS_CURRENT (23) /* Current sensor */
58+
#define RT_SENSOR_CLASS_POWER (24) /* Power sensor */
5659

5760
/* Sensor vendor types */
5861

@@ -95,6 +98,9 @@ extern "C" {
9598
#define RT_SENSOR_UNIT_DD (17) /* Coordinates unit: DD */
9699
#define RT_SENSOR_UNIT_MGM3 (18) /* Concentration unit: mg/m3 */
97100
#define RT_SENSOR_UNIT_MMHG (19) /* Blood Pressure unit: mmHg */
101+
#define RT_SENSOR_UNIT_MV (20) /* Voltage unit: mV */
102+
#define RT_SENSOR_UNIT_MA (21) /* Current unit: mA */
103+
#define RT_SENSOR_UNIT_MW (22) /* Power unit: mW */
98104
/* Sensor communication interface types */
99105

100106
#define RT_SENSOR_INTF_I2C (1 << 0)
@@ -230,9 +236,12 @@ struct rt_sensor_data
230236
rt_uint32_t dust; /* Dust sensor. unit: ug/m3 */
231237
rt_uint32_t eco2; /* eCO2 sensor. unit: ppm */
232238
rt_uint32_t spo2; /* SpO2 sensor. unit: permillage */
233-
rt_uint32_t iaq; /* IAQ sensor. unit: 1 */
234-
rt_uint32_t etoh; /* EtOH sensor. unit: ppm */
239+
rt_uint32_t iaq; /* IAQ sensor. unit: 1 */
240+
rt_uint32_t etoh; /* EtOH sensor. unit: ppm */
235241
struct sensor_bp bp; /* BloodPressure. unit: mmHg */
242+
float mv; /* Voltage sensor. unit: mv */
243+
float ma; /* Current sensor. unit: ma */
244+
float mw; /* Power sensor. unit: mw */
236245
} data;
237246
};
238247

components/drivers/sensor/v1/sensor.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ static char *const sensor_name_str[] =
4040
"spo2_", /* SpO2 sensor */
4141
"iaq_", /* IAQ sensor */
4242
"etoh_", /* EtOH sensor */
43-
"bp_" /* Blood Pressure */
43+
"bp_", /* Blood Pressure */
44+
"volt_", /* Voltage sensor */
45+
"curr_", /* Current sensor */
46+
"pow_" /* Power sensor */
4447
};
4548

4649
/* Sensor interrupt correlation function */

components/drivers/sensor/v1/sensor_cmd.c

+19-1
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,15 @@ static void sensor_show_data(rt_size_t num, rt_sensor_t sensor, struct rt_sensor
8383
case RT_SENSOR_CLASS_BP:
8484
LOG_I("num:%3d, bp.sbp:%5d mmHg, bp.dbp:%5d mmHg, timestamp:%5d", num, sensor_data->data.bp.sbp, sensor_data->data.bp.dbp, sensor_data->timestamp);
8585
break;
86+
case RT_SENSOR_CLASS_VOLTAGE:
87+
LOG_I("num:%3d, voltage:%5d mV, timestamp:%5d", num, sensor_data->data.mv, sensor_data->timestamp);
88+
break;
89+
case RT_SENSOR_CLASS_CURRENT:
90+
LOG_I("num:%3d, current:%5d mA, timestamp:%5d", num, sensor_data->data.ma, sensor_data->timestamp);
91+
break;
92+
case RT_SENSOR_CLASS_POWER:
93+
LOG_I("num:%3d, power:%5d mW, timestamp:%5d", num, sensor_data->data.mv, sensor_data->timestamp);
94+
break;
8695
default:
8796
break;
8897
}
@@ -302,7 +311,7 @@ static int sensor(int argc, char **argv)
302311
rt_kprintf(" sodr <var> Set output date rate to var\n");
303312
rt_kprintf(" read [num] Read [num] times sensor\n");
304313
rt_kprintf(" num default 5\n");
305-
return ;
314+
return -RT_EINVAL;
306315
}
307316
else if (!strcmp(argv[1], "info"))
308317
{
@@ -418,6 +427,15 @@ static int sensor(int argc, char **argv)
418427
case RT_SENSOR_UNIT_MMHG:
419428
rt_kprintf("unit :mmHg\n");
420429
break;
430+
case RT_SENSOR_UNIT_MV:
431+
rt_kprintf("unit :mV\n");
432+
break;
433+
case RT_SENSOR_UNIT_MA:
434+
rt_kprintf("unit :mA\n");
435+
break;
436+
case RT_SENSOR_UNIT_MW:
437+
rt_kprintf("unit :mW\n");
438+
break;
421439
}
422440
rt_kprintf("range_max :%d\n", info.range_max);
423441
rt_kprintf("range_min :%d\n", info.range_min);

0 commit comments

Comments
 (0)