Dalam rilis L Android, kami menghentikan dukungan untuk beberapa HAL sensor
versi. Satu-satunya versi yang didukung adalah SENSORS_DEVICE_API_VERSION_1_0
dan SENSORS_DEVICE_API_VERSION_1_3
.
Dalam rilis berikutnya, kami kemungkinan juga akan menghentikan dukungan untuk 1_0.
1_0 tidak memiliki konsep pengelompokan. Jika memungkinkan, semua perangkat yang menggunakan 1_0 SEHARUSNYA upgrade ke 1_3.
1_1 dan 1_2 mengalami definisi yang buruk dari konsep batch, dan tidak didukung lagi
Semua perangkat yang saat ini menggunakan 1_1 atau 1_2 HARUS meng-upgrade ke 1_3.
Di 1_3, kami menyederhanakan konsep pengelompokan, dan kami memperkenalkan bangun sensor.
Untuk mengupgrade ke 1_3, ikuti perubahan yang tercantum di bawah.
Mengimplementasikan fungsi batch
Bahkan jika Anda tidak mengimplementasikan pengelompokan (perangkat keras Anda tidak memiliki FIFO), Anda harus
mengimplementasikan fungsi batch
. batch
digunakan untuk menyetel
periode pengambilan sampel dan latensi pelaporan maksimum untuk sensor tertentu. Ini
menggantikan setDelay
. setDelay
tidak akan dipanggil
lagi.
Jika tidak mengimplementasikan pengelompokan, Anda dapat mengimplementasikan batch
dengan
cukup memanggil fungsi setDelay
yang ada dengan
Parameter sampling_period_ns
.
Mengimplementasikan fungsi flush
Bahkan jika Anda tidak mengimplementasikan batch, Anda harus mengimplementasikan metode
Fungsi flush
.
Jika Anda tidak mengimplementasikan pengelompokan, flush
harus membuatnya
Peristiwa META_DATA_FLUSH_COMPLETE
dan hasilkan 0 (berhasil).
Ubah sensor_poll_device_t.common.version Anda
your_poll_device.common.version = SENSORS_DEVICE_API_VERSION_1_3
Tambahkan kolom baru ke definisi sensor
Saat menentukan setiap sensor, selain sensor_t biasa bidang:
.name = "My magnetic field Sensor", .vendor = "My company", .version = 1, .handle = mag_handle, .type = SENSOR_TYPE_MAGNETIC_FIELD, .maxRange = 200.0f, .resolution = CONVERT_M, .power = 5.0f, .minDelay = 16667,
Anda juga harus menyetel kolom baru, yang ditentukan antara 1_0 dan 1_3:
.fifoReservedEventCount = 0, .fifoMaxEventCount = 0, .stringType = 0, .requiredPermission = 0, .maxDelay = 200000 .flags = SENSOR_FLAG_CONTINUOUS_MODE,
fifoReservedEventCount: Jika tidak menerapkan pengelompokan, tetapkan nilai ini ke 0.
fifoMaxEventCount: Jika tidak mengimplementasikan pengelompokan, tetapkan nilai ini ke 0
stringType: Setel ke 0 untuk semua sensor Android resmi (yang didefinisikan di sensor.h), karena nilai ini akan ditimpa oleh framework. Sebagai sensor tidak resmi, lihat sensor_t untuk detail tentang cara mengaturnya.
requiredPermission: Ini adalah izin yang akan diperlukan aplikasi untuk mendapatkan
akses ke sensor. Anda biasanya dapat mengaturnya
dengan 0 untuk semua sensor,
tetapi sensor dengan jenis HEART_RATE
harus menyetelnya ke SENSOR_PERMISSION_BODY_SENSORS.
maxPenundaan: Nilai ini penting dan Anda harus menyetelnya sesuai dengan kemampuan sensor dan drivernya.
Nilai ini hanya ditentukan untuk sensor berkelanjutan dan saat berubah. Ini adalah
penundaan di antara dua kejadian sensor yang sesuai dengan frekuensi terendah
didukung sensor. Saat frekuensi yang lebih rendah diminta melalui
Fungsi batch
, peristiwa akan dihasilkan dengan frekuensi ini
sebagai gantinya. Alat ini dapat digunakan oleh framework atau aplikasi untuk memperkirakan kapan
FIFO batch mungkin penuh. Jika nilai ini tidak disetel dengan benar, CTS akan gagal.
Untuk sensor satu kali dan mode pelaporan khusus, tetapkan maxDelay
ke 0.
Untuk sensor berkelanjutan, tetapkan ke periode pengambilan sampel maksimum yang diizinkan dalam dalam mikrodetik.
Hal berikut berlaku untuk period_ns
, maxDelay
, dan minDelay
:
period_ns
dalam nanodetik sedangkanmaxDelay
/minDelay
dalam mikrodetik.maxDelay
harus selalu pas dalam bilangan bulat 32-bit yang ditandai. Ini dideklarasikan sebagai 64-bit pada arsitektur 64-bit hanya karena alasan kompatibilitas biner.
flag: Kolom ini menentukan mode pelaporan sensor dan apakah sensor sensor bangun.
Jika Anda tidak mengimplementasikan batching, dan hanya beralih dari 1.0 ke 1.3, atur ini menjadi:
SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ONE_SHOT_MODE
untuk satu kali
sensor
SENSOR_FLAG_CONTINUOUS_MODE
untuk continuous
sensor SENSOR_FLAG_ON_CHANGE_MODE
untuk saat berubah
sensor kecuali kedekatan
SENSOR_FLAG_SPECIAL_REPORTING_MODE
untuk sensor dengan khusus
mode pelaporan kecuali untuk kemiringan
pendeteksi.
SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ON_CHANGE_MODE
untuk sensor kedekatan dan sensor detektor kemiringan resmi Android.
Catatan saat mengupgrade dari 1_1 atau 1_2
- Sekarang fungsi
batch
hampir selalu berhasil, bahkan untuk sensor yang tidak mendukung batching, terlepas dari nilai argumen waktu tunggu. Satu-satunya kasus di mana fungsibatch
mungkin gagal adalah error internal, atausensor_handle,
atau negatifsampling_period_ns
ataumax_report_latency_ns
negatif. - Apakah sensor mendukung pengelompokan ditentukan oleh apakah sensor memiliki
fifoMaxEventCount
lebih besar dari 0. (Di versi sebelumnya, berdasarkan nilai yang ditampilkanbatch()
.) - Sensor yang mendukung pengelompokan selalu ada dalam istilah yang kita sebut
mode” di versi sebelumnya: meskipun parameter
max_report_latency_ns
adalah 0, sensor tetap harus dikelompokkan, yang berarti peristiwa harus disimpan dalam FIFO ketika SoC beralih ke mode ditangguhkan. - Parameter
flags
dari fungsibatch
adalah tidak digunakan lagi.DRY_RUN
danWAKE_UPON_FIFO_FULL
adalah tidak digunakan lagi, dan tidak akan pernah diteruskan ke fungsibatch
. - Argumen waktu tunggu batch sekarang disebut sebagai
Argumen
max_report_latency
.