فهرست منبع

[components][drivers] added sensor device lookup function

yiyi 1 سال پیش
والد
کامیت
4c9d3be98a
2فایلهای تغییر یافته به همراه23 افزوده شده و 1 حذف شده
  1. 1 0
      components/drivers/include/drivers/sensor_v2.h
  2. 22 1
      components/drivers/sensor/v2/sensor.c

+ 1 - 0
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
 }

+ 22 - 1
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;
+}