vehicle_hw_device 구조체 참조
#include <
vehicle.h
>
데이터 필드 |
|
struct hw_device_t | 일반적인 |
int(* | init )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
int(* | release )(struct vehicle_hw_device *device) |
vehicle_prop_config_t const *(* | list_properties )(struct vehicle_hw_device *device, int *num_properties) |
int(* | get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
void(* | release_memory_from_get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
int(* | set )(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
int(* | subscribe )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
int(* | unsubscribe )(struct vehicle_hw_device *device, int32_t prop) |
int(* | dump )(struct vehicle_hw_device *device, int fd) |
상세 설명
필드 문서
struct hw_device_t common |
int(* dump)(struct vehicle_hw_device *device, int fd) |
차량 HAL의 디버깅 상태를 출력합니다. 이는 차량 네트워크 서비스에서 호출하며 서비스 덤프에 포함됩니다.
전달된 파일 설명자는 dprintf() 또는 write()를 사용하여 디버깅 텍스트를 작성하는 데 사용할 수 있습니다. 텍스트는 ASCII 인코딩으로만 작성해야 합니다.
성능 요구사항:
비차단 호출이어야 합니다. HAL은 이 호출에서 1ms 내에 반환되어야 하며 10ms 내에 반환되어야 합니다. 이 호출은 작동 중 언제든지 호출될 수 있으므로 교착 상태를 방지해야 합니다. 사용되는 모든 동기화 원시 유형 (예: 뮤텍스 잠금 또는 세마포)은 시간 제한으로 획득해야 합니다.
int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
차량 속성 값을 즉시 가져옵니다. 데이터가 올바르게 할당되어야 합니다. API 호출자가 데이터 필드를 소유합니다. 호출자는 데이터 -> prop, data -> value_type을 설정하고 원하는 경우 영역 속성의 영역 값을 설정합니다. 그러나 HAL 구현은 반환 시 모든 항목을 올바르게 채워야 합니다. 포인터 유형의 경우 HAL 구현은 필요한 메모리를 할당해야 하며 호출자는 HAL이 할당된 메모리를 해제할 수 있도록 release_memory_from_get을 호출해야 합니다. VEHICLE_PROP_CHANGE_MODE_STATIC 유형의 속성의 경우 get은 항상 동일한 값을 반환해야 합니다. VEHICLE_PROP_CHANGE_MODE_ON_CHANGE 유형의 속성의 경우 최신 값을 반환해야 합니다. 초기 단계에서 발생할 수 있는 아직 사용할 수 있는 데이터가 없는 경우 이 호출은 -EAGAIN 오류 코드와 함께 즉시 반환되어야 합니다.
int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties) |
int(* release)(struct vehicle_hw_device *device) |
close를 호출하기 전에 사용자는 등록된 콜백 함수를 소멸해야 합니다. release() 전에 모든 속성에서 unsubscribe() 호출이 호출되지 않은 경우 release() 가 속성 자체를 구독 취소합니다.
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
이전 get 호출에서 데이터에 할당된 메모리를 해제합니다. 바이트 또는 문자열의 get 호출에는 차량 HAL에서 필요한 메모리를 할당하는 작업이 포함됩니다. 안전을 위해 차량 HAL에서 할당된 메모리는 차량 HAL에서 해제해야 하며 차량 네트워크 서비스는 차량 HAL의 데이터가 더 이상 필요하지 않을 때 이를 호출합니다. 차량 HAL 구현은 데이터 자체가 차량 네트워크 서비스에서 할당되므로 data->str_value.data 또는 data->bytes_value.data와 같은 vehicle_prop_value_t의 멤버만 해제해야 합니다. 메모리가 해제되면 해당 포인터는 차량 HAL에 의해 NULL로 설정되어야 합니다.
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
차량 속성 값을 설정합니다. 데이터는 NULL이 아닌 적절하게 할당되어야 합니다. API 호출자가 데이터 필드를 소유합니다. 데이터의 타임스탬프는 설정 작업에서 무시됩니다. 일부 속성을 설정하려면 초기 상태를 사용할 수 있어야 합니다. 차량 HAL에 따라 초기화 후 잠시 동안 이러한 초기 데이터를 사용할 수 없을 수 있습니다. 이 경우 set 호출은 get 호출과 같이 -EAGAIN을 반환할 수 있습니다. 별도의 전원 제어가 있는 속성의 경우 속성에 전원이 켜져 있지 않으면 설정이 실패할 수 있습니다. 이 경우 hal은 -ESHUTDOWN 오류를 반환해야 합니다.
int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
이벤트를 구독합니다. 속성이 a) 변경 시: sample_rate를 0으로 설정해야 합니다. b) 주파수를 지원하는 경우: sample_rate를 min_sample_rate에서 max_sample_rate로 설정해야 합니다. 변경 시 유형의 속성의 경우 차량 네트워크 서비스가 초기 상태를 확인하기 위해 get을 다시 호출합니다. 따라서 차량 HAL 구현은 변경 시 유형의 속성에 대한 초기 상태를 전송할 필요가 없습니다.
- 매개변수
-
기기 prop sample_rate zones 구역 분할된 속성의 구독된 모든 구역입니다. 구역 분할되지 않은 속성의 경우 무시할 수 있습니다. 0은 영역이 없음을 의미하는 대신 모든 영역이 지원됨을 의미합니다.
int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop) |
이 구조체에 관한 문서는 다음 파일에서 생성되었습니다.
- hardware/libhardware/include/hardware/ vehicle.h