Xe_hw_device Tham khảo cấu trúc

Xe_hw_device Tham khảo cấu trúc

#include < vehicle.h >

Trường dữ liệu

cấu trúc hw_device_t chung
int(* init )(struct Vehicle_hw_device *thiết bị, Vehicle_event_callback_fn Event_fn, Vehicle_error_callback_fn err_fn)
int(* phát hành )(struct Vehicle_hw_device *device)
xe_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)
khoảng trống(* 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(* đăng ký )(struct Vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t vùng)
int(* hủy đăng ký )(struct Vehicle_hw_device *device, int32_t prop)
int(* dump )(struct Vehicle_hw_device *device, int fd)

miêu tả cụ thể

Định nghĩa tại dòng 1639 của file Vehicle.h .

Tài liệu hiện trường

cấu trúc hw_device_t chung

Định nghĩa tại dòng 1640 của file Vehicle.h .

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

In ra trạng thái gỡ lỗi cho hal xe. Điều này sẽ được dịch vụ mạng phương tiện gọi và sẽ được đưa vào kết xuất của dịch vụ.

Bộ mô tả tệp được truyền vào có thể được sử dụng để viết văn bản gỡ lỗi bằng cách sử dụng dprintf() hoặc write(). Văn bản chỉ được ở dạng mã hóa ASCII.

Các yêu cầu thực hiện:

Đây phải là cuộc gọi không chặn. HAL sẽ quay lại từ cuộc gọi này sau 1 mili giây, phải quay lại từ cuộc gọi này sau 10 mili giây. Cuộc gọi này phải tránh bế tắc vì nó có thể được gọi tại bất kỳ thời điểm hoạt động nào. Bất kỳ nguyên tắc đồng bộ hóa nào được sử dụng (chẳng hạn như khóa mutex hoặc ngữ nghĩa) phải được lấy lại khi hết thời gian chờ.

Định nghĩa tại dòng 1744 của file Vehicle.h .

int(* get)(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data)

Nhận giá trị tài sản xe ngay lập tức. dữ liệu phải được phân bổ hợp lý. Người gọi API SỞ HỮU trường dữ liệu. Người gọi sẽ đặt data->prop, data->value_type và giá trị vùng tùy chọn cho thuộc tính được khoanh vùng. Nhưng việc triển khai HAL cần điền đúng tất cả các mục khi quay lại. Đối với loại con trỏ, việc triển khai HAL sẽ phân bổ bộ nhớ cần thiết và người gọi chịu trách nhiệm gọi bản phát hành_memory_from_get, cho phép HAL giải phóng bộ nhớ được phân bổ. Đối với loại thuộc tính VEHICLE_PROP_CHANGE_MODE_STATIC, 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, nó sẽ trả về giá trị mới nhất. Nếu chưa có sẵn dữ liệu, điều này có thể xảy ra trong giai đoạn đầu, lệnh gọi này sẽ trả về ngay lập tức với mã lỗi -EAGAIN.

Định nghĩa tại dòng 1681 của file Vehicle.h .

int(* init)(struct Vehicle_hw_device *device, Vehicle_event_callback_fn Event_fn, Vehicle_error_callback_fn err_fn)

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 chức năng sự kiện và lỗi.

Định nghĩa tại dòng 1646 của file 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".

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

Định nghĩa tại dòng 1663 của file Vehicle.h .

int(* phát hành)(struct Vehicle_hw_device *device)

Trước khi gọi đóng, người dùng nên hủy các chức năng 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 bản phát hành() thì bản phát hành() sẽ tự hủy đăng ký các thuộc tính đó.

Định nghĩa tại dòng 1654 của file 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 nhận trước đó. nhận lệnh gọi byte hoặc chuỗi liên quan đến việc phân bổ bộ nhớ cần thiết từ xe hal. Để an toàn, bộ nhớ được phân bổ bởi hal xe phải được giải phóng bởi hal xe và dịch vụ mạng xe sẽ gọi điều này khi dữ liệu từ hal xe không còn cần thiết nữa. Việc triển khai hal phương tiện chỉ nên giải phóng thành viên của phương tiện_prop_value_t như data->str_value.data hoặc data->bytes_value.data chứ không phải bản thân dữ liệu vì dữ liệu được phân bổ từ dịch vụ mạng phương tiện. Khi bộ nhớ được giải phóng, con trỏ tương ứng sẽ được đặt thành NULL bu xe hal.

Định nghĩa tại dòng 1693 của file 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ổ hợp lý và không phải là NULL. Người gọi API SỞ HỮU trường dữ liệu. dấu thời gian của dữ liệu sẽ bị bỏ qua cho hoạt động đã thiết lập. Việc đặt một số thuộc tính yêu cầu phải có sẵn trạng thái ban đầu. Tùy thuộc vào loại xe, dữ liệu ban đầu như vậy có thể không có sẵn trong thời gian ngắn sau khi bắt đầu. Trong trường hợp đó, lệnh gọi đã đặt có thể trả về -EAGAIN giống như lệnh nhận cuộc gọi. Đối với thuộc tính có điều khiển nguồn riêng biệt, việc đặt có thể không thành công nếu thuộc tính không được bật nguồn. Trong trường hợp như vậy, hal sẽ trả về lỗi -ESHUTDOWN.

Định nghĩa tại dòng 1706 của file Vehicle.h .

int(* subscribe)(struct Vehicle_hw_device *device, int32_t prop, float sample_rate, vùng int32_t)

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

Thông số
thiết bị
chống đỡ
tỷ lệ mẫu
khu vực Tất cả các vùng đã đăng ký cho tài sản được khoanh vùng. có thể được bỏ qua đối với tài sản không được khoanh vùng. 0 có nghĩa là tất cả các vùng được hỗ trợ thay vì không có vùng nào.

Định nghĩa tại dòng 1723 của file Vehicle.h .

int(* hủy đăng ký)(struct Vehicle_hw_device *device, int32_t prop)

Hủy đăng ký trên một tài sản.

Định nghĩa tại dòng 1727 của file Vehicle.h .


Tài liệu cho cấu trúc này được tạo từ tệp sau:
  • phần cứng/libhardware/bao gồm/phần cứng/ xe.h