高通8926 smgr的attr概述

来源:互联网 发布:淘宝加盟开店被骗了 编辑:程序博客网 时间:2024/05/21 19:49

高通8926平台通过get和set attr来控制sensor,所有的attr由下面的enum列举。

typedef enum

{
    SNS_DDF_ATTRIB_POWER_INFO,
    SNS_DDF_ATTRIB_POWER_STATE,
    SNS_DDF_ATTRIB_DELAYS,
    SNS_DDF_ATTRIB_RANGE,
    SNS_DDF_ATTRIB_RESOLUTION_ADC,
    SNS_DDF_ATTRIB_RESOLUTION,
    SNS_DDF_ATTRIB_LOWPASS,
    SNS_DDF_ATTRIB_MOTION_DETECT,
    SNS_DDF_ATTRIB_DRIVER_INFO,
    SNS_DDF_ATTRIB_DEVICE_INFO,
    SNS_DDF_ATTRIB_THRESHOLD,
    SNS_DDF_ATTRIB_ACCURACY,
    SNS_DDF_ATTRIB_BIAS,
    SNS_DDF_ATTRIB_ODR,
    SNS_DDF_ATTRIB_SUPPORTED_ODR_LIST,
    SNS_DDF_ATTRIB_REGISTRY_GROUP,
    SNS_DDF_ATTRIB_IO_REGISTER,
    SNS_DDF_ATTRIB_FIFO,
    SNS_DDF_ATTRIB_ODR_TOLERANCE

} sns_ddf_attribute_e;


下面由本人结合代码简要说明,如有错误,请指正。


1. SNS_DDF_ATTRIB_POWER_STATE:
   每个驱动必备的,都是set,没有get;

2. SNS_DDF_ATTRIB_MOTION_DETECT:
   都是set,没有get;通过sns_smgr_set_hw_md_int()调用,这里只设置accel sensor,但gyro中也有对此attr的处理。
   设置中断相关寄存器。

3. SNS_DDF_ATTRIB_THRESHOLD:
  主要用于get光传感器和接近传感器的THRESHOLD

4. SNS_DDF_ATTRIB_ACCURACY:
  主要用于get光传感器和接近传感器的精确度。代码里2771的prox的accuracy是40,手册里没找到,不知怎么得到的

5. SNS_DDF_ATTRIB_SUPPORTED_ODR_LIST:
  sns_smgr_dd_init会调用sns_smgr_init_odr_tables来get device driver的odr list。

6. SNS_DDF_ATTRIB_REGISTRY_GROUP:
  多用于ALS/PROX初始化时,通过sns_ddf_smgr_notify_event(SNS_DDF_EVENT_UPDATE_REGISTRY_GROUP),更新nv

7. SNS_DDF_ATTRIB_ODR_TOLERANCE:
  只有accel lis3dsh的get attr中包含此attr,但实际没有地方进行get。

下面的属性以sns_dd_akm8975_get_attr为例:
1. SNS_DDF_ATTRIB_POWER_INFO:
  需要将sns_ddf_power_info_s结构体赋值,它包含active_current和lowpower_current俩个成员,查看datasheet的
  Electrical Characteristics-->>DC Characteristics-->>Current consumption

2. SNS_DDF_ATTRIB_RANGE:
  需要将sns_ddf_range_s结构体赋值,它包含min和max俩个成员,查看datasheet的
  Electrical Characteristics-->>Analog Circuit Characteristics-->>Magnetic sensor measurement range

3. SNS_DDF_ATTRIB_RESOLUTION_ADC:
  需要将sns_ddf_resolution_adc_s结构体赋值,它包含bit_len和max_freq俩个成员,
  bit_len:查看datasheet的Electrical Characteristics-->>Analog Circuit Characteristics-->>Measurement data output bit
  max_freq:根据代码中注释,他是驱动在bit_len下合适的最大频率。AKM8975是50,不知怎么算的???

4. SNS_DDF_ATTRIB_RESOLUTION:
  需要将sns_ddf_resolution_t类型变量赋值,它实际类型为q16_t,
  查看datasheet的Overview-->>Output data resolution:13 bit (0.3 μT / LSB),经公式FX_FLTTOFIX_Q16(0.3 * TESLA_TO_GAUSS / 1000000)转换

5. SNS_DDF_ATTRIB_DELAYS:
  需要将sns_ddf_delays_s结构体赋值,它包含time_to_active和time_to_data俩个成员,
  查看datasheet的Electrical Characteristics-->>Analog Circuit Characteristics-->>Time for measurement

6. SNS_DDF_ATTRIB_DRIVER_INFO:
  给sns_ddf_driver_info_s赋值

7. SNS_DDF_ATTRIB_DEVICE_INFO:
  给sns_ddf_device_info_s赋值

下面的属性以sns_dd_acc_bma2x2_get_attr为例:
1. SNS_DDF_ATTRIB_LOWPASS:
  需要将sns_ddf_lowpass_freq_t类型变量赋值,它实际类型为q16_t,
  查看datasheet的Table 8: Bandwidth configuration

2. SNS_DDF_ATTRIB_IO_REGISTER:
  虽然是get,但传入的value是有值的,driver根据这个值来读取指定寄存器,在把值赋值给value传给SMGR
  需要将sns_ddf_io_register_s结构体赋值。

3. SNS_DDF_ATTRIB_BIAS:
  轴偏差,没有偏差就是0

4. SNS_DDF_ATTRIB_ODR:
  就是将之前set的odr反馈给smgr,可配置的值查看datasheet的Table 8: Bandwidth configuration

5. SNS_DDF_ATTRIB_FIFO:
  将sns_ddf_fifo_attrib_get_s结构体赋值,值不知道是怎么来的。set的时候是写了两个reserved的寄存器,不知道什么用。
 























0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 蔷薇的嫩叶都被太阳晒死了怎么办 乐视手机进水了屏幕失灵怎么办 乐视手机进水了屏幕不显示怎么办 美团商家单量出现下滑怎么办 想开个小超市没经营过怎么办 华为7c手机wifi信号差怎么办 贞子从电视里爬出来怎么办 2个月的婴儿吓到怎么办 排卵日同房了没避孕怕怀孕怎么办 妻子因为我欺骗她要跟我离婚怎么办 老婆用苹果手机共享我的位置怎么办 孕妇餐后2小时血糖偏高怎么办 孕妇血糖餐后2小时数值高怎么办 股市退市的话股民的钱怎么办 美股股票退市了手里的股票怎么办 坐高铁安检时怕把包包弄坏了怎么办 很贵的包包高铁安检怎么办 如果过高铁安检东西被扣留怎么办 邻居家小孩把我家东西弄坏了怎么办 邻居早上6点放音乐扰民怎么办 隔壁楼邻居天天放音乐很吵怎么办 发现老公在卧室安了摄像头怎么办 憋的尿又没有厕所的时候怎么办 一岁宝宝拉屎总是拉出血怎么办 孩子鼻窦炎鼻子堵有白色鼻涕怎么办 家里阳台上老是有蝙蝠趴着怎么办 空调太冷在空调房里该怎么办 分手了怎么办不要挽回要重新吸引 过敏体质没打疫苗的孩子入学怎么办 遇到不认识的小姐姐问我问题怎么办 小孩孑脖子洛忱了痛怎么办 挤奶把乳腺挤肿了不出奶怎么办 遇到好兄弟在背后捅刀子怎么办 面对出轨还不想离婚的老公怎么办 法院执行局把案划错了不承认怎么办 手机nfc功能被手机壳挡住怎么办 飞信短信登录验证码达到上限怎么办 手机自带短信软件没了怎么办 老婆出轨孩子又3个不知道怎么办 骑电动车摔跤小脚趾疼有点肿怎么办 第一次太疼了有心理阴影了怎么办