首先,CarPlay的wired(USB)的连接方案要求车载设备至少要支持USB2.0 Hi-Speed,能够同时处理bulk IN和bulk OUT传输。该方案还要求车载设备必须支持USB Host Mode,该模式要求车载设备能够工作在USB device模式下,因为Apple设备在CarPlay中是作为USB Host的。而通常情况下,车载设备USB是工作在USB Host模式的,而外接的USB设备是工作在USB Device模式的,因而在这种情况下的CarPlay wired(USB)连接方案中就需要进行USB的模式切换。下图则是CarPlay的USB模式切换处理逻辑框图:
当角色切换完成后,按照协议要求有以下几点需要注意:
1.车载设备(USB device)需要等待至少1000ms,目的是等待Apple设备(USB host)来枚举
2.如果1000ms后没有任何traffic,车载设备(USB device)得切换回USB Host模式
3.当Apple设备侦测到总线掉电(the loss of VBUS),Apple设备将切换回USB Device模式
4.如果车载设备(USB device)侦测到USB总线至少有200ms处于不活跃(inactivity)状态,车载设备(USB device)将切换回USB Host模式
接下来,对iAP2在CarPlay wired(USB)连接方案中的接口描述符(Interface Descriptor)和i数据传输(Data Transfers)作一下介绍
1.iAP2接口描述符(Interface Descriptor)
车载设备(USB Device)与Apple设备(USB Host)建立一个iAP2连接,需要申明一个vendor指定(vendor-specific)的接口,该接口有一个bulk IN端点(endpoint)和一个bulk OUT端点(endpoint)。
2.iAP2数据传输(Data Transfers)
Apple设备(USB Host)通过bulk OUT端点发送iAP2数据给车载设备(USB Device)。依据USB协议,如果车载设备 (USB Device)成功地接收到Apple设备发送的iAP2数据便会回复一个USB ACK包,反之则回复一个USB NAK包。如果车载设备(USB Device)重复地回复USB NAK包并且超过1秒,便会视为接收超时。
车载设备在iAP2传输通道上成功的建立一个iAP2连接,通过iAP2进行认证,该认证过程有以下7种iAP2控制会话消息:
1.RequestAuthenticationCertificate
2.AuthenticationCertificate
3.RequestAuthenticationChallengeResponse
4.AuthenticationResponse
5.AuthenticationFailed
6.AuthenticationSucceeded
7.AccessoryAuthenticationSerialNumber
接下来,再介绍一下USB的NCM(Network Control Model)的两个接口。
1.USB NCM 控制接口(Control Interface)描述符(Descriptor)
2.USB NCM数据接口(Data Interface)描述符(Descriptor)
车载设备需要在这个接口上完成USB Hi-Speed NCM。这个接口需要支持到64KB封装的数据报的传输(也就是到40个1514字节的以太网帧(Ethernet Frame)的传输)和16比特的NCM传输块。
使用CarPlay USB NCM接口的车载设备需要支持至少100Mbps的带宽,TCP和UDP的延迟小于5ms,UDP的丢包率(iperf测试下)要低于1%。
当Apple设备连上或断开的时候,车载设备需要对NCM接口状态作相应的改变。当Apple设备连接上的时候,在网络协议栈的头部需要标注NCM接口可用。
最后,介绍建立/终止CarPlay会话(session)。
建立CarPlay会话(session),车载设备首先需要同Apple设备建立IP网络连接,因此需要虚拟一个网络接口并分配MAC地址和ip地址,该ip连接必须是IPv6。车载设备在这个接口上需要支持Apple Bonjour零配置网络连接(zero-configuration networking)。一旦网络连接建立成功,车载设备在完成认证后将在CarPlay接口上开始设置(setup)和内容传输(content transfer)。需要注意的是,按协议要求,车载设备需要在与Apple设备网络连接建立好后的3秒钟内建立CarPlay会话,如果与Apple设备的物理连接断开,车载设备也需要检测到该断开情况并且在1秒钟内终止CarPlay会话。
下图是wired(USB)的CarPlay 会话建立框图: