一种实现android移动设备与USBOTG主机通讯的方法_2

文档序号:8258439阅读:来源:国知局
OTG主机的过程如下:
[0045](I)设备接入后,固件程序检测到设备插入信号之后立即发起USB连接,枚举USB描述符,具体包括设备描述符、配置描述符、接口描述符和端点描述符,这里的描述符指设备的信息特征。
[0046](2)完成USB枚举后,发起AOA协议连接,尝试打开accessory mode模式,如果打开失败,延长reset时间,并重复尝试。
[0047]该步骤进行AOA协议连接的具体过程如下:
[0048](21)首先判断手机是否处于accessory模式:如果是,则可以直接通信;如果不是,继续;
[0049](22)发送getProtocol指令,获取硬件支持的版本信息;
[0050](23)发送 getlnfo 指令,获取硬件设备信息,如!manufacturer name、modelname、descript1n、vers1n、UR1、serial number 等;
[0051](24)发送startup指令,激活手机的accessory模式;
[0052](25)激活完成以后,检查手机是否处于accessory模式,具体方式可以为:查看手机 PID 是否为 0x2D00 或者 0x2D01,VID 是否为 googleID:0xl8Dl ;
[0053](26)尝试打开accessory mode模式,如果打开失败,延长reset时间,该reset时间是指USB总线复位时间,并重复尝试,转到步骤a。
[0054](3)在所有尝试失败以后,reset设备,然后通过ADB协议发起ADB连接,指导连接成功。
[0055]该步骤在实现ADB连接时,由固件程序建立一个端口为4567的socket server来接受APP中client的连接请求,具体步骤如下:
[0056](a) MCU先向手机发送host connect请求,手机如果回了 connect device信号,则建立了 ADB连接;
[0057](b)然后主机打开一个4567的端口,手机端会回一个OK的信号;
[0058](c)连接成功,等待client端connect请求。
[0059]基于上述方案,完成固件程序连接USB OTG主机后,运行于手机中的应用程序连接USB OTG主机的过程如下:
[0060](11)应用程序启动后,首先通过usb.usbmanager获取AOA协议的accessory类列表,如果手机固件程序能支持AOA协议,则此List表中包含有效的设备ID,可以直接通过ID进行通信。
[0061]该步骤中,获取accessory类列表时,由于com.android, usb.usbmanager包里有接口获取到的连接到手机的AOA协议的外设列表,此列表包含了当前连接到手机的所有AOA设备,获取到此列表,可以通过UsbAccessory对象对设备进行操作。
[0062]该步骤中,手机固件程序通过发送getProtocol命令,根据getProtocol命令的格式来获取到当前连接设备支持的AOA版本。
[0063]这里需要说明的,List表为前述通过usbmanager获取到的accessory类列表,其在app中表示为一个List列表。这里的设备ID为ProductID,一般为0x2D00或者0x2D01,即表示该设备已进入accessory模式;若进入accessory模式的设备可以通过usbAccessory对象中的instream和outstream成员对象进行流数据的输入输出。
[0064](12)若List表为空,贝丨」建立socket server并监听端口,等待adbd的socket连接。
[0065]该步骤中,通过调用List, size O函数来确定List表是否为空,如果为O则表示空,此时说明没有AOA设备,下一步将通过ADB的socker方式来尝试连接。
[0066]其中,建立监听端口由APP代码完成,通过socket标准API建立一个4567的server,并监听是否有连接到端口 4567的client请求,该请求由adbd发出。
[0067]这里的adbd为android debug bridge deamon,是安卓手机内置的调试驻守程序,其开机即启动并常驻内存中,负责对手机进行操作。
[0068]可见,本方案通过固件对设备的判断,可以智能选择两种连接方式进行OTG连接并进行通讯,最大限度的兼容了 android设备的多样性;同时采用AOA协议可以规避鉴权操作,减少了对外界设备的要求。
[0069]以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
【主权项】
1.一种实现an droid移动设备与USB OTG主机通讯的方法,其特征在于,所述方法在固件程序中合并 Android Open Accessory Protocol 协议和 Android Debug Bridge 接口协议,并在固件程序中智能判断手机支持的OTG连接方式,根据判断结果选择对应的协议进行连接。
2.根据权利要求1所述的一种实现android移动设备与USBOTG主机通讯的方法,其特征在于,所述方法中在应用程序根据Android Open Accessory Protocol协议和AndroidDebug Bridge接口协议内置形成支持两种连接协议的连接方式。
3.根据权利要求1所述的一种实现android移动设备与USBOTG主机通讯的方法,其特征在于,所述固件程序连接USB OTG主机的过程如下: (1)设备接入后,固件程序发起USB连接,枚举USB描述符; (2)完成USB枚举后,发起AOA协议连接,尝试打开accessorymode模式,如果打开失败,延长reset时间,并重复尝试; (3)在所有尝试失败以后,reset设备,然后通过ADB协议发起ADB连接,指导连接成功。
4.根据权利要求2所述的一种实现android移动设备与USBOTG主机通讯的方法,其特征在于,所述应用程序连接USB OTG主机的过程如下: (11)应用程序启动后,首先通过usb.usbmanager获取AOA协议的accessory类列表,如果手机固件程序能支持AOA协议,则此List表,即accessory类列表,中包含有效的设备ID,可以直接通过ID进行通信; (12)若List表为空,贝丨」建立socketserver并监听端口,等待adbd的socket连接。
【专利摘要】本发明公开了一种实现android移动设备与USB?OTG主机通讯的方法,其通过合并Android?Open?Accessory?Protocol协议和Android?Debug?Bridge接口协议,并在固件程序中智能判断手机支持的OTG连接方式,根据判断结果选择对应的协议进行连接。本方案能够覆盖市面上所有的安卓手机设备,并且也降低了对外设的电气化要求。
【IPC分类】G06F13-42
【公开号】CN104572564
【申请号】CN201510016220
【发明人】胡永刚, 沈勇坚, 王翔平
【申请人】上海动联信息技术股份有限公司
【公开日】2015年4月29日
【申请日】2015年1月13日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1