อินเทอร์เฟซ Sensors HAL ซึ่งประกาศไว้ใน sensors.h แสดงถึงอินเทอร์เฟซระหว่าง เฟรมเวิร์ก Android กับซอฟต์แวร์เฉพาะฮาร์ดแวร์ การติดตั้งใช้งาน HAL ต้องกำหนดฟังก์ชันแต่ละฟังก์ชัน ที่ประกาศไว้ใน sensors.h โดยฟังก์ชันหลักมีดังนี้
get_sensors_list- แสดงผลรายการเซ็นเซอร์ทั้งหมดactivate- เริ่มหรือหยุดเซ็นเซอร์batch- ตั้งค่าพารามิเตอร์ของเซ็นเซอร์ เช่น ความถี่ในการสุ่มตัวอย่างและเวลาในการตอบสนองสูงสุดในการรายงานsetDelay- ใช้ใน HAL เวอร์ชัน 1.0 เท่านั้น ตั้งค่าความถี่ในการสุ่มตัวอย่างสำหรับเซ็นเซอร์ที่ระบุflush- ล้าง FIFO ของเซ็นเซอร์ที่ระบุและรายงานเหตุการณ์การล้างข้อมูลเสร็จสมบูรณ์ เมื่อดำเนินการเสร็จpoll- แสดงผลเหตุการณ์เซ็นเซอร์ที่พร้อมใช้งาน
การติดตั้งใช้งานต้องปลอดภัยต่อการทำงานแบบมัลติเธรดและอนุญาตให้เรียกฟังก์ชันเหล่านี้จากเธรดต่างๆ ได้
นอกจากนี้ อินเทอร์เฟซยังกำหนดประเภทต่างๆ ที่ฟังก์ชันเหล่านั้นใช้ ประเภทหลักๆ ได้แก่
sensors_module_tsensors_poll_device_tsensor_tsensors_event_t
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทเหล่านั้นได้ที่ sensors.h นอกเหนือจากส่วนด้านล่าง
get_sensors_list(list)
int (*get_sensors_list)(struct sensors_module_t* module, struct sensor_t const** list);
แสดงรายการเซ็นเซอร์ที่ HAL ติดตั้งใช้งาน ดูรายละเอียดเกี่ยวกับวิธีกำหนดเซ็นเซอร์ได้ที่ sensor_t
ลำดับที่เซ็นเซอร์ปรากฏในรายการคือลำดับที่ระบบจะรายงาน เซ็นเซอร์ไปยังแอปพลิเคชัน โดยปกติแล้ว เซ็นเซอร์พื้นฐานจะปรากฏ ก่อน ตามด้วยเซ็นเซอร์แบบผสม
หากเซ็นเซอร์หลายตัวใช้ประเภทเซ็นเซอร์และพร็อพเพอร์ตี้การปลุกเดียวกัน ระบบจะเรียกเซ็นเซอร์ตัวแรก
ในรายการว่าเซ็นเซอร์ "เริ่มต้น" ซึ่งเป็นเซ็นเซอร์ที่
getDefaultSensor(int sensorType, bool wakeUp) แสดงผล
ฟังก์ชันนี้จะแสดงผลจำนวนเซ็นเซอร์ในรายการ
activate(sensor, true/false)
int (*activate)(struct sensors_poll_device_t *dev, int sensor_handle, int enabled);
เปิดหรือปิดใช้งานเซ็นเซอร์
sensor_handle คือแฮนเดิลของเซ็นเซอร์ที่จะเปิด/ปิดใช้งาน ระบบจะกำหนดแฮนเดิลของเซ็นเซอร์โดยช่อง handle ของโครงสร้าง sensor_t
ตั้งค่า enabled เป็น 1 เพื่อเปิดใช้ หรือ 0 เพื่อปิดใช้เซ็นเซอร์
เซ็นเซอร์แบบครั้งเดียวจะปิดใช้งานตัวเองโดยอัตโนมัติเมื่อได้รับเหตุการณ์
และยังต้องยอมรับการปิดใช้งานผ่านการเรียก activate(...,
enabled=0)
เซ็นเซอร์ที่ไม่ปลุกระบบจะไม่ป้องกันไม่ให้ SoC เข้าสู่โหมดพักระบบ นั่นคือ HAL จะไม่ถือเวคล็อกบางส่วนในนามของแอปพลิเคชัน
เซ็นเซอร์ปลุกระบบเมื่อส่งเหตุการณ์อย่างต่อเนื่องจะป้องกันไม่ให้ SoC เข้าสู่โหมดพักระบบได้ แต่หากไม่มีเหตุการณ์ที่ต้องส่ง ระบบจะต้องปล่อยเวคล็อกบางส่วน
หาก enabled เป็น 1 และเซ็นเซอร์เปิดใช้งานอยู่แล้ว ฟังก์ชันนี้จะไม่ดำเนินการใดๆ
และจะสำเร็จ
หาก enabled เป็น 0 และเซ็นเซอร์ปิดใช้งานอยู่แล้ว ฟังก์ชันนี้จะไม่ดำเนินการใดๆ
และจะสำเร็จ
ฟังก์ชันนี้จะแสดงผล 0 หากสำเร็จ และแสดงผลตัวเลขข้อผิดพลาดที่เป็นค่าลบในกรณีอื่นๆ
batch(sensor, flags, sampling period, maximum report latency)
int (*batch)(
struct sensors_poll_device_1* dev,
int sensor_handle,
int flags,
int64_t sampling_period_ns,
int64_t max_report_latency_ns);ตั้งค่าพารามิเตอร์ของเซ็นเซอร์ ซึ่งรวมถึง ความถี่ในการสุ่มตัวอย่าง และ เวลาในการตอบสนองสูงสุดในการรายงาน คุณเรียกฟังก์ชันนี้ได้ขณะที่เซ็นเซอร์เปิดใช้งานอยู่ ซึ่งใน กรณีนี้ ฟังก์ชันต้องไม่ทำให้การวัดเซ็นเซอร์สูญหาย การเปลี่ยนจากอัตราการสุ่มตัวอย่างหนึ่งไปยังอีกอัตราหนึ่งต้องไม่ทำให้เหตุการณ์สูญหาย และการเปลี่ยนจากเวลาในการตอบสนองสูงสุดในการรายงานสูงไปยังเวลาในการตอบสนองสูงสุดในการรายงานต่ำก็ต้องไม่ทำให้เหตุการณ์สูญหายเช่นกัน
sensor_handle คือแฮนเดิลของเซ็นเซอร์ที่จะกำหนดค่า
ปัจจุบันไม่ได้ใช้ flags
sampling_period_ns คือระยะเวลาการสุ่มตัวอย่างที่เซ็นเซอร์
ควรทำงาน โดยมีหน่วยเป็นนาโนวินาที ดูรายละเอียดเพิ่มเติมได้ที่ sampling_period_ns
max_report_latency_ns คือเวลาสูงสุดที่เหตุการณ์อาจล่าช้าก่อนที่จะรายงานผ่าน HAL โดยมีหน่วยเป็นนาโนวินาที ดูรายละเอียดเพิ่มเติมได้ที่ย่อหน้า max_report_latency_ns
ฟังก์ชันนี้จะแสดงผล 0 หากสำเร็จ และแสดงผลตัวเลขข้อผิดพลาดที่เป็นค่าลบในกรณีอื่นๆ
setDelay(sensor, sampling period)
int (*setDelay)(
struct sensors_poll_device_t *dev,
int sensor_handle,
int64_t sampling_period_ns);หลังจาก HAL เวอร์ชัน 1.0 ฟังก์ชันนี้จะเลิกใช้งานแล้วและจะไม่ถูกเรียกใช้
แต่จะเรียกใช้ฟังก์ชัน batch เพื่อตั้งค่า
sampling_period_ns พารามิเตอร์แทน
ใน HAL เวอร์ชัน 1.0 ระบบใช้ setDelay แทน batch เพื่อตั้งค่า sampling_period_ns
flush(sensor)
int (*flush)(struct sensors_poll_device_1* dev, int sensor_handle);
เพิ่มเหตุการณ์การล้างข้อมูลเสร็จสมบูรณ์ที่ท้าย FIFO ของฮาร์ดแวร์สำหรับเซ็นเซอร์ที่ระบุและล้าง FIFO ระบบจะส่งเหตุการณ์เหล่านั้นตามปกติ (เช่น ราวกับว่าเวลาในการตอบสนองสูงสุดในการรายงาน หมดลงแล้ว) และนำออกจาก FIFO
การล้างข้อมูลจะเกิดขึ้นแบบอะซิงโครนัส (เช่น ฟังก์ชันนี้ต้องแสดงผลทันที) หากการติดตั้งใช้งานใช้ FIFO เดียวสำหรับเซ็นเซอร์หลายตัว ระบบจะล้าง FIFO นั้นและเพิ่มเหตุการณ์การล้างข้อมูลเสร็จสมบูรณ์สำหรับเซ็นเซอร์ที่ระบุเท่านั้น
หากเซ็นเซอร์ที่ระบุไม่มี FIFO (บัฟเฟอร์ไม่ได้) หรือหาก FIFO,
ว่างเปล่าในขณะที่เรียกใช้ flush ฟังก์ชันนี้จะต้องสำเร็จและ
ส่งเหตุการณ์การล้างข้อมูลเสร็จสมบูรณ์สำหรับเซ็นเซอร์นั้น ซึ่งใช้ได้กับเซ็นเซอร์ทั้งหมด ยกเว้นเซ็นเซอร์แบบครั้งเดียว
เมื่อเรียกใช้ flush แม้ว่าเหตุการณ์การล้างข้อมูลจะอยู่ใน
FIFO สำหรับเซ็นเซอร์นั้นอยู่แล้ว ระบบก็ต้องสร้างเหตุการณ์เพิ่มเติมและเพิ่มลงในท้าย
ของ FIFO และต้องล้าง FIFO จำนวนการเรียกใช้ flush
ต้องเท่ากับจำนวนเหตุการณ์การล้างข้อมูลเสร็จสมบูรณ์ที่สร้างขึ้น
flush ใช้ไม่ได้กับ เซ็นเซอร์
แบบครั้งเดียว หาก sensor_handle อ้างอิงถึงเซ็นเซอร์แบบครั้งเดียว
flush ต้องแสดงผล -EINVAL และไม่สร้าง
เหตุการณ์ข้อมูลเมตาการล้างข้อมูลเสร็จสมบูรณ์
ฟังก์ชันนี้จะแสดงผล 0 หากสำเร็จ -EINVAL หากเซ็นเซอร์ที่ระบุเป็นเซ็นเซอร์แบบ
ครั้งเดียวหรือไม่ได้เปิดใช้ และแสดงผลตัวเลขข้อผิดพลาดที่เป็นค่าลบในกรณีอื่นๆ
poll()
int (*poll)(struct sensors_poll_device_t *dev, sensors_event_t* data, int
count);แสดงผลอาร์เรย์ของข้อมูลเซ็นเซอร์โดยการป้อนอาร์กิวเมนต์ data ฟังก์ชันนี้
ต้องบล็อกจนกว่าเหตุการณ์จะพร้อมใช้งาน โดยจะแสดงผลจำนวนเหตุการณ์ที่อ่านได้
หากสำเร็จ หรือแสดงผลตัวเลขข้อผิดพลาดที่เป็นค่าลบในกรณีที่เกิดข้อผิดพลาด
จำนวนเหตุการณ์ที่แสดงผลใน data ต้องน้อยกว่าหรือเท่ากับ
อาร์กิวเมนต์ count ฟังก์ชันนี้จะไม่แสดงผล 0 (ไม่มีเหตุการณ์) เด็ดขาด
ลำดับการเรียกใช้
เมื่ออุปกรณ์บูต ระบบจะเรียกใช้ get_sensors_list
เมื่อเซ็นเซอร์เปิดใช้งาน ระบบจะเรียกใช้ฟังก์ชัน batch พร้อมพารามิเตอร์ที่ขอ
ตามด้วย activate(..., enable=1)
โปรดทราบว่าใน HAL เวอร์ชัน 1_0 ลำดับจะกลับกัน โดยระบบจะเรียกใช้ activate ก่อน ตามด้วย set_delay
เมื่อลักษณะที่ขอของเซ็นเซอร์มีการเปลี่ยนแปลงขณะที่เซ็นเซอร์เปิดใช้งานอยู่ ระบบจะเรียกใช้ฟังก์ชัน batch
flush สามารถเรียกใช้ได้ทุกเมื่อ แม้ในเซ็นเซอร์ที่ไม่ได้เปิดใช้งาน (ในกรณีนี้
ฟังก์ชันต้องแสดงผล -EINVAL)
เมื่อเซ็นเซอร์ปิดใช้งาน ระบบจะเรียกใช้ activate(..., enable=0)
ระบบจะเรียกใช้ฟังก์ชัน poll ซ้ำๆ เพื่อ
ขอข้อมูลควบคู่ไปกับการเรียกใช้ฟังก์ชันเหล่านั้น คุณเรียกใช้ poll ได้แม้ว่าจะไม่มีเซ็นเซอร์เปิดใช้งานอยู่
sensors_module_t
sensors_module_t คือประเภทที่ใช้สร้างโมดูลฮาร์ดแวร์ Android
สำหรับเซ็นเซอร์ การติดตั้งใช้งาน HAL ต้องกำหนดออบเจ็กต์
HAL_MODULE_INFO_SYM ของประเภทนี้เพื่อแสดงฟังก์ชัน get_sensors_list ดู
คำจำกัดความของ sensors_module_t ใน sensors.h และคำจำกัดความของ hw_module_t
เพื่อดูข้อมูลเพิ่มเติม
sensors_poll_device_t / sensors_poll_device_1_t
sensors_poll_device_1_t มีเมธอดที่เหลือที่กำหนดไว้ข้างต้น ได้แก่
activate, batch, flush และ
poll ช่อง common (ประเภท hw_device_t)
กำหนดหมายเลขเวอร์ชันของ HAL
sensor_t
sensor_t แสดงถึงเซ็นเซอร์ Android ช่องที่สำคัญบางช่องมีดังนี้
name: สตริงที่ผู้ใช้มองเห็นได้ซึ่งแสดงถึงเซ็นเซอร์ สตริงนี้มักจะมี ชื่อชิ้นส่วนของเซ็นเซอร์พื้นฐาน ประเภทของเซ็นเซอร์ และ ระบุว่าเป็นเซ็นเซอร์ปลุกระบบหรือไม่ เช่น "LIS2HH12 Accelerometer", "MAX21000 Uncalibrated Gyroscope", "BMP280 Wake-up Barometer", "MPU6515 Game Rotation Vector"
handle: จำนวนเต็มที่ใช้เพื่ออ้างอิงถึงเซ็นเซอร์เมื่อลงทะเบียนกับเซ็นเซอร์หรือ สร้างเหตุการณ์จากเซ็นเซอร์
type: ประเภทของเซ็นเซอร์ ดูคำอธิบายประเภทเซ็นเซอร์ได้ที่ What are Android sensors? เพื่อดูรายละเอียดเพิ่มเติม และดู Sensor types สำหรับประเภทเซ็นเซอร์อย่างเป็นทางการ สำหรับประเภทเซ็นเซอร์ที่ไม่เป็นทางการ type ต้องขึ้นต้นด้วย SENSOR_TYPE_DEVICE_PRIVATE_BASE
stringType: ประเภทของเซ็นเซอร์เป็นสตริง เมื่อเซ็นเซอร์มีประเภทอย่างเป็นทางการ ให้ตั้งค่าเป็น SENSOR_STRING_TYPE_* เมื่อ
เซ็นเซอร์มีประเภทเฉพาะของผู้ผลิต stringType ต้อง
ขึ้นต้นด้วยชื่อโดเมนย้อนกลับของผู้ผลิต ตัวอย่างเช่น เซ็นเซอร์ (เช่น ตัวตรวจจับยูนิคอร์น) ที่ทีม Cool-product ของ Fictional-Company กำหนดอาจใช้ stringType=”com.fictional_company.cool_product.unicorn_detector”
The stringType ใช้เพื่อระบุประเภทเซ็นเซอร์ที่ไม่เป็นทางการ
โดยไม่ซ้ำกัน ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทและประเภทสตริงได้ที่ sensors.h
requiredPermission: สตริงที่แสดงถึงสิทธิ์
ที่แอปพลิเคชันต้องมีเพื่อดูเซ็นเซอร์ ลงทะเบียนกับเซ็นเซอร์ และรับ
ข้อมูลจากเซ็นเซอร์ สตริงว่างหมายความว่าแอปพลิเคชันไม่จำเป็นต้องมีสิทธิ์ใดๆ ในการ
เข้าถึงเซ็นเซอร์นี้ เซ็นเซอร์บางประเภท เช่น เครื่องวัดอัตราการเต้นของหัวใจ มี
ที่บังคับ requiredPermission เซ็นเซอร์ทั้งหมดที่ให้ข้อมูลผู้ใช้ที่ละเอียดอ่อน (เช่น อัตราการเต้นของหัวใจ) ต้องได้รับการปกป้องด้วยสิทธิ์
flags: แฟล็กสำหรับเซ็นเซอร์นี้ ซึ่งกำหนดโหมดการรายงานของเซ็นเซอร์และระบุว่าเป็นเซ็นเซอร์ปลุกระบบหรือไม่
ตัวอย่างเช่น เซ็นเซอร์ปลุกระบบแบบครั้งเดียว
จะมี flags = SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP บิตของ
แฟล็กที่ไม่ได้ใช้ใน HAL เวอร์ชันปัจจุบันต้องมีค่าเท่ากับ 0
maxRange: ค่าสูงสุดที่เซ็นเซอร์รายงานได้ โดยมีหน่วยเดียวกับค่าที่
รายงาน เซ็นเซอร์ต้องรายงานค่าได้โดยไม่เกิดการอิ่มตัว
ภายใน [-maxRange; maxRange] โปรดทราบว่านี่หมายความว่าช่วงทั้งหมดของ
เซ็นเซอร์ในความหมายทั่วไปคือ 2*maxRange เมื่อเซ็นเซอร์รายงานค่าใน
หลายแกน ช่วงจะใช้กับแต่ละแกน ตัวอย่างเช่น มาตรวัดความเร่ง "+/- 2g"
จะรายงาน maxRange = 2*9.81 = 2g
resolution: ความแตกต่างของค่าที่เล็กที่สุดที่เซ็นเซอร์วัดได้
โดยปกติจะคำนวณตาม maxRange และจำนวนบิตในการวัด
power: ค่าพลังงานในการเปิดใช้เซ็นเซอร์ โดยมีหน่วยเป็นมิลลิแอมป์
ค่านี้มักจะสูงกว่าการใช้พลังงานที่รายงานใน
เอกสารข้อมูลของเซ็นเซอร์พื้นฐาน ดูรายละเอียดเพิ่มเติมได้ที่ Base sensors != physical
sensors และดูรายละเอียดเกี่ยวกับวิธีวัดการใช้พลังงานของเซ็นเซอร์ได้ที่ Power measurement
process
หากการใช้พลังงานของเซ็นเซอร์ขึ้นอยู่กับว่าอุปกรณ์กำลังเคลื่อนที่หรือไม่ การ
ใช้พลังงานขณะเคลื่อนที่คือค่าที่รายงานในช่อง power
minDelay: สำหรับเซ็นเซอร์แบบต่อเนื่อง ระยะเวลาการสุ่มตัวอย่าง โดยมีหน่วยเป็น
ไมโครวินาที ซึ่งสอดคล้องกับอัตราที่เร็วที่สุดที่เซ็นเซอร์รองรับ ดูรายละเอียดเกี่ยวกับวิธีใช้ค่านี้ได้ที่ sampling_period_ns สำหรับ
โปรดทราบว่า minDelay แสดงเป็นไมโครวินาที ขณะที่ sampling_period_ns แสดงเป็นนาโนวินาที สำหรับเซ็นเซอร์โหมดการรายงานแบบเมื่อมีการเปลี่ยนแปลงและแบบพิเศษ เว้นแต่จะระบุไว้เป็นอย่างอื่น
ต้องเป็น 0minDelay สำหรับเซ็นเซอร์แบบครั้งเดียว ค่านี้
ต้องเป็น -1
maxDelay: สำหรับเซ็นเซอร์แบบต่อเนื่องและแบบเมื่อมีการเปลี่ยนแปลง ระยะเวลาการสุ่มตัวอย่าง
โดยมีหน่วยเป็นไมโครวินาที ซึ่งสอดคล้องกับอัตราที่ช้าที่สุดที่เซ็นเซอร์
รองรับ ดูรายละเอียดเกี่ยวกับวิธีใช้ค่านี้ได้ที่ sampling_period_ns สำหรับ
โปรดทราบว่า maxDelay แสดงเป็นไมโครวินาที ขณะที่ sampling_period_ns แสดงเป็นนาโนวินาที สำหรับเซ็นเซอร์แบบพิเศษและแบบครั้งเดียว maxDelay ต้องเป็น
0
fifoReservedEventCount: จำนวนเหตุการณ์ที่สงวนไว้สำหรับเซ็นเซอร์นี้ใน
FIFO ของฮาร์ดแวร์ หากมี FIFO เฉพาะสำหรับเซ็นเซอร์นี้
fifoReservedEventCount จะเป็นขนาดของ FIFO เฉพาะนี้ หาก FIFO ใช้ร่วมกับเซ็นเซอร์อื่นๆ fifoReservedEventCount จะเป็นขนาดของส่วน FIFO ที่สงวนไว้สำหรับเซ็นเซอร์นั้น ในระบบ FIFO ที่ใช้ร่วมกันส่วนใหญ่และใน
ระบบที่ไม่มี FIFO ของฮาร์ดแวร์ ค่านี้จะเป็น 0
fifoMaxEventCount: จำนวนเหตุการณ์สูงสุดที่จัดเก็บได้
ใน FIFO สำหรับเซ็นเซอร์นี้ ค่านี้จะมากกว่าหรือเท่ากับ
fifoReservedEventCount เสมอ ค่านี้ใช้เพื่อประมาณว่า
FIFO จะเต็มเร็วแค่ไหนเมื่อลงทะเบียนกับเซ็นเซอร์ในอัตราที่เฉพาะเจาะจง
โดยสมมติว่าไม่มีเซ็นเซอร์อื่นๆ เปิดใช้งานอยู่ ในระบบที่ไม่มี
FIFO ของฮาร์ดแวร์ fifoMaxEventCount จะเป็น 0 ดูรายละเอียดเพิ่มเติมได้ที่ การจัดกลุ่ม
สำหรับเซ็นเซอร์ที่มีประเภทเซ็นเซอร์อย่างเป็นทางการ เฟรมเวิร์กจะเขียนทับบางช่อง
ตัวอย่างเช่น ระบบจะบังคับให้เซ็นเซอร์มาตรวัดความเร่ง
มีโหมดการรายงานแบบต่อเนื่อง และบังคับให้เครื่องวัดอัตราการเต้นของหัวใจได้รับการปกป้องด้วยสิทธิ์SENSOR_PERMISSION_BODY_SENSORS
sensors_event_t
เหตุการณ์เซ็นเซอร์ที่เซ็นเซอร์ Android สร้างขึ้นและรายงานผ่านฟังก์ชัน poll จะมี type sensors_event_t ช่องที่สำคัญบางช่องของ sensors_event_t มีดังนี้
version: ต้องเป็น sizeof(struct sensors_event_t)
เซ็นเซอร์: แฮนเดิลของเซ็นเซอร์ที่สร้างเหตุการณ์ ซึ่งกำหนดโดย
sensor_t.handle
type: ประเภทเซ็นเซอร์ของเซ็นเซอร์ที่สร้างเหตุการณ์ ซึ่งกำหนดโดย
sensor_t.type.
timestamp: การประทับเวลาของเหตุการณ์ โดยมีหน่วยเป็นนาโนวินาที ซึ่งเป็นเวลาที่เกิดเหตุการณ์ (มีการก้าวเดินหรือมีการวัดตัวตรวจวัดความเร่ง) ไม่ใช่เวลาที่รายงานเหตุการณ์ timestamp ต้องซิงค์กับนาฬิกา
elapsedRealtimeNano และในกรณีของเซ็นเซอร์แบบต่อเนื่อง การกระตุก
ต้องมีน้อย บางครั้งจำเป็นต้องกรองการประทับเวลาเพื่อให้เป็นไปตามข้อกำหนด CDD
เนื่องจากหากใช้เฉพาะเวลาอินเทอร์รัปต์ SoC เพื่อตั้งค่าการประทับเวลา
จะทำให้เกิดการกระตุกมากเกินไป และหากใช้เฉพาะเวลาชิปเซ็นเซอร์เพื่อตั้งค่าการประทับเวลา
อาจทำให้เกิดการยกเลิกการซิงค์จากนาฬิกา
elapsedRealtimeNano เนื่องจากนาฬิกาเซ็นเซอร์มีการเลื่อน
data and overlapping fields: ค่าที่เซ็นเซอร์วัดได้
ความหมายและหน่วยของช่องเหล่านั้นจะขึ้นอยู่กับประเภทเซ็นเซอร์แต่ละประเภท
ดูคำอธิบายช่องข้อมูลได้ที่ sensors.h และคำจำกัดความของ เซ็นเซอร์ประเภทต่างๆ สำหรับเซ็นเซอร์บางประเภท ระบบจะรายงานความแม่นยำของการอ่านเป็นส่วนหนึ่งของข้อมูลด้วย
ผ่านช่อง status ระบบจะส่งช่องนี้ผ่านเฉพาะเซ็นเซอร์บางประเภทเท่านั้น โดยจะปรากฏที่เลเยอร์ SDK เป็นค่าความแม่นยำ สำหรับเซ็นเซอร์เหล่านั้น ระบบจะระบุข้อเท็จจริงที่ว่าต้องตั้งค่าช่องสถานะไว้ในคำจำกัดความประเภทเซ็นเซอร์
เหตุการณ์ข้อมูลเมตาการล้างข้อมูลเสร็จสมบูรณ์
เหตุการณ์ข้อมูลเมตามีประเภทเดียวกับเหตุการณ์เซ็นเซอร์ปกติ:
sensors_event_meta_data_t = sensors_event_t. ระบบจะแสดงผลเหตุการณ์เหล่านี้พร้อมกับ
เหตุการณ์เซ็นเซอร์อื่นๆ ผ่าน poll โดยมีช่องต่อไปนี้
version: ต้องเป็น META_DATA_VERSION
type: ต้องเป็น SENSOR_TYPE_META_DATA
sensor, reserved, and timestamp: ต้องเป็น 0
meta_data.what: มีประเภทข้อมูลเมตาสำหรับเหตุการณ์นี้ ปัจจุบันมีข้อมูลเมตาที่ถูกต้องเพียงประเภทเดียว นั่นคือ META_DATA_FLUSH_COMPLETE
เหตุการณ์ META_DATA_FLUSH_COMPLETE แสดงถึงการล้าง FIFO ของเซ็นเซอร์
เสร็จสมบูรณ์ เมื่อ meta_data.what=META_DATA_FLUSH_COMPLETE, meta_data.sensor
จะต้องตั้งค่าเป็นแฮนเดิลของเซ็นเซอร์ที่ล้างข้อมูลแล้ว ระบบจะสร้างเหตุการณ์เหล่านี้เมื่อและเมื่อเรียกใช้ flush ในเซ็นเซอร์เท่านั้น ดูข้อมูลเพิ่มเติมได้ที่ส่วนเกี่ยวกับ
ฟังก์ชัน flush