อินเทอร์เฟซ HAL ของเซ็นเซอร์ซึ่งประกาศใน sensors.h จะแสดงอินเทอร์เฟซระหว่างเฟรมเวิร์ก Android กับซอฟต์แวร์เฉพาะฮาร์ดแวร์ การใช้งาน HAL ต้องกำหนดฟังก์ชันแต่ละรายการที่ประกาศไว้ใน sensors.h ฟังก์ชันหลัก ได้แก่
get_sensors_list
- แสดงรายการเซ็นเซอร์ทั้งหมดactivate
- เริ่มหรือหยุดเซ็นเซอร์batch
- ตั้งค่าพารามิเตอร์ของเซ็นเซอร์ เช่น ความถี่ในการสุ่มตัวอย่างและเวลาในการตอบสนองสูงสุดในการรายงานsetDelay
- ใช้เฉพาะใน HAL เวอร์ชัน 1.0 ตั้งค่าความถี่ในการสุ่มตัวอย่างสำหรับเซ็นเซอร์หนึ่งๆflush
- ล้าง FIFO ของเซ็นเซอร์ที่ระบุและรายงานเหตุการณ์การล้างข้อมูลเสร็จสมบูรณ์เมื่อดำเนินการเสร็จแล้วpoll
- แสดงเหตุการณ์เซ็นเซอร์ที่ใช้ได้
การใช้งานต้องปลอดภัยด้วยเทรดและอนุญาตให้เรียกใช้ฟังก์ชันเหล่านี้จากเทรดที่ต่างกัน
อินเทอร์เฟซยังกำหนดประเภทต่างๆ ที่ฟังก์ชันเหล่านั้นใช้ด้วย ประเภทหลักๆ มีดังนี้
sensors_module_t
sensors_poll_device_t
sensor_t
sensors_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
ลำดับที่เซ็นเซอร์ปรากฏในรายการคือลำดับที่เซ็นเซอร์จะรายงานไปยังแอปพลิเคชัน โดยปกติแล้ว เซ็นเซอร์ฐานจะปรากฏขึ้นก่อน ตามด้วยเซ็นเซอร์คอมโพสิต
หากเซ็นเซอร์หลายตัวใช้เซ็นเซอร์ประเภทเดียวกันและคุณสมบัติการปลุกระบบ เซ็นเซอร์แรกในรายการจะเรียกว่าเซ็นเซอร์ "เริ่มต้น" แต่เป็น URL ที่ 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 เมื่อสำเร็จ และตัวเลขข้อผิดพลาดลบ
แบตช์(เซ็นเซอร์, การแจ้งเตือน, ระยะเวลาการสุ่มตัวอย่าง, เวลาในการตอบสนองสูงสุดของรายงาน)
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(เซ็นเซอร์ ระยะเวลาการสุ่มตัวอย่าง)
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 แทนการตั้งค่า 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
ถึงแม้ว่าจะมี Flush Event อยู่ใน 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: ประเภทเซ็นเซอร์ ดูรายละเอียดเพิ่มเติมเกี่ยวกับคำอธิบายประเภทเซ็นเซอร์ได้ในเซ็นเซอร์ Android คืออะไร และดูประเภทเซ็นเซอร์อย่างเป็นทางการได้ในประเภทเซ็นเซอร์ สำหรับประเภทเซ็นเซอร์ที่ไม่ใช่ทางการ type
ต้องขึ้นต้นด้วย SENSOR_TYPE_DEVICE_PRIVATE_BASE
stringType: ประเภทของเซ็นเซอร์เป็นสตริง เมื่อเซ็นเซอร์มีประเภทอย่างเป็นทางการ ให้ตั้งค่าเป็น SENSOR_STRING_TYPE_*
เมื่อเซ็นเซอร์มีประเภทที่เฉพาะเจาะจงของผู้ผลิต stringType
ต้องขึ้นต้นด้วยชื่อโดเมนแบบย้อนกลับของผู้ผลิต เช่น เซ็นเซอร์ (เช่น ตัวตรวจจับยูนิคอร์น) ที่ทีมผลิตภัณฑ์ Cool ของ Fameal-Company กำหนดไว้ อาจใช้ stringType=”com.fictional_company.cool_product.unicorn_detector”
stringType
ใช้เพื่อระบุประเภทเซ็นเซอร์ที่ไม่เป็นทางการโดยไม่ซ้ำกัน ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทและประเภทสตริงได้ที่ sensors.h
requiredPermission: สตริงที่แสดงถึงสิทธิ์ที่แอปพลิเคชันต้องมีเพื่อดูเซ็นเซอร์ ลงทะเบียนกับเซ็นเซอร์ และรับข้อมูลของเซ็นเซอร์ สตริงว่างหมายความว่าแอปพลิเคชันไม่จำเป็นต้องมีสิทธิ์ใดๆ เพื่อเข้าถึงเซ็นเซอร์นี้ เซ็นเซอร์บางประเภท เช่น เครื่องวัดอัตราการเต้นของหัวใจ จะมีrequiredPermission
ที่ต้องระบุ เซ็นเซอร์ทั้งหมดที่ให้ข้อมูลที่ละเอียดอ่อนของผู้ใช้ (เช่น อัตราการเต้นของหัวใจ) ต้องได้รับการปกป้องด้วยสิทธิ์
flags: Flag สำหรับเซ็นเซอร์นี้ ซึ่งกำหนดโหมดการรายงานของเซ็นเซอร์และระบุว่าเซ็นเซอร์เป็นเซ็นเซอร์ปลุกหรือไม่ เช่น เซ็นเซอร์การปลุกแบบยิงครั้งเดียวจะมี 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: ต้นทุนพลังงานของการเปิดใช้เซ็นเซอร์เป็นมิลลิแอมป์
ซึ่งมักจะมากกว่าการใช้พลังงานที่รายงานในแผ่นข้อมูลของเซ็นเซอร์เบื้องหลัง ดูรายละเอียดเพิ่มเติมเกี่ยวกับเซ็นเซอร์ฐาน != เซ็นเซอร์ และดูรายละเอียดเกี่ยวกับวิธีวัดการใช้พลังงานของเซ็นเซอร์ในกระบวนการวัดพลังงาน
หากการสิ้นเปลืองพลังงานของเซ็นเซอร์ขึ้นอยู่กับว่าอุปกรณ์เคลื่อนไหวหรือไม่ การสิ้นเปลืองพลังงานขณะเคลื่อนไหวจะเป็นค่าที่รายงานในช่อง power
minDelay: สำหรับเซ็นเซอร์แบบต่อเนื่อง ระยะเวลาการสุ่มตัวอย่างเป็นไมโครวินาที ซึ่งสอดคล้องกับอัตราที่เร็วที่สุดที่เซ็นเซอร์รองรับ ดูรายละเอียดเกี่ยวกับวิธีใช้ค่านี้ที่ sampling_period_ns โปรดทราบว่า minDelay
แสดงเป็นไมโครวินาที ส่วน sampling_period_ns
แสดงเป็นนาโนวินาที สําหรับเซ็นเซอร์โหมดการรายงานแบบ "เมื่อเกิดการเปลี่ยนแปลง" และ "พิเศษ" minDelay
ต้องเท่ากับ 0 เว้นแต่จะระบุไว้เป็นอย่างอื่น สำหรับเซ็นเซอร์แบบจุดเดียว จะต้องเป็น -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: แฮนเดิลของเซ็นเซอร์ที่สร้างเหตุการณ์ ตามที่ระบุโดย sensor_t.handle
type: ประเภทเซ็นเซอร์ของเซ็นเซอร์ที่สร้างเหตุการณ์ ตามที่ระบุโดย sensor_t.type
timestamp: การประทับเวลาของเหตุการณ์เป็นนาโนวินาที ข้อมูลนี้คือเวลาที่เหตุการณ์เกิดขึ้น (มีการก้าวเดินหรือการวัดผลจากเครื่องวัดความเร่ง) ไม่ใช่เวลาที่รายงานเหตุการณ์ timestamp
ต้องซิงค์กับนาฬิกา elapsedRealtimeNano
และในกรณีของเซ็นเซอร์แบบต่อเนื่อง ความผันผวนของสัญญาณต้องน้อย บางครั้งการกรองการประทับเวลาก็จำเป็นเพื่อให้เป็นไปตามข้อกำหนดของ CDD เนื่องจากการใช้เพียงเวลารบกวน SoC ในการตั้งค่าการประทับเวลาทำให้เกิดเสียงรบกวนที่สูงเกินไป และการใช้เพียงเวลาชิปเซ็นเซอร์ในการตั้งค่าการประทับเวลาอาจทำให้การซิงโครไนซ์จากนาฬิกา elapsedRealtimeNano
ได้ เนื่องจากนาฬิกาเซ็นเซอร์หลุด
ข้อมูลและช่องที่ทับซ้อนกัน: ค่าที่เซ็นเซอร์วัด ความหมายและหน่วยของช่องเหล่านั้นจะเป็นข้อมูลเฉพาะสำหรับเซ็นเซอร์แต่ละประเภท ดูคำอธิบายของช่องข้อมูลได้ที่ sensors.h และคำจำกัดความของเซ็นเซอร์ประเภทต่างๆ สำหรับเซ็นเซอร์บางตัว จะมีการรายงานความแม่นยำของค่าที่อ่านได้เป็นส่วนหนึ่งของข้อมูลผ่านช่อง status
ด้วย ฟิลด์นี้จะ
ส่งผ่านเฉพาะสำหรับเซ็นเซอร์บางประเภทเท่านั้น โดยจะปรากฏที่เลเยอร์ SDK เป็นค่า
ความแม่นยำ สำหรับเซ็นเซอร์เหล่านั้น จะมีการกล่าวถึงการตั้งค่าช่องสถานะในคำจำกัดความประเภทเซ็นเซอร์
เหตุการณ์การล้างข้อมูลเมตาเสร็จสมบูรณ์
เหตุการณ์ข้อมูลเมตามีประเภทเดียวกับเหตุการณ์เซ็นเซอร์ปกติ ดังนี้
sensors_event_meta_data_t = sensors_event_t
ระบบจะแสดงผลพร้อมกับเหตุการณ์เซ็นเซอร์อื่นๆ ผ่านการสำรวจ โดยจะมีฟิลด์ต่อไปนี้
version: ต้องเท่ากับ META_DATA_VERSION
type: ต้องเป็น SENSOR_TYPE_META_DATA
sensor, reserved และ 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