Referensi Struktur vehicle_hw_device
#include < vehicle.h >
Bidang Data | |
struktur hw_device_t | umum |
int(* | init )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
int(* | rilis )(struct vehicle_hw_device *device) |
kendaraan_prop_config_t const *(* | list_properties )(struct vehicle_hw_device *device, int *num_properties) |
int(* | dapatkan )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
ruang kosong(* | 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(* | berlangganan )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
int(* | berhenti berlangganan )(struct vehicle_hw_device *device, int32_t prop) |
int(* | dump )(struct vehicle_hw_device *device, int fd) |
Detil Deskripsi
Dokumentasi Lapangan
struct hw_device_t umum |
int(* dump)(struct vehicle_hw_device *device, int fd) |
Cetak status debug untuk hal kendaraan. Ini akan dipanggil oleh layanan jaringan kendaraan dan akan dimasukkan ke dalam dump layanan.
Deskriptor file yang diteruskan dapat digunakan untuk menulis teks debug menggunakan dprintf() atau write(). Teks harus dalam penyandian ASCII saja.
Persyaratan kinerja:
Ini harus menjadi panggilan non-pemblokiran. HAL harus kembali dari panggilan ini dalam 1 md, harus kembali dari panggilan ini dalam 10 md. Panggilan ini harus menghindari kebuntuan, karena dapat dipanggil di setiap titik operasi. Setiap primitif sinkronisasi yang digunakan (seperti kunci mutex atau semaphore) harus diperoleh dengan batas waktu.
int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Dapatkan segera nilai properti kendaraan. data harus dialokasikan dengan benar. Pemanggil API MEMILIKI bidang data. Penelepon akan mengatur data->prop, data->value_type, dan secara opsional nilai zona untuk properti yang dikategorikan. Tetapi implementasi HAL perlu mengisi semua entri dengan benar saat kembali. Untuk tipe pointer, implementasi HAL harus mengalokasikan memori yang diperlukan dan pemanggil bertanggung jawab untuk memanggil release_memory_from_get, yang memungkinkan HAL untuk melepaskan memori yang dialokasikan. Untuk tipe properti VEHICLE_PROP_CHANGE_MODE_STATIC, get harus selalu mengembalikan nilai yang sama. Untuk tipe properti VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, itu harus mengembalikan nilai terbaru. Jika belum ada data yang tersedia, yang dapat terjadi selama tahap awal, panggilan ini harus segera kembali dengan kode kesalahan -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) |
Menghitung semua properti yang tersedia. Daftar dikembalikan dalam "daftar".
- Parameter
jumlah_properti jumlah properti yang terkandung dalam array yang disetel ulang.
- Kembali
- berbagai konfigurasi properti yang didukung oleh mobil ini. Perhatikan bahwa data yang dikembalikan adalah const dan pemanggil tidak dapat mengubahnya. Implementasi HAL harus menyimpan memori ini sampai HAL dilepaskan untuk menghindari penyalinan ini lagi.
int(* rilis)(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() maka release() akan berhenti berlangganan properti itu sendiri.
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Lepaskan memori yang dialokasikan untuk data pada panggilan get sebelumnya. get call untuk byte atau string melibatkan pengalokasian memori yang diperlukan dari hal kendaraan. Agar aman, memori yang dialokasikan oleh hal kendaraan harus dilepaskan oleh hal kendaraan dan layanan jaringan kendaraan akan memanggil ini ketika data dari hal kendaraan tidak lagi diperlukan. Implementasi hal kendaraan seharusnya hanya melepaskan 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, penunjuk yang sesuai harus disetel ke NULL bu kendaraan hal.
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
Tetapkan nilai properti kendaraan. data harus dialokasikan dengan benar dan tidak NULL. Pemanggil API MEMILIKI bidang data. stempel waktu data akan diabaikan untuk operasi yang disetel. Menyetel beberapa properti memerlukan status awal yang tersedia. Tergantung pada hal kendaraan, data awal tersebut mungkin tidak tersedia untuk waktu yang singkat setelah init. Dalam kasus seperti itu, set call dapat mengembalikan -EAGAIN seperti get call. Untuk properti dengan kontrol daya terpisah, set dapat gagal jika properti tidak dinyalakan. Dalam kasus seperti itu, hal harus mengembalikan kesalahan -ESHUTDOWN.
int(* berlangganan)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, zona int32_t) |
Berlangganan acara. Tergantung pada output dari list_properties jika propertinya adalah: a) on-change: sample_rate harus disetel ke 0. b) mendukung frekuensi: sample_rate harus disetel dari min_sample_rate ke max_sample_rate. Untuk jenis properti yang sedang diubah, layanan jaringan kendaraan akan membuat panggilan get lain untuk memeriksa keadaan awal. Oleh karena itu, implementasi hal kendaraan tidak perlu mengirimkan status awal untuk jenis properti yang sedang diubah.
- Parameter
perangkat menopang sample_rate zona Semua zona langganan untuk properti yang dikategorikan. dapat diabaikan untuk properti yang tidak dikategorikan. 0 berarti semua zona didukung alih-alih tidak ada zona.
int(* berhenti berlangganan)(struct vehicle_hw_device *device, int32_t prop) |
Dokumentasi untuk struct ini dibuat dari file berikut:
- hardware/libhardware/include/hardware/ kendaraan.h