ソースを参照

[sensor] Fixed a problem where threads were repeatedly created。| 修复线程被重复创建的问题

guozhanxin 6 年 前
コミット
f6eabb2d0a
1 ファイル変更9 行追加5 行削除
  1. 9 5
      components/drivers/sensors/sensor_cmd.c

+ 9 - 5
components/drivers/sensors/sensor_cmd.c

@@ -44,6 +44,9 @@ static void sensor_show_data(rt_size_t num, rt_sensor_t sensor, struct rt_sensor
     case RT_SENSOR_CLASS_STEP:
     case RT_SENSOR_CLASS_STEP:
         LOG_I("num:%3d, step:%5d, timestamp:%5d", num, sensor_data->data.step, sensor_data->timestamp);
         LOG_I("num:%3d, step:%5d, timestamp:%5d", num, sensor_data->data.step, sensor_data->timestamp);
         break;
         break;
+    case RT_SENSOR_CLASS_PROXIMITY:
+        LOG_I("num:%3d, distance:%5d, timestamp:%5d", num, sensor_data->data.proximity, sensor_data->timestamp);
+        break;
     default:
     default:
         break;
         break;
     }
     }
@@ -96,6 +99,12 @@ static void sensor_fifo(int argc, char **argv)
         return;
         return;
     }
     }
     sensor = (rt_sensor_t)dev;
     sensor = (rt_sensor_t)dev;
+    
+    if (rt_device_open(dev, RT_DEVICE_FLAG_FIFO_RX) != RT_EOK)
+    {
+        LOG_E("open device failed!");
+        return;
+    }
 
 
     if (sensor_rx_sem == RT_NULL)
     if (sensor_rx_sem == RT_NULL)
     {
     {
@@ -117,11 +126,6 @@ static void sensor_fifo(int argc, char **argv)
 
 
     rt_device_set_rx_indicate(dev, rx_callback);
     rt_device_set_rx_indicate(dev, rx_callback);
 
 
-    if (rt_device_open(dev, RT_DEVICE_FLAG_FIFO_RX) != RT_EOK)
-    {
-        LOG_E("open device failed!");
-        return;
-    }
     rt_device_control(dev, RT_SENSOR_CTRL_SET_ODR, (void *)20);
     rt_device_control(dev, RT_SENSOR_CTRL_SET_ODR, (void *)20);
 }
 }
 #ifdef FINSH_USING_MSH
 #ifdef FINSH_USING_MSH