Tài liệu tham khảo về cấu trúc vehicle_hw_device

Tài liệu tham khảo về cấu trúc vehicle_hw_device

#include < vehicle.h >

Trường dữ liệu

struct hw_device_t   common
 
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)
 

Nội dung mô tả chi tiết

Định nghĩa tại dòng 1639 của tệp vehicle.h .

Tài liệu về trường

cấu trúc hw_device_t phổ biến

Định nghĩa tại dòng 1640 của tệp vehicle.h .

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

In trạng thái gỡ lỗi cho hal của xe. Phương thức này sẽ được dịch vụ mạng xe gọi và sẽ được đưa vào tệp báo lỗi của dịch vụ.

Bạn có thể dùng chỉ số mô tả tệp được truyền vào để ghi văn bản gỡ lỗi bằng dprintf() hoặc write(). Văn bản chỉ được mã hoá theo ASCII.

Yêu cầu về hiệu suất:

Đây phải là lệnh gọi không chặn. HAL phải trả về từ lệnh gọi này trong 1 mili giây, phải trả về từ lệnh gọi này trong 10 mili giây. Lệnh gọi này phải tránh tình trạng tắc nghẽn, vì lệnh gọi này có thể được gọi tại bất kỳ thời điểm hoạt động nào. Mọi dữ liệu gốc đồng bộ hoá được sử dụng (chẳng hạn như khoá mutex hoặc semaphore) đều phải được lấy với thời gian chờ.

Định nghĩa tại dòng 1744 của tệp vehicle.h .

int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

Nhận giá trị thuộc tính xe ngay lập tức. dữ liệu phải được phân bổ đúng cách. Phương thức gọi của API SỞ HỮU trường dữ liệu. Phương thức gọi sẽ đặt data->prop, data->value_type và giá trị vùng (không bắt buộc) cho thuộc tính được phân vùng. Tuy nhiên, quá trình triển khai HAL cần điền đầy đủ tất cả các mục khi trả về. Đối với loại con trỏ, việc triển khai HAL phải phân bổ bộ nhớ cần thiết và phương thức gọi chịu trách nhiệm gọi release_memory_from_get, cho phép HAL giải phóng bộ nhớ đã phân bổ. Đối với loại thuộc tính VEHICLE_PROP_CHANGE_MODE_STATIC, phương thức get phải luôn trả về cùng một giá trị. Đối với loại thuộc tính VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, thuộc tính này sẽ trả về giá trị mới nhất. Nếu chưa có dữ liệu (điều này có thể xảy ra trong giai đoạn ban đầu), lệnh gọi này sẽ trả về ngay lập tức với mã lỗi là -EAGAIN.

Định nghĩa tại dòng 1681 của tệp vehicle.h .

Sau khi gọi open trên thiết bị, người dùng nên đăng ký lệnh gọi lại cho các hàm sự kiện và lỗi.

Định nghĩa tại dòng 1646 của tệp vehicle.h .

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

Liệt kê tất cả các thuộc tính có sẵn. Danh sách được trả về trong "danh sách".

Tham số
num_properties số lượng thuộc tính có trong mảng được trả về.
Giá trị trả về
mảng cấu hình thuộc tính mà ô tô này hỗ trợ. Xin lưu ý rằng dữ liệu được trả về là const và phương thức gọi không thể sửa đổi dữ liệu đó. Việc triển khai HAL phải giữ lại bộ nhớ này cho đến khi HAL được phát hành để tránh sao chép lại.

Định nghĩa tại dòng 1663 của tệp vehicle.h .

int(* release)(struct vehicle_hw_device *device)

Trước khi gọi lệnh đóng, người dùng phải huỷ các hàm gọi lại đã đăng ký. Trong trường hợp lệnh gọi unsubscribe() không được gọi trên tất cả các thuộc tính trước khi release() , thì release() sẽ tự huỷ đăng ký các thuộc tính đó.

Định nghĩa tại dòng 1654 của tệp vehicle.h .

void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

Giải phóng bộ nhớ được phân bổ cho dữ liệu trong lệnh gọi get trước đó. lệnh gọi get cho byte hoặc chuỗi liên quan đến việc phân bổ bộ nhớ cần thiết từ vehicle hal. Để đảm bảo an toàn, bộ nhớ do vehicle hal phân bổ phải được vehicle hal giải phóng và dịch vụ mạng xe sẽ gọi phương thức này khi không cần thiết phải có dữ liệu từ vehicle hal. Việc triển khai vehicle hal chỉ nên giải phóng thành phần của vehicle_prop_value_t như data->str_value.data hoặc data->bytes_value.data chứ không phải chính dữ liệu vì chính dữ liệu được phân bổ từ dịch vụ mạng xe. Sau khi bộ nhớ được giải phóng, con trỏ tương ứng phải được đặt thành NULL bằng hal xe.

Định nghĩa tại dòng 1693 của tệp vehicle.h .

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

Đặt giá trị thuộc tính xe. dữ liệu phải được phân bổ đúng cách và không được để trống. Phương thức gọi của API SỞ HỮU trường dữ liệu. Dấu thời gian của dữ liệu sẽ bị bỏ qua đối với thao tác đặt. Việc thiết lập một số thuộc tính yêu cầu trạng thái ban đầu. Tuỳ thuộc vào hal của xe, dữ liệu ban đầu như vậy có thể không có trong một thời gian ngắn sau khi khởi tạo. Trong trường hợp đó, lệnh gọi set có thể trả về -EAGAIN giống như lệnh gọi get. Đối với một tài sản có chế độ điều khiển nguồn riêng biệt, việc đặt có thể không thành công nếu tài sản không được bật nguồn. Trong trường hợp đó, hal sẽ trả về lỗi -ESHUTDOWN.

Định nghĩa tại dòng 1706 của tệp vehicle.h .

int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones)

Đăng ký sự kiện. Tuỳ thuộc vào kết quả của list_properties nếu thuộc tính là: a) on-change: sample_rate phải được đặt thành 0. b) hỗ trợ tần số: sample_rate phải được đặt từ min_sample_rate đến max_sample_rate. Đối với loại thuộc tính thay đổi, dịch vụ mạng xe sẽ thực hiện một lệnh gọi get khác để kiểm tra trạng thái ban đầu. Do đó, việc triển khai vehicle hal không cần gửi trạng thái ban đầu cho loại thuộc tính thay đổi.

Tham số
thiết bị
đạo cụ
sample_rate
vùng Tất cả các khu vực đã đăng ký cho tài sản được phân vùng. có thể bị bỏ qua đối với tài sản không được phân vùng. 0 có nghĩa là tất cả các vùng đều được hỗ trợ thay vì không có vùng nào được hỗ trợ.

Định nghĩa tại dòng 1723 của tệp vehicle.h .

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

Huỷ gói thuê bao trên một tài sản.

Định nghĩa tại dòng 1727 của tệp vehicle.h .


Tài liệu cho cấu trúc này được tạo từ tệp sau: