속성 구성

지원되는 각 속성은 VehiclePropConfig 구조를 통해 정의된 속성 구성으로 지정되며 다음 필드가 있습니다.

필드 설명
prop

속성 ID입니다. 이는 VehicleProperty.aidl에서 정의된 시스템 속성 중 하나이거나 공급업체 속성이어야 합니다. 속성 ID는 다음 필드의 비트 OR을 사용하여 구성됩니다(오른쪽에서 왼쪽).

  • (0x00000000) 16비트: 범위 0x0100~0xffff의 고유 ID입니다.
  • (0x00000000) 8비트: 속성의 유형을 정의하는 속성 유형입니다.
  • (0x00000000) 4비트: 지역 유형
  • (0x00000000) 4비트: VehiclePropertyGroup SYSTEM(0x10000000) 또는 VENDOR (0x20000000)입니다. 맞춤설정할 수 있는 속성은 공급업체 속성을 참고하세요.

예를 들면 다음과 같습니다.
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • 속성의 액세스 모드입니다. READ, WRITE, READ_WRITE 중 하나여야 합니다.
  • 시스템 속성의 경우 VehicleProperty.aidl에 문서화된 정의된 액세스 모드 중 하나여야 합니다.
  • 영역별 액세스 권한이 있는 속성의 경우 영역별 액세스 권한의 최대 하위 집합입니다. 예를 들어 속성에 액세스 권한이 READREAD_WRITE인 두 영역이 있는 경우 READ로 설정해야 합니다.
changeMode
  • 속성의 모드를 변경합니다. STATIC, ON_CHANGE, CONTINUOUS 중 하나여야 합니다. STATIC는 시스템 부팅 후 속성 값이 변경되지 않음을 의미합니다. ON_CHANGE는 값이 변경될 때 VHAL이 보고해야 함을 의미합니다. CONTINUOUS는 속성 값이 지속적으로 변경되며 VHAL은 구독 샘플링 속도에 따라 보고해야 함을 의미합니다.
  • 시스템 속성의 경우 VehicleProperty.aidl에 설명된 변경 모드와 같아야 합니다.
configArray 속성별 구성을 포함하는 선택적 배열입니다. 비어 있을 수 있습니다. 특정 시스템 속성(예: GEAR_SELECTION)의 경우 구성 배열에 특별한 의미가 있으며 지정해야 합니다.
configString 속성별 구성을 포함하는 선택적 문자열입니다. 비어 있을 수 있습니다.
minSampleRatemaxSampleRate 연속 속성에 지원되는 최소 및 최대 샘플링 레이트 (Hz)입니다. 속성이 연속적이지 않은 경우 사용되지 않습니다. minSampleRatemaxSampleRate은 VHAL 구현으로 달성할 수 있어야 합니다. 최솟값과 최댓값 사이의 모든 샘플링 레이트가 지원되어야 하는 것은 아닙니다.

숙박 시설 유형

VehiclePropertyType.aidl의 enum으로 정의됩니다. 지원되는 속성 유형은 다음 표에 나와 있습니다.

속성 유형 설명
STRING 0x00100000 문자열 속성으로, 차량 속성 값stringValue 필드를 사용합니다.
BOOLEAN 0x00200000 Boolean 속성은 차량 속성 값int32Values 필드에 있는 첫 번째 요소를 사용합니다. 0false을 의미하고 None 0true을 의미합니다.
INT32 0x00400000 Integer 속성은 차량 속성 값int32Values 필드에 있는 첫 번째 요소를 사용합니다.
INT32_VEC 0x00410000 Integer[] 속성은 차량 속성 값int32Values 필드에 있는 요소를 사용합니다.
INT64 0x00500000 긴 속성으로, 차량 속성 값int64Values 필드에 있는 첫 번째 요소를 사용합니다.
INT64_VEC 0x00510000 Long[] 속성은 차량 속성 값int64Values 필드에 있는 요소를 사용합니다.
FLOAT 0x00600000 Float 속성은 차량 속성 값floatValues 필드에 있는 첫 번째 요소를 사용합니다.
FLOAT_VEC 0x00610000 Float[] 속성은 차량 속성 값floatValues 필드에 있는 요소를 사용합니다.
BYTES 0x00700000 byte[] 속성은 차량 속성 값byteValues 필드에 있는 요소를 사용합니다.
MIXED 0x00e00000 혼합 유형 속성입니다. 스칼라 또는 벡터 유형의 조합 정확한 형식은 속성 구성의 구성 배열에 제공해야 합니다.

공급업체 MIXED 유형 속성의 경우 configArray는 다음 구조로 형식이 지정되어야 합니다.

  • configArray[0]: 1은 속성에 String 값이 있음을 나타냅니다.
  • configArray[1]: 1은 속성에 Boolean 값이 있음을 나타냅니다.
  • configArray[2]: 1은 속성에 Integer 값이 있음을 나타냅니다.
  • configArray[3]인 경우 숫자는 속성에서 Integer[]의 크기를 나타냅니다.
  • configArray[4]: 1은 속성에 Long 값이 있음을 나타냅니다.
  • configArray[5]인 경우 숫자는 속성에서 Long[]의 크기를 나타냅니다.
  • configArray[6]: 1은 속성에 Float 값이 있음을 나타냅니다.
  • configArray[7]인 경우 숫자는 속성에서 Float[]의 크기를 나타냅니다.
  • configArray[8]인 경우 숫자는 속성의 byte[] 크기를 나타냅니다.

예를 들어 configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0}는 속성에 String 값, Boolean 값, Integer 값, 정수 3개가 있는 배열이 있음을 나타냅니다.

영역 ID 구성

각 속성 구성에는 영역 ID 구성 목록이 포함될 수도 있습니다. 이 목록은 전역 속성의 경우 선택사항이며 구역 분할 속성 (지원되는 영역이 여러 개인 속성)의 경우 필수입니다. 각 지역 ID 구성에는 다음 필드가 있습니다.

필드 설명
areaId 이 영역의 ID입니다. 영역 ID를 참고하세요.
minInt32ValuemaxInt32Value
  • 부팅 시 INT32 유형 속성의 선택적 최소 및 최대 값입니다. 다른 모든 유형의 경우 0이어야 합니다. 둘 다 0이면 무시됩니다.
  • 전역 속성의 경우 최솟값과 최댓값을 정의해야 하는 경우 영역 ID가 0인 영역 구성을 사용해야 합니다.
  • 이 값은 정적이며 런타임에 최소 또는 최대 값이 변경되더라도 변경되지 않습니다. 동적 최솟값 또는 최댓값에 IVehicle#getMinMaxSupportedValue 구현
minInt64ValuemaxInt64Value
  • 부팅 시 INT64 유형 속성의 선택적 최소 및 최대 값입니다. 다른 모든 유형의 경우 0이어야 합니다. 둘 다 0이면 무시됩니다.
  • 전역 속성의 경우 최솟값과 최댓값을 정의해야 하는 경우 영역 ID가 0인 영역 구성을 사용해야 합니다.
  • 이 값은 정적이며 런타임에 최소 또는 최대 값이 변경되더라도 변경되지 않습니다. 동적 최솟값 또는 최댓값에 IVehicle#getMinMaxSupportedValue 구현
minFloatValuemaxFloatValue
  • 부팅 시 부동 소수점 유형 속성의 선택적 최솟값 및 최댓값입니다. 다른 모든 유형의 경우 0이어야 합니다. 둘 다 0.0이면 무시됩니다.
  • 전역 속성의 경우 최솟값과 최댓값을 정의해야 하는 경우 영역 ID가 0인 영역 구성을 사용해야 합니다.
  • 이 값은 정적이며 런타임에 최소 또는 최대 값이 변경되더라도 변경되지 않습니다. 동적 최솟값 또는 최댓값에 IVehicle#getMinMaxSupportedValue 구현
(Android 14의 새로운 기능)
supportedEnumValues
  • 속성이 enum 유형 속성으로 정의된 경우 부팅 시 지원되는 값의 선택적 목록입니다. 지정되지 않았거나 (비어 있음) Android 14 이전인 경우 모든 enum 값이 지원되는 것으로 간주됩니다.
  • 전역 속성의 경우 지원되는 enum 값을 정의해야 하는 경우 영역 ID가 0인 영역 구성 하나를 사용해야 합니다.
  • 이 값은 정적이며 런타임에 지원되는 값이 변경되더라도 변경되지 않습니다. 동적으로 지원되는 값에 IVehicle#getSupportedValuesLists를 구현합니다.
  • 열거형 유형 속성에만 적용됩니다. 다른 유형의 경우 이 필드는 비워야 합니다. 다른 비 enum 유형의 지원 값을 노출하려면 IVehicle#getSupportedValuesLists를 사용하세요.
(Android 15의 새로운 기능)
supportVariableUpdateRate
  • 가변 업데이트 속도가 지원되는지 여부입니다. 이 기능은 연속 속성에만 적용됩니다.
  • 이 값이 true이면 앱은 속성 값이 변경될 때만 속성 업데이트 이벤트를 수신하도록 정기 결제의 변수 업데이트 속도를 사용 설정할 수 있습니다(연속 속성을 변경 시 속성으로 처리).
  • 속성의 모든 구독자가 가변 업데이트 속도를 사용 설정하는 경우 VHAL에 대한 구독 요청은 속성의 가변 업데이트 속도를 사용 설정하며 VHAL은 속성 값이 변경될 때만 속성 업데이트 이벤트를 전송해야 합니다.
  • 구독자가 고정 업데이트 속도를 요청하는 경우 VHAL에 대한 구독 요청은 속성의 가변 업데이트 속도를 사용 중지하고 AAOS는 가변 업데이트 속도를 요청하는 클라이언트의 중복 이벤트를 필터링합니다.
  • 속성 데이터가 크고(예: 크기가 1k인 바이트 배열) 캐싱을 위해 많은 메모리를 차지할 수 있는 경우가 아니라면 성능 향상을 위해 모든 비하트비트 연속 속성에 가변 업데이트 속도를 지원할 것을 적극 권장합니다(HIGHLY RECOMMENDED).
(Android 16의 새로운 기능)
hasSupportedValueInfo
  • null이 아닌 경우 이 속성이 지원되는 최솟값 또는 최댓값 또는 지원되는 값 목록을 지정하는지 여부를 표시합니다.
  • 이 필드는 동적으로 지원되는 값 API인 getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange이 이 속성 ID 및 지역 ID에 지원되는지 여부를 제어합니다.
  • null이 아닌 경우 VHAL은 이 속성 ID와 영역 ID에 대해 이러한 API를 구현해야 합니다.
  • null 또는 Android 15 이하에서 이 속성 ID와 영역 ID의 동적 지원 값이 지원되지 않습니다. 클라이언트는 차량 속성 구성에 제공된 정적 지원 값 정보를 사용해야 합니다.

영역 유형

VehicleArea.aidl의 enum으로 정의됩니다. 지원되는 영역 유형은 아래에 나열되어 있습니다.

영역 유형 설명
전역 0x01000000 이 속성은 전역 속성이며 여러 영역이 없습니다.
WINDOW 0x03000000 창을 기준으로 한 영역으로, VehicleAreaWindow enum을 사용합니다.
Mirror 0x04000000 미러를 기준으로 한 영역으로, VehicleAreaMirror enum을 사용합니다.
SEAT 0x05000000 좌석을 기준으로 한 영역으로, VehicleAreaSeat enum을 사용합니다.
DOOR 0x06000000 도어를 기준으로 한 영역으로, VehicleAreaDoor enum을 사용합니다.
0x07000000 바퀴를 기준으로 한 영역으로, VehicleAreaWheel enum을 사용합니다.

각 구역 분할 속성은 사전 정의된 영역 유형을 사용해야 합니다. 각 영역 유형에는 영역 유형의 enum에 정의된 일련의 비트 플래그가 있습니다. 예를 들어 SEAT 영역은 VehicleAreaSeat enum을 정의합니다.

  • 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는 개별 enum의 플래그 하나 이상으로 구성됩니다. 예를 들어 VehicleAreaSeat를 사용하는 속성은 다음 영역 ID를 사용할 수 있습니다.

항목 설명
ROW_1_LEFT | ROW_1_RIGHT 영역 ID가 앞좌석 모두에 적용됩니다.
ROW_2_LEFT 왼쪽 뒷좌석에만 적용됩니다.
ROW_2_RIGHT 오른쪽 뒷좌석에만 적용됩니다.

자세한 내용은 HVAC를 참고하세요.