Browse Source

[Sensor] Add user-commands range limitation

luhuadong 5 years ago
parent
commit
7c4e70b3b3
2 changed files with 11 additions and 2 deletions
  1. 9 2
      components/drivers/sensors/sensor.c
  2. 2 0
      components/drivers/sensors/sensor.h

+ 9 - 2
components/drivers/sensors/sensor.c

@@ -354,8 +354,15 @@ static rt_err_t rt_sensor_control(rt_device_t dev, int cmd, void *args)
         break;
         break;
     default:
     default:
 
 
-        /* Custom commands */
-        result = sensor->ops->control(sensor, cmd, args);
+        if (cmd > RT_SENSOR_CTRL_USER_CMD_START)
+        {
+            /* Custom commands */
+            result = sensor->ops->control(sensor, cmd, args);
+        }
+        else
+        {
+            result = -RT_ERROR;
+        }
         break;
         break;
     }
     }
 
 

+ 2 - 0
components/drivers/sensors/sensor.h

@@ -111,6 +111,8 @@ extern "C" {
 #define  RT_SENSOR_CTRL_SET_POWER      (5)  /* Set power mode. args type of sensor power mode. ex. RT_SENSOR_POWER_DOWN,RT_SENSOR_POWER_NORMAL */
 #define  RT_SENSOR_CTRL_SET_POWER      (5)  /* Set power mode. args type of sensor power mode. ex. RT_SENSOR_POWER_DOWN,RT_SENSOR_POWER_NORMAL */
 #define  RT_SENSOR_CTRL_SELF_TEST      (6)  /* Take a self test */
 #define  RT_SENSOR_CTRL_SELF_TEST      (6)  /* Take a self test */
 
 
+#define  RT_SENSOR_CTRL_USER_CMD_START 0x100  /* User commands should be greater than 0x100 */
+
 struct rt_sensor_info
 struct rt_sensor_info
 {
 {
     rt_uint8_t     type;                    /* The sensor type */
     rt_uint8_t     type;                    /* The sensor type */