rt_sensor_device 结构
UML
Mind map
接口实现
int rt_hw_xxx_init(const char name, struct rt_sensor_config cfg)
1.查找设备
根据cfg->intf->dev_name查找设备,cfg->intf->user_data可以根据实际需求传入参数,如可将IIC从机地址通过user_data传入,供底层读取数据时使用
2.设置传感器信息
3.设置传感器ops接口
ops中需要实现两个接口:
rt_size_t(* fetch_data )(struct rt_sensor_device *sensor, void *buf, rt_size_t len)
rt_err_t(*control )(struct rt_sensor_device *sensor, int cmd, void *arg)
4.注册传感器
user_data一般为第一步中获取到的传感器读取数据的设备的句柄,如IIC,SPI等
static rt_err_t xxx_control(struct rt_sensor_device psensor, int cmd, void args)
该接口对应ops->control,主要作用是修改传感器当前状态或获取数据方式
/* Sensor control cmd types */
#define RT_SENSOR_CTRL_GET_ID (0) /* Get device id */
#define RT_SENSOR_CTRL_GET_INFO (1) /* Get sensor info */
#define RT_SENSOR_CTRL_SET_RANGE (2) /* Set the measure range of sensor. unit is info of sensor */
#define RT_SENSOR_CTRL_SET_ODR (3) /* Set output date rate. unit is HZ */
#define RT_SENSOR_CTRL_SET_MODE (4) /* Set sensor's work mode. ex. RT_SENSOR_MODE_POLLING,RT_SENSOR_MODE_INT */
#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 */
static rt_size_t xxx_fetch_data(struct rt_sensor_device psensor, void buf, rt_size_t len)
该接口对应ops->fetch,主要用来获取传感器数据