เซนเซอร์ HAL 1.0

อินเทอร์เฟซ Sensors HAL ที่ประกาศใน sensors.h แสดงถึงอินเทอร์เฟซระหว่าง เฟรมเวิร์ก Android และซอฟต์แวร์เฉพาะฮาร์ดแวร์ การใช้งาน HAL จะต้องกำหนดแต่ละฟังก์ชันที่ประกาศในเซ็นเซอร์ 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

นอกเหนือจากส่วนด้านล่าง โปรดดู sensor.h สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทเหล่านั้น

get_sensors_list (รายการ)

int (*get_sensors_list)(struct sensors_module_t* module, struct sensor_t
  const** list);

แสดงรายการเซ็นเซอร์ที่ HAL ใช้งาน ดู sensor_t สำหรับรายละเอียดเกี่ยวกับวิธีการกำหนดเซ็นเซอร์

ลำดับที่เซ็นเซอร์ปรากฏในรายการคือลำดับที่เซ็นเซอร์จะถูกรายงานไปยังแอปพลิเคชัน โดยปกติแล้ว เซ็นเซอร์ฐานจะปรากฏก่อน ตามด้วยเซ็นเซอร์คอมโพสิต

หากเซ็นเซอร์หลายตัวใช้ประเภทเซ็นเซอร์และคุณสมบัติการปลุกเหมือนกัน เซ็นเซอร์ตัวแรกในรายการจะเรียกว่าเซ็นเซอร์ "ค่าเริ่มต้น" มันเป็นอันที่ส่งคืนโดย getDefaultSensor(int sensorType, bool wakeUp)

ฟังก์ชันนี้จะส่งคืนจำนวนเซ็นเซอร์ในรายการ

เปิดใช้งาน (เซ็นเซอร์ จริง/เท็จ)

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 เข้าสู่โหมด Suspend; นั่นคือ HAL จะไม่ระงับการทำงานบางส่วนในนามของแอปพลิเคชัน

เซ็นเซอร์การปลุกเมื่อส่งเหตุการณ์อย่างต่อเนื่องสามารถป้องกันไม่ให้ SoC เข้าสู่โหมด Suspend ได้ แต่หากไม่จำเป็นต้องส่งเหตุการณ์ใดๆ จะต้องปล่อยล็อคปลุกบางส่วน

หาก 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_term_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

ล้าง (เซ็นเซอร์)

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 หากเซ็นเซอร์ที่ระบุเป็นเซ็นเซอร์แบบ one-shot หรือไม่ได้เปิดใช้งาน และจะมีหมายเลขข้อผิดพลาดเป็นลบ

แบบสำรวจความคิดเห็น()

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 ได้แม้ว่าจะไม่ได้เปิดใช้งานเซ็นเซอร์ก็ตาม

เซ็นเซอร์_โมดูล_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 / เซ็นเซอร์_poll_device_1_t

sensors_poll_device_1_t มีวิธีการที่เหลือที่กำหนดไว้ข้างต้น: activate , batch , flush และ poll ฟิลด์ common (ประเภท hw_device_t ) กำหนดหมายเลขเวอร์ชันของ HAL

เซ็นเซอร์_t

sensor_t แสดงถึง เซ็นเซอร์ Android นี่คือบางสาขาที่สำคัญ:

ชื่อ: สตริงที่ผู้ใช้มองเห็นซึ่งแสดงถึงเซ็นเซอร์ สตริงนี้มักประกอบด้วยชื่อชิ้นส่วนของเซ็นเซอร์ที่ซ่อนอยู่ ประเภทของเซ็นเซอร์ และไม่ว่าจะเป็นเซ็นเซอร์ปลุกหรือไม่ ตัวอย่างเช่น “LIS2HH12 Accelerometer”, “MAX21000 Gyroscope ที่ไม่ได้ปรับเทียบ”, “BMP280 Wake-up Barometer”, “MPU6515 Game Rotation Vector”

หมายเลขอ้างอิง: จำนวนเต็มที่ใช้อ้างถึงเซ็นเซอร์เมื่อลงทะเบียนหรือสร้างเหตุการณ์จากเซ็นเซอร์

ประเภท: ประเภทของเซ็นเซอร์ ดูคำอธิบายประเภทเซ็นเซอร์ใน เซ็นเซอร์ Android คืออะไร สำหรับรายละเอียดเพิ่มเติม และดู ประเภทเซ็นเซอร์ สำหรับประเภทเซ็นเซอร์อย่างเป็นทางการ สำหรับประเภทเซ็นเซอร์ที่ไม่เป็นทางการ type ต้องขึ้นต้นด้วย SENSOR_TYPE_DEVICE_PRIVATE_BASE

stringType: ประเภทของเซ็นเซอร์เป็นสตริง เมื่อเซ็นเซอร์มีประเภทอย่างเป็นทางการ ให้ตั้งค่าเป็น SENSOR_STRING_TYPE_* เมื่อเซ็นเซอร์มีประเภทเฉพาะของผู้ผลิต stringType จะต้องขึ้นต้นด้วยชื่อโดเมนย้อนกลับของผู้ผลิต ตัวอย่างเช่น เซ็นเซอร์ (เช่น เครื่องตรวจจับยูนิคอร์น) ที่กำหนดโดยทีมงาน Cool-product ที่ Fictional-Company สามารถใช้ stringType=”com.fictional_company.cool_product.unicorn_detector” stringType ใช้เพื่อระบุประเภทเซ็นเซอร์ที่ไม่เป็นทางการโดยเฉพาะ ดู sensors.h สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทและประเภทสตริง

requiredPermission: สตริงที่แสดงถึงการอนุญาตที่แอปพลิเคชันต้องมีเพื่อดูเซ็นเซอร์ ลงทะเบียน และรับข้อมูล สตริงว่างหมายความว่าแอปพลิเคชันไม่จำเป็นต้องได้รับอนุญาตใดๆ เพื่อเข้าถึงเซ็นเซอร์นี้ เซ็นเซอร์บางประเภท เช่น เครื่องวัดอัตราการเต้นของหัวใจ จำเป็น requiredPermission เซ็นเซอร์ทั้งหมดที่ให้ข้อมูลผู้ใช้ที่ละเอียดอ่อน (เช่น อัตราการเต้นของหัวใจ) จะต้องได้รับการปกป้องโดยได้รับอนุญาต

ธง: ธงสำหรับเซ็นเซอร์นี้ กำหนดโหมดการรายงานของเซ็นเซอร์และเซ็นเซอร์นั้นเป็นเซ็นเซอร์ปลุกหรือไม่ ตัวอย่างเช่น เซ็นเซอร์ปลุกแบบช็อตเดียวจะมี flags = SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP บิตของแฟล็กที่ไม่ได้ใช้ในเวอร์ชัน HAL ปัจจุบันต้องเหลือเท่ากับ 0

maxRange: ค่าสูงสุดที่เซ็นเซอร์สามารถรายงานได้ ในหน่วยเดียวกับค่าที่รายงาน เซ็นเซอร์จะต้องสามารถรายงานค่าโดยไม่ทำให้อิ่มตัวภายใน [-maxRange; maxRange] . โปรดทราบว่านี่หมายถึงช่วงรวมของเซ็นเซอร์ในแง่ทั่วไปคือ 2*maxRange เมื่อเซนเซอร์รายงานค่าบนหลายแกน ช่วงจะใช้กับแต่ละแกน ตัวอย่างเช่น มาตรความเร่ง “+/- 2g” จะรายงาน maxRange = 2*9.81 = 2g

ความละเอียด: ค่าความแตกต่างน้อยที่สุดที่เซ็นเซอร์สามารถวัดได้ โดยปกติจะคำนวณตาม maxRange และจำนวนบิตในการวัด

พลังงาน: ค่าพลังงานในการเปิดใช้งานเซ็นเซอร์ มีหน่วยเป็นมิลลิแอมป์ ซึ่งเกือบจะมากกว่าเสมอเมื่อเทียบกับการใช้พลังงานที่รายงานในแผ่นข้อมูลของเซ็นเซอร์พื้นฐาน ดู เซ็นเซอร์ฐาน != เซ็นเซอร์ทางกายภาพ สำหรับรายละเอียดเพิ่มเติม และดู กระบวนการวัดพลังงาน สำหรับรายละเอียดเกี่ยวกับวิธีการวัดการใช้พลังงานของเซ็นเซอร์ หากการใช้พลังงานของเซ็นเซอร์ขึ้นอยู่กับว่าอุปกรณ์กำลังเคลื่อนที่หรือไม่ การใช้พลังงานขณะเคลื่อนที่จะเป็นค่าที่รายงานในสนาม power

minDelay: สำหรับเซ็นเซอร์ต่อเนื่อง ระยะเวลาสุ่มตัวอย่างเป็นไมโครวินาที ซึ่งสอดคล้องกับอัตราที่เร็วที่สุดที่เซ็นเซอร์รองรับ ดู sampling_ period_ns สำหรับรายละเอียดเกี่ยวกับวิธีการใช้ค่านี้ ระวังว่า minDelay จะแสดงเป็นไมโครวินาที ในขณะที่ sampling_period_ns อยู่ในหน่วยนาโนวินาที สำหรับเซ็นเซอร์โหมดการเปลี่ยนแปลงและการรายงานพิเศษ เว้นแต่จะระบุไว้เป็นอย่างอื่น minDelay ต้องเป็น 0 สำหรับเซ็นเซอร์แบบ one-shot จะต้องเป็น -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 โปรดดูรายละเอียดเพิ่มเติมที่ Batching

สำหรับเซนเซอร์ที่มีประเภทเซนเซอร์อย่างเป็นทางการ บางฟิลด์จะถูกเขียนทับโดยเฟรมเวิร์ก ตัวอย่างเช่น เซ็นเซอร์ มาตรความเร่ง ถูกบังคับให้มีโหมดการรายงานต่อเนื่อง และเครื่องวัด อัตราการเต้นของหัวใจ ถูกบังคับให้ได้รับการปกป้องโดยสิทธิ์ของ SENSOR_PERMISSION_BODY_SENSORS

เซ็นเซอร์_เหตุการณ์_t

เหตุการณ์เซ็นเซอร์ที่สร้างโดยเซ็นเซอร์ Android และรายงานผ่านฟังก์ชัน การสำรวจความคิดเห็น เป็น type sensors_event_t นี่คือฟิลด์สำคัญบางส่วนของ sensors_event_t :

เวอร์ชัน: ต้องเป็น sizeof(struct sensors_event_t)

เซ็นเซอร์: หมายเลขอ้างอิงของเซ็นเซอร์ที่สร้างเหตุการณ์ ตามที่กำหนดโดย sensor_t.handle

type: ประเภทเซ็นเซอร์ของเซ็นเซอร์ที่สร้างเหตุการณ์ ตามที่กำหนดโดย sensor_t.type

การประทับเวลา: การประทับเวลาของเหตุการณ์ในหน่วยนาโนวินาที นี่คือเวลาที่เหตุการณ์เกิดขึ้น (มีการก้าวหนึ่งก้าวหรือวัดความเร่ง) ไม่ใช่เวลาที่รายงานเหตุการณ์ timestamp จะต้องซิงโครไนซ์กับนาฬิกา elapsedRealtimeNano และในกรณีของเซ็นเซอร์ต่อเนื่อง ความกระวนกระวายใจจะต้องมีน้อย บางครั้งการกรองการประทับเวลาเป็นสิ่งจำเป็นเพื่อให้เป็นไปตามข้อกำหนดของ CDD เนื่องจากการใช้เวลาขัดจังหวะ SoC เพื่อตั้งค่าการประทับเวลาเท่านั้นทำให้เกิดความกระวนกระวายใจสูงเกินไป และการใช้เวลาเพียงชิปเซ็นเซอร์ในการตั้งค่าการประทับเวลาอาจทำให้เกิดการยกเลิกการซิงโครไนซ์จากนาฬิกา elapsedRealtimeNano ได้ เนื่องจาก นาฬิกาเซนเซอร์เลื่อนไป

ข้อมูลและฟิลด์ที่ทับซ้อนกัน: ค่าที่วัดโดยเซ็นเซอร์ ความหมายและหน่วยของฟิลด์เหล่านั้นมีความเฉพาะเจาะจงสำหรับเซนเซอร์แต่ละประเภท ดู sensors.h และคำจำกัดความของ เซนเซอร์ประเภท ต่างๆ สำหรับคำอธิบายของช่องข้อมูล สำหรับเซ็นเซอร์บางตัว ความแม่นยำของการอ่านจะถูกรายงานเป็นส่วนหนึ่งของข้อมูลผ่านช่อง status ด้วย ฟิลด์นี้จะถูกส่งผ่านสำหรับประเภทเซ็นเซอร์ที่เลือกเท่านั้น โดยปรากฏที่เลเยอร์ SDK เป็นค่าความแม่นยำ สำหรับเซนเซอร์เหล่านั้น ข้อเท็จจริงที่ว่าต้องตั้งค่าฟิลด์สถานะจะระบุไว้ในคำจำกัดความ ประเภทเซนเซอร์

ข้อมูลเมตาล้างเหตุการณ์ที่เสร็จสมบูรณ์

เหตุการณ์ข้อมูลเมตามีประเภทเดียวกันกับเหตุการณ์เซ็นเซอร์ปกติ: sensors_event_meta_data_t = sensors_event_t โดยจะถูกส่งกลับพร้อมกับเหตุการณ์เซ็นเซอร์อื่นๆ ผ่านการสำรวจความคิดเห็น พวกเขามีฟิลด์ต่อไปนี้:

เวอร์ชัน: ต้องเป็น META_DATA_VERSION

ประเภท: ต้องเป็น SENSOR_TYPE_META_DATA

เซ็นเซอร์ สงวนไว้ และการประทับเวลา : ต้องเป็น 0

meta_data.what: มีประเภทข้อมูลเมตาสำหรับเหตุการณ์นี้ ขณะนี้มีประเภทข้อมูลเมตาที่ถูกต้องเพียงประเภทเดียว: META_DATA_FLUSH_COMPLETE

เหตุการณ์ META_DATA_FLUSH_COMPLETE แสดงถึงความสมบูรณ์ของการฟลัชเซ็นเซอร์ FIFO เมื่อ meta_data.what=META_DATA_FLUSH_COMPLETE จะต้องตั้ง meta_data.sensor ไว้ที่ที่จับของเซ็นเซอร์ที่ถูกฟลัช สิ่งเหล่านี้ถูกสร้างขึ้นเมื่อมีการเรียก flush บนเซ็นเซอร์เท่านั้น ดูส่วนฟังก์ชัน ฟลัช สำหรับข้อมูลเพิ่มเติม