Referensi Struct vehicle_hw_device
#include <
vehicle.h
>
Kolom Data |
|
struct hw_device_t | umum |
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) |
Deskripsi Mendetail
Dokumentasi Bidang
struct hw_device_t umum |
int(* dump)(struct vehicle_hw_device *device, int fd) |
Mencetak status proses debug untuk hal kendaraan. Ini akan dipanggil oleh layanan jaringan kendaraan dan akan disertakan dalam dump layanan.
Deskripsi file yang diteruskan dapat digunakan untuk menulis teks proses debug menggunakan dprintf() atau write(). Teks hanya boleh dalam encoding ASCII.
Persyaratan performa:
Panggilan ini harus berupa panggilan non-pemblokiran. HAL harus kembali dari panggilan ini dalam 1 md, harus kembali dari panggilan ini dalam 10 md. Panggilan ini harus menghindari deadlock, karena dapat dipanggil kapan saja selama operasi. Setiap primitif sinkronisasi yang digunakan (seperti kunci mutex atau semaphore) harus diperoleh dengan waktu tunggu.
int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Segera dapatkan nilai properti kendaraan. Data harus dialokasikan dengan benar. Pemanggil API MEMILIKI kolom data. Pemanggil akan menetapkan data->prop, data->value_type, dan nilai zona secara opsional untuk properti berzona. Namun, implementasi HAL harus mengisi semua entri dengan benar saat ditampilkan. Untuk jenis pointer, implementasi HAL harus mengalokasikan memori yang diperlukan dan pemanggil bertanggung jawab untuk memanggil release_memory_from_get, yang memungkinkan HAL melepaskan memori yang dialokasikan. Untuk jenis properti VEHICLE_PROP_CHANGE_MODE_STATIC, get harus selalu menampilkan nilai yang sama. Untuk jenis properti VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, properti ini akan menampilkan nilai terbaru. Jika belum ada data yang tersedia, yang dapat terjadi selama tahap awal, panggilan ini akan segera ditampilkan dengan kode error -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) |
Mengurutkan semua properti yang tersedia. Daftar ditampilkan dalam "list".
- Parameter
-
num_properties jumlah properti yang terdapat dalam array yang ditampilkan kembali.
- Hasil
- array konfigurasi properti yang didukung oleh mobil ini. Perhatikan bahwa data yang ditampilkan adalah const dan pemanggil tidak dapat mengubahnya. Penerapan HAL harus menyimpan memori ini hingga HAL dirilis untuk menghindari penyalinan lagi.
int(* release)(struct vehicle_hw_device *device) |
Sebelum memanggil close, pengguna harus menghancurkan fungsi callback yang terdaftar. Jika panggilan unsubscribe() tidak dipanggil di semua properti sebelum release() , release() akan membatalkan langganan properti itu sendiri.
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Lepaskan memori yang dialokasikan ke data dalam panggilan get sebelumnya. panggilan get untuk byte atau string melibatkan alokasi memori yang diperlukan dari hal kendaraan. Agar aman, memori yang dialokasikan oleh vehicle hal harus dirilis oleh vehicle hal dan layanan jaringan kendaraan akan memanggilnya saat data dari vehicle hal tidak lagi diperlukan. Implementasi vehicle hal hanya boleh merilis anggota vehicle_prop_value_t seperti data->str_value.data atau data->bytes_value.data, tetapi bukan data itu sendiri karena data itu sendiri dialokasikan dari layanan jaringan kendaraan. Setelah memori dibebaskan, pointer yang sesuai harus disetel ke NULL oleh hal kendaraan.
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
Menetapkan nilai properti kendaraan. Data harus dialokasikan dengan benar dan bukan NULL. Pemanggil API MEMILIKI kolom data. stempel waktu data akan diabaikan untuk operasi set. Menetapkan beberapa properti memerlukan status awal yang tersedia. Bergantung pada hal kendaraan, data awal tersebut mungkin tidak tersedia untuk waktu singkat setelah inisialisasi. Dalam hal ini, panggilan set dapat menampilkan -EAGAIN seperti panggilan get. Untuk properti dengan kontrol daya terpisah, penetapan dapat gagal jika properti tidak diaktifkan. Dalam hal ini, hal akan menampilkan error -ESHUTDOWN.
int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
Berlangganan peristiwa. Bergantung pada output list_properties jika propertinya adalah: a) on-change: sample_rate harus ditetapkan ke 0. b) mendukung frekuensi: sample_rate harus ditetapkan dari min_sample_rate ke max_sample_rate. Untuk jenis properti on-change, layanan jaringan kendaraan akan melakukan panggilan get lain untuk memeriksa status awal. Oleh karena itu, penerapan hal kendaraan tidak perlu mengirim status awal untuk jenis properti on-change.
- Parameter
-
perangkat properti sample_rate zona Semua zona yang dilanggani untuk properti berzona. dapat diabaikan untuk properti tanpa zona. 0 berarti semua zona didukung, bukan tidak ada zona.
int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop) |
Dokumentasi untuk struct ini dibuat dari file berikut:
- hardware/libhardware/include/hardware/ vehicle.h