เซนเซอร์ HAL 1.0

อินเตอร์เฟซเซนเซอร์ HAL ประกาศใน sensors.h หมายถึงอินเตอร์เฟซระหว่างนดรอยด์ กรอบ และซอฟต์แวร์เฉพาะฮาร์ดแวร์ การใช้งาน HAL ต้องกำหนดแต่ละฟังก์ชันที่ประกาศไว้ใน sensors.h หน้าที่หลักคือ:

  • get_sensors_list - กลับรายการของเซ็นเซอร์ทั้งหมด
  • activate - เริ่มหรือหยุดการเซ็นเซอร์
  • batch - ชุดพารามิเตอร์เซ็นเซอร์เช่นความถี่ในการสุ่มตัวอย่างและแฝงรายงานสูงสุด
  • setDelay - ใช้เฉพาะในรุ่น 1.0 HAL ตั้งค่าความถี่สุ่มตัวอย่างสำหรับเซ็นเซอร์ที่กำหนด
  • 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)

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

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

int (*activate)(struct sensors_poll_device_t *dev, int sensor_handle, int
  enabled);

เปิดหรือปิดเซ็นเซอร์

sensor_handle เป็นหมายเลขอ้างอิงของเซ็นเซอร์เพื่อเปิด / ปิด จับเซ็นเซอร์จะถูกกำหนดโดย handle ข้อมูลของ sensor_t โครงสร้าง

enabled ถูกกำหนดเป็น 1 เพื่อเปิดหรือปิดการใช้งาน 0 เซ็นเซอร์

เซ็นเซอร์ One-Shot ยกเลิกการใช้งานตัวเองโดยอัตโนมัติเมื่อได้รับเหตุการณ์และพวกเขายังคงต้องยอมรับที่จะปิดการใช้งานผ่านการเรียกไปยัง activate(..., enabled=0)

เซ็นเซอร์ที่ไม่ปลุกไม่ป้องกันไม่ให้ SoC เข้าสู่โหมดระงับ กล่าวคือ HAL จะไม่ล็อคการปลุกบางส่วนในนามของแอปพลิเคชัน

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

หาก enabled คือ 1 และเซ็นเซอร์จะถูกเปิดใช้งานแล้วฟังก์ชั่นนี้เป็นไม่มี-op และประสบความสำเร็จ

หาก enabled คือ 0 และเซ็นเซอร์จะถูกปิดการใช้งานแล้วฟังก์ชั่นนี้เป็นไม่มี-op และประสบความสำเร็จ

ฟังก์ชันนี้จะคืนค่า 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

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

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

แบบสำรวจ()

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

เซ็นเซอร์_t

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

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

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

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

stringType: ชนิดของเซ็นเซอร์เป็นสตริง เมื่อเซ็นเซอร์มีประเภทอย่างเป็นทางการกำหนดให้ SENSOR_STRING_TYPE_* * เมื่อเซ็นเซอร์มีประเภทผู้ผลิตเฉพาะ stringType ต้องเริ่มต้นด้วยชื่อโดเมนกลับของผู้ผลิต ยกตัวอย่างเช่นเซ็นเซอร์ (บอกว่าเครื่องตรวจจับยูนิคอร์น) ที่กำหนดโดยทีม Cool-สินค้าที่สวม- บริษัท สามารถใช้ 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: ค่าสูงสุดเซ็นเซอร์สามารถรายงานในหน่วยเดียวกันเป็นค่ารายงาน เซ็นเซอร์จะต้องสามารถรายงานค่าโดยไม่ต้อง saturating ภายใน [-maxRange; maxRange] โปรดทราบว่านี้หมายถึงช่วงทั้งหมดของเซ็นเซอร์ในความหมายทั่วไปคือ 2*maxRange เมื่อเซ็นเซอร์รายงานค่าในหลายแกน ช่วงจะใช้กับแต่ละแกน ยกตัวอย่างเช่น“+/- 2g” accelerometer จะรายงาน maxRange = 2*9.81 = 2g

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

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

minDelay: สำหรับเซ็นเซอร์อย่างต่อเนื่องระยะเวลาการสุ่มตัวอย่างใน microseconds สอดคล้องกับอัตราที่เร็วที่สุดเซ็นเซอร์สนับสนุน ดู sampling_period_ns สำหรับรายละเอียดเกี่ยวกับวิธีการค่านี้ถูกนำมาใช้ ระวังว่า minDelay จะแสดงในขณะที่ไมโคร sampling_period_ns อยู่ในนาโนวินาที สำหรับในการเปลี่ยนแปลงและเซ็นเซอร์โหมดรายงานพิเศษยกเว้นที่ระบุไว้เป็นอย่างอื่น minDelay จะต้องเป็น 0 สำหรับเซ็นเซอร์หนึ่งยิงมันจะต้องเป็น -1

maxDelay: สำหรับเซ็นเซอร์อย่างต่อเนื่องและการเปลี่ยนแปลงระยะเวลาการสุ่มตัวอย่างใน microseconds สอดคล้องกับอัตราที่ช้าที่สุดเซ็นเซอร์สนับสนุน ดู sampling_period_ns สำหรับรายละเอียดเกี่ยวกับวิธีการค่านี้ถูกนำมาใช้ ระวังว่า maxDelay จะแสดงในขณะที่ไมโคร sampling_period_ns อยู่ในนาโนวินาที สำหรับเซ็นเซอร์พิเศษและหนึ่งยิง maxDelay ต้องเป็น 0

fifoReservedEventCount: จำนวนของเหตุการณ์ที่สงวนไว้สำหรับเซ็นเซอร์นี้ในฮาร์ดแวร์ที่ FIFO หากมี FIFO เฉพาะสำหรับเซ็นเซอร์นี้แล้ว fifoReservedEventCount คือขนาดของ FIFO ทุ่มเทนี้ หาก FIFO ร่วมกับเซ็นเซอร์อื่น ๆ , fifoReservedEventCount คือขนาดของส่วนหนึ่งของ FIFO ที่สงวนไว้สำหรับเซ็นเซอร์ว่า บนระบบ FIFO ที่ใช้ร่วมกันส่วนใหญ่ และบนระบบที่ไม่มีฮาร์ดแวร์ FIFO ค่านี้คือ 0

fifoMaxEventCount: จำนวนสูงสุดของเหตุการณ์ที่อาจจะเก็บไว้ใน FIFOs สำหรับเซ็นเซอร์นี้ นี้อยู่เสมอมากกว่าหรือเท่ากับ fifoReservedEventCount ค่านี้ใช้เพื่อประเมินว่า FIFO จะเต็มเร็วเพียงใดเมื่อลงทะเบียนกับเซ็นเซอร์ในอัตราที่กำหนด หากไม่มีการเปิดใช้งานเซ็นเซอร์อื่น ในระบบที่ไม่ได้มี FIFO ฮาร์ดแวร์ fifoMaxEventCount เป็น 0 ดู เครื่องผสม สำหรับรายละเอียดเพิ่มเติม

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

sensors_event_t

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

รุ่น: ต้อง sizeof(struct sensors_event_t)

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

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

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