返回顶部
首页 > 资讯 > 移动开发 >CarPlay 有线连接流程
  • 828
分享到

CarPlay 有线连接流程

iosjavac++ 2023-09-12 16:09:21 828人浏览 安东尼
摘要

一、引言 1.1 目的 此文档记录CarPlay 开发中有线连接开发部分,详细介绍CarPlay有线连接的流程,希望可以给开发CarPlay小伙伴一些帮助,无线连接后续再梳理。 二、架构设计 2.1 架构图 注:此图翻译自苹果官方的开发帮

一、引言

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

--结束END--

本文标题: CarPlay 有线连接流程

本文链接: https://lsjlt.com/news/404762.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作