ইউএসবি এইচআইডি বর্ণনাকারী তৈরি করার জন্য আমি কোথায় মূল্যবোধগুলি খুঁজছি?


10

আমি চেষ্টা করতে চাই এমন একটি পিক 32 ইউএসবি প্রকল্পের জন্য সিতে একটি ইউএসবি এইচআইডি বর্ণনাকারী তৈরি করতে নিজেকে কিছুটা শিক্ষিত করার চেষ্টা করছি।

আমি http://www.usb.org/developers/hidpage/ থেকে এইচআইডি ইউজ টেবিল নথি ডাউনলোড করেছি এবং এইচআইডি বর্ণনাকারীর বিভিন্ন উপাদানগুলির জন্য প্রকৃত মানগুলি কোথায় নির্দেশিত হয়েছে তা নির্ধারণ করার চেষ্টা করছি trying

আমি যে নমুনাটি দেখছি তার একটি অংশ দিয়ে আমাকে ব্যাখ্যা করতে দাও:

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 অ্যারে কী / মান জোড় গঠিত, যদি আমি এটি বলতে পারি। উদাহরণস্বরূপ ২ য় লাইন: 0x05,0x01 কী 0x05 নির্দেশ করে, যা ব্যবহার পৃষ্ঠা এবং 0x01 হল জেনেরিক ডেস্কটপকে নির্দেশ করে মান

আমি এইচডিআইডি ব্যবহার সারণী পিডিএফ নথিতে এই মানগুলি কোথায় নির্দেশিত হয়েছে তা জানার চেষ্টা করছি। উদাহরণস্বরূপ, আমি এটির কোনও রেফারেন্স পাই না

USAGE_PAGE == 0x05

এবং উদাহরণস্বরূপ

COLLECTION == 0xA1

আমি 0xA1 এর জন্য পিডিএফ অনুসন্ধান করার চেষ্টা করেছি, কোনও ফলাফল নেই। মানগুলি কী তা আমি কেবলমাত্র খুঁজে পেতে সক্ষম হলাম তা হল উদাহরণের মন্তব্যগুলি দেখে বা উপরের লিঙ্কটি থেকে ইউএসবি বর্ণনাকারী সরঞ্জাম ব্যবহার করে ।

আমি কেবল ভাবছি, এই কী / মান রেফারেন্সের ডকুমেন্টেশনগুলি হারিয়ে যাওয়ার জন্য আমি কি পুরোপুরি বদ্ধ?

অনলাইনে প্রচুর উদাহরণ রয়েছে যেমন উদাহরণস্বরূপ নীচের লিঙ্কটি: http://www.frank-zhao.com/cache/hid_tutorial_1.php

তবে এমনকি এই END_COLLECTION == 0xc0 এর মতো স্ট্রিং মানগুলির উল্লেখ করে

আমি এই মানগুলির জন্য রেফারেন্সটি কোথায় পাই? আমি কী মিস করছি?


দেখে মনে হচ্ছে এইচআইডি বর্ণনাকারী তৈরি করতে আমাকে ইউএসবি বর্ণনাকারী সরঞ্জামটি ব্যবহার করতে হবে। :)
josef.van.niekerk

উত্তর:


20

ইউএসবি ডকুমেন্টেশন বেশ ভয়ানক। এটি অত্যধিক জেনারাইজেশনে ভুগছে, যেখানে তারা সবকিছু এতই সাধারণ এবং সাধারণ করার চেষ্টা করছেন যে ডকস থেকে কোনও নির্দিষ্ট অ্যাপ্লিকেশনটিতে পাওয়া শক্ত।

বর্ণনাকারী ফর্ম্যাটটি আপনার সরবরাহকারী ইউএস.org এর লিঙ্কে "এইচআইডির জন্য ডিভাইস ক্লাস সংজ্ঞা " নামক নথিতে অবস্থিত ।

আপনি যে জটিল বিষয়টি মিস করছেন তা হ'ল বিভিন্ন বিভাগ (যেমন 0x05) 0x উপসর্গের সাথে নথিভুক্ত নয় । আসলে, তারা সাধারণত তাদের কাঁচা বাইনারি বর্ণনা করে ।

উদাহরণস্বরূপ, 0xA1 সম্পর্কিত ক্ষেত্রে: এখানে চিত্র বর্ণনা লিখুন

আপনি দেখতে পারেন যে বাইনারি উপসর্গটি 1010_00nnনির্দেশ করে যে এটি একটি সংগ্রহ, এবং পোস্টফিক্সটি nnnn_nn01নির্দেশ করে যে এটি 1 বাইট দীর্ঘ। তারপরে পরবর্তী বাইটটি সংগ্রহের প্রকার হিসাবে ব্যাখ্যা করা হয়, অ্যাপ্লিকেশন প্রকারের ক্ষেত্রে। এরপরে প্রসঙ্গটি সেট করে যেখানে আরও বাইটগুলি ব্যাখ্যা করা হয়, ততক্ষণ এইচআইডি বর্ণনাকারী পার্সার হয় অন্য কোনও সংগ্রহ ট্যাগ বা কোনও শেষ সংগ্রহের চিহ্নিতকারী দেখে।

আপনি দেখতে পারেন যে END COLLECTIONহিসাবে নির্দিষ্ট করা 0b1100_00nn, সঙ্গে nnউপেক্ষা করা হচ্ছে। এখান থেকেই 0xC0আসছেন।

অন্যান্য আর্গুমেন্টগুলি কীভাবে তৈরি করা হয় তাও আপনি দেখতে শুরু করতে পারেন। উদাহরণস্বরূপ, LOGICAL MINIMUMহয় 0x25, বা 0b0010_0101। যে থেকে, আমরা দেখতে পারি যে আমরা একটি ডাটা দৈর্ঘ্যের আছে 0bnnnn_nn01, বা এক বাইট, এবং সুনির্দিষ্টভাবে উল্লেখ করা LOGICAL MINIMUMহয়0b0010_01nn

এখানে চিত্র বর্ণনা লিখুন

USAGE PAGEবর্ণনাকারীর জন্য কাঠামোটি একই। ব্যবহারের পৃষ্ঠাটি নির্বাচন করার কমান্ডটি হ'ল 0000_01nnএবং nnnn_nn01এটি 1 বাইট লম্বা নির্দেশ করে। আমি অনুমান করব যেহেতু ডকুমেন্টেশনে বলা হয়েছে যে ব্যবহারের পৃষ্ঠাগুলি 32 বিট, তাই উপরের বিটগুলি শূন্য বা ডকুমেন্টেশনের অন্য অংশ থেকে অনুমান করা হয়। আমি জানি না তারা কীভাবে নির্দিষ্ট করা হয়েছে।

বিভিন্ন HID ধ্রুবক একটি ভাল পাতা এখানে

এবং বিএসডি সূত্রের একটি সাম্প্রতিক সংস্করণ এখানে রয়েছে (ধন্যবাদ, @ ক্রাজিসিম!) (সর্বশেষতম হেড , শেষ নাও থাকতে পারে)।


ঠিক যেটা আমার দরকার ছিল. গভীর উত্তরের জন্য আপনাকে অনেক ধন্যবাদ। এটা সত্যিই অনেক সাহায্য করে! ;)
josef.van.niekerk

1
@ josef.van.niekerk - কোনও সমস্যা নেই। আমি ইউএসবি স্ট্যান্ডার্ডগুলিতে খননের আগে কিছুক্ষণ হয়ে গেছে, এবং সেগুলি আমার মনে পড়ার মতোই অস্বচ্ছ।
কনার উলফ

গ্র্যাভিডিজিংয়ের জন্য আমি ক্ষমাপ্রার্থী তবে ইউএসবি.র.র লিঙ্কটি আর কাজ করে না।
রব ভ্যান ডের বীর

1
@ রোভান্ডারভিয়ার এখনই ঠিক করা উচিত।
hoosierEE

1
সেই "বিভিন্ন এইচআইডি কনস্ট্যান্টের ভাল পৃষ্ঠা" কি ফ্রিবিএসডি উত্স থেকে সেই ফাইলটির পরবর্তী সংস্করণে পরিবর্তন করা উচিত ? ?
ক্রেজিসিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.