vehicle_hw_device 구조체 참조

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)

상세 설명

vehicle.h 파일의 1639 행에 정의되어 있습니다.

현장 문서

구조체 hw_device_t 공통

vehicle.h 파일의 1640 행에 정의되어 있습니다.

int(* dump)(struct vehicle_hw_device *device, int fd)

차량 hal의 디버깅 상태를 인쇄합니다. 이는 차량 네트워크 서비스에 의해 호출되며 서비스 덤프에 포함됩니다.

전달된 파일 설명자는 dprintf() 또는 write()를 사용하여 디버깅 텍스트를 작성하는 데 사용할 수 있습니다. 텍스트는 ASCII 인코딩으로만 이루어져야 합니다.

성능 요건:

이는 비차단 호출이어야 합니다. HAL은 1ms 내에 이 호출에서 반환되어야 하며, 10ms 내에 이 호출에서 반환되어야 합니다. 이 호출은 작업의 어느 지점에서나 호출될 수 있으므로 교착 상태를 피해야 합니다. 사용되는 모든 동기화 기본 요소(예: 뮤텍스 잠금 또는 세마포어)는 시간 초과를 통해 획득해야 합니다.

vehicle.h 파일의 1744 행에 정의되어 있습니다.

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 오류 코드와 함께 즉시 반환되어야 합니다.

vehicle.h 파일의 1681 행에 정의되어 있습니다.

int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)

사용자는 장치에서 open을 호출한 후 이벤트 및 오류 함수에 대한 콜백을 등록해야 합니다.

vehicle.h 파일의 1646 행에 정의되어 있습니다.

vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties)

사용 가능한 모든 속성을 열거합니다. 목록은 "list"로 반환됩니다.

매개변수
num_properties 반환된 배열에 포함된 속성의 수입니다.
보고
이 자동차에서 지원하는 속성 구성의 배열입니다. 반환된 데이터는 const이며 호출자는 이를 수정할 수 없습니다. HAL 구현은 이 메모리가 다시 복사되는 것을 방지하기 위해 HAL이 해제될 때까지 이 메모리를 유지해야 합니다.

vehicle.h 파일의 1663 행에 정의되어 있습니다.

int(* release)(struct vehicle_hw_device *device)

닫기를 호출하기 전에 사용자는 등록된 콜백 함수를 삭제해야 합니다. unsubscribe() 호출이 release() 이전에 모든 속성에 대해 호출되지 않은 경우 release()는 속성 자체를 구독 취소합니다.

vehicle.h 파일의 1654 행에 정의되어 있습니다.

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로 설정되어야 합니다.

vehicle.h 파일의 1693 행에 정의되어 있습니다.

int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)

차량 속성 값을 설정합니다. 데이터는 NULL이 아닌 올바르게 할당되어야 합니다. API 호출자는 데이터 필드를 소유합니다. 설정 작업에서는 데이터의 타임스탬프가 무시됩니다. 일부 속성을 설정하려면 초기 상태를 사용할 수 있어야 합니다. 차량에 따라 초기화 후 짧은 시간 동안 이러한 초기 데이터를 사용하지 못할 수도 있습니다. 이러한 경우 set call은 get call과 마찬가지로 -EAGAIN을 반환할 수 있습니다. 별도의 전원 제어 기능이 있는 속성의 경우 속성의 전원이 켜지지 않으면 설정이 실패할 수 있습니다. 이러한 경우 hal은 -ESHUTDOWN 오류를 반환해야 합니다.

vehicle.h 파일의 1706 행에 정의되어 있습니다.

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은 영역이 지원되지 않는 대신 모든 영역이 지원됨을 의미합니다.

vehicle.h 파일의 1723 행에 정의되어 있습니다.

int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop)

속성에 대한 구독을 취소합니다.

vehicle.h 파일의 1727 행에 정의되어 있습니다.


이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.
  • hardware/libhardware/include/hardware/ vehicle.h