การอ้างอิงโครงสร้าง vehicle_hw_device
#include < vehicle.h >
เขตข้อมูล | |
โครงสร้าง hw_device_t | ทั่วไป |
อินท์(* | init )(struct vehicle_hw_device *อุปกรณ์ vehicle_event_callback_fn event_fn ยานพาหนะ_error_callback_fn err_fn) |
อินท์(* | ปล่อย )(struct vehicle_hw_device *อุปกรณ์) |
vehicle_prop_config_t const *(* | list_properties )(struct vehicle_hw_device *อุปกรณ์, int *num_properties) |
อินท์(* | รับ )(struct vehicle_hw_device *อุปกรณ์, vehicle_prop_value_t *data) |
เป็นโมฆะ(* | release_memory_from_get ) (struct vehicle_hw_device * อุปกรณ์, vehicle_prop_value_t * data) |
อินท์(* | ชุด )(struct vehicle_hw_device *อุปกรณ์, const vehicle_prop_value_t *data) |
อินท์(* | สมัครสมาชิก ) (struct vehicle_hw_device * อุปกรณ์, int32_t prop, float Sample_rate, โซน int32_t) |
อินท์(* | ยกเลิกการสมัคร )(struct vehicle_hw_device *อุปกรณ์, int32_t prop) |
อินท์(* | ดัมพ์ )(struct vehicle_hw_device *อุปกรณ์, int fd) |
คำอธิบายโดยละเอียด
เอกสารภาคสนาม
struct hw_device_t ทั่วไป |
int(* dump)(struct vehicle_hw_device *อุปกรณ์, int fd) |
พิมพ์สถานะการดีบักสำหรับฮาลของยานพาหนะ บริการเครือข่ายของยานพาหนะจะเรียกสิ่งนี้ และจะรวมไว้ในดัมพ์ของบริการ
ตัวอธิบายไฟล์ที่ส่งผ่านสามารถใช้เพื่อเขียนข้อความการดีบักโดยใช้ dprintf() หรือ write() ข้อความควรอยู่ในการเข้ารหัส ASCII เท่านั้น
ต้องการประสิทธิภาพการทำงาน:
นี่จะต้องเป็นการโทรที่ไม่บล็อค HAL ควรกลับจากการโทรนี้ใน 1 มิลลิวินาที และต้องกลับจากการโทรนี้ใน 10 มิลลิวินาที การเรียกนี้ต้องหลีกเลี่ยงการหยุดชะงัก เนื่องจากอาจถูกเรียก ณ จุดใดจุดหนึ่งของการดำเนินการ การซิงโครไนซ์พื้นฐานใดๆ ที่ใช้ (เช่น ล็อค mutex หรือเซมาฟอร์) ควรได้รับพร้อมกับการหมดเวลา
int (* รับ) (struct vehicle_hw_device * อุปกรณ์, vehicle_prop_value_t * data) |
รับมูลค่าทรัพย์สินรถทันที ข้อมูลควรได้รับการจัดสรรอย่างเหมาะสม ผู้เรียก API เป็นเจ้าของช่องข้อมูล ผู้เรียกจะตั้งค่า data->prop, data->value_type และเลือกค่าโซนสำหรับคุณสมบัติโซน แต่การใช้งาน HAL จำเป็นต้องกรอกรายการทั้งหมดอย่างถูกต้องเมื่อส่งคืน สำหรับประเภทตัวชี้ การใช้งาน HAL ควรจัดสรรหน่วยความจำที่จำเป็น และผู้เรียกมีหน้าที่รับผิดชอบในการเรียก release_memory_from_get ซึ่งอนุญาตให้ HAL ปล่อยหน่วยความจำที่จัดสรร สำหรับคุณสมบัติประเภท VEHICLE_PROP_CHANGE_MODE_STATIC get ควรส่งคืนค่าเดียวกันเสมอ สำหรับประเภทคุณสมบัติ VEHICLE_PROP_CHANGE_MODE_ON_CHANGE ควรส่งคืนค่าล่าสุด หากยังไม่มีข้อมูลซึ่งสามารถเกิดขึ้นได้ในช่วงเริ่มต้น การโทรนี้ควรส่งคืนทันทีพร้อมรหัสข้อผิดพลาด -EAGAIN
int(* init)(struct vehicle_hw_device *อุปกรณ์, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
vehicle_prop_config_t const * (* list_properties) (struct vehicle_hw_device * อุปกรณ์, int * num_properties) |
ระบุคุณสมบัติที่มีอยู่ทั้งหมด รายการจะถูกส่งกลับใน "รายการ"
- พารามิเตอร์
num_properties จำนวนคุณสมบัติที่มีอยู่ในอาร์เรย์ที่ปรับแต่งใหม่
- การส่งคืน
- อาร์เรย์ของการกำหนดค่าคุณสมบัติที่รถคันนี้รองรับ โปรดทราบว่าข้อมูลที่ส่งคืนคือ const และผู้โทรไม่สามารถแก้ไขได้ การใช้งาน HAL ควรเก็บหน่วยความจำนี้ไว้จนกว่า HAL จะออกเพื่อหลีกเลี่ยงการคัดลอกอีกครั้ง
int (* release) (struct vehicle_hw_device * อุปกรณ์) |
ก่อนที่จะโทรปิดผู้ใช้ควรทำลายฟังก์ชันการโทรกลับที่ลงทะเบียนไว้ ในกรณีที่การโทร unsubscribe() ไม่ได้ถูกเรียกในคุณสมบัติทั้งหมดก่อน release() ดังนั้น release() จะยกเลิกการสมัครคุณสมบัตินั้นเอง
เป็นโมฆะ (* release_memory_from_get) (struct vehicle_hw_device * อุปกรณ์, vehicle_prop_value_t * data) |
ปล่อยหน่วยความจำที่จัดสรรให้กับข้อมูลในการรับสายครั้งก่อน รับการเรียกไบต์หรือสตริงที่เกี่ยวข้องกับการจัดสรรหน่วยความจำที่จำเป็นจากยานพาหนะ เพื่อความปลอดภัย หน่วยความจำที่จัดสรรโดย Hal ของรถควรถูกปล่อยออกมาโดย Hal ของรถ และบริการเครือข่ายของรถจะเรียกสิ่งนี้เมื่อไม่จำเป็นต้องใช้ข้อมูลจาก Hal ของรถอีกต่อไป การใช้งาน vehicle hal ควรปล่อยสมาชิกของ vehicle_prop_value_t เท่านั้น เช่น data->str_value.data หรือ data->bytes_value.data แต่ไม่ควรปล่อยตัวข้อมูลเอง เนื่องจากข้อมูลได้รับการจัดสรรจากบริการเครือข่ายของยานพาหนะ เมื่อหน่วยความจำว่างแล้ว ตัวชี้ที่เกี่ยวข้องควรตั้งค่าเป็น NULL bu vehicle hal
int(* set)(struct vehicle_hw_device *อุปกรณ์, const vehicle_prop_value_t *data) |
กำหนดมูลค่าทรัพย์สินของยานพาหนะ ข้อมูลควรได้รับการจัดสรรอย่างถูกต้องและไม่ใช่ NULL ผู้เรียก API เป็นเจ้าของช่องข้อมูล การประทับเวลาของข้อมูลจะถูกละเว้นสำหรับการดำเนินการที่ตั้งไว้ การตั้งค่าคุณสมบัติบางอย่างจำเป็นต้องมีสถานะเริ่มต้นที่พร้อมใช้งาน ข้อมูลเริ่มต้นดังกล่าวอาจไม่สามารถใช้ได้ในช่วงเวลาสั้นๆ หลังจากเริ่มต้น ทั้งนี้ขึ้นอยู่กับห้องโถงของยานพาหนะ ในกรณีเช่นนี้ set call สามารถส่งกลับ -EAGAIN ได้เหมือนกับการรับสาย สำหรับคุณสมบัติที่มีการควบคุมพลังงานแยกกัน การตั้งค่าอาจล้มเหลวหากคุณสมบัติไม่ได้เปิดอยู่ ในกรณีเช่นนี้ hal ควรส่งคืนข้อผิดพลาด -ESHUTDOWN
int (* สมัครสมาชิก) (struct vehicle_hw_device * อุปกรณ์, int32_t prop, float Sample_rate, โซน int32_t) |
สมัครสมาชิกกิจกรรม ขึ้นอยู่กับเอาต์พุตของ list_properties หากคุณสมบัติเป็น: ก) การเปลี่ยนแปลง: ควรตั้งค่าตัวอย่างอัตราเป็น 0 b) รองรับความถี่: ควรตั้งค่าตัวอย่างอัตราจาก min_sample_rate ถึง max_sample_rate สำหรับคุณสมบัติประเภทที่เปลี่ยนแปลง บริการเครือข่ายรถยนต์จะโทรอีกครั้งเพื่อตรวจสอบสถานะเริ่มต้น ด้วยเหตุนี้ การใช้งานระบบ Hal ของยานพาหนะจึงไม่จำเป็นต้องส่งสถานะเริ่มต้นสำหรับคุณสมบัติประเภทที่มีการเปลี่ยนแปลง
- พารามิเตอร์
อุปกรณ์ ข้อเสนอ ตัวอย่าง_อัตรา โซน โซนที่สมัครเป็นสมาชิกทั้งหมดสำหรับคุณสมบัติโซน สามารถละเว้นได้สำหรับคุณสมบัติที่ไม่ใช่โซน 0 หมายถึงทุกโซนได้รับการสนับสนุน แทนที่จะเป็นไม่มีโซน
int (* ยกเลิกการสมัคร) (struct vehicle_hw_device * อุปกรณ์, int32_t prop) |
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
- ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / vehicle.h