瀏覽代碼

[sensor] add irq_handle for driver. | 为底层驱动添加中断回调。

guozhanxin 6 年之前
父節點
當前提交
507a90f055
共有 2 個文件被更改,包括 10 次插入1 次删除
  1. 5 0
      components/drivers/sensors/sensor.c
  2. 5 1
      components/drivers/sensors/sensor.h

+ 5 - 0
components/drivers/sensors/sensor.c

@@ -43,6 +43,11 @@ void rt_sensor_cb(rt_sensor_t sen)
     {
         return;
     }
+    
+    if (sen->irq_handle != RT_NULL)
+    {
+        sen->irq_handle(sen);
+    }
 
     /* The buffer is not empty. Read the data in the buffer first */
     if (sen->data_len > 0)

+ 5 - 1
components/drivers/sensors/sensor.h

@@ -68,6 +68,7 @@ extern "C" {
 #define  RT_SENSOR_UNIT_HZ             (9)  /* Frequency               unit: HZ         */
 #define  RT_SENSOR_UNIT_ONE            (10) /* Dimensionless quantity  unit: 1          */
 #define  RT_SENSOR_UNIT_BPM            (11) /* Heart rate              unit: bpm        */
+#define  RT_SENSOR_UNIT_MM             (12) /* Distance                unit: mm         */
 
 /* Sensor communication interface types */
 
@@ -131,6 +132,8 @@ struct rt_sensor_config
     rt_int32_t                   range;     /* sensor range of measurement */
 };
 
+typedef struct rt_sensor_device *rt_sensor_t;
+
 struct rt_sensor_device
 {
     struct rt_device             parent;    /* The standard device */
@@ -144,8 +147,9 @@ struct rt_sensor_device
     const struct rt_sensor_ops  *ops;       /* The sensor ops */
 
     struct rt_sensor_module     *module;    /* The sensor module */
+    
+    rt_err_t (*irq_handle)(rt_sensor_t sensor);             /* Called when an interrupt is generated, registered by the driver */
 };
-typedef struct rt_sensor_device *rt_sensor_t;
 
 struct rt_sensor_module
 {