From 4c9d3be98acafeebe1d530bdb8f71222706ef4ad Mon Sep 17 00:00:00 2001 From: yiyi <55530868+youzuwei@users.noreply.github.com> Date: Tue, 30 Apr 2024 05:54:13 +0800 Subject: [PATCH] [components][drivers] added sensor device lookup function --- .../drivers/include/drivers/sensor_v2.h | 1 + components/drivers/sensor/v2/sensor.c | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/components/drivers/include/drivers/sensor_v2.h b/components/drivers/include/drivers/sensor_v2.h index 72044a3ee2..d90cef89c7 100644 --- a/components/drivers/include/drivers/sensor_v2.h +++ b/components/drivers/include/drivers/sensor_v2.h @@ -398,6 +398,7 @@ int rt_hw_sensor_register(rt_sensor_t sensor, const char *name, rt_uint32_t flag, void *data); +rt_sensor_t rt_sensor_device_find(const char *name); #ifdef __cplusplus } diff --git a/components/drivers/sensor/v2/sensor.c b/components/drivers/sensor/v2/sensor.c index a35089ad34..ce481c9e2e 100644 --- a/components/drivers/sensor/v2/sensor.c +++ b/components/drivers/sensor/v2/sensor.c @@ -41,7 +41,8 @@ static char *const sensor_name_str[] = "sp-", /* SpO2 sensor */ "ia-", /* IAQ sensor */ "et-", /* EtOH sensor */ - "bp-" /* Blood Pressure */ + "bp-", /* Blood Pressure */ + RT_NULL }; /* sensor interrupt handler function */ @@ -519,3 +520,23 @@ int rt_hw_sensor_register(rt_sensor_t sensor, return RT_EOK; } + +rt_sensor_t rt_sensor_device_find(const char *name) +{ + rt_uint8_t index; + char device_name[RT_NAME_MAX]; + rt_device_t device; + + for (index = 0; sensor_name_str[index] != RT_NULL; index++) + { + rt_memset(device_name, 0, sizeof(device_name)); + rt_snprintf(device_name, sizeof(device_name), "%s%s", sensor_name_str[index], name); + device = rt_device_find(device_name); + if (device != RT_NULL) + { + return (rt_sensor_t)device; + } + } + + return RT_NULL; +}