文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

CarPlay 有线连接流程

2023-09-12 16:57

关注

一、引言

1.1 目的

此文档记录CarPlay 开发中有线连接开发部分,详细介绍CarPlay有线连接的流程,希望可以给开发CarPlay小伙伴一些帮助,无线连接后续再梳理。

二、架构设计

2.1 架构图

注:此图翻译自苹果官方的开发帮助文档

身份认证 (Authentication):CarPlay是一种经过认证的解决方案,需要使用通过Apple获得的Apple认 证协处理器。设备只能流向授权的车机。使用Apple认证协处理器的CarPlay配件3.0只能声明与iOS 10.3或更高版本兼容。iAP2(iOS Accessory Protocol II)和CarPlay接口上的通信都需要身份验证,每个接口都提供一个具体的身份验证API。为了加快这些双重身份验证步骤,提供了X.509证书的本地缓存苹果认证协处理器。所有经过认证的配件都需要根据Apple MFi计划进行认证。CarPlay车机必须成功通过符合性测试,以确保来自设备的所有数字内容将被正确解码和播放,并且满足本规范中描述的所有电气要求。

会话建立 (Session Establishment):车机检测到连接的设备上有CarPlay后,必须请求会话启动并在“CarPlayStartSession”(《Accessory Interface Specification CarPlay Addendum R7》第241页)消息中提供所需参数。一旦建立了连接,在车机通过CarPlay接口完成认证后,将开始设置和内容传输。连接启用CarPlay的设备时,车机不得自动发送播放命令。请参阅媒体库:车机接口规范中的播放要求。有关设置CarPlay会话的更多信息,请参阅“ Setup and Control”(《Accessory Interface Specification CarPlay Addendum R7》第98页)。车机必须能够在设备连接后3秒内建立CarPlay会话。

三、连接流程

3.1 配置接口描述符

此功能最为复杂,需要驱动层配置iAP2接口描述符和NCM接口描述符,如果作为项目Tire 2的角色开发CarPlay的话这个步骤不需要自己完成,将需求提给Tire 1,让他们进行适配。

3.1.1 iAP2 Interface Descriptor

USB Descriptor

Value

Description

Interface Number

0xNN

Must be different from the USB NCM Control interface and USB NCM data interface numbers.

Interface Class

0xFF

Vendor-specific interface

Interface Subclass

0xF0

MFi accessory

Interface Protocol

0x00

Interface String

'iAP Interface'

Number of Endpoints

2

1 bulk IN and 1 bulk OUT endpoint descriptor shall be specified

   Table-3.1

3.1.2 NCM Control Interface Descriptor

USB Descriptor

Value

Description

Interface Number

0xNN

Must be different from the iAP2 interface and USB NCM data interface numbers. Must match the USBHostTransportCarPlayInterfaceNumber,see Accessory Identification in the Accessory Interface Specification

Interface Class

0x02

USB Communication Interface Class

Interface Subclass

0x0D

Network Control Model

Interface Protocol

0x00

No encapsulated commands / responses

Number of Endpoints

1

Interrupt IN (optional): This is typically used to convey changes in link status. Since link is expected to be maintained at all times, we will synthesize link up if there is a read completion via the data interface.

Table-3.2

3.1.3 NCM USB NCM Data Interface Descriptor

USB Descriptor

Value

Description

Interface Number

0xNN

Must be different from the iAP2 interface and USB NCM control interface numbers.

Interface Class

0x0A

USB Data Interface Class

Interface Subclass

0x00

Interface Protocol

0x01

NCM Data Class

Number of Endpoints

0

(for Alternate Setting 0)

Number of Endpoints

2

(for Alternate Setting 1) 1 Bulk IN; and 1 Bulk OUT

Table-3.3

3.2 枚举设备

当有USB设备插入时,通过USBDevice的PID、VID判断是否是IPhone设备。

Apple Vendor ID = 0x05AC

Apple Product ID = 0x12nn

3.3 检查设备是否支持CarPlay

检查到iphone 设备之后,通过USB controlTransfer发送 请求,查询设备CarPlay是否可用

参数

备注

bmRequestType

0xC0

Device-to-Host,数据由Device发给Host

bRequest

0x53

供应商定义的USB获取启用功能请求

wValue

0x00

N/A

wIndex

0x00

N/A

wLength

4

返回的数据长度为4字节

Table-3.4

当iphone答复0x01 表示iphone支持CarPlay。

3.4 Iphone Usb角色切换

当IPhone设备通过USB连接到车机时,IPhone作为Device设备,车机作为Host,若想连接CarPlay需要先将IPhone切换为Host

参数

备注

bmRequestType

0x40

Device-to-Host,数据由Device发给Host

bRequest

0x51

供应商定义的USB角色切换请求

wValue

0x01

0x01为切换到Host

wIndex

0x00

N/A

wLength

0

N/A

Table-3.5

3.5 车机角色切换

车机默认是Host模式,需要切换成device模式,每个车机的切换方法不同,在此不做详细说明。

3.6 iAP2 身份认证

在USB角色切换成功后USB通道就成功建立,可以接收/发送iAP2数据,按照CarPlay标准流程进行Identification,Authentication,所需数据较多,且无线与有线的身份认证有差异,但数据包格式相同。具体参考《Accessory Interface Specification CarPlay Addendum R7》

3.7 激活NCM功能

激活NCM功能,设置IP路由,每个项目都有差异,需要与Tire 1提出此需求,NCM功能激活后通过网络协议便正式开启CarPlay 会话,CarPlay Session相关数据传输则通过苹果官方插件库中提供的方法进行。

四、总结

4.1 经验总结

3.6 iAP2 身份认证阶段中的iAP2数据包内容较多,数据拼接极容易出错,若在此步骤时出错,可能会出现以下几种情况:发送Identification/Authentication消息后未收到响应;发送Identification后收到Reject消息。出现第一种情况九成概率是因为数据包拼接有问题,重点检查数据包checksum。后者需要解析回复的reject中的MSG ID,查看是具体是哪些信息被拒绝。

4.2 辅助工具

建议开发过程中使用MAC + ATS软件+USB分析仪辅助,若没有专业工具则通过爱思助手抓取IPhone日志分析。

来源地址:https://blog.csdn.net/xiaojian_007/article/details/130421388

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯