ข้อมูลอ้างอิงเกี่ยวกับโครงสร้าง vehicle_hw_device

ข้อมูลอ้างอิงเกี่ยวกับโครงสร้าง vehicle_hw_device

#include < vehicle.h >

ฟิลด์ข้อมูล

struct hw_device_t   common
 
int(*  init )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)
 
int(*  release )(struct vehicle_hw_device *device)
 
vehicle_prop_config_t const *(*  list_properties )(struct vehicle_hw_device *device, int *num_properties)
 
int(*  get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data)
 
void(*  release_memory_from_get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data)
 
int(*  set )(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)
 
int(*  subscribe )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones)
 
int(*  unsubscribe )(struct vehicle_hw_device *device, int32_t prop)
 
int(*  dump )(struct vehicle_hw_device *device, int fd)
 

คำอธิบายโดยละเอียด

คําจํากัดความที่บรรทัด 1639 ของไฟล์ vehicle.h .

เอกสารประกอบในสนาม

struct hw_device_t common

คําจํากัดความที่บรรทัด 1640 ของไฟล์ vehicle.h .

int(* dump)(struct vehicle_hw_device *device, int fd)

พิมพ์สถานะการแก้ไขข้อบกพร่องสำหรับ HAL ของยานพาหนะ บริการเครือข่ายของยานพาหนะจะเรียกใช้ข้อมูลนี้และจะรวมไว้ในข้อมูลพุลของบริการ

สามารถใช้ตัวระบุไฟล์ที่ส่งผ่านเพื่อเขียนข้อความการแก้ไขข้อบกพร่องโดยใช้ dprintf() หรือ write() โดยข้อความควรเป็นการเข้ารหัส ASCII เท่านั้น

ข้อกำหนดด้านประสิทธิภาพ

ต้องเป็นคอลที่ไม่บล็อก HAL ควรกลับมาจากคอลนี้ใน 1 มิลลิวินาที ต้องกลับมาจากคอลนี้ใน 10 มิลลิวินาที การเรียกนี้ต้องหลีกเลี่ยงการเกิด Deadlock เนื่องจากอาจมีการเรียกใช้ ณ จุดใดก็ได้ของการดำเนินการ ควรใช้ค่าเริ่มต้นการซิงค์ที่ใช้ (เช่น ล็อกมิวเทคหรือเซมาโฟร์) ด้วยระยะหมดเวลา

คําจํากัดความที่บรรทัด 1744 ของไฟล์ vehicle.h .

int(* get)(struct vehicle_hw_device *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

คําจํากัดความที่บรรทัด 1681 ของไฟล์ vehicle.h .

หลังจากเรียกใช้ open ในอุปกรณ์แล้ว ผู้ใช้ควรลงทะเบียนการเรียกกลับสําหรับฟังก์ชันเหตุการณ์และข้อผิดพลาด

คําจํากัดความที่บรรทัด 1646 ของไฟล์ vehicle.h .

vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties)

แสดงรายการพร็อพเพอร์ตี้ทั้งหมดที่ใช้ได้ ระบบจะแสดงรายการใน "list"

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

คําจํากัดความที่บรรทัด 1663 ของไฟล์ vehicle.h .

int(* release)(struct vehicle_hw_device *device)

ก่อนที่จะเรียกใช้การปิด ผู้ใช้ควรทำลายฟังก์ชันการเรียกกลับที่ลงทะเบียนไว้ ในกรณีที่ไม่ได้เรียกใช้ unsubscribe() ในพร็อพเพอร์ตี้ทั้งหมดก่อนเรียกใช้ release() แล้ว release() จะยกเลิกการสมัครใช้บริการของพร็อพเพอร์ตี้เอง

คําจํากัดความที่บรรทัด 1654 ของไฟล์ vehicle.h .

void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

ปล่อยหน่วยความจำที่จัดสรรให้กับข้อมูลในการเรียกใช้ get ก่อนหน้า การเรียกใช้ get สำหรับไบต์หรือสตริงเกี่ยวข้องกับการจัดสรรหน่วยความจำที่จำเป็นจาก HAL ของยานพาหนะ เพื่อเป็นการปลอดภัย หน่วยความจำที่ HAL ของยานพาหนะจัดสรรไว้ควรได้รับการปล่อยโดย HAL ของยานพาหนะ และบริการเครือข่ายยานพาหนะจะเรียกใช้เมื่อไม่จำเป็นต้องใช้ข้อมูลจาก HAL ของยานพาหนะอีกต่อไป การใช้งาน HAL ของยานพาหนะควรปล่อยเฉพาะสมาชิกของ vehicle_prop_value_t เช่น data->str_value.data หรือ data->bytes_value.data แต่ไม่ควรปล่อยข้อมูลเอง เนื่องจากข้อมูลนั้นจัดสรรมาจากบริการเครือข่ายยานพาหนะ เมื่อมีการคืนหน่วยความจำแล้ว ควรตั้งค่าพอยน์เตอร์ที่เกี่ยวข้องเป็น NULL โดย HAL ของยานพาหนะ

คําจํากัดความที่บรรทัด 1693 ของไฟล์ vehicle.h .

int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)

ตั้งค่าค่าของพร็อพเพอร์ตี้ยานพาหนะ ควรจัดสรรข้อมูลอย่างเหมาะสมและไม่ใช่ค่า NULL ผู้เรียก API เป็นเจ้าของช่องข้อมูล ระบบจะไม่สนใจการประทับเวลาของข้อมูลสําหรับการดำเนินการชุด การตั้งค่าพร็อพเพอร์ตี้บางอย่างต้องมีสถานะเริ่มต้น ข้อมูลเริ่มต้นดังกล่าวอาจไม่พร้อมใช้งานเป็นระยะเวลาสั้นๆ หลังจากการเริ่มต้น ทั้งนี้ขึ้นอยู่กับ HAL ของยานพาหนะ ในกรณีเช่นนี้ การเรียกใช้ set อาจแสดงผลเป็น -EAGAIN เช่นเดียวกับการเรียกใช้ get สำหรับพร็อพเพอร์ตี้ที่มีการควบคุมการเปิด/ปิดแยกต่างหาก การตั้งค่าอาจไม่สำเร็จหากพร็อพเพอร์ตี้ไม่ได้เปิดอยู่ ในกรณีเช่นนี้ hal ควรแสดงข้อผิดพลาด -ESHUTDOWN

คําจํากัดความที่บรรทัด 1706 ของไฟล์ vehicle.h .

int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones)

สมัครรับข้อมูลเหตุการณ์ โดยขึ้นอยู่กับเอาต์พุตของ list_properties หากพร็อพเพอร์ตี้คือ a) on-change: ควรตั้งค่า sample_rate เป็น 0 b) รองรับความถี่: ควรตั้งค่า sample_rate จาก min_sample_rate เป็น max_sample_rate สำหรับพร็อพเพอร์ตี้ประเภท "เมื่อเปลี่ยนแปลง" บริการเครือข่ายยานยนต์จะเรียกใช้ get อีกครั้งเพื่อตรวจสอบสถานะเริ่มต้น ด้วยเหตุนี้ การติดตั้งใช้งาน HAL ของยานพาหนะจึงไม่จำเป็นต้องส่งสถานะเริ่มต้นสำหรับพร็อพเพอร์ตี้ประเภท "เมื่อเปลี่ยนแปลง"

พารามิเตอร์
อุปกรณ์
พร็อพ
sample_rate
โซน โซนที่สมัครใช้บริการทั้งหมดสำหรับพร็อพเพอร์ตี้ที่มีการแบ่งเขต จะไม่สนใจสำหรับพร็อพเพอร์ตี้ที่ไม่ได้แบ่งเขต 0 หมายถึงรองรับทุกโซนแทนที่จะเป็นไม่มีโซน

คําจํากัดความที่บรรทัด 1723 ของไฟล์ vehicle.h .

int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop)

ยกเลิกการสมัครใช้บริการในพร็อพเพอร์ตี้

คําจํากัดความที่บรรทัด 1727 ของไฟล์ vehicle.h .


เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้