Carplay wired認(rèn)證

2023-11-15   ?   orange

CarPlay是蘋(píng)果公司為車(chē)載系統(tǒng)開(kāi)發(fā)的一項(xiàng)功能,該功能將iOS設(shè)備的界面通過(guò)USB或wireless(藍(lán)牙+Wi-Fi)投影顯示在車(chē)載屏幕上,可以讓駕駛員在車(chē)內(nèi)通過(guò)車(chē)載屏幕直接方便地使用iOS設(shè)備上的功能。例如,在車(chē)載屏幕上直接使用iPhone或iPad上的地圖、導(dǎo)航、Siri語(yǔ)音助手、音樂(lè)、電話、短信等各項(xiàng)iOS上的服務(wù)及功能。換句話說(shuō),就相當(dāng)于是在自己的車(chē)載系統(tǒng)上安裝了一個(gè)“iOS操作系統(tǒng)”。該功能在很大程度上減少了駕駛員在車(chē)內(nèi)對(duì)iPhone或iPad的直接使用及操作,從而降低了對(duì)駕駛員在車(chē)輛駕駛過(guò)程中的干擾。

目前,在很多報(bào)道中將CarPlay理解成一套車(chē)載系統(tǒng),這種解釋是不完全正確的。CarPlay是蘋(píng)果公司為車(chē)載系統(tǒng)開(kāi)發(fā)的一項(xiàng)功能,也可以說(shuō)是車(chē)載系統(tǒng)中的一項(xiàng)新的應(yīng)用,并非是一套車(chē)載系統(tǒng)。

CarPlay有兩種實(shí)現(xiàn)途徑:

一種是通過(guò)wired(USB)連接iOS設(shè)備和車(chē)載系統(tǒng)設(shè)備,另一種是通過(guò)wireless(藍(lán)牙+Wi-Fi)來(lái)連接iOS設(shè)備和車(chē)載系統(tǒng)設(shè)備。CarPlay的兩種連接方案都是需要通過(guò)iAP2 (iOS Accessory Protocol,version 2)協(xié)議以及Bonjour服務(wù)來(lái)建立CarPlay會(huì)話(CarPlay Session)從而實(shí)現(xiàn)CarPlay功能的。在我接下來(lái)的博客中,我將分別介紹CarPlay的wired(USB)連接方案,CarPlay的wireless(藍(lán)牙+Wi-Fi)連接方案,以及兩種連接方案相互切換的實(shí)現(xiàn)。

另外,對(duì)于CarPlay的USB連接方案,在硬件上需要支持USB 2.0(含)以上版本。iOS設(shè)備需要支持閃電接口(Lightning接口),也就是說(shuō)iPhone5之前的蘋(píng)果設(shè)備不支持wired(USB)連接方式的CarPlay。在操作系統(tǒng)方面,蘋(píng)果公司從iOS 7.1開(kāi)始加入了CarPlay的功能,無(wú)論是wired還是wireless的連接方式,iOS設(shè)備的操作系統(tǒng)版本都需要在7.1及以上。

  CarPlay wired connect:

首先,CarPlay的wired(USB)的連接方案要求車(chē)載設(shè)備至少要支持USB2.0 Hi-Speed,能夠同時(shí)處理bulk IN和bulk OUT傳輸。該方案還要求車(chē)載設(shè)備必須支持USB Host Mode,該模式要求車(chē)載設(shè)備能夠工作在USB device模式下,因?yàn)锳pple設(shè)備在CarPlay中是作為USB Host的。而通常情況下,車(chē)載設(shè)備USB是工作在USB Host模式的,而外接的USB設(shè)備是工作在USB Device模式的,因而在這種情況下的CarPlay wired(USB)連接方案中就需要進(jìn)行USB的模式切換。

下圖則是CarPlay的USB模式切換處理邏輯框圖:


Carplay wired認(rèn)證(圖1)

當(dāng)角色切換完成后,按照協(xié)議要求有以下幾點(diǎn)需要注意:

1.車(chē)載設(shè)備(USB device)需要等待至少1000ms,目的是等待Apple設(shè)備(USB host)來(lái)枚舉;

2.如果1000ms后沒(méi)有任何traffic,車(chē)載設(shè)備(USB device)得切換回USB Host模式;

3.當(dāng)Apple設(shè)備偵測(cè)到總線掉電(the loss of VBUS),Apple設(shè)備將切換回USB Device模式;

4.如果車(chē)載設(shè)備(USB device)偵測(cè)到USB總線至少有200ms處于不活躍(inactivity)狀態(tài),車(chē)載設(shè)備(USB device)將切換回USB Host模式。

iAP2在CarPlay wired(USB)連接方案中的接口描述符(Inte***ce Descriptor)和i數(shù)據(jù)傳輸(Data Transfers):

1.iAP2接口描述符(Inte***ce Descriptor):

車(chē)載設(shè)備(USB Device)與Apple設(shè)備(USB Host)建立一個(gè)iAP2連接,需要申明一個(gè)vendor指定(vendor-specific)的接口,該接口有一個(gè)bulk IN端點(diǎn)(endpoint)和一個(gè)bulk OUT端點(diǎn)(endpoint)。


Carplay wired認(rèn)證(圖2)

2.iAP2數(shù)據(jù)傳輸(Data Transfers):

Apple設(shè)備(USB Host)通過(guò)bulk OUT端點(diǎn)發(fā)送iAP2數(shù)據(jù)給車(chē)載設(shè)備(USB Device)。依據(jù)USB協(xié)議,如果車(chē)載設(shè)備 (USB Device)成功地接收到Apple設(shè)備發(fā)送的iAP2數(shù)據(jù)便會(huì)回復(fù)一個(gè)USB ACK包,反之則回復(fù)一個(gè)USB NAK包。如果車(chē)載設(shè)備(USB Device)重復(fù)地回復(fù)USB NAK包并且超過(guò)1秒,便會(huì)視為接收超時(shí)。

  車(chē)載設(shè)備在iAP2傳輸通道上成功的建立一個(gè)iAP2連接,通過(guò)iAP2進(jìn)行認(rèn)證,該認(rèn)證過(guò)程有以下7種iAP2控制會(huì)話消息:

1.Request Authentication Certificate

2.Authentication Certificate

3.Request Authentication Challenge Response

4.Authentication Response

5.Authentication Failed

6.Authentication Succeeded

7.Accessory Authentication Serial Number

  接下來(lái),再介紹一下USB的NCM(Network Control Model)的兩個(gè)接口:

1.USB NCM 控制接口(Control Inte***ce)描述符(Descriptor):


Carplay wired認(rèn)證(圖3)

2.USB NCM數(shù)據(jù)接口(Data Inte***ce)描述符(Descriptor):


Carplay wired認(rèn)證(圖4)

車(chē)載設(shè)備需要在這個(gè)接口上完成USB Hi-Speed NCM。這個(gè)接口需要支持到64KB封裝的數(shù)據(jù)報(bào)的傳輸(也就是到40個(gè)1514字節(jié)的以太網(wǎng)幀(Ethernet Frame)的傳輸)和16比特的NCM傳輸塊。

使用CarPlay USB NCM接口的車(chē)載設(shè)備需要支持至少100Mbps的帶寬,TCP和UDP的延遲小于5ms,UDP的丟包率(iperf測(cè)試下)要低于1%。

當(dāng)Apple設(shè)備連上或斷開(kāi)的時(shí)候,車(chē)載設(shè)備需要對(duì)NCM接口狀態(tài)作相應(yīng)的改變。當(dāng)Apple設(shè)備連接上的時(shí)候,在網(wǎng)絡(luò)協(xié)議棧的頭部需要標(biāo)注NCM接口可用。

   建立/終止CarPlay會(huì)話(session):

建立CarPlay會(huì)話(session),車(chē)載設(shè)備首先需要同Apple設(shè)備建立IP網(wǎng)絡(luò)連接,因此需要虛擬一個(gè)網(wǎng)絡(luò)接口并分配MAC地址和ip地址,該ip連接必須是IPv6。車(chē)載設(shè)備在這個(gè)接口上需要支持Apple Bonjour零配置網(wǎng)絡(luò)連接(zero-configuration networking)。一旦網(wǎng)絡(luò)連接建立成功,車(chē)載設(shè)備在完成認(rèn)證后將在CarPlay接口上開(kāi)始設(shè)置(setup)和內(nèi)容傳輸(content transfer)。需要注意的是,按協(xié)議要求,車(chē)載設(shè)備需要在與Apple設(shè)備網(wǎng)絡(luò)連接建立好后的3秒鐘內(nèi)建立CarPlay會(huì)話,如果與Apple設(shè)備的物理連接斷開(kāi),車(chē)載設(shè)備也需要檢測(cè)到該斷開(kāi)情況并且在1秒鐘內(nèi)終止CarPlay會(huì)話。

下圖是wired(USB)的CarPlay會(huì)話建立框圖:


Carplay wired認(rèn)證(圖5)

<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://#/hm.js?6844225bf949cff65b89ec7139b9ad0f"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>