Tham chiếu cấu trúc xe_hw_device

Tham chiếu cấu trúc xe_hw_device

#include < vehicle.h >

Trường dữ liệu

struct hw_device_t phổ thông
int (* init ) (struct xe_hw_device * thiết bị, xe_event_callback_fn event_fn, xe_error_callback_fn err_fn)
int (* phát hành ) (struct xe_hw_device * thiết bị)
xe_prop_config_t const * (* list_properties ) (struct xe_hw_device * device, int * num_properties)
int (* get ) (cấu trúc xe_hw_device * thiết bị, dữ liệu xe_prop_value_t *)
void (* release_memory_from_get ) (cấu trúc xe_hw_device * thiết bị, dữ liệu xe_prop_value_t *)
int (* set ) (struct xe_hw_device * device, const car_prop_value_t * data)
int (* subscribe ) (struct xe_hw_device * device, int32_t prop, float sample_rate, int32_t zone)
int (* hủy đăng ký ) (struct xe_hw_device * thiết bị, int32_t prop)
int (* dump ) (struct xe_hw_device * device, int fd)

miêu tả cụ thể

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

Tài liệu thực địa

struct hw_device_t common

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

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

In ra trạng thái gỡ lỗi cho nửa xe. Điều này sẽ được gọi bởi dịch vụ mạng xe và sẽ được đưa vào 'bãi chứ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à một cuộc gọi không chặn. HAL sẽ trở lại từ cuộc gọi này sau 1ms, phải trở lại từ cuộc gọi này sau 10ms. Cuộc gọi này phải tránh deadlock, vì nó có thể được gọi tại bất kỳ điểm hoạt động nào. Bất kỳ nguyên thủy đồng bộ hóa nào được sử dụng (chẳng hạn như khóa mutex hoặc semaphores) phải được thu thập với thời gian chờ.

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

int (* get) (cấu trúc xe_hw_device * thiết bị, dữ liệu xe_prop_value_t *)

Nhận ngay giá trị tài sản xe. dữ liệu cần được cấp phát đúng cách. 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 phải điền đúng tất cả các mục nhập khi trả về. Đối với kiểu con trỏ, việc triển khai HAL phải cấp phát bộ nhớ cần thiết và trình gọi chịu trách nhiệm gọi release_memory_from_get, cho phép HAL giải phóng bộ nhớ được cấp phát. Đố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ó dữ liệu nào có thể xảy ra trong giai đoạn đầu, thì 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 xe.h.

int (* init) (struct xe_hw_device * device, xe_event_callback_fn event_fn, xe_error_callback_fn err_fn)

Sau khi mở cuộc gọi trên thiết bị, người dùng nên đăng ký các 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 tệp xe.h.

xe_prop_config_t const * (* list_properties) (struct xe_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ả lại trong "danh sách".

Thông số
num_properties số lượng thuộc tính có trong mảng đã sửa lại.
Lợi nhuận
mảng cấu hình thuộc tính được hỗ trợ bởi ô tô 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.

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

int (* release) (struct xe_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 release () thì release () sẽ tự hủy đăng ký các thuộc tính đó.

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

void (* release_memory_from_get) (struct xe_hw_device * thiết bị, xe_prop_value_t * dữ liệu)

Giải phóng bộ nhớ được cấp cho dữ liệu trong cuộc gọi nhận trước đó. nhận cuộc gọi cho byte hoặc chuỗi liên quan đến việc cấp phát bộ nhớ cần thiết từ nửa xe. Để an toàn, bộ nhớ được phân bổ bởi nửa xe nên được giải phóng bởi nửa xe và dịch vụ mạng phương tiện sẽ gọi điều này khi dữ liệu từ nửa xe không còn cần thiết. việc triển khai một nửa phương tiện chỉ nên giải phóng thành viên của xe_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ì bản thân dữ liệu được cấp phát 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 tệp xe.h.

int (* set) (struct xe_hw_device * device, const car_prop_value_t * data)

Đặt giá trị thuộc tính xe. dữ liệu phải được cấp phát đúng cách và không phải 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 thiết lập một số thuộc tính yêu cầu phải có trạng thái ban đầu. Tùy thuộc vào số lượng xe, dữ liệu ban đầu đó có thể không có sẵn trong thời gian ngắn sau khi bắt đầu. Trong trường hợp đó, đặt cuộc gọi có thể trả về -EAGAIN giống như nhận cuộc gọi. Đối với thuộc tính có điều khiển nguồn riêng, thiết lập có thể không thành công nếu thuộc tính không được bật. Trong trường hợp này, hal sẽ trả về lỗi -ESHUTDOWN.

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

int (* subscribe) (struct xe_hw_device * device, int32_t prop, float sample_rate, int32_t zone)

Đă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: a) on-change: sample_rate phải được đặt thành 0. b) tần suất hỗ trợ: sample_rate phải được đặt từ min_sample_rate thành 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 cuộc gọi nhận khác để kiểm tra trạng thái ban đầu. Do đó, việc triển khai một nửa xe không cần phải gửi trạng thái ban đầu cho loại thuộc tính khi thay đổi.

Thông số
thiết bị
chống đỡ
tỷ lệ mẫu
khu Tất cả các khu vực đã đă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 phân vùng. 0 có nghĩa là tất cả các vùng được hỗ trợ thay vì không có vùng.

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

int (* unsubscribe) (struct xe_hw_device * thiết bị, 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 tệp xe.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