Sensors HAL 1.0

อินเทอร์เฟซ 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(รายการ)

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 หากดำเนินการสำเร็จ และแสดงผลจำนวนข้อผิดพลาดติดลบหากดำเนินการไม่สำเร็จ

กลุ่ม(เซ็นเซอร์, การแจ้ง, ระยะเวลาการสุ่มตัวอย่าง, เวลาในการตอบสนองของรายงานสูงสุด)

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 แทนการตั้งค่า sampling_period_ns

flush(sensor)

int (*flush)(struct sensors_poll_device_1* dev, int sensor_handle);

เพิ่ม flush เหตุการณ์โดยสมบูรณ์ลงในตอนท้ายของ FIFO ฮาร์ดแวร์สำหรับเซ็นเซอร์ที่ระบุ แล้วล้าง FIFO ระบบจะแสดงเหตุการณ์เหล่านั้นตามปกติ (เช่น เหมือนกับว่าเวลาในการตอบสนองสูงสุดของการรายงาน หมดอายุ) และนำออกจาก FIFO

การล้างข้อมูลจะเกิดขึ้นแบบไม่พร้อมกัน (กล่าวคือ ฟังก์ชันนี้ต้องแสดงผลทันที) หากการติดตั้งใช้งานใช้ FIFO รายการเดียวสําหรับเซ็นเซอร์หลายตัว ระบบจะล้าง FIFO รายการนั้นและเพิ่มเหตุการณ์การล้างข้อมูลเสร็จสมบูรณ์สําหรับเซ็นเซอร์ที่ระบุเท่านั้น

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

เมื่อมีการเรียก 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 สามารถเรียกใช้ได้ตลอดเวลา แม้ในเซ็นเซอร์ที่ไม่ได้เปิดใช้งาน (ซึ่งในกรณีนี้ 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 เพื่อดูข้อมูลเพิ่มเติม

เซ็นเซอร์_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 เซ็นเซอร์ ฟิลด์สําคัญบางส่วนมีดังนี้

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

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

type: ประเภทของเซ็นเซอร์ ดูคำอธิบายของเซ็นเซอร์ พิมพ์ในหัวข้อเซ็นเซอร์ 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

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

flags: Flag สำหรับเซ็นเซอร์นี้ ซึ่งจะกำหนดโหมดการรายงานของเซ็นเซอร์และระบุว่าเซ็นเซอร์เป็นเซ็นเซอร์ปลุกหรือไม่ เช่น เซ็นเซอร์การปลุกแบบยิงครั้งเดียวจะมี flags = SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP บิตของ Flag ที่ไม่ได้ใช้ใน 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 เว้นแต่จะระบุไว้เป็นอย่างอื่น สำหรับเซ็นเซอร์แบบช็อตเดียว ต้องเป็น -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

เซ็นเซอร์_เหตุการณ์_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 เมื่อนาฬิกาเซ็นเซอร์หลุด

ข้อมูลและช่องที่ทับซ้อนกัน: ค่าที่วัดโดยฟิลด์ เซ็นเซอร์ ความหมายและหน่วยของช่องเหล่านั้นจะเป็นข้อมูลเฉพาะของเซ็นเซอร์แต่ละตัว ประเภท ดูคำอธิบายของช่องข้อมูลได้ที่ 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 เพื่อดูข้อมูลเพิ่มเติม