Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

차량 속성

차량 하드웨어 추상화 계층 (VHAL) 인터페이스 OEM이 구현할 수있는 속성을 정의하고 (속성이 INT하고 변하는 모드 허용 여부, 예를 들어) 특성 메타 데이터를 포함한다. VHAL 인터페이스는 특정 기능에 대한 추상화인 속성 액세스(읽기, 쓰기, 구독)를 기반으로 합니다.

HAL 인터페이스

VHAL은 다음 인터페이스를 사용합니다.

  • getAllPropConfigs() 생성 (vec<VehiclePropConfig>propConfigs)
    VHAL에서 지원하는 모든 속성의 구성을 나열합니다. CarService는 지원되는 속성만 사용합니다.
  • getPropConfigs(vec<int32_t> props) 생성 (StatusCode status,vec<VehiclePropConfig> propConfigs);
    선택한 속성의 구성을 반환합니다.
  • set(VehiclePropValue propValue) 생성한다 (StatusCodestatus);
    속성에 값을 씁니다. 쓰기 결과는 속성별로 정의됩니다.
  • subscribe(IVehicleCallback callback, vec<SubscribeOptions> options) 생성한다 (StatusCode status);
    속성 값 변경 모니터링을 시작합니다. 존 속성에 대해 unsubscribe(IVehicleCallback callback, int32_t propId) 생성한다 (StatusCode status);

VHAL은 다음 콜백 인터페이스를 사용합니다.

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    차량 속성 값 변경을 알립니다. 등록된 속성에 대해서만 수행해야 합니다.
  • oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
    전역 VHAL 수준 오류 또는 속성별 오류를 반환합니다. 전역 오류로 인해 HAL이 다시 시작되어 다른 구성요소(응용 프로그램 포함)가 다시 시작될 수 있습니다.

차량 속성

속성은 읽기 전용, 쓰기 전용(VHAL 수준에 정보를 전달하는 데 사용) 또는 읽기 및 쓰기(대부분의 속성 지원은 선택 사항임)일 수 있습니다. 각 속성은 고유 INT32 키 식별 및 사전 정의 된 유형 (가지고있다 value_type ) :

  • BYTES
  • BOOLEAN
  • EPOCH_TIME
  • FLOAT
  • FLOAT[]
  • INT32
  • INT32[]
  • INT64
  • INT64[]
  • STRING
  • MIXED

구역 속성은 속성에서 지원하는 구역 수에 따라 둘 이상의 값을 가질 수 있습니다.

영역 유형

VHAL은 여러 영역 유형을 정의합니다.

면적 유형 설명
GLOBAL 이 속성은 단일 항목이며 여러 영역이 없습니다.
WINDOW 윈도우를 기반으로 지역, 사용 VehicleAreaWindow 열거.
MIRROR 거울에 따라 지역, 사용 VehicleAreaMirror 열거.
SEAT 좌석에 따라 지역, 사용 VehicleAreaSeat 열거.
DOOR 문을 기반으로 지역, 사용 VehicleAreaDoor 열거.
WHEEL 바퀴에 따라 지역, 사용 VehicleAreaWheel 열거.

각 구역 속성은 미리 정의된 영역 유형을 사용해야 합니다. 각 영역 유형에는 영역 유형에 대한 열거형에 정의된 비트 플래그 세트가 있습니다. 예를 들어, SEAT 영역을 정의 VehicleAreaSeat 열거를 :

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

영역 ID

구역 속성은 영역 ID를 통해 처리됩니다. 각 구역 속성은 하나 이상의 영역 ID를 지원할 수 있습니다. 영역 ID는 해당 열거형의 하나 이상의 플래그로 구성됩니다. 예를 들어, 사용 속성 VehicleAreaSeat 다음과 같은 영역 ID를 사용할 수 있습니다 :

안건 설명
ROW_1_LEFT | ROW_1_RIGHT Area ID는 앞좌석 모두에 적용됩니다.
ROW_2_LEFT 뒷좌석 좌측에만 적용됩니다.
ROW_2_RIGHT 뒷좌석 우측에만 적용됩니다.

부동산 상태

모든 속성 값은 함께 제공 VehiclePropertyStatus 값입니다. 속성의 현재 상태를 나타냅니다.

안건 설명
AVAILABLE 속성을 사용할 수 있으며 값이 유효합니다.
UNAVAILABLE 현재 속성 값을 사용할 수 없습니다. 지원되는 속성에 대해 일시적으로 비활성화된 기능에 사용됩니다.
ERROR 이 속성에 문제가 있습니다.

속성 구성

사용 VehiclePropConfig 각 속성에 대한 구성 정보를 제공 할 수 있습니다. 정보에는 다음이 포함됩니다.

변하기 쉬운 설명
access r , w , rw
changeMode 속성이 변경될 때와 지속적으로 모니터링되는 방식을 나타냅니다.
areaConfigs areaId , minmax 값.
configArray 추가 구성 매개변수.
configString 추가 정보는 문자열로 전달됩니다.
minSampleRate maxSampleRate
prop 속성 ID, 정수

영역 속성 처리

구역 속성은 지정된 영역 ID 값으로 각 하위 속성에 액세스할 수 있는 여러 속성 모음과 같습니다.

  • get 항상 요청의 영역 ID를 포함 지대로 나뉨 속성에 대한 호출을. 따라서 요청된 영역 ID에 대한 현재 값만 반환됩니다. 속성이 전역인 경우 영역 ID는 0입니다.
  • set 존 속성에 대한 호출은 항상 요청에서 지역 ID가 포함되어 있습니다. 따라서 요청한 Area ID만 변경됩니다.
  • subscribe 호출이 속성에 대한 모든 지역 ID에 대해 이벤트를 생성합니다.

전화 받기

초기화 중에는 일치하는 차량 네트워크 메시지가 아직 수신되지 않았기 때문에 속성 값을 아직 사용하지 못할 수 있습니다. 이러한 경우, get 호출이 반환해야 -EAGAIN . 일부 속성(예: HVAC)에는 별도의 전원 켜기/끄기 속성이 있습니다. 호출 get (꺼져) 이러한 속성 것은 반환해야 UNAVAILABLE 오류를 반환하는 대신 상태. 예를 들어 HVAC 온도 가져오기

VHAL HVAC 예제 가져오기

그림 1. HVAC 온도 가져오기(CS = CarService, VHAL = 차량 HAL)

통화 설정

set 호출은 요청 된 변경이 이루어진 이후에 이벤트 통지를 포함하는 비동기 동작이다. 전형적인 동작에서, set 차량 네트워크에서 변경 요청을하기 호 리드. 일부 set 호출은 준비하지만 초기화하는 동안, 이러한 데이터는 아직 사용할 수 없습니다 것으로 초기 데이터가 필요할 수 있습니다. 이러한 경우, set 호출이 반환해야 -EAGAIN . 온 / 오프 별도의 전원과 일부 속성은 반환해야 -ESHUTDOWN 재산 전원이 꺼져 있고 세트가 수행 할 수없는 경우. 까지 set 효과적입니다, get 반드시 설정 한 값과 동일한 값을 반환하지 않습니다. 예를 들어, set HVAC Temperature .

VHAL 설정 HVAC 예

그림 2. HVAC 온도 설정(CS = CarService, VHAL = 차량 HAL)

사용자 정의 속성 처리

파트너별 요구 사항을 지원하기 위해 VHAL은 시스템 앱으로 제한된 사용자 지정 속성을 허용합니다. 사용자 정의 속성으로 작업할 때 다음 지침을 따르십시오.

  • 속성 ID는 다음 필드를 사용하여 생성해야 합니다.
    • VehiclePropertyGroup:VENDOR
      VENDOR 그룹은 사용자 지정 속성에만 사용됩니다.
    • VehicleArea
      적절한 영역 유형을 선택합니다.
    • VehiclePropertyType
      적절한 데이터 유형을 선택하십시오. BYTES 유형은 대부분의 경우에 충분 원시 데이터의 전달을 허용한다. 사용자 지정 속성을 통해 빅 데이터를 자주 전송하면 전체 차량 네트워크 액세스 속도가 느려질 수 있습니다. 큰 페이로드를 추가할 때는 주의하십시오.
    • Property ID
      사용자 정의 속성에 대해 4개의 니블 ID를 선택하십시오.
  • 생태계의 단편화를 방지하기 위해 사용자 지정 속성은 이미 (에 존재하는 복제 차량 특성에 사용할 수 없습니다 VehiclePropertyIds SDK).
  • 를 입력 VehiclePropConfig.configString 사용자 지정 속성에 대한 간단한 설명과 함께. 이를 통해 온전성 검사 도구가 기존 차량 속성의 우발적인 복제에 플래그를 지정할 수 있습니다. 예: "위험등 상태".
  • 를 통해 액세스 CarPropertyManager (자바 구성 요소) 또는 차량 네트워크 서비스 API를 통해 (기본)입니다. 다른 자동차 API를 수정하면 향후 호환성 문제가 발생할 수 있으므로 수정하지 마십시오.
  • 공급 업체 속성을 구현 한 후, 사용 권한 목록을 선택 VehicleVendorPermission 공급 업체 속성에 대한 열거. 공급업체 권한을 시스템 속성에 매핑하면 CTS 및 VTS가 중단됩니다.

HVAC 속성 처리

VHAL을 사용하여 HVAC 관련 속성을 설정하여 HVAC를 제어할 수 있습니다. 대부분의 HVAC 특성은 구역 특성이지만 일부는 구역이 지정되지 않은(전역) 특성입니다. 샘플 정의 속성은 다음과 같습니다.

재산 목적
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET 구역별 온도를 설정합니다.
VEHICLE_PROPERTY_HVAC_RECIRC_ON 구역별 재순환 제어.

, HVAC 속성의 전체 목록을 보려면 검색하려면 VEHICLE_PROPERTY_HVAC_*types.hal . 냉난방 속성을 사용하는 경우 VehicleAreaSeat , 지역 ID가에 존 HVAC 속성을 매핑하기위한 추가 규칙이 적용됩니다. 차량에서 사용 가능한 각 좌석은 Area ID 배열에서 Area ID의 일부여야 합니다.

예 1. 자동차는 두 개의 앞 좌석 (가 ROW_1_LEFT, ROW_1_RIGHT )와 세 개의 뒷좌석 ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ). 자동차에는 운전석과 조수석의 두 가지 온도 제어 장치가 있습니다.

  • 에 대한 지역 ID의 설정 유효한 매핑 HVAC_TEMPERATURE SET 있습니다 :
    • ROW_1_LEFT | ROW_2_LEFT
    • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
  • 동일한 하드웨어 구성에 대한 대체 매핑은 다음과 같습니다.
    • ROW_1_LEFT | ROW_2_LEFT | ROW_2_CENTER
    • ROW_1_RIGHT | ROW_2_RIGHT

예 2. 자동차는 앞줄 2 개 개의 좌석 (세 자리 행 갖는다 ROW_1_LEFT, ROW_1_RIGHT ), 제 (세 자리 ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ), 세 번째 행의 세 ( ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT ). 자동차에는 운전석, 조수석 및 후면의 세 가지 온도 제어 장치가 있습니다. 지도하는 합리적인 방법 HVAC_TEMPERATURE_SET 영역 ID에이 세 가지 요소의 배열과 같다 :

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

센서 속성 처리

VHAL 센서 속성은 실제 센서 데이터 또는 운전 상태와 같은 정책 정보를 나타냅니다. 일부 센서 정보(예: 운전 상태 및 주간/야간 모드)는 안전한 차량 애플리케이션을 구축하기 위해 데이터가 필수이므로 모든 앱에서 제한 없이 액세스할 수 있습니다. 다른 센서 정보(예: 차량 속도)는 더 민감하며 사용자가 관리할 수 있는 특정 권한이 필요합니다.

(에서 지원되는 센서의 특성을 참조하십시오 types.hal ).

차량 지도 서비스

차량지도 서비스 (VMS)은 같은 일반적인 차량의 기능을 지원하기 위해 술집 / 하위 인터페이스를 통해 클라이언트간에 교환 맵 데이터에 대한 메커니즘을 제공 고급 드라이버 지원 시스템 (ADAS)을 . 클라이언트는 VHAL 또는 권한 있는 Android 애플리케이션의 VMS 속성을 통해 인터페이스하는 차량 시스템을 포함할 수 있습니다. VMS에서 공유되는 데이터는 차량 시스템 및 지원 앱에서 사용할 지도 데이터로 제한됩니다.

VMS는 Android Automotive 구현에서만 사용하기 위한 것입니다. AOSP에는 VMS를 게시하거나 구독하는 기본 클라이언트가 포함되어 있지 않습니다. VHAL에서 VMS 속성의 경우, 메시지 타입 및 데이터 구조는 VHAL에서 2.0에서 설명 VmsMessageType 있는리스트 지원 VMS 메시지 유형을 열거. 이 열거형은 차량 속성 정수 배열의 첫 번째 정수로 사용되며 나머지 메시지가 디코딩되는 방식을 결정합니다.