ฉันพยายามที่จะให้ความรู้กับตัวเองเล็กน้อยเกี่ยวกับการสร้างตัวอธิบาย USB HID ใน C สำหรับโครงการ USB PIC32 ที่ฉันต้องการลอง
ฉันได้ดาวน์โหลดเอกสารตารางการใช้งาน HID จากhttp://www.usb.org/developers/hidpage/และพยายามที่จะระบุว่าค่าจริงจะถูกระบุไว้อย่างไรสำหรับองค์ประกอบต่าง ๆ ในตัวบอกสถานะ HID
ให้ฉันอธิบายด้วยข้อความที่ตัดตอนมาจากตัวอย่างที่ฉันกำลังดู:
ROM struct{BYTE report[HID_RPT01_SIZE];}hid_rpt01={{
0x05,0x01, // USAGE_PAGE (Generic Desktop)
0x09,0x05, // USAGE (Game Pad)
0xA1,0x01, // COLLECTION (Application)
0x15,0x00, // LOGICAL_MINIMUM(0)
0x25,0x01, // LOGICAL_MAXIMUM(1)
0x35,0x00, // PHYSICAL_MINIMUM(0)
0x45,0x01, // PHYSICAL_MAXIMUM(1)
// ...
จากตัวอย่างข้างต้นเป็นที่ชัดเจนว่าอาร์เรย์ BYTE ประกอบด้วยคู่ของคีย์ / ค่าถ้าฉันอาจเรียกมันว่า ตัวอย่างเช่นบรรทัดที่ 2: 0x05,0x01หมายถึงคีย์ 0x05 ซึ่งเป็นหน้าการใช้งานและ 0x01 เป็นค่าที่ระบุGeneric Desktop
ฉันพยายามหาว่าค่าเหล่านี้ระบุไว้ในเอกสาร PDF ตารางการใช้งานของ HID ตัวอย่างเช่นฉันไม่พบการอ้างอิง
USAGE_PAGE == 0x05
และตัวอย่างเช่น
COLLECTION == 0xA1
ฉันลองค้นหา PDF สำหรับ 0xA1 แล้วไม่มีผลลัพธ์ วิธีเดียวที่ฉันสามารถค้นหาว่าค่าคืออะไรโดยการดูความคิดเห็นของตัวอย่างหรือโดยใช้เครื่องมือ USB Descriptorจากลิงค์ด้านบน
ฉันแค่สงสัยว่าฉันหลงทางทั้งหมดที่ขาดเอกสารอ้างอิงคีย์ / ค่านี้หรือไม่?
มีตัวอย่างมากมายออนไลน์อย่างเช่นลิงค์ต่อไปนี้: http://www.frank-zhao.com/cache/hid_tutorial_1.php
แต่แม้นี้จะอ้างอิงการโหลดค่าสตริงเช่นEND_COLLECTION == 0xc0
ฉันจะหาข้อมูลอ้างอิงสำหรับค่าเหล่านี้ได้จากที่ใด ฉันพลาดอะไรไป