특수 속성

공급업체 속성

파트너별 요구사항을 지원하기 위해 VHAL은 시스템 API를 통해서만 액세스할 수 있는 공급업체 속성을 허용합니다. 공급업체 속성을 사용할 때 다음 가이드라인을 따르세요.

  • 언제나 시스템 속성을 먼저 사용합니다. 공급업체 속성은 개발자의 요구사항을 충족하는 시스템 속성이 없을 때 최후의 수단으로 사용해야 합니다.
  • 생태계 단편화를 방지하려면 SDK VehiclePropertyIds에 이미 있는 차량 속성을 복제하는 데 공급업체 속성을 사용해서는 안 됩니다. 자세한 내용은 CDD의 섹션 2.5 자동차 요구사항을 참고하세요.
  • 다음 필드를 사용하여 속성 ID를 생성합니다.
    • VehiclePropertyGroup:VENDOR - VENDOR 그룹은 공급업체 속성에만 사용됩니다.
    • VehicleArea - 적절한 영역 유형을 선택합니다.
    • VehiclePropertyType - 적절한 데이터 유형을 선택합니다. BYTES 유형을 사용하면 원시 데이터를 전달할 수 있으며 이는 대부분의 사례에서 충분합니다. 공급업체 속성을 통해 빅데이터를 자주 전송하면 전체 차량 네트워크 액세스 속도가 떨어질 수 있으므로 대용량 페이로드를 추가할 때는 주의해야 합니다.
    • Property ID - 공급업체 속성의 고유한 2바이트 ID를 선택합니다. 예: 0x1234
  • VehiclePropConfig.configString에 공급업체 속성에 관한 간략한 설명을 입력합니다. 그러면 유효성 확인 도구에서 기존 차량 속성이 실수로 복제된 사항을 신고할 수 있습니다. 예: 'XYZ의 맞춤 속성'
  • CarPropertyManager(Java 구성요소의 경우) 또는 libvhalclient(네이티브의 경우)를 통해 액세스합니다. 다른 자동차 API는 향후 호환성 문제를 일으킬 수 있으므로 수정하지 마세요.

공급업체 속성 권한

정의된 공급업체 속성의 기본 권한은 android.car.Car.PERMISSION_VENDOR_EXTENSION입니다. 권한을 좀 더 상세히 제어하려면 SUPPORT_CUSTOMIZE_VENDOR_PERMISSION 속성을 지원하세요. 이 STATIC 속성은 읽기 전용으로, 구성 배열이 공급업체 속성의 권한을 지정합니다. configArray는 다음과 같이 설정됩니다. i는 0부터 시작하는 정수입니다.

  • configArray[3 * i] propId. 공급업체 속성의 속성 ID입니다.
  • configArray[3 * i + 1]. 속성 값을 읽는 권한을 나타내는 VehicleVendorPermission.aidl의 enum입니다.
  • configArray[3 * i + 2]. 속성 값을 쓰는 권한을 나타내는 VehicleVendorPermission.aidl의 enum입니다.

예를 들어 다음 구성 배열은 두 개의 공급업체 속성 vendor_prop_1vendor_prop_2가 권한을 갖도록 구성합니다.

  • vendor_prop_1은 읽으려면 android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT가 필요하고 쓰려면 android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT가 필요합니다.
  • vendor_prop-2는 읽으려면 android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO가 필요하며 Android 앱의 경우 쓸 수 없습니다.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

이 배열에 없는 공급업체 속성은 기본 공급업체 권한을 사용합니다. PERMISSION_NOT_ACCESSIBLE이 선택되면 Android 앱은 속성에 액세스할 수 없습니다. 이 예에서 Android 앱은 vendor_prop_2 값을 쓸 수 없습니다. 네이티브 VHAL 클라이언트만 이 속성에 쓸 수 있습니다.

고급 운전자 지원 시스템(ADAS)

ADAS 차량 속성을 참고하세요.

SEAT 및 STEERING

좌석 및 핸들 속성을 참고하세요.

HVAC

VHAL을 사용하여 HVAC 관련 속성을 설정해 HVAC를 제어할 수 있습니다. 대부분의 HVAC 속성은 차량의 특정 영역과 연결되어 있지만 일부는 전역 속성입니다. 샘플에서 정의된 속성은 다음과 같습니다.

속성 목적
HVAC_TEMPERATURE_SET 영역 ID별로 온도를 설정합니다.
HVAC_POWER_ON 영역 ID별 HVAC 시스템의 전원 상태입니다.

HVAC 시스템의 전원 상태에 따라 달라지는 HVAC 속성의 경우 HVAC_POWER_ON 구성 배열에 나열되어야 합니다. HVAC 속성의 전체 목록을 보려면 VehicleProperty.aidl에서 HVAC_*를 검색하고 지원되는 시스템 속성을 참고하세요. 속성

비 GLOBAL VehicleArea 유형 HVAC 속성을 AreaID에 매핑하는 규칙은 다음과 같습니다. 속성의 영향을 받는 특정 VehicleArea 유형의 모든 '영역'은 해당 속성의 영역 ID에 포함되어야 합니다. 온도 조절기는 '가장 영향을 받는' 좌석에 할당되지만 영향을 받는 모든 좌석은 정확히 한 번만 포함되어야 합니다. 중앙 뒷좌석을 왼쪽이나 오른쪽 AreaID에 할당하는 것이 임의적으로 보일 수 있으나 영향을 받는 모든 좌석을 정확히 하나의 AreaID에 포함하면 자동차의 좌석이 모두 표현되고 각 좌석에 영향을 미치는 합리적인 방법을 사용할 수 있습니다.

예시 1

자동차에 앞좌석 2개(ROW_1_LEFT, ROW_1_RIGHT) 및 뒷좌석 3개(ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT)가 있습니다. 온도 조절 장치는 2개가 있으며 하나는 운전자 측에 하나는 조수석 측에 있습니다. HVAC_TEMPERATURE_SET의 유효한 AreaID 매핑 세트는 두 요소 배열입니다.

  • ROW_1_LEFT | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT

동일한 하드웨어 구성의 대체 매핑은 다음과 같습니다.

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_RIGHT

예시 2

자동차에 좌석 3줄이 있는데, 첫 번째 줄에는 좌석 2개(ROW_1_LEFT, ROW_1_RIGHT), 두 번째 줄에는 좌석 3개(ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT), 세 번째 줄에는 좌석 3개(ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT)가 있습니다. 온도 조절 장치는 3개가 있으며 각각 운전자 측, 조수석 측, 뒷좌석 측에 있습니다. HVAC_TEMPERATURE_SET를 AreaID에 매핑하는 합리적인 방법은 세 요소 배열입니다.

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

예시 3

자동차에 앞좌석 2개(ROW_1_LEFT, ROW_1_RIGHT) 및 뒷좌석 3개(ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT)가 있습니다. 자동차에서 앞좌석 두 개에만 HVAC_AUTO_ON을 지원한다고 가정합니다. HVAC_AUTO_ON의 유효한 AreaID 매핑 세트는 한 요소 배열입니다.

  • ROW_1_LEFT | ROW_1_RIGHT

HVAC_AUTO_ON에 운전석 측 및 조수석 측 조절 장치 두 개가 별도로 있다면 대체 매핑은 두 요소 배열입니다.

  • ROW_1_LEFT
  • ROW_1_RIGHT

유럽 연합 일반 안전 규정 준수

차량이 Android를 통해 유럽 연합 일반 안전 규정(GSR) 요구사항을 준수해야 하면 속성 GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT를 지원해야 합니다. 사용 사례로는 EU 규정 2019/2144에 정의된 GSR-ISA(지능형 속도제어 지원)가 있습니다. 이 속성은 Android 13부터 AIDL VHAL에 추가되지만 Android 12 출시 이후 자동차 서비스에서 지원됩니다. 이 속성은 읽기 전용 정적 전역 정수 속성으로 정의되며 GsrComplianceRequirementType enum으로 정의된 값을 사용할 수 있습니다.

이름 설명
GSR_COMPLIANCE_NOT_REQUIRED 0 GSR 규정 준수가 필요하지 않습니다.
GSR_COMPLIANCE_REQUIRED_V1 1 GSR 규정 준수가 필요하며 요구사항 솔루션 버전은 1입니다.

HIDL VHAL(Android 12)에서 이 속성을 지원하려면 공급업체는 속성 ID를 하드 코딩해야 합니다. 예를 들어 다음 스니펫은 참조 HIDL VHAL DefaultConfig.h에서 이를 지원하는 방법을 보여줍니다.

{
  .config =
      {
          // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
          .prop = 0x11400F47,
          .access = VehiclePropertyAccess::READ,
          .changeMode = VehiclePropertyChangeMode::STATIC,
      },
  // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1
  .initialValue = {.int32Values = {1}},
}

AIDL VHAL(Android 13부터)에서 이 속성을 지원하려면 공급업체는 VehicleProperty.h의 속성 ID와 GsrComplianceRequirementType.h의 enum을 사용하면 됩니다. 참조 AIDL VHAL DefaultProperties.json의 예를 들 수 있습니다.

{
  "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
  "defaultValue": {
    "int32Values": [
      "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
    ]
  }
}

Android 앱에서 이 속성을 읽으려면 CarPropertyManager.getIntProperty를 사용하세요.