vehicle_hw_device 구조체 참조
#include < vehicle.h >
데이터 필드 | |
구조체 hw_device_t | 흔한 |
정수(* | 초기화 )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
정수(* | 릴리스 )(struct vehicle_hw_device *device) |
vehicle_prop_config_t const *(* | list_properties )(struct vehicle_hw_device *device, int *num_properties) |
정수(* | get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
무효의(* | release_memory_from_get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
정수(* | 설정 )(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
정수(* | 구독 )(struct vehicle_hw_device *device, int32_t prop, float Sample_rate, int32_t zones) |
정수(* | 구독 취소 )(struct vehicle_hw_device *device, int32_t prop) |
정수(* | 덤프 )(struct vehicle_hw_device *device, int fd) |
상세 설명
현장 문서
구조체 hw_device_t 공통 |
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 호출자는 데이터 필드를 소유합니다. 호출자는 data->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) |
닫기를 호출하기 전에 사용자는 등록된 콜백 함수를 삭제해야 합니다. unsubscribe() 호출이 release() 이전에 모든 속성에 대해 호출되지 않은 경우 release()는 속성 자체를 구독 취소합니다.
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
이전 get 호출에서 데이터에 할당된 메모리를 해제합니다. 바이트 또는 문자열에 대한 호출을 받으려면 차량 hal에서 필요한 메모리를 할당해야 합니다. 안전을 위해 차량 hal에서 할당한 메모리는 차량 hal에서 해제되어야 하며 차량 네트워크 서비스는 차량 hal의 데이터가 더 이상 필요하지 않을 때 이를 호출합니다. 차량 hal 구현은 data->str_value.data 또는 data->bytes_value.data와 같은 vehicle_prop_value_t의 멤버만 해제해야 하며 데이터 자체는 차량 네트워크 서비스에서 할당되므로 데이터 자체는 해제하지 않아야 합니다. 메모리가 해제되면 해당 포인터는 NULL bu vehicle hal로 설정되어야 합니다.
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
차량 속성 값을 설정합니다. 데이터는 NULL이 아닌 올바르게 할당되어야 합니다. API 호출자는 데이터 필드를 소유합니다. 설정 작업에서는 데이터의 타임스탬프가 무시됩니다. 일부 속성을 설정하려면 초기 상태를 사용할 수 있어야 합니다. 차량에 따라 초기화 후 짧은 시간 동안 이러한 초기 데이터를 사용하지 못할 수도 있습니다. 이러한 경우 set call은 get call과 마찬가지로 -EAGAIN을 반환할 수 있습니다. 별도의 전원 제어 기능이 있는 속성의 경우 속성의 전원이 켜지지 않으면 설정이 실패할 수 있습니다. 이러한 경우 hal은 -ESHUTDOWN 오류를 반환해야 합니다.
int(* 구독)(struct vehicle_hw_device *device, int32_t prop, float Sample_rate, int32_t zones) |
이벤트를 구독하세요. 속성이 다음과 같은 경우 list_properties의 출력에 따라: a) 변경 시: Sample_rate는 0으로 설정되어야 합니다. b) 지원 빈도: Sample_rate는 min_sample_rate에서 max_sample_rate로 설정되어야 합니다. 변경 시 속성 유형의 경우 차량 네트워크 서비스는 초기 상태를 확인하기 위해 또 다른 get 호출을 수행합니다. 이로 인해 차량 Hal 구현에서는 변경 시 유형의 속성에 대한 초기 상태를 보낼 필요가 없습니다.
- 매개변수
장치 소품 샘플_레이트 구역 구역 지정 부동산에 대한 모든 가입 구역. 구역이 지정되지 않은 부동산의 경우 무시될 수 있습니다. 0은 영역이 지원되지 않는 대신 모든 영역이 지원됨을 의미합니다.
int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop) |
이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.
- hardware/libhardware/include/hardware/ vehicle.h