Android中G-Sensor相关流程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android中G-Sensor相关流程 1.使G-sensor正常工作需要做的事: G-sensor driver文件包括: driver/i2c/chips/lis331dl.c driver/i2c/chips/sensorioctl.h include/linux/lis331dl.h 并在/kernel/arch/arm/mach-s3c6410/mach-ur6410.c文件中i2c chanel1的结构变量i2c_devs1[] __initdata中需要添加G-sensor的设备信息, 以使driver成功加载。 同时在该文件中添加一个结构变量 //JayLin add for Gsensor struct lis331dl_platform_data lisGsensor_platform_data={ .name=lis331dl, .pin_clk=0, .pin_data=0, .open_drain=1, .interrupt=IRQ_EINT(3), }; 该结构变量在i2c_devs1[] __initdata中被引用。 /kernel/arch/arm/mach-s3c6410/mach-ur6410.c 中需要包含lis331dl.h。 在rootfs/system/etc/init.board.sh的最后一行加上mknod /dev/sensorioctl c 51 201创建节点供ioctl使用。 编译后的sensor.so放在/rootfs/system/lib/hw下。 sensor.so和driver之间通过ioctl实现对G-sensor的状态控制。ioctl的命令编号定义在头文件sensorioctl.h中,分别放在 kernel/include/linux下 和 androidsourcecode/hardware/libhardware/include/hardware下 供driver和sensor.so使用。 G-sensor driver工作的大致流程: 系统开机后,先加载i2c总线驱动,然后加载设备驱动。 在设备驱动中的init函数中通过调用i2c_add_driver(lis331dl_i2c_driver)注册i2c_driver;此函数将driver注册到i2c_bus_type的总线上,此总线的匹配规则是利用i2c_client的名称和 i2c_driver中id_table中的名称作匹配。 其中i2c_client是注册板载信息是系统自动创建的,注册板载信息的过程就是在/kernel/arch/arm/mach-s3c6410 /mach-ur6410.c文件中i2c chanel1的结构变量i2c_devs1[] __initdata中需要添加G-sensor的设备信息。 当匹配成功时,i2c_driver中的probe()函数开始执行。 Probe()函数主要完成以下功能: 1.从i2c_client结构中得到初始化信息 2.创建G-sensor的工作队列 2.注册input_device设备 3.读取Chip ID 4.设置寄存器,使能G-sensor 5.设置并启动中断 当G-sensor上报数据的时候会触发中断,然后在中断处理函数中提交一个报值的任务到队列中并禁止中断。 在工作队列中读数G-sensor的数据并上报到input子系统中,最后使能中断。 2.android上层应用apk到G-sensor driver的大致流程: Android对于Sensor的API定义在 hardware/libhardware/include/hardware/sensor.h中, 要求在sensor.so提供以下8个API函数 [控制方面] int (*open_data_source)(struct sensors_control_device_t *dev); int (*activate)(struct sensors_control_device_t *dev, int handle, int enabled); int (*set_delay)(struct sensors_control_device_t *dev, int32_t ms); int (*wake)(struct sensors_control_device_t *dev); [数据方面] int (*data_open)(struct sensors_data_device_t *dev, int fd); int (*data_close)(struct sensors_data_device_t *dev); int (*poll)(struct se

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档