- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AOA协议概述
基于AOA协议实现Android终端USB通信方式称为配件模式。此模式下,与Android终端通信的另一端设备称为Android配件,两者都必须支持AOA协议。在USB通信过程中,Android终端充当USB从机,Android配件充当USB主机并为总线供电。Android配件需具有USB主控制器功能并移植有AOA协议。配件内置USB Embedded Host端,可以为Android手机供电,并且识别Android手机,建立数据通道。使得配件成为一个简化版的PC Host端。?配件还必须提供500毫安在5V供电电源。
图1-1 USB配件模式框图
AOA协议工作过程
图2-1 AOA协议整体交互图
1.配件端等待手机连接。
2.手机接入配件。
3.配件通过USB驱动的控制通道(0通道,端点0)获取手机的vendor ID与product ID。
4.配件分析获取的vendor ID是否为0x18D1,以及product ID是否为0x2D01, 0x2D02, 0x2D03或0x2D04。如果均符合,则说件现在手机已经是配件模式,可以按照配件模式的要求直接重新配置USB端点和接口。否则启动尝试进入配件模式流程。
5.确定手机已经进入配件模式,重新枚举USB设备,手机重新进行USB协商。
6.按照配件模式重新配置USB端点和接口,建立配件模式的数据通道。
图2-1 启动配件模式交互流程
尝试启动配件模式交互流程:
1.配件发送序号51的USB请求报文,手机收到后查询自己的AOA协议版本,发送响应报文给配件。
2.配件校验协议版本号,目前为1或2,其他的均为不支持。
3.配件发送序号52的USB请求报文,通过Index字段携带配件自身信息,包括制造商,型号,版本,设备描述,序列号,URI等。手机根据这些信息启动响应的APP。
4.配件发送序号53的USB请求报文,切换USB模式,主要是根据切换vendor ID和product ID。
5.重新枚举USB设备,准备建立AOA数据通道。
参考:Android Open Accessory 协议分析与开发 /2015-04/aoa-analyse/
AOA的设备握手过程
绝大多数Android设备,在缺省情况下都不挂载Accessory驱动;在Accessory与Android设备建立USB连接时;Accessory会通过握手协议查询该设备是否为Android设备且具有AOA支持,如果获得正确应答,Accessory会向Android设备发出切换到AOA模式的请求,Android设备会执行请求,将USB切换到AOA模式;在这个过程中,USB连接会出现一次逻辑插拔,USB Host一端会重新枚举设备。
在握手过程中,Accessory会向Android提供AOA约定的描述信息,其中有三个信息是Android系统用于绑定Accessory设备与App的;分别是:manufacturer、model、version。Android系统根据这三个字符串匹配相应的App。
如果系统内无任何App可以匹配Accessory设备发来的握手信息;则Android设备会弹出一个对话框,向用户提供Accessory设备发送过来的描述信息和URL信息,用户可以点击URL访问它指向的Web页面。
如果系统内有App可以匹配Accessory设备发来的握手信息;则Android会弹出一个对话框询问用户是否立刻启动该App;如果用户选择OK则启动该App;同时该对话框提供一个勾选框,勾选之后每次Accessory设备连接后会自动启动该App;应该要求用户勾选该对话框,否则App启动后向USB Manager获取Accessory设备后可能因为Permission问题无法打开文件描述符建立通讯连接。
参考: /matianfu/adk2012/wiki/%E4%BB%A3%E7%A0%81%E8%AF%B4%E6%98%8E
注意
1.PID是0x2D00保留给支持附件模式的Android设备。0x2D01保留用于支持附件模式以及Android调试桥(ADB)协议的设备,第二个接口为ADB并且具有两个批量端点。如果要在计算机上模拟附件,可以使用这些端点来调试附件应用程序。一般来说,不要使用此接口,除非附件在设备上实现传输到ADB。
0x2D00具有一个拥有两个批量端点的接口,用于输入和输出通信的。
0x2D01具有两个接口,每个接口具有两个批量端点,用于输入和输出通信。第一个接口处理标准通信,第二个接口处理ADB通信。要使用接口,请找到第一个批量输入和输出端点,使用SET_CONFIGURATION(0x09)设备请求将设备配置设置为1,然后使用端点进行通信。
2.AOA目前不支持同时进行的
文档评论(0)