سلکان لیبز USB ڈیوائس اسٹیک انسٹرکشن مینوئل

USB ڈیوائس اسٹیک

وضاحتیں

  • USB ورژن: 1.5.1
  • ریلیز کی تاریخ: 21 جولائی 2025
  • سادگی SDK ورژن: 2025.6.1

پروڈکٹ ختمview

سلیکون لیبز کے ذریعہ USB ڈیوائس اسٹیک ورسٹائل اور فراہم کرتا ہے۔
IoT پروجیکٹس کے لیے استعمال میں آسان USB کنیکٹوٹی، سہولت کاری
نیٹ ورک کے شریک پروسیسرز اور میزبانوں کے درمیان مواصلت۔

خصوصیات

  • موثر USB ڈیوائس اسٹیک
  • آئی او ٹی پروجیکٹس کے لیے مثالی۔
  • نیٹ ورک شریک پروسیسرز اور کے درمیان مواصلت کے لیے معاونت
    میزبان

مصنوعات کے استعمال کی ہدایات

USB ڈیوائس کنفیگریشن

اپنے پروجیکٹ کے مطابق USB ڈیوائس سیٹنگز کو کنفیگر کریں۔
USB ڈیوائس کنفیگریشن سیکشن کا حوالہ دے کر ضروریات
دستاویزات میں.

USB ڈیوائس پروگرامنگ گائیڈ

یہ سمجھنے کے لیے USB ڈیوائس پروگرامنگ گائیڈ پر عمل کریں۔
پروگرام اور مختلف کے لئے USB ڈیوائس کے ساتھ بات چیت
ایپلی کیشنز

USB ڈیوائس کلاسز

USB ڈیوائس کلاسز سیکشن ایک اوور فراہم کرتا ہے۔view مختلف کے
کلاسز جیسے CDC ACM، HID، MSC SCSI، اور وینڈر کلاس۔ کا انتخاب کریں۔
آپ کے آلے کی فعالیت پر مبنی مناسب کلاس۔

USB ڈیوائس ٹربل شوٹنگ

اگر آپ کو USB ڈیوائس میں کوئی مسئلہ درپیش ہے، تو دیکھیں
حل اور ڈیبگنگ کے لیے USB ڈیوائس ٹربل شوٹنگ سیکشن
تجاویز

Microsoft Windows OS USB ہوسٹ

اگر آپ مائیکروسافٹ ونڈوز OS USB کے ساتھ USB ڈیوائس استعمال کر رہے ہیں۔
میزبان، میں فراہم کردہ رہنما خطوط پر عمل کرنا یقینی بنائیں
ہموار انضمام کے لئے دستاویزات.

اکثر پوچھے گئے سوالات

س: کچھ عام سابقہ ​​کیا ہیں؟ampایسے آلات جن کا استعمال کر کے میں بنا سکتا ہوں۔
یہ USB اسٹیک؟

A: USB اسٹیک آپ کو آلات بنانے کی اجازت دیتا ہے جیسے
یو ایس بی ٹو سیریل اڈاپٹر، چوہوں یا کی بورڈز، ہٹنے والا اسٹوریج
آلات، اور حسب ضرورت آلات۔

سوال: کیا اس کو استعمال کرنے کے لیے کوئی مخصوص سافٹ ویئر کی ضروریات ہیں؟
USB ڈیوائس اسٹیک؟

A: ہم آہنگ سافٹ ویئر میں سادگی SDK، سادگی شامل ہے۔
اسٹوڈیو، سادگی کمانڈر، جی سی سی (دی جی این یو کمپائلر کلیکشن)،
ARM اور IAR EWARM کے لیے IAR ایمبیڈڈ ورک بینچ۔

یونیورسل سیریل بس USB

یونیورسل سیریل بس USB

یو ایس بی اوورview ختمview
ریلیز نوٹس USB
نردجیکرن اور خصوصیات ختمview
USB ڈیوائس کنفیگریشن ختمview
USB ڈیوائس پروگرامنگ گائیڈ ختمview
USB ڈیوائس کی کلاسز ختم ہوگئیں۔view CDC ACM کلاس ختمview HID کلاس ختمview MSC SCSI کلاس ختمview وینڈر کلاس ختمview
USB API API دستاویزی USB Device API USB Device ACM API a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t USB ڈیوائس CDC API a sl_usbd_cdc_subcl ss_driver_t USB ڈیوائس کور API
sl_usbd_device_config_t sl_usbd_setup_req_t
ایک sl_usbd_cl ss_driver_t USB ڈیوائس HID API
sl_usbd_hid_callbacks_t USB ڈیوائس MSC API
ایک sl_usbd_msc_subcl ss_driver_t USB ڈیوائس MSC SCSI API
sl_usbd_msc_scsi_callbacks_t

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

1/174

یونیورسل سیریل بس USB
ایک sl_usbd_msc_scsi_lun_ pi
sl_usbd_msc_scsi_lun_info sl_usbd_msc_scsi_lun
USB ڈیوائس وینڈر API sl_usbd_vendor_callbacks_t
API دستاویزی USB ڈیوائس ٹربل شوٹنگ
ختمview Microsoft Windows OS USB ہوسٹ
ختمview

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

2/174

ختمview
ختمview
USB ڈیوائس
USB کمپیوٹر سسٹمز کی تاریخ میں سب سے کامیاب کمیونیکیشن انٹرفیس میں سے ایک ہے اور کمپیوٹر کے پیری فیرلز کو جوڑنے کا اصل معیار ہے۔ Silicon Labs USB ڈیوائس اسٹیک ایک USB ڈیوائس ماڈیول ہے جو خاص طور پر ایمبیڈڈ سسٹمز کے لیے ڈیزائن کیا گیا ہے۔ سیلیکون لیبز کے معیار، اسکیل ایبلٹی، اور قابل اعتماد کے ساتھ زمین سے بنایا گیا، یہ USB 2.0 تفصیلات کی تعمیل کرنے کے لیے توثیق کے سخت عمل سے گزرا ہے۔ یہ دستاویز بیان کرتی ہے کہ کس طرح سلکان لیبز USB ڈیوائس اسٹیک کو شروع کرنا، شروع کرنا اور استعمال کرنا ہے۔ یہ مختلف ترتیب کی اقدار اور ان کے استعمال کی وضاحت کرتا ہے۔ اس میں ایک اوور بھی شامل ہے۔view ٹیکنالوجی، ترتیب کے امکانات کی اقسام، عمل درآمد کے طریقہ کار، اور سابقہampہر دستیاب طبقے کے لیے عام استعمال کی تعداد۔
USB تصورات کو تیزی سے سمجھنے میں آپ کی مدد کرنے کے لیے، دستاویزات میں بہت سے سابقہ ​​خصوصیات ہیں۔ampبنیادی افعال کے ساتھ USB کی les. یہ سابقamples آپ کو ایک فریم ورک فراہم کرے گا جو آپ کو آلات کو تیزی سے بنانے کی اجازت دیتا ہے۔ یہ سابقamples میں شامل ہیں:
یو ایس بی ٹو سیریل اڈاپٹر (کمیونیکیشن ڈیوائس کلاس) ماؤس یا کی بورڈ (ہیومن انٹرفیس ڈیوائس کلاس) ہٹنے والا اسٹوریج ڈیوائس (ماس اسٹوریج کلاس) کسٹم ڈیوائس (وینڈر کلاس)
مندرجہ ذیل اوور ہے۔view دستاویزات کے حصے:
نردجیکرن اور خصوصیات USB ڈیوائس کنفیگریشن USB ڈیوائس پروگرامنگ گائیڈ USB ڈیوائس کلاسز
CDC ACM کلاس HID کلاس MSC SCSI کلاس وینڈر کلاس USB ڈیوائس ٹربل شوٹنگ Microsoft Windows OS USB ہوسٹ

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

3/174

یو ایس بی
یو ایس بی

USB ورژن 1.5.1 21 جولائی 2025 – ریلیز نوٹس
سادگی SDK ورژن 2025.6.1
سلیکون لیبز کا موثر USB ڈیوائس اسٹیک IoT پروجیکٹس کے لیے ورسٹائل، استعمال میں آسان USB کنیکٹیویٹی مثالی پیش کرتا ہے، بشمول نیٹ ورک کو-پروسیسرز اور میزبانوں کے درمیان مواصلت۔ پہلے ریلیز کے لیے یہاں کلک کریں۔
ریلیز کا خلاصہ
اہم خصوصیات | API تبدیلیاں | بگ فکسز | چپ اہلیت
کلیدی خصوصیات
صرف بنیادی پلیٹ فارم کی تبدیلیاں۔
API تبدیلیاں
کوئی نہیں۔
بگ کی اصلاحات
کوئی نہیں۔
چپ اہلیت
کوئی نہیں۔
کلیدی خصوصیات
نئی خصوصیات | اضافہ | ہٹا دی گئی خصوصیات | فرسودہ خصوصیات
نئی خصوصیات
کوئی نہیں۔
اضافہ
صرف بنیادی پلیٹ فارم کی تبدیلیاں۔
ہٹائی گئی خصوصیات
کوئی نہیں۔
فرسودہ خصوصیات
کوئی نہیں۔
API تبدیلیاں
نئے APIs | ترمیم شدہ APIs | ہٹائے گئے APIs | فرسودہ APIs
نئے APIs

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

4/174

یو ایس بی
کوئی نہیں۔
ترمیم شدہ APIs
کوئی نہیں۔
APIs کو ہٹا دیا گیا۔
کوئی نہیں۔
فرسودہ APIs
کوئی نہیں۔
بگ کی اصلاحات
کوئی نہیں۔
چپ اہلیت
کوئی نہیں۔
درخواست سابقampتبدیلیاں
نئے سابقamples | ترمیم شدہ سابقamples | سابق کو ہٹا دیا گیاamples | فرسودہ سابقamples
نئے سابقamples
کوئی نہیں۔
ترمیم شدہ سابقamples
کوئی نہیں۔
سابق کو ہٹا دیا گیا۔amples
کوئی نہیں۔
فرسودہ سابقamples
کوئی نہیں۔
ریلیز کی تبدیلیوں کا اثر
اثر بیانات | مائیگریشن گائیڈ
اثرات کے بیانات
کوئی نہیں۔
مائیگریشن گائیڈ
کوئی نہیں۔
معلوم مسائل اور حدود
کوئی نہیں۔
اس ریلیز کا استعمال کرنا

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

5/174

یو ایس بی

ریلیز میں کیا ہے؟ | ہم آہنگ سافٹ ویئر | تنصیب اور استعمال | مدد اور رائے

ریلیز میں کیا ہے؟

USB ڈیوائس اسٹیک ایپلیکیشن Examples
ہم آہنگ سافٹ ویئر

سافٹ ویئر
سادگی SDK سادگی سٹوڈیو سادگی کمانڈر GCC The GNU کمپائلر کلیکشن) IAR ایمبیڈڈ ورک بینچ برائے ARM IAR EWARM

ہم آہنگ ورژن یا متغیر
2025.6.0 5.11.0 1.18.2 (سادگی اسٹوڈیو کے ساتھ فراہم کردہ) 12.2.1 (سادگی اسٹوڈیو کے ساتھ فراہم کردہ) 9.40.1 (سادگی اسٹوڈیو کے ساتھ فراہم کردہ)

تنصیب اور استعمال

اپنی ترقی کو شروع کرنے کے لیے ہمارا دیکھیں:
USB ڈیوائس پروگرامنگ گائیڈ۔ API دستاویزات۔
سیکیور والٹ انٹیگریشن کے بارے میں معلومات کے لیے، سیکیور والٹ دیکھیں۔
دوبارہ کرنا۔view سیکیورٹی اور سافٹ ویئر ایڈوائزری اطلاعات اور اپنی اطلاع کی ترجیحات کا نظم کریں:
ò https://community.silabs.com/ پر جائیں۔ اپنے اکاؤنٹ کی اسناد کے ساتھ لاگ ان کریں۔ اپنے پرو پر کلک کریں۔file صفحہ کے اوپری دائیں کونے میں آئیکن۔
ڈراپ ڈاؤن مینو سے اطلاعات منتخب کریں۔ ö نوٹیفیکیشن سیکشن میں، دوبارہ کرنے کے لیے میرے پروڈکٹ کی اطلاعات کے ٹیب پر جائیں۔view تاریخی سیکیورٹی اور سافٹ ویئر ایڈوائزری
اطلاعات
÷ اپنی ترجیحات کا نظم کرنے کے لیے، اطلاعات کا نظم کریں ٹیب کو اپنی مرضی کے مطابق بنانے کے لیے استعمال کریں کہ آپ کونسی پروڈکٹ اپ ڈیٹس اور مشورے ہیں
وصول کریں
تجویز کردہ کنفیگریشن سیٹنگز کے لیے، یہاں دیکھیں۔
اس ریلیز میں سافٹ ویئر کے بارے میں مزید جاننے کے لیے، ہماری آن لائن دستاویزات میں غوطہ لگائیں۔
مدد اور رائے

سلکان لیبز سپورٹ سے رابطہ کریں۔ جوابات حاصل کرنے کے لیے ہمارا Ask AI ٹول استعمال کرنے کے لیے، اس صفحہ کے اوپری حصے میں سرچ فیلڈ دیکھیں۔

نوٹ: پوچھو AI تجرباتی ہے۔

ہماری ڈویلپر کمیونٹی سے مدد حاصل کریں۔
SDK ریلیز اور مینٹیننس پالیسی
ہماری SDK ریلیز اور مینٹیننس پالیسی دیکھیں۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

6/174

ختمview
ختمview
وضاحتیں
"یونیورسل سیریل بس تصریح 2.0" کی تعمیل کرتا ہے "انٹرفیس ایسوسی ایشن ڈسکرپٹر انجینئرنگ چینج نوٹس (ECN)" کی منتقلی کی اقسام کو نافذ کرتا ہے۔
کنٹرول بلک انٹرپٹ USB کلاسز کمیونیکیشن ڈیوائس کلاس (CDC) خلاصہ کنٹرول ماڈل (ACM) ہیومن انٹرفیس ڈیوائس (HID) ماس اسٹوریج کلاس (MSC) وینڈر مخصوص کلاس فریم ورک
خصوصیات
میموری فوٹ پرنٹ کو کم سے کم کرنے کے لیے صرف مطلوبہ خصوصیات کو شامل کرنے کے لیے قابل توسیع فل اسپیڈ (12 Mbit/s) کمپوزٹ (ملٹی فنکشن) ڈیوائسز کو سپورٹ کرتا ہے ملٹی کنفیگریشن ڈیوائسز کو سپورٹ کرتا ہے USB پاور سیونگ فنکشنلٹیز کو سپورٹ کرتا ہے (ڈیوائس کو معطل اور ریزیوم) Massicum Storage میں مکمل انضمام File سسٹم ماڈیول CMSIS-RTOS2 تجریدی پرت کے ساتھ تیار کیا گیا ہے تاکہ یہ مختلف OS کے ساتھ کام کر سکے۔ Silicon Labs GSDK FreeRTOS اور Micrium OS پورٹس کے ساتھ آتا ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

7/174

ختمview
ختمview

USB ڈیوائس کنفیگریشن

یہ سیکشن سلکان لیبز USB ڈیوائس کو کنفیگر کرنے کے طریقہ پر بحث کرتا ہے۔ ترتیب کے پیرامیٹرز کے تین گروپ ہیں، جیسا کہ:
USB ڈیوائس کور کنفیگریشن USB ڈیوائس انفارمیشن کنفیگریشن USB ڈیوائس ہارڈ ویئر کنفیگریشن
USB ڈیوائس کور کنفیگریشن
سلکان لیبز یو ایس بی ڈیوائس کو کمپائل کے وقت sl_usbd_core_config.h میں واقع #defines کے سیٹ کے ذریعے ترتیب دیا جا سکتا ہے۔ file. جب ممکن ہو تو USB ڈیوائس #defines کا استعمال کرتی ہے کیونکہ وہ کوڈ اور ڈیٹا کے سائز کو مرتب کرنے کے وقت اسکیل کرنے کی اجازت دیتا ہے اس بنیاد پر کہ کن خصوصیات کو فعال کیا گیا ہے۔ یہ سلیکن لیبز USB ڈیوائس کے صرف پڑھنے کے لیے میموری (ROM) اور بے ترتیب رسائی میموری (RAM) کے نشانات کو آپ کی درخواست کی ضروریات کی بنیاد پر ایڈجسٹ کرنے کی اجازت دیتا ہے۔
تجویز کردہ: ترتیب کے عمل کو پہلے سے طے شدہ اقدار کے ساتھ شروع کریں (بولڈ میں نمایاں کیا گیا ہے)۔
ذیل کے حصے ٹیمپلیٹ کی ترتیب میں ترتیب کی بنیاد پر ترتیب دیے گئے ہیں۔ file, sl_usbd_core_config.h.
کور کنفیگریشن کلاسز کنفیگریشن
کور کنفیگریشن
ٹیبل - USB ڈیوائس کور کنفیگریشن کنسٹینٹس

مستقل تفصیل

ڈیفالٹ قدر

SL_USBD_TA SK_STACK_ SIZE

USBD کور ٹاسک کے بائٹس میں اسٹیک سائز کو کنفیگر کرتا ہے۔

4096

SL_USBD_TA SK_PRIORIT Y

USBD بنیادی کام کی ترجیح کو ترتیب دیتا ہے۔ یہ CMSIS-RTOS2 کی ترجیح ہے۔

osPriorityHigh

SL_USBD_A UTO_START _USB_DEVIC E

اگر فعال ہو تو، USB آلہ خود بخود شروع ہو جائے گا جب کرنل شروع ہو جائے گا اور وہ 1 USBD کور کام پہلی بار طے ہو گا۔ غیر فعال ہونے کی صورت میں، آپ کی ایپلیکیشن کو sl_usbd_core_start_device() کو کال کرنے کی ضرورت ہوگی جب USB ہوسٹ کے ذریعے پتہ لگانے کے لیے تیار ہوں۔

SL_USBD_C کنفیگریشنز کی کل تعداد جو sl_usbd_add_configuration() کے ذریعے شامل کی جائے گی۔

1

ONFIGURATI فنکشن۔

ON_QUANTI

TY

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

8/174

ختمview

مستقل
SL_USBD _INTERF ACE_QU اینٹیٹی
SL_USBD _ALT_INT ERFACE_ QUANTI
TY
SL_USBD _INTERF ACE_GR
OUP_QU
اینٹیٹی
SL_USBD _DESCRI
PTOR_Q
یوٹینٹی
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

تفصیل آپ کی تمام کنفیگریشنز کے لیے شامل کیے جانے والے USB انٹرفیس کی کل تعداد۔ یہ بہت زیادہ استعمال شدہ کلاس پر منحصر ہے۔ کلاس مثال کے لیے کتنے انٹرفیسز کی ضرورت ہے اس بارے میں مزید معلومات کے لیے، اپنی کلاس کے سیکشن "اصل سے وسائل کی ضرورت" دیکھیں۔
آپ کی تمام کنفیگریشنز کے لیے شامل کیے جانے والے USB متبادل انٹرفیس کی کل تعداد۔ یہ بہت زیادہ استعمال شدہ کلاس پر منحصر ہے۔ یہ قدر ہمیشہ SL_USBD_INTERFACE_QUANTITY کے برابر یا زیادہ ہونی چاہیے۔ کلاس مثال کے لیے کتنے متبادل انٹرفیسز کی ضرورت ہے اس بارے میں مزید معلومات کے لیے، اپنی کلاس کے سیکشن "کور سے وسائل کی ضرورت" دیکھیں۔
USB انٹرفیس گروپس کی کل تعداد جو آپ کی تمام کنفیگریشنز کے لیے شامل کیے جائیں گے۔ یہ بہت زیادہ استعمال شدہ کلاس پر منحصر ہے۔ اس بارے میں مزید معلومات کے لیے کہ کتنے انٹرفیس گروپس کو کلاس مثال کی ضرورت ہوتی ہے، اپنی کلاس کے سیکشن "Resource Needs from Core" سے رجوع کریں۔
اختتامی نقطہ وضاحت کنندگان کی کل تعداد جو آپ کی تمام کنفیگریشنز کے لیے شامل کی جائیں گی۔ یہ بہت زیادہ استعمال شدہ کلاس پر منحصر ہے۔ اس بارے میں مزید معلومات کے لیے کہ ایک کلاس مثال کے لیے کتنے اینڈ پوائنٹ ڈسکرپٹرز کی ضرورت ہے، اپنی کلاس کے سیکشن "کور سے وسائل کی ضرورت" میں "اینڈ پوائنٹس کی تعداد" دیکھیں۔ نوٹ کریں کہ کنٹرول اینڈ پوائنٹس کو یہاں پر غور کرنے کی ضرورت نہیں ہے۔ USB سٹرنگز کی کل تعداد۔ مقدار کو صفر پر سیٹ کرنے سے فیچر غیر فعال ہو جائے گا۔ اسے غیر فعال کرنے سے آلہ ایپلیکیشن سے پاس کردہ USB ڈسکرپشن سٹرنگز کو اسٹور نہیں کرے گا۔ اس کا مطلب ہے کہ میزبان تفصیل کے تاروں کو بازیافت کرنے سے قاصر رہے گا (جیسے مینوفیکچرر اور پروڈکٹ کا نام)۔ فی کنفیگریشن کھولے گئے اختتامی پوائنٹس کی کل تعداد۔ ایک ڈیوائس کو کنٹرول کی منتقلی کے لیے کم از کم دو کھلے ہوئے اینڈ پوائنٹس کی ضرورت ہوتی ہے، لیکن آپ کو استعمال شدہ کلاس کے اختتامی پوائنٹس کو بھی شامل کرنا چاہیے۔ اس بارے میں مزید معلومات کے لیے کہ ایک کلاس مثال کے لیے کتنے کھلے ہوئے اختتامی پوائنٹس کی ضرورت ہے، اپنی کلاس کے سیکشن "کور سے وسائل کی ضرورت" میں "اینڈ پوائنٹس کی تعداد" دیکھیں۔

ڈیفالٹ قدر
10 10
2
20 30 20

کلاسز کی ترتیب
کلاسوں میں مرتب وقت کی مخصوص ترتیب ہوتی ہے۔ مزید معلومات کے لیے USB ڈیوائس کلاسز سے رجوع کریں۔
USB ڈیوائس انفارمیشن کنفیگریشن

sl_usbd_device_config.h کنفیگریشن file آپ کے آلے سے متعلق بنیادی معلومات، جیسے کہ وینڈر/پروڈکٹ کی شناخت، ڈیوائس کے تار، وغیرہ سیٹ کرنے کے لیے کمپائل ٹائم #define-s کو دوبارہ گروپ کرتا ہے۔ نیچے دی گئی جدول اس کنفیگریشن میں دستیاب ہر معلومات کی ترتیب کو بیان کرتی ہے۔ file.

ٹیبل - USB ڈیوائس انفارمیشن کنفیگریشن کی وضاحت کرتا ہے۔

مستقل
SL_USBD_DEVIC E_VENDOR_ID
SL_USBD_DEVIC E_PRODUCT_ID

تفصیل آپ کا وینڈر شناختی نمبر جیسا کہ USB امپلیمینٹرز فورم کے ذریعے فراہم کیا گیا ہے۔ آپ وینڈر ID کیسے حاصل کر سکتے ہیں اس بارے میں مزید معلومات کے لیے، http://www.usb.org/developers/vendor/ دیکھیں۔ آپ کا پروڈکٹ شناختی نمبر۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

9/174

ختمview

مستقل

تفصیل

SL_USBD_DEVICE_RELEASE آپ کے آلے کا ریلیز نمبر۔ _NUMBER

SL_USBD_DEVICE_MANUFA اسٹرنگ جو آپ کے آلے کے مینوفیکچرر کو بیان کرتی ہے۔ اس ترتیب کو نظر انداز کر دیا جاتا ہے جب

CTURER_STRING

کنفیگریشن SL_USBD_STRING_QUANTITY 0 پر سیٹ ہے۔

SL_USBD_DEVICE_PRODUC اسٹرنگ جو آپ کے پروڈکٹ کو بیان کرتی ہے۔ اس ترتیب کو نظر انداز کر دیا جاتا ہے جب ترتیب

T_STRING

SL_USBD_STRING_QUANTITY 0 پر سیٹ ہے۔

SL_USBD_DEVICE_SERIAL_N اسٹرنگ جس میں آپ کے آلے کا سیریل نمبر ہے۔ اس ترتیب کو نظر انداز کر دیا جاتا ہے جب

UMBER_STRING

کنفیگریشن SL_USBD_STRING_QUANTITY 0 پر سیٹ ہے۔

SL_USBD_DEVICE_LANGUA آپ کے آلے کے تاروں کی زبان کا شناختی نمبر۔ ممکنہ قدریں ہیں:
GE_ID

– SL_USBD_LANG_ID_ARABIC_SAUDI_ARABIA

– SL_USBD_LANG_ID_CHINESE_TAIWAN

– SL_USBD_LANG_ID_ENGLISH_US

– SL_USBD_LANG_ID_ENGLISH_UK

– SL_USBD_LANG_ID_FRENCH

– SL_USBD_LANG_ID_GERMAN

– SL_USBD_LANG_ID_GREEK

- SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_PORTUGUESE

– SL_USBD_LANG_ID_SANSKRIT

جب کنفیگریشن SL_USBD_STRING_QUANTITY کو 0 پر سیٹ کیا جاتا ہے تو اس کنفیگریشن کو نظر انداز کر دیا جاتا ہے۔

USB ڈیوائس ہارڈ ویئر کنفیگریشن

سلیکون لیبز ڈیوائس پر منحصر ہے جسے آپ استعمال کر رہے ہیں، آپ کے پاس ممکنہ طور پر USB VBUS Sense سگنل کے لیے کنفیگر کرنے کے لیے GPIO پن اور پورٹ ہوگا۔ کنفیگریشن کی وضاحت sl_usbd_hardware_config.h ہیڈر میں ہے۔ file.

مستقل
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

تفصیل
آپ کے بورڈ پر USB VBUS Sense سگنل کے لیے GPIO پورٹ۔ آپ کے بورڈ پر USB VBUS Sense سگنل کے لیے GPIO پن۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

10/174

ختمview
ختمview
USB ڈیوائس پروگرامنگ گائیڈ
یہ سیکشن USB ڈیوائس ماڈیول کو استعمال کرنے کا طریقہ بتاتا ہے۔
USB ڈیوائس ماڈیول کا ابتدائی سیٹ اپ
یہ سیکشن USB ڈیوائس ماڈیول کو شروع کرنے اور ڈیوائس کو شامل کرنے، تیار کرنے اور شروع کرنے کے لیے درکار بنیادی اقدامات کی وضاحت کرتا ہے۔ USB ڈیوائس ماڈیول کو شروع کرنا USB ڈیوائس کور کو شروع کرنا aCl ss(es) کو شروع کرنا اپنے USB ڈیوائس کو شامل کرنا آپ کے USB ڈیوائس کی تعمیر کرنا کنفیگریشن (ز) کو شامل کرنا USB فنکشن (ز) شامل کرنا آپ کے USB ڈیوائس کو شروع کرنا
ایونٹ ہک کے افعال
USB ڈیوائس ماڈیول شروع کرنا
USB ڈیوائس کور کو شروع کرنا
ایک US a شروع کریں B ڈیوائس ماڈیول کور کو c lling کرکے فنکشن sl_usbd_core_init() کو شروع کریں۔ T aa he ex mple ذیل میں دکھاتا ہے c lling sl_usbd_core_init() ۔
Example - کال کرنا sl_usbd_core_init()
sl_status_t حیثیت؛ حیثیت = sl_usbd_core_init(); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}
کلاس شروع کرنا
USB ڈیوائس ماڈیول کور کے شروع ہونے کے بعد، آپ کو ہر اس کلاس کو شروع کرنا ہوگا جسے آپ استعمال کرنا چاہتے ہیں۔ مزید معلومات کے لیے اپنے acl ss(es) کا سیکشن "پروگرامنگ گائیڈ" دیکھیں۔
اپنا USB ڈیوائس بنانا
کنفیگریشن شامل کرنا
اپنے آلے کو کامیابی کے ساتھ شروع کرنے کے بعد، آپ اس میں USB فنکشنز شامل کرنا شروع کر سکتے ہیں، ایک نئی کنفیگریشن کے ساتھ شروع کر سکتے ہیں۔ ایک ڈیوائس میں کم از کم ایک کنفیگریشن ہونی چاہیے۔ کنفیگریشن کو شامل کرنے کے لیے، فنکشن aa sl_usbd_core_ dd_configur tion() فنکشن کو کال کریں۔ اس فنکشن کو ہر اس کنفیگریشن کے لیے بلایا جانا چاہیے جسے آپ شامل کرنا چاہتے ہیں۔ سابقampذیل میں دکھایا گیا ہے کہ فل اسپیڈ کیسے شامل کی جائے۔
Example - آپ کے ڈیوائس میں کنفیگریشن شامل کرنا

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

11/174

ختمview

sl_status_t حیثیت؛ uint8_t config_nbr_fs؛

/* آلے میں فل اسپیڈ کنفیگریشن شامل کرنا۔ */

حیثیت = sl_usbd_core_add_configuration(0،

/* کنفیگریشن میں کوئی خاص وصف نہیں ہے۔ */

100u

/* زیادہ سے زیادہ بجلی کی کھپت: 100mA۔

*/

SL_USBD_DEVICE_SPEED_FULL،

/* فل اسپیڈ کنفیگریشن۔

*/

"کنفیگ شامل کریں Exampلی فل اسپیڈ کنفیگریشن"،

&config_nbr_fs);

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

USB فنکشن کو شامل کرنا
اپنے آلے میں کامیابی کے ساتھ کم از کم ایک کنفیگریشن شامل کرنے کے بعد، آپ اپنے آلے میں انٹرفیس اور اینڈ پوائنٹس شامل کر سکتے ہیں۔ انٹرفیس اور اختتامی پوائنٹس کی قسم، مقدار اور دیگر پیرامیٹرز کے لحاظ سے ہر USB کلاس کی اپنی ضروریات ہوتی ہیں۔ Silicon Labs USB ڈیوائس اپنی پیش کردہ کلاسوں میں انٹرفیس اور اینڈ پوائنٹس کا اضافہ کرتی ہے۔
آپ کی درخواست سے، آپ USB کلاس کو انسٹیٹیوٹ کر سکتے ہیں اور اسے کنفیگریشن میں شامل کر سکتے ہیں۔ USB ڈیوائس کلاس مثالوں کے تصور کے بارے میں مزید معلومات کے لیے، USB ڈیوائس کلاسز دیکھیں۔ نوٹ کریں کہ آپ ملٹی فنکشن (کمپوزٹ) ڈیوائس بنانے کے لیے کنفیگریشن میں بہت سے مختلف کلاس انسٹینس کو انسٹینٹیٹ اور شامل کر سکتے ہیں۔
سابقample ذیل میں دکھایا گیا ہے کہ کلاس کی مثال کیسے بنائی جائے اور اسے کنفیگریشن میں شامل کیا جائے۔
Example - اپنے ڈیوائس میں کلاس انسٹینس شامل کرنا

sl_status_t حیثیت؛ uint8_t class_nbr؛
/* کلاس کی ایک مثال بنائیں جسے آپ استعمال کرنا چاہتے ہیں۔*/ /* نوٹ کریں کہ کلاس کے لحاظ سے اس فنکشن میں مزید دلائل ہوسکتے ہیں۔ */ اسٹیٹس = sl_usbd_ _create_instance(&class_nbr); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */ }
/* فل اسپیڈ کنفیگریشن میں کلاس مثال شامل کریں۔ */ اسٹیٹس = sl_usbd_ _add_to_configuration(class_nbr، /* کلاس نمبر sl_usbd_ کے ذریعے واپس کیا گیا _create_instance */
config_nbr_fs)؛ /* کنفیگریشن نمبر sl_usbd_core_add_configuration() کے ذریعے واپس کیا گیا۔ */ اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */ }
آپ کا USB آلہ شروع ہو رہا ہے۔
پہلے سے طے شدہ طور پر، آلہ کی ابتداء مکمل ہونے اور کرنل شروع ہونے کے بعد USB ڈیوائس کور ٹاسک کے ذریعے آلہ خود بخود شروع ہو جائے گا۔ یہ کنٹرول کرنے کے لیے کہ ڈیوائس کب شروع ہوتی ہے اور USB ہوسٹ کے ذریعے دکھائی دیتی ہے، آٹو اسٹارٹ فیچر کو غیر فعال کرنے کے لیے کنفیگریشن ڈیفائن SL_USBD_AUTO_START_USB_DEVICE استعمال کریں۔ غیر فعال ہونے پر، آپ کے آلے کو بنانے/تیار کرنے کے بعد، آپ اسے شروع کر سکتے ہیں اور فنکشن sl_usbd_core_start_device() پر کال کر کے اسے USB ہوسٹ کے لیے مرئی بنا سکتے ہیں۔
سابقampذیل میں دکھایا گیا ہے کہ sl_usbd_core_start_device() فنکشن کا استعمال کرتے ہوئے اپنے آلے کو کیسے شروع کیا جائے۔
Example - اپنا آلہ شروع کرنا

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

12/174

ختمview

sl_status_t حیثیت؛
حیثیت = sl_usbd_core_start_device(); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */ }

ایونٹ ہک کے افعال
USB ڈیوائس کور ماڈیول دو کمزور ہک فنکشنز پیش کرتا ہے جنہیں آپ اپنی ایپلیکیشن میں دوبارہ بیان کر سکتے ہیں۔ ان کا مقصد بس اور ترتیب کے واقعات ہونے پر مطلع کرنا ہے۔
ٹیبل - یو ایس بی ایونٹ ہک فنکشنز

واقعہ

تفصیل

بس

USB بس کا واقعہ پیش آنے پر کال کی جاتی ہے۔

جب USB کنفیگریشن ایونٹ ہوتا ہے تو کنفیگریشن کال کی جاتی ہے۔

فنکشن دستخط
void sl_usbd_on_bus_event(sl_usbd_bus_event_t ایونٹ)؛ void sl_usbd_on_config_event(sl_usbd_config_event_t ایونٹ، uint8_t config_nbr)؛

Example - ایونٹ ہک افعال

void sl_usbd_on_bus_event(sl_usbd_bus_event_t ایونٹ) { سوئچ (واقعہ) { کیس SL_USBD_EVENT_BUS_CONNECT:
// کہا جاتا ہے جب USB کیبل میزبان کنٹرولر بریک میں ڈالی جاتی ہے۔
کیس SL_USBD_EVENT_BUS_DISCONNECT: // کہا جاتا ہے جب USB کیبل کو میزبان کنٹرولر کے وقفے سے ہٹا دیا جاتا ہے۔
کیس SL_USBD_EVENT_BUS_RESET: // کہا جاتا ہے جب میزبان ری سیٹ کمانڈ بریک بھیجتا ہے۔
کیس SL_USBD_EVENT_BUS_SUSPEND: // کہا جاتا ہے جب میزبان معطل کمانڈ بریک بھیجتا ہے۔
کیس SL_USBD_EVENT_BUS_RESUME: // اس وقت کال کی جاتی ہے جب میزبان ویک اپ کمانڈ بریک بھیجتا ہے۔
ڈیفالٹ: وقفہ } }
void sl_usbd_on_config_event(sl_usbd_config_event_t ایونٹ، uint8_t config_nbr) { سوئچ (ایونٹ) { کیس SL_USBD_EVENT_CONFIG_SET:
// کہا جاتا ہے جب میزبان کنفیگریشن بریک سیٹ کرتا ہے۔
کیس SL_USBD_EVENT_CONFIG_UNSET: // اس وقت کہا جاتا ہے جب ایک کنفیگریشن غیر سیٹ بریک ہو۔
ڈیفالٹ: وقفہ } }

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

13/174

ختمview

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

14/174

ختمview
ختمview

USB ڈیوائس کلاسز

Silicon Labs USB ڈیوائس میں دستیاب USB کلاسیں کچھ عام خصوصیات کا اشتراک کرتی ہیں۔ یہ سیکشن ان خصوصیات اور بنیادی پرت کے ساتھ ان کے تعامل کی وضاحت کرتا ہے۔
کسی مخصوص کلاس کے بارے میں مزید معلومات کے لیے، درج ذیل دیکھیں:
CDC ACM کلاس HID کلاس MSC SCSI کلاس وینڈر کلاس
کلاس انسٹینس کے بارے میں
USB ڈیوائس میں دستیاب USB کلاسیں کلاس مثالوں کے تصور کو نافذ کرتی ہیں۔ کلاس مثال ایک ڈیوائس کے اندر ایک فنکشن کی نمائندگی کرتی ہے۔ فنکشن کو ایک انٹرفیس یا انٹرفیس کے گروپ کے ذریعہ بیان کیا جاسکتا ہے اور اس کا تعلق ایک مخصوص کلاس سے ہے۔
ہر USB کلاس کے نفاذ میں کلاس مثال کے تصور کی بنیاد پر کچھ کنفیگریشنز اور افعال مشترک ہوتے ہیں۔ عام کنفیگریشنز اور افعال نیچے دیے گئے جدول میں پیش کیے گئے ہیں۔ کالم کے عنوان 'مستقل یا فنکشن' میں، پلیس ہولڈر XXXX کو کلاس کے نام سے تبدیل کیا جا سکتا ہے: CDC, HID, MSC, CDC_ACM یا VENDOR (فنکشن کے ناموں کے لیے وینڈر)۔
جدول - متعدد طبقاتی مثالوں کے تصور سے متعلق مستقل اور افعال

مستقل یا فعل
SL_USBD_XXXXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_cre ate _insta nce ()
sl_usbd_XXX_add_to_conf iguration()

تفصیل
کلاس مثالوں کی زیادہ سے زیادہ تعداد کو کنفیگر کرتا ہے۔
کنفیگریشنز کی زیادہ سے زیادہ تعداد کو کنفیگر کرتا ہے۔ کلاس کے آغاز کے دوران، ایک تخلیق شدہ کلاس مثال کو ایک یا زیادہ کنفیگریشنز میں شامل کیا جائے گا۔ ایک نئی کلاس مثال بناتا ہے۔
مخصوص ڈیوائس کنفیگریشن میں ایک موجودہ کلاس مثال شامل کرتا ہے۔

کوڈ کے نفاذ کے لحاظ سے، کلاس ایک مقامی عالمی متغیر کا اعلان کرے گی جس میں کلاس کنٹرول ڈھانچہ شامل ہے۔ یہ کلاس کنٹرول ڈھانچہ ایک کلاس مثال سے منسلک ہے اور کلاس مثال کے انتظام کے لیے مخصوص معلومات پر مشتمل ہوگا۔
مندرجہ ذیل اعداد و شمار کئی صورتوں کو ظاہر کرتے ہیں۔ ہر اعداد و شمار میں ایک کوڈ سابق شامل ہے۔ample جو کیس کے منظر نامے سے مطابقت رکھتا ہے۔
فگر - ایک سے زیادہ کلاس مثالیں - FS ڈیوائس (1 کنفیگریشن 1 انٹرفیس کے ساتھ) ایک عام USB ڈیوائس کی نمائندگی کرتا ہے۔ ڈیوائس فل اسپیڈ (FS) ہے اور اس میں ایک کنفیگریشن ہے۔ ڈیوائس کے فنکشن کو ایک انٹرفیس کے ذریعے بیان کیا جاتا ہے جو ڈیٹا کمیونیکیشن کے لیے اینڈ پوائنٹس کے جوڑے پر مشتمل ہوتا ہے۔ ایک کلاس مثال تیار کی گئی ہے اور آپ کو اس کے منسلک اختتامی نقطہ کے ساتھ پورے انٹرفیس کا انتظام کرنے کی اجازت دے گی۔
تصویر – ایک سے زیادہ کلاس مثالیں – FS ڈیوائس 1 کنفیگریشن 1 انٹرفیس کے ساتھ)

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

15/174

ختمview

FS ڈیوائس (1 انٹرفیس کے ساتھ 1 کنفیگریشن) شکل سے متعلقہ کوڈ - ایک سے زیادہ کلاس انسٹینسز - سابق میں دکھایا گیا ہےampذیل میں.
Example - ایک سے زیادہ کلاس مثالیں - FS ڈیوائس 1 کنفیگریشن 1 انٹرفیس کے ساتھ)

sl_status_t حیثیت؛ uint8_t class_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* ہینڈل کلاس فعال ایونٹ۔ */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* ہینڈل کلاس غیر فعال ایونٹ۔ */ }

sl_usbd_XXX_callbacks_t class_callbacks = {

(1)

.enable = app_usbd_XXXXXX_enable،

.disable = app_usbd_XXXXXX_غیر فعال

};

حیثیت = sl_usbd_XXXX_init();

(2)

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

حیثیت = sl_usbd_XXX_create_instance(&class_callbacks,

(3)

&class_0);

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

حیثیت = sl_usbd_XXX_add_to_configuration(class_0, config_0);

(4)

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

(1) ہر کلاس ڈیوائس کنیکٹ/منقطع ایونٹس اور کلاس مخصوص ایونٹس کے لیے کال بیک فنکشنز کا ایک سیٹ پیش کرتی ہے۔ sl_usbd_XXXX_create_instance() کے ساتھ کلاس انسٹینس بناتے وقت کال بیک اسٹرکچر آبجیکٹ کو دلیل کے طور پر پاس کیا جاتا ہے۔
فنکشن
(1) کلاس شروع کریں۔ تمام داخلی متغیرات، ڈھانچے، اور کلاس پورٹس کو شروع کیا جائے گا۔ نوٹ کریں کہ کچھ کلاسوں میں Init() فنکشن دوسرے دلائل لے سکتا ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

16/174

ختمview
(2) کلاس مثال بنائیں، جو ہے class_0 ۔ فنکشن sl_usbd_XXX_create_instance() کلاس_0 سے وابستہ کلاس کنٹرول ڈھانچہ مختص کرتا ہے۔ کلاس پر منحصر ہے، sl_usbd_XXXX_create_instance() میں کلاس نمبر کے علاوہ اضافی پیرامیٹرز ہوسکتے ہیں جو کلاس کنٹرول ڈھانچے میں ذخیرہ شدہ کلاس مخصوص معلومات کی نمائندگی کرتے ہیں۔ aaa (3) cl ss inst nce، class_0، کو مخصوص کنفیگریشن نمبر، config_0 میں شامل کریں۔ sl_usbd_XXX_add_to_configuration() انٹرفیس 0 اور اس سے منسلک IN اور OUT اختتامی پوائنٹس بنائے گا۔ نتیجے کے طور پر، کلاس مثال انٹرفیس 0 اور اس کے اختتامی پوائنٹس کو گھیرے ہوئے ہے۔ انٹرفیس 0 پر کی جانے والی کوئی بھی بات چیت کلاس مثال نمبر، class_0 استعمال کرے گی۔ شکل - ایک سے زیادہ کلاس مثالیں - FS ڈیوائس (2 کنفیگریشنز اور ایک سے زیادہ انٹرفیسز) ایک زیادہ پیچیدہ سابقہ ​​کی نمائندگی کرتا ہے۔ample ایک فل سپیڈ ڈیوائس دو کنفیگریشنز پر مشتمل ہے۔ ڈیوائس میں دو فنکشنز ہیں جن کا تعلق ایک ہی کلاس سے ہے، لیکن ہر فنکشن کو دو انٹرفیس کے ذریعے بیان کیا گیا ہے اور اس میں دو طرفہ اختتامی نقطوں کا ایک جوڑا ہے۔ اس میں سابقample، دو طبقاتی مثالیں بنتی ہیں۔ ہر کلاس انسٹینس انٹرفیس کے ایک گروپ سے منسلک ہوتا ہے جیسا کہ شکل - ایک سے زیادہ کلاس انسٹینسز - FS ڈیوائس (1 انٹرفیس کے ساتھ 1 کنفیگریشن) اور فگر - ایک سے زیادہ کلاس انسٹینسز - FS ڈیوائس (2 کنفیگریشنز اور ایک سے زیادہ انٹرفیس) جہاں کلاس مثال ایک ہی انٹرفیس کے ساتھ منسلک تھی۔
تصویر – ایک سے زیادہ طبقاتی مثالیں – FS ڈیوائس 2 کنفیگریشنز اور ایک سے زیادہ انٹرفیس)

شکل سے متعلقہ کوڈ – ایک سے زیادہ کلاس انسٹینسز – FS ڈیوائس (2 کنفیگریشنز اور ایک سے زیادہ انٹرفیس) کو سابق میں دکھایا گیا ہے۔ampذیل میں. غلطی سے نمٹنے کو واضح کرنے کے لیے چھوڑ دیا گیا ہے۔
Example - ایک سے زیادہ کلاس مثالیں - FS ڈیوائس 2 کنفیگریشنز اور ایک سے زیادہ انٹرفیس)

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

17/174

ختمview

sl_status_t حیثیت؛ uint8_t class_0; uint8_t کلاس_1؛
حیثیت = sl_usbd_XXXX_init();
حیثیت = sl_usbd_XXX_create_instance(&class_0); حیثیت = sl_usbd_XXX_create_instance(&class_1);
حیثیت = sl_usbd_XXX_add_to_configuration(class_0, cfg_0)؛ حیثیت = sl_usbd_XXX_add_to_configuration(class_1, cfg_0)؛
حیثیت = sl_usbd_XXX_add_to_configuration(class_0, cfg_1)؛ حیثیت = sl_usbd_XXX_add_to_configuration(class_1, cfg_1)؛

(1)
(2) (3)
(4) (5)
(6) (6)

(1) کلاس شروع کریں۔ کسی بھی اندرونی متغیرات، ڈھانچے، اور کلاس پورٹس کو شروع کیا جائے گا۔
(2) کلاس مثال بنائیں، class_0 ۔ فنکشن sl_usbd_XXX_create_instance() کلاس_0 سے وابستہ کلاس کنٹرول ڈھانچہ مختص کرتا ہے۔
(3) کلاس مثال بنائیں، class_1 ۔ فنکشن sl_usbd_XXXX_create_instance() کلاس_1 سے وابستہ ایک اور کلاس کنٹرول ڈھانچہ مختص کرتا ہے۔
(4) کلاس مثال، class_0، کو ترتیب میں شامل کریں، cfg_0 ۔ sl_usbd_XXX_add_to_configuration() انٹرفیس 0، انٹرفیس 1، متبادل انٹرفیس، اور متعلقہ IN اور OUT اختتامی پوائنٹس بنائے گا۔ کلاس مثال نمبر، class_0، انٹرفیس 0 یا انٹرفیس 1 پر کسی بھی ڈیٹا کمیونیکیشن کے لیے استعمال کیا جائے گا۔
(5) کلاس مثال، class_1، کو ترتیب میں شامل کریں، cfg_0 ۔ sl_usbd_XXX_add_to_configuration() انٹرفیس 2، انٹرفیس 3 اور ان کے متعلقہ IN اور OUT اختتامی پوائنٹس بنائے گا۔ کلاس مثال نمبر، class_1، انٹرفیس 2 یا انٹرفیس 3 پر کسی بھی ڈیٹا کمیونیکیشن کے لیے استعمال کیا جائے گا۔
(6) کلاس_0 اور class_1 کو ایک ہی کلاس انسٹینس کو دوسری کنفیگریشن میں شامل کریں cfg_1 ۔
ہر کلاس قسم کی ساخت کی وضاحت کرتی ہے sl_usbd_XXXX_callbacks_t ۔ اس کا مقصد ہر کلاس کو کال بیک فنکشنز کا ایک سیٹ دینا ہے جو واقعہ پیش آنے پر کال کی جائے۔ ہر کلاس میں دو کال بیک فنکشنز موجود ہیں۔ وہ نیچے دیے گئے جدول میں پیش کیے گئے ہیں۔
ٹیبل - کامن کلاس کال بیک فنکشنز

فیلڈز کی تفصیل .enable اس وقت کال کی جاتی ہے جب USB کلاس انسٹینس کامیابی کے ساتھ فعال ہوجاتا ہے۔ .disable جب USB کلاس انسٹینس کو غیر فعال کیا جاتا ہے تو کال کی جاتی ہے۔

فنکشن دستخط void app_usbd_XXXX_enable(uint8_t class_nbr)؛ void app_usbd_XXXX_disable(uint8_t class_nbr)؛

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

18/174

ختمview
ختمview
USB ڈیوائس CDC ACM کلاس
USB ڈیوائس سی ڈی سی بیس کلاس ختمview بنیادی USB ڈیوائس CDC ACM سبکلاس اوور سے USB ڈیوائس CDC ACM کلاس وسائل کی ضرورت ہے۔view USB ڈیوائس CDC ACM کلاس کنفیگریشن USB ڈیوائس CDC ACM کلاس پروگرامنگ گائیڈ
یہ سیکشن کمیونیکیشن ڈیوائس کلاس (CDC) کلاس اور اس سے متعلقہ CDC ذیلی طبقے کی وضاحت کرتا ہے جسے Silicon Labs کے USB ڈیوائس اسٹیک سے تعاون حاصل ہے۔ Silicon Labs USB-Device فی الحال خلاصہ کنٹرول ماڈل (ACM) ذیلی طبقے کو سپورٹ کرتی ہے، جو عام طور پر سیریل ایمولیشن کے لیے استعمال ہوتا ہے۔
سی ڈی سی میں مختلف ٹیلی کمیونیکیشن اور نیٹ ورکنگ آلات شامل ہیں۔ ٹیلی کمیونیکیشن ڈیوائسز میں اینالاگ موڈیم، اینالاگ اور ڈیجیٹل ٹیلی فون، آئی ایس ڈی این ٹرمینل اڈاپٹر وغیرہ شامل ہیں۔ample، نیٹ ورکنگ ڈیوائسز میں ADSL اور کیبل موڈیم، ایتھرنیٹ اڈاپٹر، اور حب ہوتے ہیں۔ CDC ایک USB لنک کا استعمال کرتے ہوئے موجودہ مواصلاتی خدمات کے معیارات، جیسے V.250 (ٹیلی فون نیٹ ورک پر موڈیم کے لیے) اور ایتھرنیٹ (لوکل ایریا نیٹ ورک ڈیوائسز کے لیے) کو سمیٹنے کے لیے ایک فریم ورک کی وضاحت کرتا ہے۔ ایک کمیونیکیشن ڈیوائس ڈیوائس مینجمنٹ، ضرورت پڑنے پر کال مینجمنٹ اور ڈیٹا ٹرانسمیشن کا انچارج ہوتا ہے۔
CDC آلات کے سات بڑے گروپس کی وضاحت کرتا ہے۔ ہر گروپ مواصلات کے ایک ماڈل سے تعلق رکھتا ہے، جس میں کئی ذیلی طبقات شامل ہو سکتے ہیں۔ آلات کے ہر گروپ کے پاس سی ڈی سی بیس کلاس کے علاوہ اس کی اپنی تفصیلات کی دستاویز ہوتی ہے۔ سات گروہ یہ ہیں:
پبلک سوئچڈ ٹیلی فون نیٹ ورک (PSTN)، ڈیوائسز بشمول وائس بینڈ موڈیم، ٹیلی فون، اور سیریل ایمولیشن ڈیوائسز۔ انٹیگریٹڈ سروسز ڈیجیٹل نیٹ ورک (ISDN) ڈیوائسز، بشمول ٹرمینل اڈاپٹر اور ٹیلی فون۔ ایتھرنیٹ کنٹرول ماڈل (ECM) ڈیوائسز، بشمول IEEE 802 فیملی کو سپورٹ کرنے والے آلات (مثال کے طور پر: کیبل اور ADSL موڈیم، وائی فائی اڈاپٹر)۔ غیر مطابقت پذیر ٹرانسفر موڈ (ATM) ڈیوائسز، بشمول ADSL موڈیم اور ATM نیٹ ورکس (ورک سٹیشنز، روٹرز، LAN سوئچز) سے منسلک دیگر آلات۔ وائرلیس موبائل کمیونیکیشنز (WMC) ڈیوائسز، بشمول ملٹی فنکشن کمیونیکیشن ہینڈ سیٹ ڈیوائسز جو آواز اور ڈیٹا کمیونیکیشنز کو منظم کرنے کے لیے استعمال ہوتے ہیں۔ ایتھرنیٹ ایمولیشن ماڈل (EEM) آلات جو ایتھرنیٹ فریم شدہ ڈیٹا کا تبادلہ کرتے ہیں۔ نیٹ ورک کنٹرول ماڈل (NCM) ڈیوائسز، بشمول تیز رفتار نیٹ ورک ڈیوائسز (ہائی اسپیڈ پیکٹ ایکسیس موڈیم، لائن ٹرمینل کا سامان)
سی ڈی سی اور متعلقہ ذیلی طبقے کا نفاذ درج ذیل تصریحات کی تعمیل کرتا ہے:
یونیورسل سیریل بس، کمیونیکیشن ڈیوائسز کے لیے کلاس ڈیفینیشنز، ریویژن 1.2، 3 نومبر 2010۔ یونیورسل سیریل بس، کمیونیکیشنز، PSTN ڈیوائسز کے لیے ذیلی کلاس، نظر ثانی 1.2، فروری 9 2007۔
USB ڈیوائس سی ڈی سی بیس کلاس ختمview
مواصلات کی صلاحیت کو نافذ کرنے کے لیے ایک CDC ڈیوائس درج ذیل انٹرفیس پر مشتمل ہے:
کمیونیکیشن کلاس انٹرفیس (CCI) ڈیوائس مینجمنٹ اور اختیاری طور پر کال مینجمنٹ کے لیے ذمہ دار ہے۔ دی
ڈیوائس مینجمنٹ ڈیوائس کی عمومی ترتیب اور کنٹرول اور میزبان کو واقعات کی اطلاع دینے کے قابل بناتی ہے۔ کال مینجمنٹ کالز کے قیام اور ختم کرنے کے قابل بناتا ہے۔ کال کا انتظام DCI کے ذریعے ملٹی پلیکس ہو سکتا ہے۔ ایک CCI تمام CDC آلات کے لیے لازمی ہے۔ یہ CDC ڈیوائس کے ذریعے تعاون یافتہ کمیونیکیشن ماڈل کی وضاحت کر کے CDC فنکشن کی شناخت کرتا ہے۔ CCI کی پیروی کرنے والا انٹرفیس کوئی بھی متعین USB کلاس انٹرفیس ہو سکتا ہے، جیسے آڈیو یا وینڈر کے لیے مخصوص انٹرفیس۔ وینڈر کے لیے مخصوص انٹرفیس کی نمائندگی خاص طور پر DCI کرتا ہے۔
ڈیٹا کلاس انٹرفیس (DCI) ڈیٹا کی ترسیل کے لیے ذمہ دار ہے۔ منتقل کردہ اور/یا موصول ہونے والا ڈیٹا کسی مخصوص کی پیروی نہیں کرتا ہے۔
فارمیٹ ڈیٹا کمیونیکیشن لائن سے خام ڈیٹا ہو سکتا ہے، ملکیتی فارمیٹ کے بعد ڈیٹا، وغیرہ۔ CCI کی پیروی کرنے والے تمام DCIs کو ماتحت انٹرفیس کے طور پر دیکھا جا سکتا ہے۔
ایک CDC ڈیوائس میں کم از کم ایک CCI اور صفر یا زیادہ DCI ہونا ضروری ہے۔ ایک CCI اور کوئی بھی ماتحت DCI مل کر میزبان کو ایک خصوصیت فراہم کرتا ہے۔ اس صلاحیت کو فنکشن بھی کہا جاتا ہے۔ ایک CDC کمپوزٹ ڈیوائس میں، آپ کے پاس کئی ہو سکتے ہیں۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

19/174

ختمview
افعال لہذا، یہ آلہ CCI اور DCI(s) کے کئی سیٹوں پر مشتمل ہوگا جیسا کہ شکل میں دکھایا گیا ہے - CDC کمپوزٹ ڈیوائس۔
تصویر - CDC کمپوزٹ ڈیوائس

ممکنہ طور پر ایک سی ڈی سی ڈیوائس مندرجہ ذیل پوائنٹس کے امتزاج کا استعمال کرے گی۔
کنٹرول کے IN اور OUT اینڈ پوائنٹس کا ایک جوڑا ڈیفالٹ اینڈ پوائنٹ کہلاتا ہے۔ اختتامی نقطہ میں ایک اختیاری بلک یا مداخلت۔ بلک یا isochronous IN اور OUT اختتامی پوائنٹس کا ایک جوڑا۔ نوٹ کریں کہ Silicon Labs USB ڈیوائس اسٹیک فی الحال isochronous endpoints کو سپورٹ نہیں کرتا ہے۔
نیچے دی گئی جدول مختلف اختتامی نقطوں کے استعمال اور CDC کے کس انٹرفیس کے ذریعے ان کا استعمال دکھاتی ہے۔
ٹیبل - CDC اینڈ پوائنٹ کا استعمال

اختتامی نقطہ
کنٹرول IN
کنٹرول آؤٹ
رکاوٹ یا بلک IN بلک یا isochronous IN بلک یا isochronous
باہر

سمت
ڈیوائس سے میزبان
ہوسٹ ٹو ڈیوائس
ڈیوائس سے میزبان
ڈیوائس سے میزبان
ہوسٹ ٹو ڈیوائس

انٹرفیس کا استعمال

سی سی آئی

گنتی کے لیے معیاری درخواستیں، کلاس کے لیے مخصوص درخواستیں، ڈیوائس

مینجمنٹ، اور اختیاری طور پر کال مینجمنٹ۔

سی سی آئی

گنتی کے لیے معیاری درخواستیں، کلاس کے لیے مخصوص درخواستیں، ڈیوائس

مینجمنٹ، اور اختیاری طور پر کال مینجمنٹ۔

سی سی آئی

واقعات کی اطلاع، جیسے رنگ کا پتہ لگانا، سیریل لائن کی حیثیت، نیٹ ورک کی حیثیت۔

ڈی سی آئی

خام یا فارمیٹ شدہ ڈیٹا مواصلات۔

ڈی سی آئی

خام یا فارمیٹ شدہ ڈیٹا مواصلات۔

زیادہ تر مواصلاتی آلات واقعات کے میزبان کو مطلع کرنے کے لیے ایک انٹرپٹ اینڈ پوائنٹ کا استعمال کرتے ہیں۔ جب USB پروٹوکول کی خرابیوں کی صورت میں ملکیتی پروٹوکول ڈیٹا کی دوبارہ منتقلی پر انحصار کرتا ہے تو ڈیٹا ٹرانسمیشن کے لیے Isochronous endpoints کا استعمال نہیں کیا جانا چاہیے۔ Isochronous کمیونیکیشن موروثی طور پر ڈیٹا کھو سکتی ہے کیونکہ اس میں دوبارہ کوشش کرنے کا کوئی طریقہ کار نہیں ہے۔
مواصلات کے سات بڑے ماڈلز کئی ذیلی طبقات کو گھیرے ہوئے ہیں۔ ایک ذیلی کلاس اس طریقہ کی وضاحت کرتی ہے جس طرح ڈیوائس کو ڈیوائس مینجمنٹ اور کال مینجمنٹ کو سنبھالنے کے لیے CCI کا استعمال کرنا چاہیے۔ نیچے دی گئی جدول میں تمام ممکنہ ذیلی طبقات اور مواصلاتی ماڈل دکھایا گیا ہے جس سے وہ تعلق رکھتے ہیں۔
ٹیبل - CDC ذیلی کلاسز

ذیلی کلاس
براہ راست لائن کنٹرول ماڈل خلاصہ کنٹرول ماڈل

مواصلاتی ماڈل
پی ایس ٹی این
پی ایس ٹی این

Exampاس ذیلی طبقے کو استعمال کرنے والے آلات کی فہرست
موڈیم ڈیوائسز جو براہ راست USB ہوسٹ کے زیر کنٹرول ہیں۔
سیریل ایمولیشن ڈیوائسز، موڈیم ڈیوائسز کو سیریل کمانڈ سیٹ کے ذریعے کنٹرول کیا جاتا ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

20/174

ختمview

ذیلی کلاس

مواصلاتی ماڈل

Exampاس ذیلی طبقے کو استعمال کرنے والے آلات کی فہرست

ٹیلی فون کنٹرول ماڈل

پی ایس ٹی این

ملٹی چینل کنٹرول ISDN ماڈل

CAPI کنٹرول ماڈل ISDN

ایتھرنیٹ نیٹ ورکنگ ECM کنٹرول ماڈل

اے ٹی ایم نیٹ ورکنگ

اے ٹی ایم

کنٹرول ماڈل

وائرلیس ہینڈ سیٹ کنٹرول ماڈل

ڈبلیو ایم سی

ڈیوائس مینجمنٹ ڈبلیو ایم سی

موبائل ڈائریکٹ لائن ماڈل

ڈبلیو ایم سی

اوبیکس

ڈبلیو ایم سی

ایتھرنیٹ ایمولیشن EEM ماڈل

نیٹ ورک کنٹرول ماڈل

NCM

صوتی ٹیلی فونی آلات
بنیادی شرح ٹرمینل اڈاپٹر، بنیادی شرح ٹرمینل اڈاپٹر، ٹیلی فون
بنیادی شرح ٹرمینل اڈاپٹر، بنیادی شرح ٹرمینل اڈاپٹر، ٹیلی فون DOC-SIS کیبل موڈیم، ADSL موڈیم جو PPPoE ایمولیشن کو سپورٹ کرتے ہیں، Wi-Fi اڈاپٹر (IEEE 802.11-family)، IEEE 802.3 اڈاپٹر ADSL موڈیم
وائرلیس آلات سے منسلک موبائل ٹرمینل کا سامان
وائرلیس آلات سے منسلک موبائل ٹرمینل کا سامان وائرلیس آلات سے منسلک موبائل ٹرمینل کا سامان
موبائل ٹرمینل کا سامان وائرلیس آلات سے جڑنے والے آلات ایتھرنیٹ فریموں کو نقل و حمل کی اگلی پرت کے طور پر استعمال کرتے ہیں۔ نیٹ ورک پر تیز رفتار ڈیٹا بینڈوڈتھ لے جانے والے IEEE 802.3 اڈاپٹر روٹنگ اور انٹرنیٹ کنیکٹیویٹی ڈیوائسز کے لیے نہیں ہیں۔

کور سے USB ڈیوائس CDC ACM کلاس وسائل کی ضرورت ہے۔

جب بھی آپ فنکشن sl_usbd_cdc_acm_add_to_configuration() کو کال کے ذریعے USB کنفیگریشن میں CDC ACM کلاس مثال شامل کرتے ہیں، تو درج ذیل وسائل کور سے مختص کیے جائیں گے۔

وسیلہ
انٹرفیسز متبادل انٹرفیس اینڈ پوائنٹس انٹرفیس گروپس

مقدار
2 2 3 1

نوٹ کریں کہ وہ نمبرز فی کنفیگریشن ہیں۔ اپنی SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY اور SL_USBD_DESCRIPTOR_QUANTITY کنفیگریشن ویلیوز کو ترتیب دیتے وقت، اس بات کا خیال رکھنا نہ بھولیں کہ کتنی کلاس کنفیگریشنز شامل کی جائیں گی۔ SL_USBD_OPEN_ENDPOINTS_QUANTITY کنفیگریشن ویلیو کے لیے، چونکہ اینڈ پوائنٹس صرف اس وقت کھولے جاتے ہیں جب میزبان کی طرف سے کنفیگریشن سیٹ کی جاتی ہے، آپ کو صرف کلاس مثال کے لیے مطلوبہ اینڈ پوائنٹس کی تعداد کو مدنظر رکھنا ہوگا۔
USB ڈیوائس سی ڈی سی اے سی ایم سب کلاس اوورview

CDC بیس کلاس ایک کمیونیکیشن کلاس انٹرفیس (CCI) اور ڈیٹا کلاس انٹرفیس (DCI) پر مشتمل ہے، جس پر USB Device CDC بیس کلاس اوور میں تفصیل سے بات کی گئی ہے۔view . یہ سیکشن ACM قسم کے CCI پر بحث کرتا ہے۔ یہ انتظامی عنصر کے لیے ایک طے شدہ اختتامی نقطہ اور اطلاع کے عنصر کے لیے ایک مداخلتی اختتامی نقطہ پر مشتمل ہوتا ہے۔ بلک اینڈ پوائنٹس کا ایک جوڑا DCI پر غیر متعینہ ڈیٹا لے جانے کے لیے استعمال کیا جاتا ہے۔
ACM ذیلی طبقے کو دو قسم کے مواصلاتی آلات استعمال کرتے ہیں:
اے ٹی کمانڈز کو سپورٹ کرنے والے آلات (مثال کے طور پر وائس بینڈ موڈیم)۔ سیریل ایمولیشن ڈیوائسز جنہیں ورچوئل COM پورٹ ڈیوائسز بھی کہا جاتا ہے۔
ACM ذیلی طبقے کے لیے کئی ذیلی طبقے کے لیے مخصوص درخواستیں ہیں۔ وہ آپ کو آلہ کو کنٹرول اور ترتیب دینے کی اجازت دیتے ہیں۔ تمام ACM درخواستوں کی مکمل فہرست اور تفصیل تفصیلات میں مل سکتی ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

21/174

ختمview ذیلی کلاس برائے PSTN ڈیوائسز، نظرثانی 1.2، فروری 9، 2007=، سیکشن 6.2.2۔
اس فہرست سے، Silicon Labs9 ACM ذیلی کلاس درج ذیل کی حمایت کرتا ہے:
ٹیبل - ACM درخواستیں سلیکون لیبز کے ذریعہ تعاون یافتہ ہیں۔

ذیلی طبقے کی درخواست کی تفصیل

SetCommFeature GetCommFeature ClearCommFeature

میزبان ایک دی گئی کمیونیکیشن خصوصیت کی ترتیبات کو کنٹرول کرنے کے لیے یہ درخواست بھیجتا ہے۔ سیریل ایمولیشن کے لیے استعمال نہیں کیا گیا۔
میزبان ایک دی گئی مواصلاتی خصوصیت کے لیے موجودہ ترتیبات حاصل کرنے کے لیے یہ درخواست بھیجتا ہے۔ سیریل ایمولیشن کے لیے استعمال نہیں کیا گیا۔
میزبان ایک دی گئی مواصلاتی خصوصیت کی ترتیبات کو صاف کرنے کے لیے یہ درخواست بھیجتا ہے۔ سیریل ایمولیشن کے لیے استعمال نہیں کیا گیا۔

سیٹ لائن کوڈنگ

میزبان ACM ڈیوائس کی ترتیبات کو ترتیب دینے کے لیے یہ درخواست بھیجتا ہے: بوڈ ریٹ، اسٹاپ بٹس کی تعداد، برابری کی قسم اور ڈیٹا بٹس کی تعداد۔ سیریل ایمولیشن کے لیے، جب بھی آپ کھلے ورچوئل COM پورٹ کے لیے سیریل سیٹنگز کنفیگر کرتے ہیں تو یہ درخواست سیریل ٹرمینل کے ذریعے خود بخود بھیجی جاتی ہے۔

گیٹ لائن کوڈنگ

میزبان موجودہ ACM کی ترتیبات (باؤڈ ریٹ، اسٹاپ بٹس، برابری، ڈیٹا بٹس) حاصل کرنے کے لیے یہ درخواست بھیجتا ہے۔ سیریل ایمولیشن کے لیے، سیریل ٹرمینلز اس درخواست کو ورچوئل COM پورٹ کھولنے کے دوران خود بخود بھیج دیتے ہیں۔

SetControlLineState میزبان یہ درخواست ہاف ڈوپلیکس موڈیم کے لیے کیریئر کو کنٹرول کرنے کے لیے بھیجتا ہے اور اس بات کی نشاندہی کرتا ہے کہ ڈیٹا ٹرمینل ایکویپمنٹ (DTE) تیار ہے یا نہیں۔ سیریل ایمولیشن کیس میں، ڈی ٹی ای ایک سیریل ٹرمینل ہے۔ سیریل ایمولیشن کے لیے، کچھ سیریل ٹرمینلز آپ کو یہ درخواست کنٹرول سیٹ کے ساتھ بھیجنے کی اجازت دیتے ہیں۔

سیٹ بریک

میزبان یہ درخواست RS-232 طرز کا وقفہ پیدا کرنے کے لیے بھیجتا ہے۔ سیریل ایمولیشن کے لیے، کچھ سیریل ٹرمینلز آپ کو یہ درخواست بھیجنے کی اجازت دیتے ہیں۔

Silicon Labs9 ACM ذیلی کلاس میزبان کو موجودہ سیریل لائن حالت کے بارے میں مطلع کرنے کے لیے انٹرپٹ IN اینڈ پوائنٹ کا استعمال کرتا ہے۔ سیریل
لائن اسٹیٹ ایک بٹ میپ ہے جس کے بارے میں میزبان کو مطلع کیا جاتا ہے:

حد سے زیادہ برابری کی خرابی کی وجہ سے ڈیٹا کو ضائع کر دیا گیا فریمنگ کی خرابی انگوٹی سگنل کا پتہ لگانے کی حالت وقفے کا پتہ لگانے کے طریقہ کار کی حالت ٹرانسمیشن کیریئر کی حالت وصول کنندہ کیریئر کا پتہ لگانے کی حالت

Silicon Labs9 ACM ذیلی طبقے کا نفاذ درج ذیل تفصیلات کی تعمیل کرتا ہے:
یونیورسل سیریل بس، کمیونیکیشنز، سب کلاس فار PSTN ڈیوائسز، نظرثانی 1.2، فروری 9، 2007۔
USB ڈیوائس CDC ACM کلاس کنفیگریشن

یہ سیکشن سی ڈی سی ACM کلاس (کمیونیکیشن ڈیوائس کلاس، خلاصہ کنٹرول ماڈل) کو ترتیب دینے کے طریقہ پر بحث کرتا ہے۔ ترتیب کے پیرامیٹرز کے دو گروپ ہیں:
یو ایس بی ڈیوائس سی ڈی سی اے سی ایم کلاس ایپلیکیشن مخصوص کنفیگریشنز یو ایس بی ڈیوائس سی ڈی سی اے سی ایم کلاس انسٹینس کنفیگریشنز
USB ڈیوائس CDC ACM کلاس ایپلیکیشن کی مخصوص کنفیگریشنز

سی ڈی سی بیس کلاس ACM سب کلاس
سی ڈی سی بیس کلاس

سب سے پہلے، Silicon Labs USB ڈیوائس CDC کلاس ماڈیول کو استعمال کرنے کے لیے، آپ کو اپنی درخواست کی ضروریات کے مطابق CDC کمپائل ٹائم کنفیگریشن #define-s کو ایڈجسٹ کرنے کی ضرورت ہوگی۔ وہ sl_usbd_core_config.h ہیڈر کے اندر دوبارہ منظم ہیں۔ file سی ڈی سی سیکشن کے تحت۔ ان کا مقصد USB ڈیوائس ماڈیول کو بتانا ہے کہ کتنی USB CDC اشیاء مختص کرنی ہیں۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

22/174

ختمview

نیچے دی گئی جدول اس ترتیب کے ڈھانچے میں دستیاب ہر کنفیگریشن فیلڈ کی وضاحت کرتی ہے۔
ٹیبل - USB ڈیوائس سی ڈی سی کنفیگریشن کی وضاحت کرتا ہے۔

کنفیگریشن کا نام
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_DATA _INTERFACE_QUANTI
TY

تفصیل
کلاس مثالوں کی تعداد جو آپ فنکشن میں کال کے ذریعے مختص کریں گے۔
sl_usbd_cdc_acm_create_instance() ۔
کنفیگریشنز کی تعداد۔ ACM کلاس مثالوں کو sl_usbd_cdc_acm_add_to_configuration() میں ایک یا زیادہ aaaa کنفیگریشنز vi c ll میں شامل کیا جا سکتا ہے۔
CDC کے تمام افعال کے لیے ڈیٹا انٹرفیس (DCI) کی کل تعداد۔ ہر CDC ACM فنکشن aaaaaaaa dded vi c ll فنکشن sl_usbd_cdc_acm_create_instance() سے dd dt interf ce ہوگا۔

ڈیفالٹ قدر
2
1
2

ACM ذیلی کلاس
ACM ذیلی کلاس میں ایک مرتب وقت کی ترتیب ہے جو نیچے دی گئی جدول میں دکھائی گئی ہے۔
ٹیبل - USB ڈیوائس CDC ACM کنفیگریشن ڈیفائن

کنفیگریشن کا نام
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

تفصیل
ذیلی طبقاتی مثالوں کی تعداد کو ترتیب دیتا ہے جسے آپ کال کے ذریعے مختص کریں گے۔
فنکشن sl_usbd_cdc_acm_create_instance() ۔

ڈیفالٹ قدر
2

USB ڈیوائس CDC ACM کلاس انسٹینس کنفیگریشنز

یہ سیکشن CDC ACM سیریل کلاس مثالوں سے متعلق کنفیگریشنز کی وضاحت کرتا ہے۔ کلاس انسٹینس کریشن لائن اسٹیٹ وقفہ کال mgmt صلاحیتیں p_acm_callbacks
کلاس مثال کی تخلیق

CDC ACM سیریل کلاس مثال بنانے کے لیے، فنکشن T a sl_usbd_cdc_acm_create_instance() کو کال کریں۔ اس کا فنکشن تین کنفیگریشن آرگیومنٹ رکھتا ہے، جیسا کہ یہاں بیان کیا گیا ہے۔

line_state_interval
یہ وہ وقفہ ہے (ملی سیکنڈ میں) کہ آپ کی CDC ACM سیریل کلاس مثال T aa میزبان کو لائن اسٹیٹ اطلاعات کی اطلاع دے گی۔ اس کا v لو دو کی طاقت کا ہونا چاہیے (1، 2، 4، 8، 16، وغیرہ)۔

call_mgmt_capabilities
کال مینجمنٹ کی صلاحیتوں کا بٹ میپ۔ بٹ میپ کی ممکنہ قدریں درج ذیل ہیں:

قدر (بٹ)
SL_USBD_ACM_SERIAL_CALL_MGMT_DEV
SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI _DCI

تفصیل
ڈیوائس کال مینجمنٹ کو ہینڈل کرتی ہے۔ ڈیوائس ڈیٹا کلاس انٹرفیس پر کال مینجمنٹ کی معلومات بھیج/ وصول کر سکتی ہے۔

p_acm_callbacks

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

23/174

ختمview

aa M aa p_acm_callbacks قسم sl_usbd_cdc_acm_callbacks_t کی ساخت کی طرف اشارہ کرتا ہے۔ اس کا مقصد CDC AC Cl ss کو کال بیک فنکشنز کا سیٹ دینا ہے جب CDC ACM ایونٹ ہوتا ہے۔ تمام کال بیکس لازمی نہیں ہیں اور جب کال بیک کی ضرورت نہ ہو تو کال بیکس سٹرکچر متغیر میں ایک null پوائنٹر (NULL ) پاس کیا جا سکتا ہے۔ نیچے دی گئی جدول اس ترتیب کے ڈھانچے میں دستیاب ہر کنفیگریشن فیلڈ کی وضاحت کرتی ہے۔
ٹیبل - sl_usbd_cdc_acm _callbacks_t کنفیگریشن کا ڈھانچہ

فیلڈز

تفصیل

.enable

USB کلاس مثال کے فعال ہونے پر کال کی جاتی ہے۔

کامیابی سے

.غیر فعال کریں۔

USB کلاس مثال کے غیر فعال ہونے پر کال کی جاتی ہے۔

.line_control_changed لائن کنٹرول میں تبدیلی موصول ہونے پر کال کی جاتی ہے۔

line_coding_changed جب لائن کوڈنگ کی تبدیلی موصول ہوتی ہے تو اسے کال کیا جاتا ہے۔

فنکشن دستخط
void app_usbd_cdc_acm_enable(uint8_t subclass_nbr)؛
void app_usbd_cdc_acm_disable(uint8_t subclass_nbr)؛
void app_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr، uint8_t ایونٹ، uint8_t event_chngd)؛ bool app_usbd_cdc_acm_line_coding_changed(uint8_t subclass_nbr, subclass_nbr, sl_usbd_cdc_acm_line_coding_t
*پی_لائن_کوڈنگ

کال بیک فنکشنز کے لیے ایونٹ کے نوٹیفکیشن کال بیکس کا رجسٹرنگ سیکشن دیکھیںample
USB ڈیوائس CDC ACM کلاس پروگرامنگ گائیڈ

یہ سیکشن وضاحت کرتا ہے کہ سی ڈی سی خلاصہ کنٹرول ماڈل کلاس کو کیسے استعمال کیا جائے۔ USB ڈیوائس CDC ACM کلاس شروع کرنا CDC ACM کلاس کا استعمال کرتے ہوئے آپ کے ڈیوائس میں USB ڈیوائس CDC ACM کلاس مثال شامل کرنا
USB ڈیوائس CDC ACM کلاس شروع کرنا

اپنے آلے میں CDC ACM کلاس فنکشنلٹی کو شامل کرنے کے لیے، آپ کو پہلے CDC بیس کلاس اور ACM ذیلی کلاس کو شروع کرنا ہوگا aac فنکشنز sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init()۔ T aaaaa وہ سابق mple ذیل میں دکھاتا ہے کہ کس طرح ll sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() ڈیف الٹ آرگیومینٹس کا استعمال کرتے ہوئے۔

Example - CDC ACM کلاس کا آغاز

sl_status_t حیثیت؛
حیثیت = sl_usbd_cdc_init(); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}
حیثیت = sl_usbd_cdc_acm_init(); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}
آپ کے آلے میں USB ڈیوائس CDC ACM کلاس مثال شامل کرنا
اپنے آلے میں CDC ACM کلاس کی فعالیت شامل کرنے کے لیے، آپ کو ایک مثال بنانا چاہیے، پھر اسے اپنے آلے کی ترتیب (کنفیگریشنز) میں شامل کریں۔
CDC ACM کلاس مثال بنانا

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

24/174

ختمview
CDC ACM کلاس مثال کو اپنے ڈیوائس کی کنفیگریشن (زبانوں) میں شامل کرنا ایونٹ کے نوٹیفکیشن کال بیکس کو رجسٹر کرنا
CDC ACM کلاس مثال بنانا
aa M aaa Cre te CDC AC cl ss instnce c lling فنکشن sl_usbd_cdc_acm_create_instance() کے ذریعے۔ T aaa M aaa he ex mple ذیل میں دکھایا گیا ہے کہ te CDC AC cl ss inst nce vi sl_usbd_cdc_acm_create_instance() کیسے بنایا جائے۔
Example - sl_usbd_cdc_acm_create_instance() کے ذریعے CDC ACM فنکشن بنانا

uint8_t subclass_nbr؛ sl_status_t حیثیت؛
status = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV، NULL، &subclass_nbr)؛
اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}
آپ کے آلے کی ترتیب (کنفیگریشنز) میں CDC ACM کلاس مثال شامل کرنا
CDC ACM کلاس مثال بنانے کے بعد، آپ فنکشن کو کال کر کے اسے کنفیگریشن میں شامل کر سکتے ہیں۔
sl_usbd_cdc_acm_add_to_configuration() ۔
T aa he ex mple ذیل میں دکھایا گیا ہے کہ کس طرح c ll sl_usbd_cdc_acm_add_to_configuration() ۔
Example – USBD ACM پر کال کریں sl_usbd_cdc_acm_add_to_configuration()

sl_status_t حیثیت؛

حیثیت = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr،

(1)

config_nbr_fs)؛

(2)

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

aaa (1) sl_usbd_cdc_acm_create_instance() کے ذریعہ واپس کردہ کنفیگریشن میں dd کرنے کے لئے Cl ss نمبر۔ (2) کنفیگریشن نمبر (یہاں اسے فل اسپیڈ کنفیگریشن میں شامل کرنا)۔
ایونٹ نوٹیفکیشن کال بیکس کو رجسٹر کرنا
CDC ACM سیریل کلاس آپ کی درخواست کو لائن کنٹرول یا کوڈنگ میں کسی بھی تبدیلی کی اطلاع کال بیک فنکشنز کے ذریعے مطلع کر سکتی ہے۔ ACM مثال کی تخلیق کے دوران ایک کال بیک فنکشنز کا ڈھانچہ بطور دلیل پاس کیا جا سکتا ہے۔ نوٹ کریں کہ وہ کال بیکس اختیاری ہیں۔ سابقample – CDC ACM کال بیکس رجسٹریشن کال بیک رجسٹریشن فنکشنز کے استعمال کو واضح کرتی ہے۔ سابقample - CDC ACM کال بیکس کا نفاذ ایک سابقہ ​​کو ظاہر کرتا ہے۔ampکال بیک فنکشنز کے نفاذ کا مرحلہ۔
Example - CDC ACM کال بیکس رجسٹریشن

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

25/174

ختمview

uint8_t subclass_nbr؛ sl_status_t حیثیت؛
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { app_usbd_cdc_acm_connect, app_usbd_cdc_acm_disconnect, app_usbd_cdc_acm_line_control_changed, app_usbd_cdc_acm_line_coding_changed, };
status = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, &sli_usbd_cdc_acm_subclass, &subclass_callback);
اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */ }
Example - CDC ACM کال بیکس کا نفاذ

bool app_usbd_cdc_acm_line_coding_changed (uint8_t

subclass_nbr،

sl_usbd_cdc_acm_line_coding_t *p_line_coding)

{

uint32_t baudrate_new;

uint8_t parity_new;

uint8_t stop_bits_new;

uint8_t data_bits_new؛

/* ٹوڈو نئی لائن کوڈنگ کا اطلاق کریں۔*/ baudrate_new = p_line_coding->BaudRate؛ parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

واپسی (سچ)؛

(1)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr، uint8_t ایونٹ، uint8_t ایونٹ_تبدیل)
{ bool rts_state; bool rts_state_changed; bool dtr_state؛ bool dtr_state_changed؛ bool brk_state; bool brk_state_changed;

/* ٹوڈو نیا لائن کنٹرول لاگو کریں۔ */ rts_state = ((واقعہ اور SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? سچ: غلط rts_state_changed = ((واقعہ_تبدیل اور SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? سچ: غلط dtr_state = ((واقعہ اور SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? سچ: غلط dtr_state_changed = ((واقعہ_تبدیل اور SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? سچ: غلط brk_state = ((ایونٹ اور SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? سچ: غلط brk_state_changed = ((واقعہ_تبدیل اور SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ؟ سچ: غلط
}

(1) اگر لائن کوڈنگ لاگو کرنے میں ناکام ہو جائے تو اس فنکشن میں غلط کو واپس کرنا ضروری ہے۔ دوسری صورت میں، سچ واپس.
CDC ACM کلاس کا استعمال کرتے ہوئے بات چیت کرنا
سیریل اسٹیٹس
لائن کوڈنگ لائن کنٹرول

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

26/174

ختمview

لائن اسٹیٹ سب کلاس انسٹینس کمیونیکیشن
سیریل اسٹیٹس
لائن کوڈنگ
USB ہوسٹ CDC ACM ڈیوائس کی لائن کوڈنگ (باؤڈ ریٹ، برابری وغیرہ) کو کنٹرول کرتا ہے۔ جب ضروری ہو، درخواست لائن کوڈنگ ترتیب دینے کی ذمہ دار ہے۔ موجودہ لائن کوڈنگ کو دوبارہ حاصل کرنے اور سیٹ کرنے کے لیے دو فنکشن فراہم کیے گئے ہیں، جیسا کہ ذیل کے جدول میں بیان کیا گیا ہے۔
ٹیبل - CDC ACM لائن کوڈنگ فنکشنز

فنکشن
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()

تفصیل
آپ کی ایپلیکیشن موجودہ لائن کوڈنگ سیٹنگز کو یا تو میزبان سے سیٹ لائن کوڈنگ کی درخواستوں کے ساتھ یا فنکشن کے ساتھ حاصل کر سکتی ہے sl_usbd_cdc_acm_set_line_coding() ۔
آپ کی درخواست لائن کوڈنگ سیٹ کر سکتی ہے۔ میزبان GetLineCoding کی درخواست کے ساتھ ترتیبات کو بازیافت کرسکتا ہے۔

لائن کنٹرول
USB ہوسٹ CDC ACM ڈیوائس کے لائن کنٹرول (RTS اور DTR پن، بریک سگنل وغیرہ) کو کنٹرول کرتا ہے۔ جب ضروری ہو، آپ کی درخواست لائن کنٹرولز کو لاگو کرنے کی ذمہ دار ہے۔ موجودہ لائن کنٹرولز کو دوبارہ حاصل کرنے اور سیٹ کرنے کے لیے ایک فنکشن فراہم کیا گیا ہے، جیسا کہ ذیل کے جدول میں بیان کیا گیا ہے۔
ٹیبل - CDC ACM لائن کنٹرول فنکشنز

فنکشن
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()

آپ کی درخواست SetControlLineState درخواست کے ساتھ میزبان کی طرف سے سیٹ کردہ موجودہ کنٹرول لائن حالت حاصل کر سکتی ہے۔

لائن اسٹیٹ
USB ہوسٹ باقاعدہ وقفہ پر لائن سٹیٹ کو بازیافت کرتا ہے۔ آپ کی درخواست کو ہر بار جب یہ تبدیل ہوتا ہے لائن کی حالت کو اپ ڈیٹ کرنا ضروری ہے۔ جب ضروری ہو، آپ کی درخواست لائن کی حالت کو ترتیب دینے کی ذمہ دار ہے۔ موجودہ لائن کنٹرولز کو دوبارہ حاصل کرنے اور سیٹ کرنے کے لیے دو فنکشن فراہم کیے گئے ہیں، جیسا کہ نیچے دی گئی جدول میں بیان کیا گیا ہے۔
ٹیبل - CDC ACM لائن S ٹیٹ فنکشنز

فنکشن
sl_usb d _cd c_acm_se t _line _state _e ve nt()
sl_usbd_cdc_acm_cle ar_line _state _e ve nt()

آپ کی درخواست کسی بھی لائن اسٹیٹ ایونٹ کو سیٹ کر سکتی ہے۔ لائن سٹیٹ سیٹ کرتے وقت، ایک انٹرپٹ IN ٹرانسفر ہوسٹ کو بھیجا جاتا ہے تاکہ سیریل لائن سٹیٹ میں تبدیلی کے بارے میں مطلع کیا جا سکے۔
ایپلیکیشن لائن اسٹیٹ کے دو واقعات کو صاف کر سکتی ہے: ٹرانسمیشن کیریئر اور ریسیور کیریئر کا پتہ لگانا۔ دیگر تمام واقعات کو ACM سیریل ایمولیشن سب کلاس کے ذریعے خود سے صاف کیا جاتا ہے۔

ذیلی کلاس مثال مواصلات

سیلیکون لیبز کا ACM ذیلی طبقہ میزبان کے ساتھ بات چیت کرنے کے لیے درج ذیل افعال پیش کرتا ہے۔ فنکشن 9 پیرامیٹرز کے بارے میں مزید تفصیلات کے لیے، سی ڈی سی اے سی ایم سب کلاس فنکشنز کا حوالہ دیکھیں۔

فنکشن کا نام
sl_usb d _cd c_acm_ دوبارہ اشتہار () sl_usb d _cd c_acm_write ()

آپریشن
بلک آؤٹ اینڈ پوائنٹ کے ذریعے میزبان سے ڈیٹا وصول کرتا ہے۔ یہ فنکشن بلاک کر رہا ہے۔ بلک IN اینڈ پوائنٹ کے ذریعے میزبان کو ڈیٹا بھیجتا ہے۔ یہ فنکشن بلاک کر رہا ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

27/174

ختمview

ٹیبل - CDC ACM کمیونیکیشن API کا خلاصہ aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() ہم وقت ساز مواصلت فراہم کرتا ہے، جس کا مجھے پتہ ہے کہ trnsfer بلاک کر رہا ہے۔ دوسرے لفظوں میں، فنکشن کو کال کرنے پر، ایپلیکیشن اس وقت تک بلاک ہوجاتی ہے جب تک کہ ٹرانسفر کسی غلطی کے ساتھ یا اس کے بغیر مکمل نہ ہوجائے۔ ہمیشہ کے لیے انتظار سے بچنے کے لیے ایک ٹائم آؤٹ کا تعین کیا جا سکتا ہے۔ سابقample ذیل میں ایک پڑھنا اور لکھنا سابقہ ​​دکھایا گیا ہے۔ample جو بلک آؤٹ اینڈ پوائنٹ کا استعمال کرتے ہوئے میزبان سے ڈیٹا وصول کرتا ہے اور بلک ان اینڈ پوائنٹ کا استعمال کرتے ہوئے میزبان کو ڈیٹا بھیجتا ہے۔
فہرست سازی - سیریل پڑھیں اور لکھیں سابقample

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len؛

sl_status_t

حیثیت؛

حیثیت = sl_usbd_cdc_acm_read(subclass_nbr,

(1)

rx_buf،

(2)

2u

0u

(3)

&xfer_len);

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

حیثیت = sl_usbd_cdc_acm_write(subclass_nbr،

(1)

tx_buf،

(4)

2u

0u

(3)

&xfer_len);

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

T aaaa M (1) he cl ss inst nce نمبر cre ted with sl_usbd_cdc_acm_create_instance() مناسب بلک آؤٹ یا IN اینڈ پوائنٹ پر منتقلی کو روٹ کرنے کے لئے AC ذیلی کلاس کا n انٹرن l حوالہ فراہم کرتا ہے۔ (2) آپ کی درخواست کو یقینی بنانا چاہیے کہ فنکشن کو فراہم کردہ بفر تمام ڈیٹا کو ایڈجسٹ کرنے کے لیے کافی بڑا ہے۔ بصورت دیگر، مطابقت پذیری کے مسائل ہو سکتے ہیں۔ (3) لامحدود مسدود کرنے کی صورت حال سے بچنے کے لیے، ملی سیکنڈز میں ظاہر کردہ ٹائم آؤٹ کی وضاحت کریں۔ 809 کی قدر درخواست کے کام کو ہمیشہ کے لیے انتظار کرنے پر مجبور کرتی ہے۔ (4) ایپلیکیشن ابتدائی ٹرانسمٹ بفر فراہم کرتی ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

28/174

ختمview
ختمview

USB ڈیوائس HID کلاس

USB ڈیوائس HID کلاس ختم ہوگئیview بنیادی USB ڈیوائس HID کلاس کنفیگریشن USB ڈیوائس HID کلاس پروگرامنگ گائیڈ HID متواتر ان پٹ رپورٹس ٹاسک سے USB ڈیوائس HID کلاس وسائل کی ضرورت ہے
یہ سیکشن ہیومن انٹرفیس ڈیوائس (HID) کلاس کی وضاحت کرتا ہے جسے سلیکون لیبز USB ڈیوائس کے ذریعے تعاون کیا جاتا ہے۔
HID کلاس میں انسانوں کی طرف سے کمپیوٹر آپریشنز کو کنٹرول کرنے کے لیے استعمال کیے جانے والے آلات شامل ہیں، جیسے کی بورڈ، چوہے، پوائنٹ کرنے والے آلات، اور گیم ڈیوائسز۔
HID کلاس کو ایک جامع ڈیوائس میں بھی استعمال کیا جا سکتا ہے جس میں نوبس، سوئچز، بٹن اور سلائیڈرز جیسے کنٹرول ہوتے ہیں۔ سابق کے لیےampآڈیو ہیڈسیٹ میں le، خاموش اور والیوم کنٹرول ہیڈسیٹ کے HID فنکشن سے کنٹرول ہوتے ہیں۔ HID کلاس کسی بھی مقصد کے لیے ڈیٹا کا تبادلہ کر سکتا ہے صرف کنٹرول اور مداخلت کی منتقلی کا استعمال کرتے ہوئے۔
HID کلاس سب سے قدیم اور سب سے زیادہ استعمال ہونے والی USB کلاسوں میں سے ایک ہے۔ تمام بڑے ہوسٹ آپریٹنگ سسٹم HID ڈیوائسز کو منظم کرنے کے لیے مقامی ڈرائیور فراہم کرتے ہیں، یہی وجہ ہے کہ مختلف قسم کے وینڈر مخصوص آلات HID کلاس کے ساتھ کام کرتے ہیں۔ اس کلاس میں مختلف قسم کی آؤٹ پٹ آئٹمز بھی شامل ہیں جیسے کہ ایل ای ڈی، آڈیو، ٹیکٹائل فیڈ بیک وغیرہ۔
HID کا نفاذ درج ذیل تصریحات کی تعمیل کرتا ہے:
ڈیوائس کلاس ڈیفینیشن برائے انسانی انٹرفیس ڈیوائسز (HID)، 6/27/01، ورژن 1.11۔ یونیورسل سیریل بس HID استعمال کی میزیں، 10/28/2004، ورژن 1.12۔
USB ڈیوائس HID کلاس ختم ہوگئیview
ختمview
ایک HID ڈیوائس مندرجہ ذیل اختتامی نکات پر مشتمل ہے:
کنٹرول کے IN اور OUT اینڈ پوائنٹس کا ایک جوڑا جسے ڈیفالٹ اینڈ پوائنٹ کہا جاتا ہے An interrupt IN endpoint ایک اختیاری interrupt OUT اینڈ پوائنٹ
نیچے دی گئی جدول مختلف اختتامی نقطوں کے استعمال کی وضاحت کرتی ہے:
ٹیبل - HID کلاس اینڈ پوائنٹس کا استعمال

اختتامی نقطہ کی سمت کا استعمال

کنٹرول IN
کنٹرول
باہر
میں مداخلت کریں۔
خلل ڈالنا
باہر

ڈیوائس سے میزبان
ہوسٹ ٹو ڈیوائس
ڈیوائس سے میزبان
ہوسٹ ٹو ڈیوائس

گنتی کے لیے معیاری درخواستیں، کلاس کے لیے مخصوص درخواستیں، اور ڈیٹا کمیونیکیشن (ان پٹ، فیچر رپورٹس میزبان کو GET_REPORT درخواست کے ساتھ بھیجی گئی)۔ گنتی کے لیے معیاری درخواستیں، کلاس کے لیے مخصوص درخواستیں اور ڈیٹا کمیونیکیشن (SET_REPORT درخواست کے ساتھ میزبان سے موصول ہونے والی آؤٹ پٹ، فیچر رپورٹس)۔ ڈیٹا کمیونیکیشن (ان پٹ اور فیچر رپورٹس)۔
ڈیٹا مواصلات (آؤٹ پٹ اور فیچر رپورٹس)۔

رپورٹ

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

29/174

ختمview

ایک میزبان اور HID ڈیوائس رپورٹس کا استعمال کرتے ہوئے ڈیٹا کا تبادلہ کرتا ہے۔ ایک رپورٹ میں فارمیٹ شدہ ڈیٹا ہوتا ہے جو HID ڈیوائس کے کنٹرولز اور دیگر جسمانی اداروں کے بارے میں معلومات دیتا ہے۔ ایک کنٹرول صارف کے ذریعہ جوڑ توڑ کے قابل ہے اور آلہ کے ایک پہلو کو چلاتا ہے۔ سابق کے لیےampلی، ایک کنٹرول ماؤس یا کی بورڈ پر ایک بٹن، ایک سوئچ، وغیرہ ہو سکتا ہے۔ دیگر ادارے صارف کو کچھ ڈیوائسز کی خصوصیات کی حالت سے آگاہ کرتے ہیں۔ سابق کے لیےampلی، کی بورڈ پر ایل ای ڈی صارف کو کیپس لاک آن، عددی کیپیڈ فعال، وغیرہ کے بارے میں مطلع کرتے ہیں۔
رپورٹ کے ڈیٹا کے فارمیٹ اور استعمال کو میزبان رپورٹ ڈسکرپٹر کے مواد کا تجزیہ کرکے سمجھتا ہے۔ مواد کا تجزیہ ایک تجزیہ کار کے ذریعہ کیا جاتا ہے۔ رپورٹ ڈسکرپٹر ڈیوائس میں ہر کنٹرول کے ذریعے فراہم کردہ ڈیٹا کی وضاحت کرتا ہے۔ یہ آئٹمز پر مشتمل ہے جو ڈیوائس کے بارے میں معلومات کے ٹکڑے ہیں اور 1 بائٹ کے سابقہ ​​اور متغیر کی لمبائی پر مشتمل ہے۔
ڈیٹا آئٹم کی شکل کے بارے میں مزید تفصیلات کے لیے، رجوع کریں۔
1.11=، سیکشن 5.6 اور 6.2.2۔
اشیاء کی تین بنیادی اقسام ہیں:
مین آئٹم مخصوص قسم کے ڈیٹا فیلڈز کی وضاحت یا گروپ کرتا ہے۔
گلوبل آئٹم کنٹرول کے ڈیٹا کی خصوصیات کو بیان کرتا ہے۔
مقامی آئٹم کنٹرول کے ڈیٹا کی خصوصیات کو بیان کرتا ہے۔
ہر آئٹم کی قسم کی وضاحت مختلف افعال سے ہوتی ہے۔ ایک آئٹم فنکشن کو بھی کہا جا سکتا ہے۔ tag. ایک آئٹم فنکشن کو ایک ذیلی آئٹم کے طور پر دیکھا جا سکتا ہے جو تین پرنسپل آئٹم اقسام میں سے ایک سے تعلق رکھتا ہے۔ مندرجہ ذیل جدول ایک مختصر اوور فراہم کرتا ہے۔view ہر آئٹم کی قسم میں آئٹم9 کے افعال کا۔ ہر زمرے میں اشیاء کی مکمل تفصیل کے لیے، دیکھیں
ٹیبل - ہر آئٹم کی قسم کے لئے آئٹم کے فنکشن کی تفصیل

آئٹم آئٹم کی قسم فنکشن

تفصیل

مین ان پٹ

ایک یا زیادہ فزیکل کنٹرولز کے ذریعے فراہم کردہ ڈیٹا کے بارے میں معلومات کو بیان کرتا ہے۔

مین آؤٹ پٹ ڈیوائس کو بھیجے گئے ڈیٹا کی وضاحت کرتا ہے۔

اہم خصوصیت

ڈیوائس کو بھیجی گئی یا اس سے موصول ہونے والی ڈیوائس کنفیگریشن کی معلومات کی وضاحت کرتا ہے جو ڈیوائس یا اس کے اجزاء میں سے کسی ایک کے مجموعی رویے کو متاثر کرتی ہے۔

مین کلیکشن گروپ سے متعلقہ اشیاء (ان پٹ، آؤٹ پٹ یا فیچر)۔

ایک مجموعہ بند کرنے کا مین اینڈ۔ مجموعہ

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

30/174

ختمview

آئٹم آئٹم کی قسم فنکشن

تفصیل

عالمی استعمال کا صفحہ

آلہ کے اندر دستیاب فنکشن کی شناخت کرتا ہے۔

گلوبل لاجیکل منطقی اکائیوں میں رپورٹ کردہ اقدار کی نچلی حد کی وضاحت کرتا ہے۔ کم از کم

گلوبل لاجیکل منطقی اکائیوں میں رپورٹ کردہ اقدار کی بالائی حد کی وضاحت کرتا ہے۔ زیادہ سے زیادہ

گلوبل فزیکل فزیکل اکائیوں میں رپورٹ کردہ قدروں کی نچلی حد کو متعین کرتا ہے، جو کہ جسمانی اکائیوں میں ظاہر کی گئی منطقی کم از کم کم از کم ہے۔

گلوبل فزیکل فزیکل اکائیوں میں رپورٹ کردہ قدروں کی اوپری حد کو متعین کرتا ہے، جو کہ جسمانی اکائیوں میں ظاہر کی جانے والی منطقی زیادہ سے زیادہ حد ہے۔

عالمی یونٹ

بیس 10 میں اکپوننٹ کی نشاندہی کرتا ہے۔ ایکسپوننٹ -8 سے +7 تک ہوتا ہے۔

ایکسپوننٹ

عالمی یونٹ

رپورٹ کردہ اقدار کی اکائی کی نشاندہی کرتا ہے۔ مثال کے طور پر، لمبائی، کمیت، درجہ حرارت کی اکائیاں، وغیرہ۔

عالمی رپورٹ کا سائز

بٹس میں رپورٹ فیلڈز کے سائز کی نشاندہی کرتا ہے۔

گلوبل رپورٹ ID کسی خاص رپورٹ میں شامل کیے گئے سابقہ ​​کی نشاندہی کرتی ہے۔

عالمی رپورٹ شمار

کسی آئٹم کے لیے ڈیٹا فیلڈز کی تعداد کی نشاندہی کرتا ہے۔

گلوبل پش

عالمی آئٹم اسٹیٹ ٹیبل کی ایک کاپی CPU اسٹیک پر رکھتا ہے۔

گلوبل پاپ

آئٹم اسٹیٹ ٹیبل کو اسٹیک کے آخری ڈھانچے سے بدل دیتا ہے۔

مقامی استعمال

استعمال کے صفحے کے اندر مخصوص استعمال کو نامزد کرنے کے لیے ایک اشاریہ کی نمائندگی کرتا ہے۔ یہ کسی مخصوص کنٹرول یا کنٹرول کے گروپ کے لیے وینڈر کے تجویز کردہ استعمال کی نشاندہی کرتا ہے۔ استعمال ایک ایپلیکیشن ڈویلپر کو معلومات فراہم کرتا ہے کہ کنٹرول دراصل کیا پیمائش کر رہا ہے۔

مقامی استعمال

کسی صف یا بٹ میپ سے وابستہ ابتدائی استعمال کی وضاحت کرتا ہے۔

کم از کم

مقامی استعمال

کسی صف یا بٹ میپ سے وابستہ اختتامی استعمال کی وضاحت کرتا ہے۔

زیادہ سے زیادہ

مقامی ڈیزائنر کنٹرول کے لیے استعمال ہونے والے جسم کے حصے کا تعین کرتا ہے۔ انڈیکس فزیکل میں ایک نامزد کنندہ کی طرف اشارہ کرتا ہے۔

انڈیکس

وضاحت کنندہ

لوکل ڈیزائینیٹر کسی صف یا بٹ میپ سے وابستہ ابتدائی عہدہ کنندہ کے اشاریہ کی وضاحت کرتا ہے۔ کم از کم

لوکل ڈیزینیٹر کسی سرنی یا بٹ میپ سے وابستہ اختتامی ڈیزینیٹر کے اشاریہ کی وضاحت کرتا ہے۔ زیادہ سے زیادہ

مقامی سٹرنگ انڈیکس

سٹرنگ ڈسکرپٹر کے لیے سٹرنگ انڈیکس۔ یہ سٹرنگ کو کسی خاص شے یا کنٹرول کے ساتھ منسلک کرنے کی اجازت دیتا ہے۔

مقامی سٹرنگ

ترتیب وار سٹرنگز کے گروپ کو کسی صف میں کنٹرولز کے لیے تفویض کرتے وقت پہلے سٹرنگ انڈیکس کی وضاحت کرتا ہے

کم از کم یا بٹ میپ۔

لوکل لوکل

زیادہ سے زیادہ سٹرنگ
حد بندی کرنے والا

آخری سٹرنگ انڈیکس کی وضاحت کرتا ہے جب ترتیب وار سٹرنگز کے گروپ کو کسی صف یا بٹ میپ میں کنٹرولز کو تفویض کرتے ہیں۔
مقامی اشیاء کے سیٹ کے آغاز یا اختتام کی وضاحت کرتا ہے۔

کنٹرول کے ڈیٹا کو کم از کم درج ذیل آئٹمز کی وضاحت کرنی چاہیے:
ان پٹ، آؤٹ پٹ یا فیچر مین آئٹمز کا استعمال مقامی آئٹم کا استعمال صفحہ عالمی آئٹم منطقی کم از کم عالمی آئٹم منطقی زیادہ سے زیادہ عالمی آئٹم رپورٹ سائز گلوبل آئٹم

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

31/174

ختمview
رپورٹ کاؤنٹ گلوبل آئٹم ذیل کا جدول میزبان HID تجزیہ کار کے نقطہ نظر سے ماؤس رپورٹ ڈسکرپٹر مواد کی نمائندگی کو ظاہر کرتا ہے۔ ماؤس میں تین بٹن ہیں (بائیں، دائیں اور وہیل)۔ سابق میں پیش کردہ کوڈample ذیل میں ایک کوڈ کا نفاذ ہے جو اس ماؤس کی رپورٹ ڈسکرپٹر کی نمائندگی کے مطابق ہے۔
تصویر - میزبان HID پارسر سے وضاحتی مواد کی اطلاع دیں۔ View

(1) یوزیج پیج آئٹم کا فنکشن ڈیوائس کے عمومی کام کی وضاحت کرتا ہے۔ اس میں سابقampلی، HID ڈیوائس کا تعلق a سے ہے۔
عام ڈیسک ٹاپ کنٹرول
(2) کلیکشن ایپلی کیشن ان اہم اشیاء کو گروپ کرتا ہے جن کا مشترکہ مقصد ہوتا ہے اور وہ ایپلی کیشنز سے واقف ہو سکتی ہیں۔ خاکہ میں، گروپ تین ان پٹ مین آئٹمز پر مشتمل ہے۔ اس مجموعہ کے لیے، کنٹرولز کے لیے تجویز کردہ استعمال ایک ماؤس ہے جیسا کہ استعمال کے آئٹم سے اشارہ کیا گیا ہے۔ (3) نیسٹڈ کلیکشن کا استعمال ایپلی کیشنز کو کسی ایک کنٹرول یا گروپ آف کنٹرول کے استعمال کے بارے میں مزید تفصیلات دینے کے لیے کیا جا سکتا ہے۔ اس میں سابقample، کلیکشن فزیکل، کلیکشن ایپلیکیشن میں داخل، انہی تین ان پٹ آئٹمز پر مشتمل ہے جو کلیکشن ایپلیکیشن بناتی ہے۔ کلیکشن فزیکل ڈیٹا آئٹمز کے ایک سیٹ کے لیے استعمال کیا جاتا ہے جو ایک جیومیٹرک پوائنٹ پر جمع کیے گئے ڈیٹا پوائنٹس کی نمائندگی کرتا ہے۔ سابق میںampلی، تجویز کردہ استعمال ایک پوائنٹر ہے جیسا کہ استعمال کے آئٹم سے اشارہ کیا گیا ہے۔ یہاں پوائنٹر کے استعمال سے مراد ماؤس پوزیشن کوآرڈینیٹس ہے اور سسٹم سافٹ ویئر اسکرین کرسر کی حرکت میں ماؤس کوآرڈینیٹس کا ترجمہ کرے گا۔ (4) نیسٹڈ استعمال کے صفحات بھی ممکن ہیں اور ڈیوائس کے عمومی کام کے اندر کسی خاص پہلو کے بارے میں مزید تفصیلات دیتے ہیں۔ اس صورت میں، دو ان پٹ آئٹمز کو گروپ کیا گیا ہے اور وہ ماؤس کے بٹن کے مطابق ہیں۔ ایک ان پٹ آئٹم ماؤس کے تین بٹن (دائیں، بائیں اور پہیے) کو آئٹم (رپورٹ کاؤنٹ آئٹم)، ڈیٹا فیلڈ کا سائز (رپورٹ سائز آئٹم) اور ہر ڈیٹا فیلڈ کے لیے ممکنہ اقدار (استعمال کم از کم اور زیادہ سے زیادہ، منطقی کم از کم اور زیادہ سے زیادہ اشیاء) کے ڈیٹا فیلڈز کی تعداد کے لحاظ سے بیان کرتا ہے۔ دوسرا ان پٹ آئٹم ایک 13 بٹ مستقل ہے جو ان پٹ رپورٹ ڈیٹا کو بائٹ باؤنڈری پر منسلک ہونے دیتا ہے۔ یہ ان پٹ آئٹم صرف پیڈنگ کے مقصد کے لیے استعمال ہوتا ہے۔ (5) ایک اور نیسٹڈ استعمال کا صفحہ جو کہ عام ڈیسک ٹاپ کنٹرول کا حوالہ دیتا ہے ماؤس پوزیشن کوآرڈینیٹ کے لیے بیان کیا گیا ہے۔ اس استعمال کے صفحے کے لیے، ان پٹ آئٹم x- اور y-axis کے مطابق ڈیٹا فیلڈز کی وضاحت کرتا ہے جیسا کہ دو استعمال کے ذریعہ بیان کیا گیا ہے۔
اشیاء
پچھلے ماؤس رپورٹ ڈسکرپٹر کے مواد کا تجزیہ کرنے کے بعد، ہوسٹ 9s HID پارسر ڈیوائس کے ذریعے بھیجے گئے ان پٹ رپورٹ ڈیٹا کی ترجمانی کرنے کے قابل ہوتا ہے جس میں ٹرانسفر میں مداخلت یا GET_REPORT کی درخواست کے جواب میں ہوتا ہے۔ ان پٹ رپورٹ کا ڈیٹا ماؤس رپورٹ ڈسکرپٹر سے مماثل ہے جو شکل میں دکھایا گیا ہے - میزبان HID پارسر سے ڈسکریپٹر مواد کی رپورٹ کریں View is

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

32/174

ختمview

ذیل کی میز میں دکھایا گیا ہے. رپورٹ ڈیٹا کا کل سائز 4 بائٹس ہے۔ ایک ہی اختتامی نقطہ پر مختلف قسم کی رپورٹیں بھیجی جا سکتی ہیں۔ رپورٹس کی مختلف اقسام میں فرق کرنے کے مقصد کے لیے، ڈیٹا رپورٹ میں 1 بائٹ رپورٹ ID کا سابقہ ​​شامل کیا جاتا ہے۔ اگر سابق میں ایک رپورٹ ID استعمال کی گئی تھی۔ampماؤس کی رپورٹ کے مطابق، رپورٹ کے ڈیٹا کا کل سائز 5 بائٹس ہوگا۔
ٹیبل - ان پٹ رپورٹ میزبان کو بھیجی گئی اور 3 بٹن والے ماؤس کی حالت کے مطابق

بٹ آفسیٹ
0 1 2 3 16 24

بٹ کاؤنٹ 1 1 1 13 8 8

تفصیل بٹن 1 (بائیں بٹن)۔ بٹن 2 (دائیں بٹن)۔ بٹن 3 (وہیل بٹن)۔ استعمال نہیں کیا گیا۔ محور X پر پوزیشن۔ محور Y پر پوزیشن۔

ایک جسمانی وضاحت کنندہ جسم کے اس حصے یا حصوں کی نشاندہی کرتا ہے جس کا مقصد کسی کنٹرول یا کنٹرول کو چالو کرنا ہے۔ ایک ایپلیکیشن اس معلومات کا استعمال کسی آلے کے کنٹرول کو فعالیت تفویض کرنے کے لیے کر سکتی ہے۔ ایک فزیکل ڈسکرپٹر ایک اختیاری کلاس مخصوص ڈسکرپٹر ہے اور زیادہ تر ڈیوائسز کو اس کے استعمال سے بہت کم فائدہ ہوتا ہے۔ سے رجوع کریں۔
کور سے USB ڈیوائس HID کلاس وسائل کی ضرورت ہے۔

ہر بار جب آپ فنکشن sl_usbd_hid_add_to_configuration() کو کال کے ذریعے USB کنفیگریشن میں HID کلاس مثال شامل کرتے ہیں، تو درج ذیل وسائل کور سے مختص کیے جائیں گے۔

وسیلہ
انٹرفیسز متبادل انٹرفیس اینڈ پوائنٹس انٹرفیس گروپس

مقدار
1 1 1 (2 اگر انٹرپٹ آؤٹ اینڈ پوائنٹ فعال ہو) 0

نوٹ کریں کہ وہ نمبرز فی کنفیگریشن ہیں۔ اپنی SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY اور SL_USBD_DESCRIPTOR_QUANTITY کنفیگریشن ویلیوز کو ترتیب دیتے وقت، اس بات کا خیال رکھنا نہ بھولیں کہ کتنی کلاس کنفیگریشنز شامل کی جائیں گی۔ SL_USBD_OPEN_ENDPOINTS_QUANTITY کنفیگریشن ویلیو کے لیے، چونکہ اینڈ پوائنٹس صرف اس وقت کھولے جاتے ہیں جب میزبان کی طرف سے کنفیگریشن سیٹ کی جاتی ہے، آپ کو صرف کلاس مثال کے لیے مطلوبہ اینڈ پوائنٹس کی تعداد کو مدنظر رکھنا ہوگا۔
USB ڈیوائس HID کلاس کنفیگریشن

HID کلاس کو ترتیب دینے کے لیے کنفیگریشن پیرامیٹرز کے دو گروپ استعمال کیے جاتے ہیں:
USB ڈیوائس HID کلاس ایپلیکیشن مخصوص کنفیگریشنز USB ڈیوائس HID کلاس انسٹینس کنفیگریشنز
USB ڈیوائس HID کلاس ایپلیکیشن کے لیے مخصوص کنفیگریشنز

سب سے پہلے، Silicon Labs USB ڈیوائس HID کلاس ماڈیول کو استعمال کرنے کے لیے، اپنی درخواست کی ضروریات کے مطابق HID کمپائل ٹائم کنفیگریشن کو ایڈجسٹ کریں۔ وہ sl_usbd_core_config.h ہیڈر کے اندر دوبارہ منظم ہیں۔ file HID سیکشن کے تحت۔ انہیں دو حصوں میں تقسیم کیا جا سکتا ہے، مقدار کی ترتیب اور HID کام کی ترتیب۔ مقدار کی ترتیب کا مقصد USB ڈیوائس ماڈیول کو بتانا ہے کہ کتنی USB HID اشیاء مختص کی جائیں۔
نیچے دی گئی جدول میں ہر ترتیب کی وضاحت کی گئی ہے۔
ٹیبل - USB ڈیوائس HID کنفیگریشن کی وضاحت کرتا ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

33/174

ختمview

کنفیگریشن کا نام
SL_USBD_HID_CL ASS_I NSTANCE_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_REPORT_ ID_QUANTITY
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY

تفصیل
کلاس مثالوں کی تعداد جو آپ فنکشن میں کال کے ذریعے مختص کریں گے۔
sl_usbd_hid_create_instance() ۔
کنفیگریشنز کی تعداد۔ HID کلاس مثالوں کو ایک یا زیادہ aaaa کنفیگریشنز vi c ll فنکشن sl_usbd_hid_add_to_configuration() میں شامل کیا جا سکتا ہے۔ مختص کرنے کے لیے رپورٹ IDs کی کل تعداد کو ترتیب دیتا ہے۔
مختص کرنے کے لیے پش/پاپ آئٹمز کی کل تعداد کو ترتیب دیتا ہے۔
ٹائمر ٹاسک ٹائمر پر مبنی تمام HID آپریشنز کو ہینڈل کرتا ہے۔ یہ کنفیگریشن آپ کو اسٹیک سائز (بائٹس کی تعداد میں) سیٹ کرنے کی اجازت دیتی ہے۔ HID کام کی ترجیح۔ اس کی ترجیح CMSIS-RTOS2 ہے۔

ڈیفالٹ قدر
2 1 2 0 2048
osPriorityHigh

USB ڈیوائس HID کلاس انسٹینس کنفیگریشنز کلاس انسٹینس تخلیق ذیلی کلاس
پروٹوکول ملک_کوڈ
وقفہ_ان اور وقفہ_آؤٹ p_hid_callback HID کلاس رپورٹ ڈسکرپٹر Example یہ سیکشن HID کلاس مثالوں سے متعلق کنفیگریشنز کی وضاحت کرتا ہے۔
کلاس مثال کی تخلیق
HID کلاس کی مثال بنانا aaa sl_usbd_hid_create_instance() فنکشن کو کال کرکے کیا جاتا ہے، جو ذیل میں بیان کردہ کنفیگریشن دلائل کو الگ کرتا ہے۔
ذیلی کلاس
HID ذیلی کلاس کا کوڈ۔ ممکنہ قدریں ہیں:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
ایک HID ڈیوائس جو بوٹ ذیلی طبقے کا استعمال کرتا ہے اسے معیاری رپورٹ فارمیٹس کا استعمال کرنا چاہیے۔ ذیلی طبقے کے کوڈز کے بارے میں مزید معلومات کے لیے، HID وضاحتی نظرثانی 1.11 کا سیکشن 4.2 دیکھیں۔
پروٹوکول
پروٹوکول HID ڈیوائس کے ذریعہ استعمال کیا جاتا ہے۔ ممکنہ قدریں ہیں:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_MOUSE
اگر آپ کا HID فنکشن ایک ماؤس ہے تو پروٹوکول کو aa SL_USBD_HID_PROTOCOL_MOUSE پر سیٹ کیا جانا چاہیے۔ اگر یہ keybo rd ہے تو اسے O پر سیٹ ہونا چاہیے SL_USBD_HID_PROTOCOL_KBD ۔ بصورت دیگر، پروٹوکول کو SL_USBD_HID_PROTOCOL_NONE پر سیٹ کیا جانا چاہیے۔ ذیلی طبقے کے کوڈز کے بارے میں مزید معلومات کے لیے، HID وضاحتی نظرثانی 1.11 کا سیکشن 4.3 دیکھیں۔
ملک_کوڈ
ملک کے کوڈ کی شناخت۔ ممکنہ قدریں ہیں:
SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

34/174

ختمview
SL_USBD_HID_COUNTRY_CODE_ARABIC SL_USBD_HID_COUNTRY_CODE_BELGIAN SL_USBD_HID_COUNTRY_CODE_CANADIAN_BILINGUAL SL_USBD_HID_COUNTRY_CODE_CANADIAN_FRENCH SL_USBD_HID_COUNTRY_CODE_CZECH_REPUBLIC SL_USBD_HID_COUNTRY_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_MANGERCODE_COUNTRY SL_USBD_HID_COUNTRY_CODE_GREEK SL_USBD_HID_COUNTRY_CODE_HEBREW SL_USBD_HID_COUNTRY_CODE_HUNGARY SL_USBD_HID_COUNTRY_CODE_INTERNATIONAL SL_USBD_HID_COUNTRY_CODE_IT_ SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_KOREAN SL_USBD_HID_COUNTRY_CODE_L ATIN_AMERICAN SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUT SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL اور SL_USBD_HID_COUNTRY_CODE_PORTUGUESE SL_USBD_COUNTRY_CODE_PORTUGUESE SL_USBD_COUNTRY_CODE_PORTUGUESE SL_USBD_HID_COUNTRY_CODE_SLOVAKIA SL_USBD_HID_COUNTRY_CODE_SPANISH SL_USBD_HID_COUNTRY_CODE_SWEDISH SL_USBD_HID_COUNTRY_CODE_SWISS_FRENCH SL_USBD_HID_COUNTRY_COUNTRY_CODE_CODE SL_USBD_HID_COUNTRY_CODE_SWITZERL اور SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_UK SL_USBD_HID_USD_COUNTRY SL_USBD_HID_COUNTRY_CODE_YUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
ملک کا کوڈ اس بات کی نشاندہی کرتا ہے کہ ہارڈ ویئر کس ملک کے لیے مقامی ہے۔ زیادہ تر ہارڈویئر مقامی نہیں ہے اور اس لیے یہ aaaav lue SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) ہوگا۔ تاہم، کلیدی ٹوپیوں کی زبان کو ظاہر کرنے کے لیے کیبو نے فیلڈ کا استعمال کیا ہے۔
ملکی کوڈز کے بارے میں مزید معلومات کے لیے، HID تفصیلات کی نظرثانی 1.11 کا سیکشن 6.2.1 دیکھیں۔
وقفہ_ان اور وقفہ_آؤٹ
interval_in اور interval_out IN انٹرپٹ اینڈ پوائنٹ اور آؤٹ انٹرپٹ اینڈ پوائنٹ کے پولنگ وقفہ کی نمائندگی کرتے ہیں۔
یہ ملی سیکنڈ میں اختتامی نقطہ کے پولنگ وقفہ کی نمائندگی کرتا ہے۔ اس قدر کا تعین اس بات پر منحصر ہے کہ آپ کا آلہ میزبان کے لیے نئی رپورٹ تیار کرنے کے لیے کتنی بار حساس ہے۔ مثال کے طور پر، اگر ہر 16 ملی سیکنڈ بعد ایک رپورٹ تیار کی جاتی ہے، تو وقفہ 16 یا اس سے کم ہونا چاہیے۔
قدر 2 کی طاقت ہونی چاہیے (1، 2، 4، 8، 16، وغیرہ)۔
اگر ctrl_rd_en درست پر سیٹ کیا جاتا ہے تو وقفہ_آؤٹ v lue کو نظر انداز کر دیا جاتا ہے۔
p_hid_callback
aaaa p_hid_callback قسم کی ساخت کا اشارہ ہے sl_usbd_hid_callbacks_t ۔ اس کا مقصد HID Cl ss کال بیک فنکشنز کا سیٹ دینا ہے جب HID ایونٹ ہوتا ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

35/174

ختمview

تمام کال بیکس لازمی نہیں ہیں اور جب کال بیک کی ضرورت نہ ہو تو کال بیکس سٹرکچر متغیر میں ایک null پوائنٹر (NULL ) پاس کیا جا سکتا ہے۔ نیچے دی گئی جدول اس ترتیب کے ڈھانچے میں دستیاب ہر کنفیگریشن فیلڈ کی وضاحت کرتی ہے۔
ٹیبل - sl_usbd_hid_callbacks_t کنفیگریشن سٹرکچر

فیلڈز

تفصیل

فنکشن دستخط

.enable .disable .get_report_desc
.get_phy_desc
.set_output_report .get_feature_report .set_feature_report

USB کلاس مثال کے کامیابی کے ساتھ فعال ہونے پر کال کی جاتی ہے۔ USB کلاس مثال کے غیر فعال ہونے پر کال کی جاتی ہے۔
آپ کی رپورٹ ڈسکرپٹر کو پاس کرنے کے لیے HID مثال کی تخلیق کے دوران کال کی گئی۔ اپنے ہر HID فنکشن کے لیے، آپ کو ایک رپورٹ ڈسکرپٹر فراہم کرنا چاہیے۔ رپورٹ کا بیان کنندہ میزبان کو اشارہ کرتا ہے کہ آلہ کے ذریعہ بھیجی جانے والی متواتر رپورٹ کو کس طرح پارس کیا جانا چاہئے۔ اپنی رپورٹ کی وضاحت کنندہ کو لکھنا مشکل ہو سکتا ہے، اور اسی وجہ سے مدد کے لیے کچھ وسائل موجود ہیں۔ یہ واحد لازمی کال بیک فنکشن ہے۔ آپ کے فزیکل ڈسکرپٹر کو پاس کرنے کے لیے HID مثال کی تخلیق کے دوران کال کی گئی۔ فزیکل ڈسکرپٹر ایک وضاحت کنندہ ہے جو انسانی جسم کے مخصوص حصے یا حصوں کے بارے میں معلومات فراہم کرتا ہے جو کسی کنٹرول یا کنٹرول کو چالو کر رہے ہیں۔ فزیکل ڈسکرپٹرز کے بارے میں مزید معلومات کے لیے، HID تصریح 1.11 کا سیکشن 6.2.3 دیکھیں۔ فزیکل ڈسکرپٹر اختیاری ہے اور اکثر نظر انداز کر دیا جاتا ہے۔ یہاں سے گزرے ہوئے بفر کو NULL پر سیٹ کیا جا سکتا ہے اور لمبائی کو 0 پر سیٹ کیا جا سکتا ہے۔ جب میزبان آپ کے رپورٹ ڈسکرپٹر میں بیان کردہ رپورٹ سیٹ کرتا ہے (جب وہ رپورٹ بھیجتا ہے)۔
اس وقت کال کی جاتی ہے جب میزبان کسی خصوصیت کی رپورٹ کی درخواست کرتا ہے جیسا کہ آپ کے رپورٹ ڈسکرپٹر میں بیان کیا گیا ہے۔
اس وقت کال کی جاتی ہے جب میزبان آپ کے رپورٹ ڈسکرپٹر میں بیان کردہ فیچر رپورٹ سیٹ کرتا ہے۔

void app_usbd_hid_enable(uint8_t class_nbr)؛ void app_usbd_hid_disable(uint8_t class_nbr)؛ void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len)؛
void app_usbd_hid_get_phy_desc(uint8_t class_nbr, const uint8_t *p_report_ptr, uint16_tp_report_len)؛
void app_usbd_hid_set_output_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len)؛ void app_usbd_hid_get_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len)؛ void app_usbd_hid_set_feature_report(uint8_t class_nbr, uint8_t report_id, uint8_t *p_report_buf, uint16_t report_len);

.get_protocol

موجودہ فعال پروٹوکول کو بازیافت کرتا ہے۔

void app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol)؛

.set_protocol

موجودہ فعال پروٹوکول سیٹ کرتا ہے۔

void app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t پروٹوکول)؛

HID کلاس رپورٹ ڈسکرپٹر Example

سلیکون لیبز کی HID کلاسample درخواست ایک سابق فراہم کرتا ہےampایک سادہ ماؤس کے لیے رپورٹ ڈسکرپٹر کا لی۔ سابقampذیل میں ایک ماؤس رپورٹ ڈسکرپٹر دکھاتا ہے۔
Example - ماؤس رپورٹ ڈسکرپٹر

static uint8_t app_usbd_hid_report_desc[] = {

(1) (2)

SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS،

SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE،

(3)

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

36/174

ختمview

SL_USBD_HID_MAIN_COLLECTION +1، SL_USBD_HID_COLLECTION_APPLICATION، (4)

SL_USBD_HID_LOCAL_USAGE +1، SL_USBD_HID_CP_POINTER،(5)

SL_USBD_HID_MAIN_COLLECTION +1، SL_USBD_HID_COLLECTION_PHYSICAL،(6)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1، SL_USBD_HID_USAGE_PAGE_BUTTON،(7)

SL_USBD_HID_LOCAL_USAGE_MIN +1,0 01،

SL_USBD_HID_LOCAL_USAGE_MAX +1,0 03،

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 00،

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 01،

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 03،

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 01،

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_ABSOLUTE،

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 01,(8)

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 0D،

SL_USBD_HID_MAIN_INPUT +1، SL_USBD_HID_MAIN_CONSTANT،(9)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS،

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_X،

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_Y،

SL_USBD_HID_GLOBAL_LOG_MIN +1,0 81،

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 7F،

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 08،

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 02،

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_RELATIVE،

SL_USBD_HID_MAIN_ENDCOLLECTION،(10)

SL_USBD_HID_MAIN_ENDCOLLECTION

(11)}؛

(1) ماؤس رپورٹ ڈسکرپٹر کی نمائندگی کرنے والے ٹیبل کو اس طرح شروع کیا گیا ہے کہ ہر لائن ایک مختصر آئٹم سے مطابقت رکھتی ہے۔ مؤخر الذکر 1 بائٹ کے سابقہ ​​اور 1 بائٹ ڈیٹا سے بنتا ہے۔ سے رجوع کریں۔ viewشکل میں ایک میزبان HID تجزیہ کار کے ذریعہ ایڈ - میزبان HID تجزیہ کار سے وضاحتی مواد کی اطلاع دیں View.
(2) عام ڈیسک ٹاپ استعمال کا صفحہ استعمال کیا جاتا ہے۔
(3) عام ڈیسک ٹاپ کے استعمال کے صفحے کے اندر، استعمال tag تجویز کرتا ہے کہ کنٹرولز کا گروپ ماؤس کو کنٹرول کرنے کے لیے ہے۔ ماؤس کا مجموعہ عام طور پر دو محور (X اور Y) اور ایک، دو یا تین بٹن پر مشتمل ہوتا ہے۔
(4) ماؤس کا مجموعہ شروع ہو گیا ہے۔
(5) ماؤس مجموعہ کے اندر، ایک استعمال tag خاص طور پر تجویز کرتا ہے کہ ماؤس کنٹرول پوائنٹر کلیکشن سے تعلق رکھتے ہیں۔ پوائنٹر کلیکشن محوروں کا ایک مجموعہ ہے جو صارف کے ارادوں کو کسی ایپلیکیشن کی طرف ہدایت، اشارہ یا اشارہ کرنے کے لیے ایک قدر پیدا کرتا ہے۔
(6) پوائنٹر کلیکشن شروع ہو گیا ہے۔
(7) بٹنوں کے استعمال کا صفحہ تین 1 بٹ فیلڈز پر مشتمل ایک ان پٹ آئٹم کی وضاحت کرتا ہے۔ ہر 1 بٹ فیلڈ بالترتیب ماؤس 9 بٹن 1، 2 اور 3 کی نمائندگی کرتا ہے اور 0 یا 1 کی قدر واپس کر سکتا ہے۔
(8) بٹنوں کے استعمال کے صفحہ کے لیے ان پٹ آئٹم کو 13 دیگر بٹس کے ساتھ پیڈ کیا گیا ہے۔
(9) ایک اور عام ڈیسک ٹاپ کے استعمال کا صفحہ X اور Y کے ساتھ ماؤس کی پوزیشن کو بیان کرنے کے لیے اشارہ کیا گیا ہے۔ ان پٹ آئٹم دو 8 بٹ فیلڈز پر مشتمل ہے جن کی قیمت -127 اور 127 کے درمیان ہو سکتی ہے۔
(10) پوائنٹر کلیکشن بند ہے۔
(11) ماؤس کا مجموعہ بند ہے۔
USB.org HID صفحہ

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

37/174

ختمview
یو ایس بی امپلیمینٹرز فورم (USB-IF) رپورٹ ڈسکرپٹر فارمیٹ پر دیگر معلومات کے ساتھ "HID ڈسکرپٹر ٹول" کے نام سے ایک ٹول فراہم کرتا ہے۔ مزید معلومات کے لیے http://www.usb.org/developers/hidpage/ دیکھیں۔
USB ڈیوائس HID کلاس پروگرامنگ گائیڈ
یہ سیکشن HID کلاس کو استعمال کرنے کا طریقہ بتاتا ہے۔ USB ڈیوائس HID کلاس کا آغاز کرنا USB ڈیوائس HID کلاس کا استعمال کرتے ہوئے آپ کے ڈیوائس میں ایک USB ڈیوائس HID کلاس مثال شامل کرنا
USB ڈیوائس HID کلاس کو شروع کرنا
اپنے آلے میں HID کلاس کی فعالیت شامل کرنے کے لیے، آپ کو پہلے فنکشن sl_usbd_hid_init() کو کال کرکے کلاس شروع کرنا ہوگی۔ سابقample نیچے دکھاتا ہے کہ ڈیفالٹ آرگیومینٹس کا استعمال کرتے ہوئے sl_usbd_hid_init() کو کیسے کال کریں۔ sl_usbd_hid_init() کو منتقل کرنے کے لیے کنفیگریشن آرگیومنٹس کے بارے میں مزید معلومات کے لیے، USB Device HID کلاس ایپلیکیشن مخصوص کنفیگریشنز دیکھیں۔
Example - کال کرنا sl_usbd_hid_init()
sl_status_t حیثیت؛
حیثیت = sl_usbd_hid_init(); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}
آپ کے آلے میں USB ڈیوائس HID کلاس مثال شامل کرنا
اپنے آلے میں HID کلاس کی فعالیت شامل کرنے کے لیے، آپ کو ایک مثال بنانا چاہیے، پھر اسے اپنے آلے کی ترتیب (کنفیگریشنز) میں شامل کریں۔
HID کلاس مثال بنانا
فنکشن sl_usbd_hid_create_instance() کو کال کرکے HID کلاس مثال بنائیں۔ سابقample ذیل میں دکھایا گیا ہے کہ ڈیفالٹ آرگیومینٹس کا استعمال کرتے ہوئے sl_usbd_hid_create_instance() کے ذریعے ایک سادہ ماؤس فنکشن کیسے بنایا جائے۔ sl_usbd_hid_create_instance() کو منتقل کرنے کے لیے کنفیگریشن کے دلائل کے بارے میں مزید معلومات کے لیے، USB Device HID Class Instance Configurations دیکھیں۔
Example - sl_usbd_hid_create_instance() کے ذریعے ماؤس فنکشن شامل کرنا

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

38/174

ختمview
/* عالمی مستقل۔ */ static const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1، SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS، SL_USBD_HID_LOCAL_USAGE + 1، SL_USBD_HID_CA_MOUSE، SL_USBD_HID_CA_MOUSE، SL_USBD_HID_CA_MOUSE + SL_USBD_HID_COLLECTION_APPLICATION, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CP_POINTER, SL_USBD_HID_MAIN_COLLECTION + 1, SL_USBD_HID_COLLECTION_PHYSBD_HID_LOCAL_USAGE, + 1, SL_USBD_HID_USAGE_PAGE_BUTTON, SL_USBD_HID_LOCAL_USAGE_MIN + 1, 0 01, SL_USBD_HID_LOCAL_USAGE_MAX + 1, 0 03, SL_USBD_HID_GLOBAL_0, SL_USBD_HID_GLOBAL_0, 01 SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 03, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 01, SL_USBD_INPHMAX + SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_ABSOLUTE, SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 01, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_IN_INPUT_, SL_USBD_HID_MAIN_INPUT_, 1+ SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_DV_X, SL_USBD_HID_DV_X, SL_USBD_USBD_1, SL_USBD_HID_DV_Y, SL_USBD_HID_GLOBAL_LOG_MIN + 1, 0 81, SL_USBD_HID_GLOBAL_LOG_MAX + 1, 0 7F, SL_USBD_HID_GLOBAL_REPORT_SIZE, +100 SL_USBD_HID_GLOBAL_REPORT_COUNT + 1, 0 02, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_DATA | SL_USBD_HID_MAIN_VARIABLE | SL_USBD_HID_MAIN_RELATIVE, SL_USBD_HID_MAIN_ENDCOLLECTION, SL_USBD_HID_MAIN_ENDCOLLECTION };
/* مقامی متغیرات۔*/ uint8_t class_nbr; sl_status_t حیثیت؛
sl_usbd_hid_callbacks_t app_usbd_hid_callbacks = { NULL, NULL, app_usbd_hid_get_report_desc, NULL, NULL, NULL, NULL, NULL, NULL };
void app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (void)class_nbr;
*p_report_ptr = app_usbd_hid_mouse_report_desc؛ *p_report_len = sizeof(app_usbd_hid_mouse_report_desc)؛ }
status = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED، Ex_USBD_HID_Mouse_ReportDesc، sizeof(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, true, &app_usbd_hid_callbacks, &class_nbr);
کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

39/174

ختمview
/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */}
HID کلاس انسٹینس کو اپنے ڈیوائس کی کنفیگریشن میں شامل کرنا HID کلاس انسٹینس بنانے کے بعد، آپ فنکشن کو کال کر کے اسے کنفیگریشن میں شامل کر سکتے ہیں۔
sl_usbd_hid_add_to_configuration() ۔
سابقample ذیل میں دکھایا گیا ہے کہ sl_usbd_hid_add_to_configuration() کو کیسے کال کرنا ہے۔
Example - کال کرنا sl_usbd_hid_add_to_configuration()

sl_status_t حیثیت؛

sl_usbd_hid_add_to_configuration(class_nbr،

(1)

config_nbr_fs)؛ (2)

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

(1) sl_usbd_hid_create_instance() کے ذریعے واپس کردہ ترتیب میں شامل کرنے کے لیے کلاس نمبر۔ (2) کنفیگریشن نمبر (یہاں اسے فل اسپیڈ کنفیگریشن میں شامل کرنا)۔
USB ڈیوائس HID کلاس کا استعمال کرتے ہوئے مواصلت کرنا
کلاس انسٹینس کمیونیکیشن سنکرونس کمیونیکیشن کلاس انسٹینس کمیونیکیشن HID کلاس میزبان کے ساتھ بات چیت کرنے کے لیے درج ذیل فنکشنز پیش کرتی ہے۔
ٹیبل - HID کمیونیکیشن API کا خلاصہ

فنکشن کا نام
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

آپریشن انٹرپٹ آؤٹ اینڈ پوائنٹ کے ذریعے میزبان سے ڈیٹا وصول کرتا ہے۔ یہ فنکشن بلاک کر رہا ہے۔ انٹرپٹ ان اینڈ پوائنٹ کے ذریعے میزبان کو ڈیٹا بھیجتا ہے۔ یہ فنکشن بلاک کر رہا ہے۔

سنکرونس کمیونیکیشن سنکرونس کمیونیکیشن کا مطلب ہے کہ ٹرانسفر بلاک ہو رہا ہے۔ فنکشن کال پر، ایپلی کیشنز اس وقت تک بلاک ہوجاتی ہیں جب تک کہ ٹرانسفر کسی غلطی کے ساتھ یا اس کے بغیر مکمل نہ ہوجائے۔ ہمیشہ کے لیے انتظار سے بچنے کے لیے ایک ٹائم آؤٹ کا تعین کیا جا سکتا ہے۔ سابقample نیچے پڑھنا اور لکھنا دکھاتا ہے جو انٹرپٹ آؤٹ اینڈ پوائنٹ کا استعمال کرتے ہوئے میزبان سے ڈیٹا وصول کرتا ہے اور انٹرپٹ ان اینڈ پوائنٹ کا استعمال کرتے ہوئے میزبان کو ڈیٹا بھیجتا ہے۔
Example - ہم وقت ساز HID پڑھیں اور لکھیں۔

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len؛

sl_status_t

حیثیت؛

حیثیت = sl_usbd_hid_read_sync(class_nbr،

(1)

(باطل *)rx_buf،

(2)

2u

0u

(3)

&xfer_len);

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

40/174

ختمview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void*)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* ایک خرابی پیش آ گئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void*)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */}
(1) sl_usbd_hid_create_instance() سے تخلیق کردہ کلاس انسٹینس نمبر HID کلاس کے لیے ایک داخلی حوالہ فراہم کرتا ہے تاکہ ٹرانسفر کو مناسب interrupt OUT یا IN اینڈ پوائنٹ پر روٹ کیا جا سکے۔
(2) ایپلیکیشن کو یقینی بنانا چاہیے کہ فنکشن کو فراہم کردہ بفر تمام ڈیٹا کو ایڈجسٹ کرنے کے لیے کافی بڑا ہے۔ بصورت دیگر، مطابقت پذیری کے مسائل ہو سکتے ہیں۔ اندرونی طور پر، ریڈ آپریشن یا تو کنٹرول اینڈ پوائنٹ کے ساتھ یا انٹرپٹ اینڈ پوائنٹ کے ساتھ کیا جاتا ہے، sl_usbd_hid_create_instance() کو کال کرتے وقت کنٹرول ریڈ فلیگ سیٹ پر منحصر ہے۔
(3) لامحدود مسدود ہونے کی صورت حال سے بچنے کے لیے، ملی سیکنڈز میں ظاہر کردہ ٹائم آؤٹ کی وضاحت کی جا سکتی ہے۔ 809 کی قدر درخواست کے کام کو ہمیشہ کے لیے انتظار کرنے پر مجبور کرتی ہے۔
(4) ایپلیکیشن ابتدائی ٹرانسمٹ بفر فراہم کرتی ہے۔
HID متواتر ان پٹ رپورٹس ٹاسک
بینڈوڈتھ کو بچانے کے لیے، میزبان رپورٹنگ فریکوئنسی کو محدود کرکے انٹرپٹ IN اینڈ پوائنٹ سے رپورٹس کو خاموش کرنے کی صلاحیت رکھتا ہے۔ ایسا کرنے کے لیے، میزبان کو SET_IDLE درخواست بھیجنی چاہیے۔ Silicon Labs کے ذریعے لاگو کردہ HID کلاس میں ایک اندرونی کام ہوتا ہے جو رپورٹنگ فریکوئنسی کی حد کا احترام کرتا ہے جسے آپ ایک یا متعدد ان پٹ رپورٹس پر لاگو کر سکتے ہیں۔ فگر متواتر ان پٹ رپورٹس ٹاسک متواتر ان پٹ رپورٹس کے کاموں کے کام کو ظاہر کرتا ہے۔
پیکر – متواتر ان پٹ رپورٹس ٹاسک

(1) آلہ کو ایک SET_IDLE درخواست موصول ہوتی ہے۔ یہ درخواست دی گئی رپورٹ ID کے لیے ایک بے کار دورانیہ بتاتی ہے۔ SET_IDLE درخواست کے بارے میں مزید تفصیلات کے لیے، دیکھیں
(2) ایک رپورٹ آئی ڈی کا ڈھانچہ (HID کلاس کے آغاز کے مرحلے کے دوران مختص کیا گیا) بیکار مدت کے ساتھ اپ ڈیٹ کیا جاتا ہے۔ ایک بیکار دورانیہ کا کاؤنٹر بیکار دورانیے کی قدر کے ساتھ شروع کیا جاتا ہے۔ رپورٹ ID کا ڈھانچہ ایک لنک شدہ فہرست کے آخر میں داخل کیا جاتا ہے جس میں ان پٹ رپورٹس ID ڈھانچے ہوتے ہیں۔ غیر فعال دورانیے کی قدر کو 4-ms یونٹ میں ظاہر کیا جاتا ہے جو 4 سے 1020 ms تک کی رینج دیتا ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

41/174

ختمview
اگر بیکار دورانیہ انٹرپٹ IN اینڈ پوائنٹ کے پولنگ وقفہ سے کم ہے، تو رپورٹیں پولنگ کے وقفہ پر تیار کی جاتی ہیں۔
(3) ہر 4 ایم ایس پر، متواتر ان پٹ رپورٹ ٹاسک ان پٹ رپورٹس کی شناختی فہرست کو براؤز کرتا ہے۔ ہر ان پٹ رپورٹ ID کے لیے، یہ کام دو ممکنہ کارروائیوں میں سے ایک انجام دیتا ہے۔ ٹاسک پیریڈ کا دورانیہ بیکار دورانیے کے لیے استعمال ہونے والے 4-ms یونٹ سے میل کھاتا ہے۔ اگر میزبان کی طرف سے کوئی SET_IDLE درخواستیں نہیں بھیجی گئی ہیں، تو ان پٹ رپورٹس کی ID کی فہرست خالی ہے اور ٹاسک پر کارروائی کے لیے کچھ نہیں ہے۔ یہ ٹاسک صرف ان IDs کی رپورٹ کرتا ہے جو 0 سے مختلف ہیں اور 0 سے زیادہ غیر فعال مدت کے ساتھ۔
(4) دی گئی ان پٹ رپورٹ ID کے لیے، ٹاسک اس بات کی تصدیق کرتا ہے کہ آیا بیکار دورانیہ گزر گیا ہے۔ اگر بیکار دورانیہ ختم نہیں ہوا ہے، تو کاؤنٹر کو کم کیا جاتا ہے اور میزبان کو کوئی ان پٹ رپورٹ نہیں بھیجی جاتی ہے۔
(5) اگر بیکار دورانیہ گزر گیا ہے (یعنی بے کار دورانیہ کا کاؤنٹر صفر پر پہنچ گیا ہے)، ایک ان پٹ رپورٹ میزبان کو بھیجی جاتی ہے sl_usbd_hid_write_sync() فنکشن کو انٹرپٹ IN اینڈ پوائنٹ کے ذریعے کال کرکے۔
(6) ٹاسک کے ذریعے بھیجا جانے والا ان پٹ رپورٹ ڈیٹا ایک اندرونی ڈیٹا بفر سے آتا ہے جو رپورٹ ڈسکرپٹر میں بیان کردہ ہر ان پٹ رپورٹ کے لیے مختص کیا جاتا ہے۔ ایک ایپلیکیشن ٹاسک ان پٹ رپورٹ بھیجنے کے لیے sl_usbd_hid_write_sync() فنکشن کو کال کر سکتا ہے۔ ان پٹ رپورٹ کا ڈیٹا بھیجنے کے بعد، sl_usbd_hid_write_sync() ان پٹ رپورٹ ID سے منسلک اندرونی بفر کو ابھی بھیجے گئے ڈیٹا کے ساتھ اپ ڈیٹ کرتا ہے۔ اس کے بعد، متواتر ان پٹ رپورٹس ٹاسک ہمیشہ ایک ہی ان پٹ رپورٹ کا ڈیٹا بھیجتا ہے جب تک کہ ہر بیکار مدت گزر جانے کے بعد اور جب تک کہ ایپلیکیشن ٹاسک اندرونی بفر میں ڈیٹا کو اپ ڈیٹ نہیں کرتا ہے۔ متواتر ان پٹ رپورٹ ٹاسک کے ذریعہ ٹرانسمیشن کے عین وقت پر ہونے والی ترمیم کی صورت میں ان پٹ رپورٹ ID ڈیٹا میں بدعنوانی سے بچنے کے لئے کچھ تالا لگانے کا طریقہ کار موجود ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

42/174

ختمview
ختمview
USB ڈیوائس MSC کلاس
USB ڈیوائس MSC کلاس ختم ہو گئی۔view کور USB ڈیوائس MSC کلاس کنفیگریشن USB ڈیوائس MSC کلاس پروگرامنگ گائیڈ USB ڈیوائس MSC کلاس اسٹوریج ڈرائیورز سے USB ڈیوائس MSC کلاس کے وسائل کی ضرورت
یہ سیکشن ماس سٹوریج ڈیوائس کلاس (MSC) کی وضاحت کرتا ہے جسے Silicon Labs USB ڈیوائس سے تعاون حاصل ہے۔ MSC ایک پروٹوکول ہے جو USB ڈیوائس اور میزبان کے درمیان معلومات کی منتقلی کو قابل بناتا ہے۔ جو معلومات منتقل کی جا رہی ہیں وہ ایسی کوئی بھی چیز ہے جسے الیکٹرانک طور پر محفوظ کیا جا سکتا ہے، جیسے کہ قابل عمل پروگرام، سورس کوڈ، دستاویزات، تصاویر، کنفیگریشن ڈیٹا، یا دیگر متن یا عددی ڈیٹا۔ USB ڈیوائس میزبان کے لیے ایک بیرونی اسٹوریج میڈیم کے طور پر ظاہر ہوتا ہے، جس کی منتقلی کو قابل بناتا ہے۔ fileڈریگ اینڈ ڈراپ کے ذریعے۔
A file نظام کی وضاحت کرتا ہے کہ کس طرح files کو اسٹوریج میڈیا میں منظم کیا جاتا ہے۔ USB ماس اسٹوریج کلاس تصریح کو کسی خاص کی ضرورت نہیں ہے۔ file سازگار آلات پر استعمال ہونے والا نظام۔ اس کے بجائے، یہ سمال کمپیوٹر سسٹم انٹرفیس (SCSI) شفاف کمانڈ سیٹ کا استعمال کرتے ہوئے ڈیٹا کے سیکٹرز کو پڑھنے اور لکھنے کے لیے ایک سادہ انٹرفیس فراہم کرتا ہے۔ اس طرح، آپریٹنگ سسٹم USB ڈرائیو کو ہارڈ ڈرائیو کی طرح سمجھ سکتے ہیں، اور اسے کسی سے بھی فارمیٹ کر سکتے ہیں۔ file وہ نظام پسند کرتے ہیں.
USB ماس اسٹوریج ڈیوائس کلاس دو ٹرانسپورٹ پروٹوکول کو سپورٹ کرتی ہے، جیسا کہ:
بلک اونلی ٹرانسپورٹ (BOT) کنٹرول/بلک/انٹرپٹ (سی بی آئی) ٹرانسپورٹ (صرف فلاپی ڈسک ڈرائیوز کے لیے استعمال کیا جاتا ہے)
ماس اسٹوریج ڈیوائس کلاس صرف BOT پروٹوکول کا استعمال کرتے ہوئے SCSI شفاف کمانڈ سیٹ کو نافذ کرتی ہے، جو اس بات کی نشاندہی کرتی ہے کہ ڈیٹا اور اسٹیٹس کی معلومات کو منتقل کرنے کے لیے صرف بلک اینڈ پوائنٹ استعمال کیے جائیں گے۔ MSC کا نفاذ متعدد منطقی اکائیوں کو سپورٹ کرتا ہے۔
MSC کا نفاذ درج ذیل تصریحات کے مطابق ہے:
یونیورسل سیریل بس ماس سٹوریج کلاس کی تفصیلات ختمview، نظرثانی 1.3 ستمبر 5، 2008۔ یونیورسل سیریل بس ماس اسٹوریج کلاس بلک صرف ٹرانسپورٹ، نظرثانی 1.0 ستمبر 31، 1999۔
USB ڈیوائس MSC aCl ss اوورview
پروٹوکول اینڈ پوائنٹس کلاس کی درخواستیں سمال کمپیوٹر سسٹم انٹرفیس (SCSI)
پروٹوکول
اس سیکشن میں، ہم ماس سٹوریج کلاس کے بلک اونلی ٹرانسپورٹ (BOT) پروٹوکول پر بات کریں گے۔ بلک اونلی ٹرانسپورٹ پروٹوکول میں تین سیکنڈ ہیں۔tages:
کمانڈ ٹرانسپورٹ ڈیٹا ٹرانسپورٹ اسٹیٹس ٹرانسپورٹ
بڑے ذخیرہ کرنے کی کمانڈز میزبان کی طرف سے کمانڈ بلاک ریپر (CBW) نامی ساخت کے ذریعے بھیجی جاتی ہیں۔ ان کمانڈز کے لیے جن کے لیے ڈیٹا ٹرانسپورٹ کی ضرورت ہوتی ہے۔tage، میزبان آلہ سے بائٹس کی صحیح تعداد بھیجنے یا وصول کرنے کی کوشش کرے گا جیسا کہ CBW کی لمبائی اور فلیگ فیلڈز کے ذریعہ بیان کیا گیا ہے۔ ڈیٹا ٹرانسپورٹ کے بعد ایسtagای، میزبان ڈیوائس سے کمانڈ اسٹیٹس ریپر (CSW) حاصل کرنے کی کوشش کرتا ہے جو کمانڈ کی حیثیت کے ساتھ ساتھ کسی بھی ڈیٹا کی باقیات (اگر

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

43/174

ختمview
کوئی بھی)۔ ان کمانڈز کے لیے جن میں ڈیٹا ٹرانسپورٹ شامل نہیں ہے۔tagای، میزبان سی بی ڈبلیو بھیجے جانے کے بعد براہ راست CSW وصول کرنے کی کوشش کرتا ہے۔ پروٹوکول کی تفصیل شکل میں ہے – MSC پروٹوکول۔
تصویر - MSC پروٹوکول

اختتامی نکات
ڈیوائس کی طرف، BOT تصریح کی تعمیل میں، MSC مندرجہ ذیل اینڈ پوائنٹس پر مشتمل ہے: کنٹرول کا ایک جوڑا IN اور OUT اینڈ پوائنٹس جسے ڈیفالٹ اینڈ پوائنٹ کہا جاتا ہے۔ بلک IN اور OUT اختتامی پوائنٹس کا ایک جوڑا۔
نیچے دی گئی جدول اختتامی نقطوں کے مختلف استعمال کی نشاندہی کرتی ہے۔
ٹیبل - MSC اینڈ پوائنٹ کا استعمال

اختتامی نقطہ
کنٹرول ان کنٹرول آؤٹ بلک ان بلک آؤٹ

سمت
ڈیوائس ٹو ہوسٹ ہوسٹ ٹو ڈیوائس ڈیوائس ٹو ہوسٹ ہوسٹ ٹو ڈیوائس

استعمال
گنتی اور MSC کلاس مخصوص درخواستیں شمار اور MSC کلاس مخصوص درخواستیں CSW اور ڈیٹا بھیجیں CBW اور ڈیٹا وصول کریں

کلاس کی درخواستیں۔
MSC BOT پروٹوکول کے لیے دو متعین کنٹرول کی درخواستیں ہیں۔ یہ درخواستیں اور ان کی تفصیل درج ذیل جدول میں دی گئی ہے۔

ٹیبل - بڑے ذخیرہ کرنے کی کلاس کی درخواستیں۔

کلاس کی درخواستیں۔
بلک اونلی ماس اسٹوریج ری سیٹ

تفصیل
یہ درخواست ماس ​​اسٹوریج ڈیوائس اور اس سے وابستہ انٹرفیس کو دوبارہ ترتیب دینے کے لیے استعمال ہوتی ہے۔ یہ درخواست ڈیوائس کو اگلا کمانڈ بلاک حاصل کرنے کے لیے تیار کرتی ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

44/174

ختمview

کلاس کی درخواستیں۔

تفصیل

زیادہ سے زیادہ حاصل کریں یہ درخواست آلہ کے ذریعہ تعاون یافتہ اعلی ترین منطقی یونٹ نمبر (LUN) واپس کرنے کے لئے استعمال ہوتی ہے۔ سابق کے لیےampلی ، اے

LUN

LUN 0 اور LUN 1 والا آلہ 1 کی قدر واپس کرے گا۔ واحد منطقی یونٹ والا آلہ 0 لوٹائے گا یا اسٹال کرے گا۔

درخواست زیادہ سے زیادہ قیمت جو واپس کی جا سکتی ہے 15 ہے۔

سمال کمپیوٹر سسٹم انٹرفیس SCSI

پروگرامنگ انٹرفیس کی سطح پر، MSC ڈیوائس معیاری سٹوریج میڈیا کمیونیکیشن پروٹوکول میں سے ایک کو لاگو کرتی ہے، جیسے SCSI اور SFF-8020i (ATAPI)۔ "پروگرامنگ انٹرفیس" یہ بتاتا ہے کہ کون سا پروٹوکول لاگو ہوتا ہے، اور میزبان آپریٹنگ سسٹم کو USB اسٹوریج ڈیوائس کے ساتھ بات چیت کرنے کے لیے موزوں ڈیوائس ڈرائیور کو لوڈ کرنے میں مدد کرتا ہے۔ SCSI سب سے عام پروٹوکول ہے جو USB MSC اسٹوریج ڈیوائسز کے ساتھ استعمال ہوتا ہے۔ ہم MSC SCSI ذیلی طبقے کے لیے ایک نفاذ فراہم کرتے ہیں جسے ہمارے GSDK صارفین باہر استعمال کر سکتے ہیں۔
SCSI کمپیوٹرز اور پیریفرل ڈیوائسز کے درمیان مواصلات کو سنبھالنے کے معیارات کا ایک مجموعہ ہے۔ ان معیارات میں کمانڈز، پروٹوکول، برقی انٹرفیس اور آپٹیکل انٹرفیس شامل ہیں۔ سٹوریج ڈیوائسز جو دوسرے ہارڈویئر انٹرفیس استعمال کرتی ہیں، جیسے کہ USB، ڈیوائس/میزبان کی معلومات حاصل کرنے اور ڈیوائس کے آپریشن کو کنٹرول کرنے اور سٹوریج میڈیا میں ڈیٹا کے بلاکس کی منتقلی کے لیے SCSI کمانڈ استعمال کرتی ہے۔
SCSI کمانڈز ڈیوائس کی اقسام اور افعال کی ایک وسیع رینج کا احاطہ کرتی ہیں اور اس طرح، ڈیوائسز کو ان کمانڈز کے سب سیٹ کی ضرورت ہوتی ہے۔ عام طور پر، بنیادی مواصلات کے لیے درج ذیل کمانڈز ضروری ہیں:
انکوائری پڑھنے کی صلاحیت (10) پڑھیں (10) ریکوئسٹ سینس ٹیسٹ یونٹ ریڈی رائٹ (10)
کور سے USB ڈیوائس MSC کلاس کے وسائل کی ضرورت ہے۔

جب بھی آپ فنکشن sl_usbd_msc_add_to_configuration() کے ذریعے USB کنفیگریشن میں MSC کلاس مثال شامل کرتے ہیں، تو درج ذیل وسائل کور سے مختص کیے جائیں گے۔

وسیلہ
انٹرفیسز متبادل انٹرفیس اینڈ پوائنٹس انٹرفیس گروپس

مقدار
1 1 2 0

نوٹ کریں کہ وہ نمبرز فی کنفیگریشن ہیں۔ اپنی SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY اور SL_USBD_DESCRIPTOR_QUANTITY کنفیگریشن ویلیوز کو ترتیب دیتے وقت، اس بات کا خیال رکھنا نہ بھولیں کہ کتنی کلاس کنفیگریشنز شامل کی جائیں گی۔ SL_USBD_OPEN_ENDPOINTS_QUANTITY کنفیگریشن ویلیو کے لیے، چونکہ اینڈ پوائنٹس صرف اس وقت کھولے جاتے ہیں جب میزبان کی طرف سے کنفیگریشن سیٹ کی جاتی ہے، آپ کو صرف کلاس مثال کے لیے مطلوبہ اینڈ پوائنٹس کی تعداد کو مدنظر رکھنا ہوگا۔
USB ڈیوائس MSC کلاس کنفیگریشن

ایم ایس سی کلاس کو ترتیب دینے کے لیے کنفیگریشن پیرامیٹرز کے دو گروپ استعمال کیے جاتے ہیں:
USB ڈیوائس MSC کلاس ایپلیکیشن مخصوص کنفیگریشن USB ڈیوائس MSC کلاس لاجیکل یونٹ کنفیگریشن
USB ڈیوائس MSC کلاس ایپلیکیشن مخصوص کنفیگریشنز

کلاس کمپائل ٹائم کنفیگریشنز کلاس انسٹینس تخلیق

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

45/174

ختمview

کلاس کمپائل ٹائم کنفیگریشنز
سلکان لیبز USB ڈیوائس MSC کلاس اور SCSI ذیلی کلاس sl_usbd_core_config.h میں واقع #defines کے ذریعے مرتب وقت پر قابل ترتیب ہیں۔ file.
جدول - عام کنفیگریشن کنسٹینٹس

کنفیگریشن کا نام

تفصیل

SL_USBD_MSC_CLASS_INST کلاس مثالوں کی تعداد جو آپ فنکشن میں کال کے ذریعے مختص کریں گے

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance() ۔

SL_USBD_MSC_CONFIGURA کنفیگریشن کی تعداد جس میں ایک کال کے ذریعے کلاس کی مثال شامل کی جا سکتی ہے

TION_QUANTITY

فنکشن sl_usbd_msc_scsi_add_to_configuration() ۔

SL_USBD_MSC_LUN_QUANT فی کلاس مثال کے طور پر منطقی اکائیوں کی تعداد جسے آپ کال کے ذریعے شامل کریں گے

ITY

فنکشن sl_usbd_msc_scsi_lun_add() ۔

SL_USBD_MSC_SCSI_64_BIT 64 بٹس کے منطقی بلاک ایڈریس (LBA) کے لیے سپورٹ کو فعال یا غیر فعال کرتا ہے۔
_LBA_EN

SL_USBD_MSC_DATA_BUFF ڈیٹا بفر کا سائز فی کلاس مثال بائٹس میں ER_SIZE

ڈیفالٹ قدر
2
1
2
0
512

کلاس مثال کی تخلیق
USB ڈیوائس MSC SCSI کلاس مثال بنانا sl_usbd_msc_scsi_create_instance() فنکشن کو کال کرکے کیا جاتا ہے۔ یہ فنکشن ایک کنفیگریشن دلیل لیتا ہے جو نیچے بیان کیا گیا ہے۔
p_scsi_کال بیکس
p_scsi_callbacks sl_usbd_msc_scsi_callbacks_t قسم کے کنفیگریشن ڈھانچے کی طرف اشارہ کرتا ہے۔ عام USB ڈیوائس کلاس کال بیکس کنیکٹ/منقطع ہونے کے علاوہ، یہ MSC کلاس کو اختیاری کال بیک فنکشنز کا ایک سیٹ فراہم کرتا ہے جو اس وقت کال کیے جاتے ہیں جب منطقی یونٹ پر کوئی واقعہ پیش آتا ہے۔ اگر کال بیکس کی ضرورت نہ ہو تو اس دلیل پر ایک null پوائنٹر (NULL ) دیا جا سکتا ہے۔
نیچے دی گئی جدول اس ترتیب کے ڈھانچے میں دستیاب ہر کنفیگریشن فیلڈ کی وضاحت کرتی ہے۔
جدول – sl_usbd_msc_scsi_callbacks_t کنفیگریشن سٹرکچر

فیلڈز

تفصیل

.enable

USB کلاس مثال کے کامیابی کے ساتھ فعال ہونے پر کال کی جاتی ہے۔

.disable جب USB کلاس انسٹینس کو غیر فعال کیا جاتا ہے تو کال کی جاتی ہے۔

.host_eject فنکشن کہا جاتا ہے جب ایک منطقی یونٹ میزبان سے نکالا جاتا ہے۔

فنکشن دستخط
void app_usbd_msc_scsi_enable(uint8_t class_nbr)؛
void app_usbd_msc_scsi_disable(uint8_t class_nbr)؛ void app_usbd_msc_scsi_host_eject(uint8_t class_nbr, uint8_t lu_nbr)؛

USB ڈیوائس MSC کلاس لاجیکل یونٹ کنفیگریشن

MSC کلاس مثال میں منطقی اکائی کو شامل کرنا فنکشن sl_usbd_msc_lun_add() کو کال کرکے کیا جاتا ہے۔ یہ فنکشن ایک کنفیگریشن دلیل لیتا ہے جو نیچے بیان کیا گیا ہے۔

p_lu_info

p_lu_info sl_usbd_msc_scsi_lun_info_t قسم کی ساخت کی طرف اشارہ کرتا ہے۔ اس کا مقصد ایم ایس سی کلاس کو منطقی اکائی کی معلومات فراہم کرنا ہے۔
نیچے دی گئی جدول اس ترتیب کے ڈھانچے میں دستیاب ہر کنفیگریشن فیلڈ کی وضاحت کرتی ہے۔

جدول – sl_usbd_msc_scsi_lun_info_t کنفیگریشن سٹرکچر

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

46/174

ختمview

میدان

تفصیل

میدان
.scsi_lun_api_p tr

تفصیل
میڈیا ڈرائیور API کی طرف اشارہ کریں جو اس منطقی یونٹ کو سنبھالے گا۔ سٹوریج ڈرائیورز کے بارے میں مزید معلومات کے لیے USB ڈیوائس MSC کلاس سٹوریج ڈرائیورز دیکھیں۔

.ve nd o r_id _ p tr
.product_id_ptr
.p ro d uct_ re v isi on_level .is_ re ad _o nly

ایک سٹرنگ کی طرف اشارہ کریں جس میں وینڈر کی منطقی اکائی کی شناخت ہو۔ سٹرنگ کی زیادہ سے زیادہ لمبائی 8 حروف ہے۔ ایک سٹرنگ کی طرف اشارہ کریں جس میں منطقی اکائی کی مصنوعات کی شناخت ہو۔ اسٹرنگ کی زیادہ سے زیادہ لمبائی 16 حروف ہے۔ مصنوعات کی نظر ثانی کی سطح
جھنڈا جو اس بات کی نشاندہی کرتا ہے کہ آیا منطقی اکائی کو صرف کے نقطہ سے پڑھا ہوا دیکھا جانا چاہیے۔ view میزبان کا (سچا) یا نہیں (غلط)۔

USB ڈیوائس MSC کلاس پروگرامنگ گائیڈ

یہ سیکشن وضاحت کرتا ہے کہ MSC کلاس کو کیسے استعمال کیا جائے۔
USB ڈیوائس MSC کلاس شروع کرنا آپ کے ڈیوائس میں USB ڈیوائس MSC SCSI کلاس مثال شامل کرنا USB ڈیوائس MSC کلاس لاجیکل یونٹ ہینڈلنگ
USB ڈیوائس MSC کلاس شروع کرنا

اپنے آلے میں MSC SCSI کلاس کی فعالیت شامل کرنے کے لیے، سب سے پہلے MSC بیس کلاس اور SCSI ذیلی کلاس کو فنکشن sl_usbd_msc_init() اور sl_usbd_msc_scsi_init() کو کال کرکے شروع کریں۔
سابقample ذیل میں دکھایا گیا ہے کہ sl_usbd_msc_init() اور sl_usbd_msc_scsi_init() کو کیسے کال کرنا ہے۔

Example – sl_usbd_msc_init() اور sl_usbd_msc_scsi_init() کو کال کرنا

sl_status_t حیثیت؛
حیثیت = sl_usbd_msc_init(); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}
حیثیت = sl_usbd_msc_scsi_init(); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}
آپ کے آلے میں USB ڈیوائس MSC SCSI کلاس مثال شامل کرنا
اپنے آلے میں MSC SCSI کلاس فنکشنلٹی کو شامل کرنے کے لیے، پہلے ایک مثال بنائیں، پھر اسے اپنے آلے کی کنفیگریشن (کنفیگریشنز) میں شامل کریں۔ آپ کو اپنی مثال میں کم از کم ایک منطقی اکائی شامل کرنی چاہیے۔
ایک MSC SCSI کلاس مثال بنانا
فنکشن sl_usbd_msc_scsi_create_instance() کو کال کرکے MSC SCSI کلاس مثال بنائیں۔
سابقampذیل میں دکھایا گیا ہے کہ ڈیفالٹ آرگیومینٹس کا استعمال کرتے ہوئے sl_usbd_msc_scsi_create_instance() کو کیسے کال کرنا ہے۔ sl_usbd_msc_scsi_create_instance() کو منتقل کرنے کے لیے کنفیگریشن کے دلائل کے بارے میں مزید معلومات کے لیے، USB ڈیوائس MSC کلاس ایپلیکیشن مخصوص کنفیگریشنز دیکھیں۔
Example – کال کرنا sl_usbd_ msc_scsi_create_instance()

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

47/174

ختمview

uint8_t class_nbr؛ sl_status_t حیثیت؛
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL، .disable = NULL، .host_eject = NULL } ;
status = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr)؛
اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */ }
آپ کے آلے کی ترتیب (کنفیگریشنز) میں MSC کلاس مثال شامل کرنا
MSC کلاس مثال بنانے کے بعد، آپ فنکشن کو کال کر کے اسے کنفیگریشن میں شامل کر سکتے ہیں۔
sl_usbd_msc_add_to_configuration() ۔
سابقampذیل میں دکھایا گیا ہے کہ ڈیفالٹ آرگیومینٹس کا استعمال کرتے ہوئے sl_usbd_msc_scsi_add_to_configuration() کو کیسے کال کرنا ہے۔
Example - کال کرنا sl_usbd_ msc_scsi_add_to_configuration()

sl_status_t حیثیت؛

حیثیت = sl_usbd_msc_scsi_add_to_configuration(class_nbr،

(1)

config_nbr_fs)؛

(2)

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

(1) sl_usbd_msc_scsi_create_instance() کے ذریعے واپس کردہ ترتیب میں شامل کرنے کے لیے کلاس نمبر۔ (32) کنفیگریشن نمبر (یہاں اسے فل اسپیڈ کنفیگریشن میں شامل کرنا)۔
USB ڈیوائس MSC کلاس لاجیکل یونٹ ہینڈلنگ
سٹوریج میڈیم کو منسلک کرنا / الگ کرنا ایک منطقی یونٹ شامل کرنا
ایک منطقی اکائی شامل کرنا
اپنے MSC SCSI کلاس مثال میں ایک منطقی اکائی شامل کرتے وقت، اسے سٹوریج میڈیم (RAMDisk، SD کارڈ، فلیش میموری، وغیرہ) کا پابند ہونا چاہیے۔ MSC کلاس اسٹوریج میڈیا کے ساتھ بات چیت کرنے کے لیے اسٹوریج ڈرائیور کا استعمال کرتی ہے۔ منطقی یونٹ کو شامل کرتے وقت اس ڈرائیور کو سپلائی کرنے کی ضرورت ہوگی۔
سابقample ذیل میں دکھایا گیا ہے کہ sl_usbd_msc_scsi_lun_add() کے ذریعے منطقی اکائی کیسے شامل کی جائے۔
Example - sl_usbd_msc_scsi_lun_add() کے ذریعے ایک منطقی اکائی شامل کرنا

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

48/174

ختمview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = NULL؛

sl_usbd_msc_scsi_lun_info_t lu_info;

sl_status_t

حیثیت؛

lu_info.sl_usbd_msc_scsi_lun_api_t = &app_usbd_scsi_storage_block_device_api;

lu_info.vendor_id_ptr

= "سلیکون لیبز"؛

lu_info.product_id_ptr

= "بلاک ڈیوائس سابقample"؛

lu_info.product_revision_level = 0x1000u;

lu_info.is_only

= جھوٹا

status = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr)؛
اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */ }

سٹوریج میڈیم کو جوڑنا/ الگ کرنا
منطقی یونٹ کو شامل کرنے کے بعد، میزبان کی طرف سے دستیاب ہونے کے لیے ایک سٹوریج میڈیم منسلک ہونا چاہیے۔ MSC کلاس اسٹوریج میڈیا ایسوسی ایشن کو منطقی یونٹ میں کنٹرول کرنے کے لیے دو فنکشن پیش کرتی ہے: sl_usbd_msc_scsi_lun_attach() اور sl_usbd_msc_scsi_lun_detach()۔ اگر ضروری ہو تو ایمبیڈڈ ایپلیکیشن سے دوبارہ رسائی حاصل کرنے کے لیے یہ فنکشنز آپ کو اسٹوریج ڈیوائس کو ہٹانے کی تقلید کرنے کی اجازت دیتے ہیں۔
سابقample ذیل میں دکھایا گیا ہے کہ فنکشن sl_usbd_msc_scsi_lun_attach() اور sl_usbd_msc_scsi_lun_detach() کو کیسے استعمال کیا جائے۔
Example - میڈیا اٹیچ/ڈیٹچ

sl_status_t حیثیت؛

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr)؛ اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}

(1)

status = sl_usbd_msc_scsi_lun_detach(lu_object_ptr)؛ اگر (اسٹیٹس! SL_STATUS_OK) {
/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}

(2)

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) if (status ! SL_STATUS_OK) {
/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */
}

(3)

(1) اس لمحے سے، اگر MSC ڈیوائس میزبان سے منسلک ہے، تو اسٹوریج میڈیا قابل رسائی ہے۔
(2) اگر MSC ڈیوائس کسی میزبان سے منسلک ہے، تو میڈیا اب غیر دستیاب کے طور پر ظاہر ہوگا۔ اس وقت، ایمبیڈڈ ایپلی کیشن سے میڈیا پر آپریشن کیے جا سکتے ہیں۔
(3) دوبارہ، اگر MSC ڈیوائس میزبان سے منسلک ہے، تو اسٹوریج میڈیا منسلک کے طور پر ظاہر ہوگا۔
USB ڈیوائس MSC کلاس اسٹوریج ڈرائیورز
USB ڈیوائس MSC کلاس کو اسٹوریج میڈیم کے ساتھ بات چیت کرنے کے لیے اسٹوریج ڈرائیور کی ضرورت ہوتی ہے۔ اس وقت، Silicon Labs ڈرائیوروں کی پیشکش نہیں کرتی ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

49/174

ختمview
TPY aa وہ ڈرائیور AI کی تعریف typedef sl_usbd_msc_scsi_lun_api_t کے ذریعہ کی گئی ہے۔ ہمارے sl_usbd_msc_scsi_lun_api_t v ri ble کو aaaaaa آپ کے sl_usbd_msc_scsi_lun_info_t v ri ble میں شامل کرنا ضروری ہے، جب آپ sl_usbd_msc_scdsi_lun کے ساتھ منطق l یونٹ ڈی ڈی کرتے ہیں۔ ڈھانچے کے بارے میں مزید تفصیلات کے لیے USB ڈیوائس MSC SCSI API کا سیکشن دیکھیں۔ سٹوریج ڈرائیور کا نفاذ اتنا ہی آسان ہو سکتا ہے جتنا کہ RAM میں سیکٹرز کی ایک صف۔ عام سیکٹر کا سائز (یعنی بلاک سائز) بڑے پیمانے پر ذخیرہ کرنے والے آلات کے لیے 512 اور CD-ROM کے لیے 2048 ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

50/174

ختمview
ختمview
USB ڈیوائس وینڈر کلاس
USB ڈیوائس وینڈر کلاس ختمview یو ایس بی ڈیوائس وینڈر کلاس ریسورس نیڈز کور یو ایس بی ڈیوائس وینڈر کلاس کنفیگریشن یو ایس بی ڈیوائس وینڈر کلاس پروگرامنگ گائیڈ وینڈر کلاس آپ کو وینڈر کے لیے مخصوص ڈیوائسز بنانے کی اجازت دیتی ہے جو کہ ملکیتی پروٹوکول کو لاگو کرسکتی ہے۔ یہ میزبان اور ڈیوائس کے درمیان ڈیٹا کی منتقلی کے لیے بلک اینڈ پوائنٹس کے جوڑے پر انحصار کرتا ہے۔ بڑے پیمانے پر منتقلی غیر ساختہ ڈیٹا کی بڑی مقدار کی منتقلی کے لیے آسان ہے اور غلطی کا پتہ لگانے اور دوبارہ کوشش کرنے کا طریقہ کار استعمال کرکے ڈیٹا کا قابل اعتماد تبادلہ فراہم کرتی ہے۔ بلک اینڈ پوائنٹس کے علاوہ، وینڈر کلاس مداخلت کے اختتامی پوائنٹس کا اختیاری جوڑا بھی استعمال کر سکتی ہے۔ کوئی بھی آپریٹنگ سسٹم (OS) وینڈر کلاس کے ساتھ کام کر سکتا ہے بشرطیکہ OS کے پاس وینڈر کلاس کو سنبھالنے کے لیے ڈرائیور ہو۔ OS پر منحصر ہے، ڈرائیور مقامی یا وینڈر کے لیے مخصوص ہو سکتا ہے۔ مثال کے طور پر، Microsoft Windows® کے تحت، آپ کی ایپلیکیشن مائیکروسافٹ کی طرف سے فراہم کردہ WinUSB ڈرائیور کے ساتھ وینڈر ڈیوائس کے ساتھ بات چیت کرتی ہے۔
USB ڈیوائس وینڈر کلاس ختمview
پیکر – ونڈوز ہوسٹ اور وینڈر کلاس کے درمیان جنرل آرکیٹیکچر وینڈر کلاس کا استعمال کرتے ہوئے میزبان اور ڈیوائس کے درمیان عمومی فن تعمیر کو ظاہر کرتا ہے۔ اس میں سابقampلی، میزبان آپریٹنگ سسٹم ایم ایس ونڈوز ہے۔
تصویر – MS Windows ہوسٹ اور وینڈر کلاس کے درمیان جنرل آرکیٹیکچر

MS Windows کی طرف، ایپلیکیشن USB لائبریری کے ساتھ بات چیت کر کے وینڈر ڈیوائس کے ساتھ بات چیت کرتی ہے۔ لائبریریاں، جیسے libusb، کسی ڈیوائس اور اس سے منسلک پائپوں کو منظم کرنے اور کنٹرول، بلک اور انٹرپٹ اینڈ پوائنٹس کے ذریعے ڈیوائس کے ساتھ بات چیت کرنے کے لیے ایک API پیش کرتی ہیں۔
ڈیوائس کی طرف، وینڈر کلاس درج ذیل پوائنٹس پر مشتمل ہے:
کنٹرول کے IN اور OUT اینڈ پوائنٹس کا ایک جوڑا ڈیفالٹ اینڈ پوائنٹ کہلاتا ہے۔ بلک IN اور OUT اختتامی پوائنٹس کا ایک جوڑا۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

51/174

ختمview

انٹرپٹ IN اور OUT اینڈ پوائنٹس کا ایک جوڑا۔ یہ جوڑا اختیاری ہے۔ نیچے دی گئی جدول مختلف اختتامی نقطوں کے استعمال کی نشاندہی کرتی ہے۔
ٹیبل - وینڈر کلاس اینڈ پوائنٹس کا استعمال

اختتامی نقطہ کی سمت

کنٹرول IN
کنٹرول
باہر
بلک IN

ڈیوائس ٹو ہوسٹ
>ہوسٹ ٹو ڈیوائس
ڈیوائس ٹو ہوسٹ

بلک آؤٹ
میں مداخلت کریں۔
خلل ڈالنا
باہر

ہوسٹ ٹو ڈیوائس
ڈیوائس ٹو ہوسٹ
ہوسٹ ٹو ڈیوائس

استعمال
گنتی اور وینڈر کی مخصوص درخواستوں کے لیے معیاری درخواستیں۔
گنتی اور وینڈر کی مخصوص درخواستوں کے لیے معیاری درخواستیں۔
خام ڈیٹا مواصلات. ڈیٹا کو ایک ملکیتی پروٹوکول کے مطابق ترتیب دیا جا سکتا ہے۔
خام ڈیٹا مواصلات. ڈیٹا کو ایک ملکیتی پروٹوکول کے مطابق ترتیب دیا جا سکتا ہے۔
خام ڈیٹا مواصلات یا اطلاع۔ ڈیٹا کو ایک ملکیتی پروٹوکول کے مطابق ترتیب دیا جا سکتا ہے۔ خام ڈیٹا مواصلات یا اطلاع۔ ڈیٹا کو ایک ملکیتی پروٹوکول کے مطابق ترتیب دیا جا سکتا ہے۔

ڈیوائس ایپلیکیشن میزبان کو یا اس سے ڈیٹا بھیجنے یا وصول کرنے کے لیے بلک اور انٹرپٹ اینڈ پوائنٹس کا استعمال کر سکتی ہے۔ یہ میزبان کی طرف سے بھیجی گئی وینڈر کی مخصوص درخواستوں کو ڈی کوڈ کرنے کے لیے صرف ڈیفالٹ اینڈ پوائنٹ کا استعمال کر سکتا ہے۔ معیاری درخواستوں کا انتظام اندرونی طور پر سلکان لیبز USB ڈیوائس کی کور لیئر کے ذریعے کیا جاتا ہے۔
کور سے USB ڈیوائس وینڈر کلاس وسائل کی ضرورت ہے۔

ہر بار جب آپ فنکشن sl_usbd_vendor_add_to_configuration() کے ذریعے کنفیگریشن میں وینڈر کلاس مثال شامل کرتے ہیں، تو درج ذیل وسائل کور سے مختص کیے جائیں گے۔

وسیلہ
انٹرفیسز متبادل انٹرفیس اینڈ پوائنٹس انٹرفیس گروپس

مقدار
1 1 2 (4 اگر آپ نے انٹرپٹ اینڈ پوائنٹس کو فعال کیا ہے) 0

نوٹ کریں کہ وہ نمبرز فی کنفیگریشن ہیں۔ اپنی SL_USBD_INTERFACE_QUANTITY , SL_USBD_ALT_INTERFACE_QUANTITY , SL_USBD_INTERFACE_GROUP_QUANTITY اور SL_USBD_DESCRIPTOR_QUANTITY کنفیگریشن ویلیوز کو ترتیب دیتے وقت، اس بات کا خیال رکھنا نہ بھولیں کہ کتنی کلاس کنفیگریشنز شامل کی جائیں گی۔ SL_USBD_OPEN_ENDPOINTS_QUANTITY کنفیگریشن ویلیو کے لیے، چونکہ اینڈ پوائنٹس صرف اس وقت کھولے جاتے ہیں جب میزبان کی طرف سے کنفیگریشن سیٹ کی جاتی ہے، آپ کو صرف کلاس مثال کے لیے مطلوبہ اینڈ پوائنٹس کی تعداد کو مدنظر رکھنا ہوگا۔
USB ڈیوائس وینڈر کلاس کنفیگریشن

وینڈر کلاس کو ترتیب دینے کے لیے کنفیگریشن پیرامیٹرز کے دو گروپ استعمال کیے جاتے ہیں:
USB ڈیوائس وینڈر کلاس ایپلیکیشن مخصوص کنفیگریشنز USB ڈیوائس وینڈر کلاس انسٹینس کنفیگریشنز
USB ڈیوائس وینڈر کلاس ایپلیکیشن مخصوص کنفیگریشنز
سب سے پہلے، Silicon Labs USB ڈیوائس وینڈر کلاس ماڈیول کو استعمال کرنے کے لیے، اپنی درخواست کی ضروریات کے مطابق وینڈر کمپائل ٹائم کنفیگریشن کو ایڈجسٹ کریں۔ وہ sl_usbd_core_config.h ہیڈر کے اندر دوبارہ منظم ہیں۔ file وینڈر سیکشن کے تحت۔ مقدار کی ترتیب کا مقصد USB ڈیوائس ماڈیول کو یہ بتانا ہے کہ کتنے USB وینڈر اشیاء کو مختص کرنا ہے۔
نیچے دی گئی جدول میں ہر ترتیب کی وضاحت کی گئی ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

52/174

ختمview

ٹیبل - USB ڈیوائس وینڈر کنفیگریشن کی وضاحت کرتا ہے۔

کنفیگریشن کا نام

تفصیل

ڈیفالٹ قدر

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY کلاس مثالوں کی تعداد جو آپ 2 فنکشن sl_usbd_vendor_create_instance() پر کال کے ذریعے مختص کریں گے۔

SL_USBD_VENDOR_CONFIGURATION_QUANTITY کنفیگریشنز کی تعداد۔ فنکشن sl_usbd_vendor_add_to_configuration() پر کال کے ذریعے وینڈر کلاس مثالوں کو ایک یا زیادہ کنفیگریشنز میں شامل کیا جا سکتا ہے۔

USB ڈیوائس وینڈر کلاس انسٹینس کنفیگریشنز

یہ سیکشن وینڈر کلاس مثالوں سے متعلق کنفیگریشنز کی وضاحت کرتا ہے۔
کلاس مثال کی تخلیق intr_en وقفہ p_vendor_callbacks
کلاس مثال کی تخلیق

وینڈر کلاس انسٹینس بنانا فنکشن sl_usbd_vendor_create_instance() کو کال کرکے کیا جاتا ہے، جو تین کنفیگریشن آرگیومنٹ لیتا ہے جو نیچے بیان کیے گئے ہیں۔

intr_en
بولین جو اس بات کی نشاندہی کرتا ہے کہ کیا مداخلت کے اختتامی پوائنٹس کا ایک جوڑا شامل کیا جانا چاہئے یا نہیں۔

قدر
سچ جھوٹ

تفصیل
IN/OUT اینڈ پوائنٹس کا ایک جوڑا شامل کیا جائے گا اور ایمبیڈڈ ایپلیکیشن کو دستیاب کرایا جائے گا۔ کوئی رکاوٹ اختتامی نقطہ شامل نہیں کیا جائے گا۔ بلک IN/OUT اینڈ پوائنٹ کا صرف ایک جوڑا دستیاب ہوگا۔

وقفہ
اگر آپ intr_en کو true پر سیٹ کرتے ہیں، تو آپ انٹرپٹ اینڈ پوائنٹس پولنگ وقفہ (ملی سیکنڈ میں) بتا سکتے ہیں۔ اگر آپ intr_en کو غلط پر سیٹ کرتے ہیں تو آپ وقفہ کو 0 پر سیٹ کر سکتے ہیں کیونکہ کلاس اسے نظر انداز کر دے گی۔
p_vendor_callbacks
p_vendor_callbacks کال بیک فنکشن سٹرکچر متغیر کی طرف اشارہ کرتا ہے۔ جسے آپ کلاس مخصوص کنٹرول کی درخواستوں کو ہینڈل کرنے کے لیے مخصوص کر سکتے ہیں۔ اگر آپ کوئی کلاس مخصوص درخواستیں استعمال نہیں کرتے ہیں یا نوٹیفکیشن کو فعال/غیر فعال کرنے کی ضرورت ہے، تو آپ اسے NULL پر سیٹ کر سکتے ہیں۔
سابقampذیل میں آپ کے کلاس مخصوص درخواستوں کے ہینڈلر کے متوقع دستخط فراہم کرتا ہے۔
Example - کلاس مخصوص درخواست فنکشن کے دستخط

void app_usbd_vendor_req_handle(uint8_t

class_nbr، (1)

const sl_usbd_setup_req_t *p_setup_req)؛ (2)

sl_usbd_vendor_callbacks_t app_usbd_vendor_callback_functions =
{
.enable = NULL، .disable = NULL، .setup_req = app_usbd_vendor_req_handle،
};

(1) وینڈر کلاس مثال نمبر۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

53/174

ختمview

(2) میزبان کی طرف سے موصولہ سیٹ اپ کی درخواست کی طرف اشارہ۔
USB ڈیوائس وینڈر کلاس پروگرامنگ گائیڈ
یہ سیکشن وضاحت کرتا ہے کہ وینڈر کلاس کو کیسے استعمال کیا جائے۔ USB ڈیوائس وینڈر کلاس کا آغاز کرنا USB ڈیوائس وینڈر کلاس کا استعمال کرتے ہوئے آپ کے ڈیوائس میں ایک USB ڈیوائس وینڈر کلاس مثال شامل کرنا
USB ڈیوائس وینڈر کلاس شروع کرنا
اپنے آلے میں وینڈر کلاس کی فعالیت شامل کرنے کے لیے، پہلے فنکشن USBD_Vendor_Init() کو کال کرکے کلاس شروع کریں۔ سابقample ذیل میں دکھایا گیا ہے کہ sl_usbd_vendor_init() کو کیسے کال کرنا ہے۔
Example - کال کرنا sl_usbd_vendor_init()

sl_status_t حیثیت؛
حیثیت = sl_usbd_vendor_init(); اگر (اسٹیٹس! SL_STATUS_OK) { /* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */ }
اپنے ڈیوائس میں USB ڈیوائس وینڈر کلاس مثال شامل کرنا
اپنے آلے میں وینڈر کلاس کی فعالیت شامل کرنے کے لیے، آپ کو پہلے ایک مثال بنانا چاہیے، پھر اسے اپنے آلے کی ترتیب (کنفیگریشنز) میں شامل کرنا چاہیے۔
وینڈر کلاس انسٹینس بنانا آپ کے ڈیوائس کی کنفیگریشن میں وینڈر کلاس انسٹینس کو شامل کرنا
وینڈر کلاس مثال بنانا
فنکشن کو کال کرکے ایک وینڈر کلاس مثال بنائیں sl_usbd_vendor_create_instance() ۔ سابقample نیچے دکھاتا ہے کہ ڈیفالٹ آرگیومینٹس کا استعمال کرتے ہوئے sl_usbd_vendor_create_instance() کو کیسے کال کریں۔ sl_usbd_vendor_create_instance() کو منتقل کرنے کے لیے کنفیگریشن آرگیومینٹس کے بارے میں مزید معلومات کے لیے، USB Device Vendor Class Instance Configurations دیکھیں۔
Example - کال کرنا sl_usbd_vendor_create_instance()

uint8_t class_nbr؛ sl_status_t حیثیت؛

حیثیت = sl_usbd_vendor_create_instance (غلط،

(1)

0u

(2)

app_usbd_vendor_callback_functions، (3)

&class_nbr)؛

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

(1) اس کلاس مثال کے ساتھ کوئی رکاوٹ اختتامی نقطہ نہیں ہے۔ (2) وقفہ کو نظر انداز کیا جاتا ہے کیونکہ انٹرپٹ اینڈ پوائنٹس غیر فعال ہیں۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

54/174

ختمview

(3) کال بیک فنکشن جو آپ کی درخواست کا حصہ ہے جو وینڈر کے لیے مخصوص کلاس کی درخواستوں کو ہینڈل کرتا ہے۔ مزید معلومات کے لیے USB ڈیوائس وینڈر کلاس کا استعمال کرتے ہوئے مواصلت دیکھیں۔ وینڈر کلاس انسٹینس کو اپنے ڈیوائس کی کنفیگریشن(ز) میں شامل کرنا جب آپ وینڈر کلاس انسٹینس بنا لیتے ہیں، تو آپ USBD_Vendor_ConfigAdd() فنکشن کو کال کر کے اسے کنفیگریشن میں شامل کر سکتے ہیں۔ سابقampذیل میں دکھایا گیا ہے کہ ڈیفالٹ آرگیومینٹس کا استعمال کرتے ہوئے sl_usbd_vendor_add_to_configuration() کو کیسے کال کرنا ہے۔
Example - کال کرنا sl_usbd_vendor_add_to_configuration()

sl_status_t حیثیت؛

حیثیت = sl_usbd_vendor_add_to_configuration(class_nbr،

(1)

config_nbr_fs)؛

(2)

اگر (اسٹیٹس! SL_STATUS_OK) {

/* ایک خرابی پیش آگئی۔ خرابی سے نمٹنے کے لیے یہاں شامل کیا جانا چاہیے۔ */

}

(1) sl_usbd_vendor_create_instance() کے ذریعے واپس کردہ ترتیب میں شامل کرنے کے لیے کلاس نمبر۔ (2) کنفیگریشن نمبر (یہاں اسے فل اسپیڈ کنفیگریشن میں شامل کرنا)۔
USB ڈیوائس وینڈر کلاس کا استعمال کرتے ہوئے مواصلت کرنا
جنرل سنکرونس کمیونیکیشن اسینکرونس کمیونیکیشن وینڈر کی درخواست جنرل وینڈر کلاس میزبان کے ساتھ بات چیت کرنے کے لیے درج ذیل فنکشنز پیش کرتی ہے۔ فنکشن کے پیرامیٹرز کے بارے میں مزید تفصیلات کے لیے، USB ڈیوائس وینڈر API دیکھیں۔
ٹیبل - وینڈر کمیونیکیشن API کا خلاصہ

فنکشن کا نام
sl_usb d _v e nd o r_ re ad _b ulk_sy nc() sl_usb d _v e nd o r_write _b ulk_sy nc() sl_usb d _v e nd o r_ re ad _b ulk_asy _ nc () لکھیں t_asy NC
()
sl_usb d _v e nd o r_write _inte rrup t_asy NC
()

آپریشن بلک آؤٹ اینڈ پوائنٹ کے ذریعے میزبان سے ڈیٹا وصول کرتا ہے۔ یہ فنکشن بلاک کر رہا ہے۔ بلک IN اینڈ پوائنٹ کے ذریعے میزبان کو ڈیٹا بھیجتا ہے۔ یہ فنکشن بلاک کر رہا ہے۔ بلک آؤٹ اینڈ پوائنٹ کے ذریعے میزبان سے ڈیٹا وصول کرتا ہے۔ یہ فنکشن نان بلاکنگ ہے۔ بلک IN اینڈ پوائنٹ کے ذریعے میزبان کو ڈیٹا بھیجتا ہے۔ یہ فنکشن نان بلاکنگ ہے۔ انٹرپٹ آؤٹ اینڈ پوائنٹ کے ذریعے میزبان سے ڈیٹا وصول کرتا ہے۔ یہ فنکشن بلاک کر رہا ہے۔ انٹرپٹ IN اینڈ پوائنٹ کے ذریعے میزبان کو ڈیٹا بھیجتا ہے۔ یہ فنکشن بلاک کر رہا ہے۔ انٹرپٹ آؤٹ اینڈ پوائنٹ کے ذریعے میزبان سے ڈیٹا وصول کرتا ہے۔ یہ فنکشن غیر ہے
مسدود کرنا
انٹرپٹ IN اینڈ پوائنٹ کے ذریعے میزبان کو ڈیٹا بھیجتا ہے۔ یہ فنکشن نان بلاکنگ ہے۔

وینڈر کی درخواستیں میزبان کے ساتھ بات چیت کرنے کا ایک اور طریقہ بھی ہیں۔ میزبان کی طرف سے بھیجی گئی وینڈر کی درخواستوں کا انتظام کرتے وقت، ایپلیکیشن کنٹرول اینڈ پوائنٹ کا استعمال کرتے ہوئے میزبان سے ڈیٹا وصول یا بھیج سکتی ہے۔ آپ کو sl_usbd_vendor_create_instance() کے پیرامیٹر کے طور پر پاس کردہ ایپلیکیشن کال بیک فراہم کرنے کی ضرورت ہوگی۔ ہم وقت ساز مواصلات

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

55/174

ختمview

ہم وقت ساز مواصلات کا مطلب ہے کہ منتقلی مسدود ہو رہی ہے۔ جب کسی فنکشن کو کال کیا جاتا ہے، تو ایپلیکیشن اس وقت تک بلاک ہوجاتی ہے جب تک کہ ٹرانسفر کسی غلطی کے ساتھ یا اس کے بغیر مکمل نہ ہوجائے۔ ہمیشہ کے لیے انتظار سے بچنے کے لیے ایک ٹائم آؤٹ کا تعین کیا جا سکتا ہے۔ سابقample نیچے ایک پڑھنا اور لکھنا دکھاتا ہے جو بلک آؤٹ اینڈ پوائنٹ کا استعمال کرتے ہوئے میزبان سے ڈیٹا وصول کرتا ہے اور بلک ان اینڈ پوائنٹ کا استعمال کرتے ہوئے میزبان کو ڈیٹا بھیجتا ہے۔
Example - ہم وقت ساز بلک پڑھیں اور لکھیں۔

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

uint32_t

xfer_len؛

sl_status_t

حیثیت؛

حیثیت = sl_usbd_vendor_read_bulk_sync(class_nbr،

(1)

(باطل *)&rx_buf[0]،

(2)

2u

0u

(3)

&xfer_len);

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

حیثیت = sl_usbd_vendor_write_bulk_sync( class_nbr،

(1)

(باطل *)&tx_buf[0]،

(4)

2u

0u

(3)

جھوٹا

(5)

&xfer_len);

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

(1) sl_usbd_vendor_create_instance() کے ساتھ تخلیق کردہ کلاس انسٹینس نمبر مناسب بلک OUT یا IN اینڈ پوائنٹ پر منتقلی کو روٹ کرنے کے لیے وینڈر کلاس کو اندرونی حوالہ فراہم کرتا ہے۔
(2) ایپلیکیشن کو یقینی بنانا چاہیے کہ فنکشن کو فراہم کردہ بفر تمام ڈیٹا کو ایڈجسٹ کرنے کے لیے کافی بڑا ہے۔ بصورت دیگر، مطابقت پذیری کے مسائل ہو سکتے ہیں۔
(3) لامحدود مسدود ہونے کی صورت حال سے بچنے کے لیے، ملی سیکنڈز میں ظاہر کردہ ٹائم آؤٹ کو متعین کیا جا سکتا ہے۔ 809 کی قدر درخواست کے کام کو ہمیشہ کے لیے انتظار کرنے پر مجبور کرتی ہے۔
(4) ایپلیکیشن ابتدائی ٹرانسمٹ بفر فراہم کرتی ہے۔
(5) اگر یہ جھنڈا درست پر سیٹ کیا جاتا ہے، اور منتقلی کی لمبائی اختتامی نقطہ کے زیادہ سے زیادہ پیکٹ سائز سے متعدد ہے، تو ڈیوائس اسٹیک میزبان کو ایک صفر لمبائی والا پیکٹ بھیجے گا تاکہ منتقلی کے اختتام کا اشارہ ملے۔
انٹرپٹ اینڈ پوائنٹ کمیونیکیشن فنکشنز، sl_usbd_vendor_read_interrupt_sync() اور sl_usbd_vendor_write_interrupt_sync() کا استعمال، Ex میں پیش کردہ بلک اینڈ پوائنٹ کمیونیکیشن فنکشنز کی طرح ہے۔ample - ہم وقت ساز بلک پڑھیں اور لکھیں۔
غیر مطابقت پذیر مواصلات
غیر مطابقت پذیر مواصلات کا مطلب ہے کہ منتقلی غیر مسدود ہے۔ جب کسی فنکشن کو کال کیا جاتا ہے، تو ایپلیکیشن ٹرانسفر کی معلومات کو ڈیوائس اسٹیک میں منتقل کرتی ہے اور بلاک نہیں کرتی ہے۔ دوسری درخواست کی پروسیسنگ اس وقت کی جا سکتی ہے جب USB بس پر منتقلی جاری ہو۔ منتقلی مکمل ہونے کے بعد، ایپلیکیشن کو منتقلی کی تکمیل کے بارے میں مطلع کرنے کے لیے ڈیوائس اسٹیک کے ذریعے کال بیک فنکشن کو کال کیا جاتا ہے۔ سابقample ذیل میں غیر مطابقت پذیر پڑھنے اور لکھنا دکھاتا ہے۔
Example - غیر مطابقت پذیر بلک پڑھیں اور لکھیں۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

56/174

ختمview

void app_usbd_vendor_comm (uint8_t class_nbr)

{

__ALIGNED(4) uint8_t rx_buf[2];

__ALIGNED(4) uint8_t tx_buf[2];

sl_status_t

حیثیت؛

حیثیت = sl_usbd_vendor_read_bulk_async(class_nbr،

(باطل *)&rx_buf[0]،

(2)

2u

app_usbd_vendor_rx_completed،

NULL)؛

(4)

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

حیثیت = sl_usbd_vendor_write_bulk_async(class_nbr،

(باطل *)&tx_buf[0]،

(5)

2u

app_usbd_vendor_tx_completed،

خالی،

(4)

جھوٹا)

(6)

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

}

(1) (3)
(1) (3)

static void app_usbd_vendor_rx_completed(uint8_t class_nbr،

(3)

void *p_buf،

uint32_t buf_len،

uint32_t xfer_len،

void *p_callback_arg،

sl_status_t حیثیت)

{

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ کچھ پروسیسنگ کریں۔ */

} اور {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

}

static void app_usbd_vendor_tx_completed(uint8_t class_nbr،

(3)

void *p_buf،

uint32_t buf_len،

uint32_t xfer_len،

void *p_callback_arg،

sl_status_t حیثیت)

{

اگر (اسٹیٹس! SL_STATUS_OK) {

/* $$$$ کچھ پروسیسنگ کریں۔ */

} اور {

/* $$$$ غلطی کو ہینڈل کریں۔ */

}

}

(1) کلاس انسٹینس نمبر وینڈر کلاس کو ایک اندرونی حوالہ فراہم کرتا ہے تاکہ ٹرانسفر کو مناسب بلک آؤٹ یا IN اینڈ پوائنٹ پر لے جایا جا سکے۔ (2) درخواست کو یقینی بنانا چاہیے کہ فراہم کردہ بفر اتنا بڑا ہے کہ تمام ڈیٹا کو ایڈجسٹ کر سکے۔ دوسری صورت میں، مطابقت پذیری کے مسائل ہوسکتے ہیں. (3) ایپلی کیشن کال بیک فنکشن پوائنٹر فراہم کرتی ہے جسے پیرامیٹر کے طور پر پاس کیا گیا ہے۔ منتقلی کی تکمیل پر، ڈیوائس اسٹیک اس کال بیک فنکشن کو کال کرتا ہے تاکہ ایپلیکیشن ٹرانسفر کے نتیجے کا تجزیہ کرکے ٹرانسفر کو حتمی شکل دے سکے۔ مثال کے طور پر، ایک ریڈ آپریشن مکمل ہونے پر، ایپلیکیشن موصول ہونے والے ڈیٹا پر کارروائی کر سکتی ہے۔ تحریر مکمل ہونے پر، درخواست اس بات کی نشاندہی کر سکتی ہے کہ آیا تحریر کامیاب تھی اور کتنے بائٹس بھیجے گئے تھے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

57/174

ختمview
(4) کال بیک سے منسلک دلیل بھی پاس کی جا سکتی ہے۔ پھر کال بیک سیاق و سباق میں، کچھ نجی معلومات حاصل کی جا سکتی ہیں۔ (5) ایپلیکیشن ابتدائی ٹرانسمٹ بفر فراہم کرتی ہے۔ (6) اگر یہ جھنڈا درست پر سیٹ کیا جاتا ہے، اور منتقلی کی لمبائی اختتامی نقطہ کے زیادہ سے زیادہ پیکٹ کے سائز کا ایک کثیر ہے، تو ڈیوائس اسٹیک میزبان کو ایک صفر لمبائی والا پیکٹ بھیجے گا تاکہ منتقلی کے اختتام کا اشارہ ملے۔ انٹرپٹ اینڈ پوائنٹ کمیونیکیشن فنکشنز، sl_usbd_vendor_read_interrupt_async() اور sl_usbd_vendor_write_interrupt_async() کا استعمال، Ex میں پیش کردہ بلک اینڈ پوائنٹ کمیونیکیشن فنکشنز کی طرح ہے۔ampلی اسینکرونس بلک پڑھیں اور لکھیں۔
وینڈر کی درخواست
USB 2.0 تفصیلات تین قسم کی درخواستوں کی وضاحت کرتی ہے: معیاری، کلاس، اور وینڈر۔ تمام معیاری درخواستوں کو براہ راست بنیادی پرت کے ذریعہ ہینڈل کیا جاتا ہے، جبکہ کلاس کی درخواستوں کا انتظام مناسب منسلک کلاس کے ذریعہ کیا جاتا ہے۔ وینڈر کی درخواستوں پر وینڈر کلاس کے ذریعہ کارروائی کی جاسکتی ہے۔ وینڈر کی درخواستوں پر کارروائی کرنے کے لیے، آپ کو sl_usbd_vendor_create_instance() کے پیرامیٹر کے طور پر ایک ایپلیکیشن کال بیک فراہم کرنا ہوگا۔ USB ڈیوائس کے ذریعہ وینڈر کی درخواست موصول ہونے کے بعد، اسے صحیح طریقے سے ڈی کوڈ کیا جانا چاہیے۔ سابقample ذیل میں وینڈر کی درخواست کو ڈی کوڈنگ دکھاتا ہے۔ ڈیٹا کے دوران میزبان سے کچھ درخواستیں وصول کرنے یا بھیجنے کی ضرورت پڑ سکتی ہے۔tagکنٹرول کی منتقلی کی e. اگر کوئی ڈیٹا نہیں ہے۔tagای موجود ہے، آپ کو صرف سیٹ اپ پیکٹ کو ڈی کوڈ کرنا ہوگا۔ یہ سابقample ڈیٹا کی تین اقسام دکھاتا ہے۔tagای مینجمنٹ: کوئی ڈیٹا نہیں، ڈیٹا آؤٹ اور ڈیٹا ان۔
Example - وینڈر کی درخواست کو ڈی کوڈنگ

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

58/174

ختمview

# APP_VENDOR_REQ_NO_DATA کی وضاحت کریں۔

0x01u

# APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u کی وضاحت کریں

# APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u کی وضاحت کریں

# APP_VENDOR_REQ_DATA_BUF_SIZE کی وضاحت کریں۔

50u

static uint8_t app_vendor_req_buf[APP_VENDOR_REQ_DATA_BUF_SIZE]؛

static bool app_usbd_vendor_req (uint8_t

class_nbr،

const sl_usbd_setup_req_t *p_setup_req)

(1)

{

bool درست؛

sl_status_t حیثیت؛

uint16_t req_len;

uint32_t xfer_len؛

(void)class_nbr؛

سوئچ (p_setup_req->bRequest) { کیس APP_VENDOR_REQ_NO_DATA: valid = true; توڑنا

(2) (3)

کیس APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

req_len = p_setup_req->wLength؛

اگر (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// ڈیٹا حاصل کرنے کے لیے کافی جگہ نہیں ہے۔

واپسی (جھوٹی)؛

}

// کنٹرول آؤٹ ای پی کے ذریعے ڈیٹا وصول کریں۔ // ہمیشہ کے لیے منتقلی کی تکمیل کا انتظار کریں۔ اسٹیٹس = sl_usbd_core_read_control_sync((void*)&app_vendor_req_buf[0u]،
req_len, 0u, &xfer_len); اگر (اسٹیٹس! SL_STATUS_OK) { درست = غلط؛ } اور { درست = سچ؛ } وقفہ

کیس APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(5)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE؛

// پیٹرن کے ساتھ بف کو بھریں۔ Mem_Set((void*)&AppVendorReqBuf[0u]،
'اے'،
req_len)؛

// کنٹرول IN EP کے ذریعے ڈیٹا بھیجیں۔ // ہمیشہ کے لیے منتقلی کی تکمیل کا انتظار کریں۔ اسٹیٹس = sl_usbd_core_write_control_sync((void*)&app_vendor_req_buf[0u]،
req_len, 0u, false, &xfer_len); اگر (اسٹیٹس! SL_STATUS_OK) { درست = DEF_FAIL؛ } اور { درست = DEF_OK؛ } وقفہ

پہلے سے طے شدہ:

(6)

// درخواست تعاون یافتہ نہیں ہے۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

59/174

ختمview

درست = سچ؛ وقفہ؛
کیس APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// ڈیٹا وصول کرنے کے لیے کافی گنجائش نہیں ہے واپسی اسٹیٹس =sl_usbd_core_read_control_sync((void*)&app_vendor_req_buf[0u]،
req_len,0u,&xfer_len);if(status ! SL_STATUS_OK){ valid =false;} else{ valid =true;}break;
کیس APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// buf کو ایک پیٹرن کے ساتھ بھریں۔Mem_Set((void*)&AppVendorReqBuf[0u],'A',
req_len)؛// کنٹرول کے ذریعے ڈیٹا بھیجیں EP.// منتقلی کی تکمیل کا ہمیشہ کے لیے انتظار کریں۔ اسٹیٹس =sl_usbd_core_write_control_sync((void*)&app_vendor_req_buf[0u]،
req_len,0u,false,&xfer_len);if(status ! SL_STATUS_OK){ valid = DEF_FAIL;} else{ valid = DEF_OK;} break;
ڈیفالٹ:(6)// درخواست تعاون یافتہ نہیں ہے۔ درست = DEF_FAIL؛ وقفہ؛}واپس (درست)؛}

(1) کور سیٹ اپ پیکٹ کا مواد آپ کی درخواست میں منتقل کرے گا۔ ڈھانچہ sl_usbd_setup_req_t وہی فیلڈز پر مشتمل ہے جس کی وضاحت USB 2.0 تفصیلات کے ذریعے کی گئی ہے (مزید تفصیلات کے لیے تفصیلات کے سیکشن "9.3 USB ڈیوائس کی درخواستیں" دیکھیں):

typedef ساخت {

uint8_t bmRequestType؛ /* درخواست کی خصوصیات۔

*/

uint8_t bRequest؛ /* مخصوص درخواست۔

*/

uint16_t wValue؛ /* درخواست کے مطابق مختلف ہوتی ہے۔

*/

uint16_t wIndex؛ /* درخواست کے مطابق مختلف ہوتی ہے۔ عام طور پر انڈیکس کے طور پر استعمال کیا جاتا ہے۔*/

uint16_t لمبائی؛ /* منتقلی کی لمبائی اگر ڈیٹا stagای موجود.

*/

} sl_usbd_setup_req_t;

(2) درخواست کا تعین کریں۔ اگر آپ مختلف درخواستیں استعمال کر رہے ہیں تو آپ سوئچ اسٹیٹمنٹ استعمال کر سکتے ہیں۔ اس میں سابقample، تین مختلف درخواستیں ہیں جو کہ ڈیٹا کی تین اقسام کے مطابق ہیں۔tage: APP_VENDOR_REQ_NO_DATA، APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST، اور APP_VENDOR_REQ_SEND_DATA_TO_HOST۔
(3) اگر کوئی ڈیٹا نہیں ہے۔tagای موجود ہے، آپ کو صرف دوسرے فیلڈز کو ڈی کوڈ کرنے کی ضرورت ہے۔ ڈیٹا کی موجودگیtage یا نہیں کی نشاندہی فیلڈ wLength کے غیر null یا null ہونے سے ہوتی ہے۔
(4) اگر میزبان ڈیوائس کو ڈیٹا بھیجتا ہے، تو آپ کو فنکشن sl_usbd_core_read_control_sync() کو کال کرنا چاہیے۔ فراہم کردہ بفر میں wLength بائٹس تک کا ہونا چاہیے۔ اگر کوئی خرابی پیش آتی ہے تو، کور پر غلط واپس کریں جو اسٹیٹس کو روک دے گا۔tagکنٹرول کی منتقلی کا e، میزبان کو یہ بتاتا ہے کہ درخواست پر کارروائی نہیں کی جا سکتی ہے۔ کامیابی کی صورت میں سچ واپس آ جاتا ہے۔
(5) اگر میزبان ڈیوائس سے ڈیٹا وصول کرتا ہے، تو آپ کو فنکشن sl_usbd_core_write_control_sync() کو کال کرنا چاہیے۔ اگر کوئی خرابی پیش آتی ہے تو، کور پر غلط واپس کریں جو اسٹیٹس کو روک دے گا۔tagکنٹرول کی منتقلی کا e، میزبان کو یہ بتاتا ہے کہ درخواست پر کارروائی نہیں کی جا سکتی ہے۔ کامیابی کی صورت میں سچ واپس آ جاتا ہے۔
(6) اس سابق میںample, تمام درخواستوں کو جو تسلیم نہیں کی گئی ہیں ان کو اصل میں غلط واپس کر کے نشان زد کیا جاتا ہے۔ یہ ڈیٹا یا اسٹیٹس کو روک دے گا۔tagکنٹرول ٹرانسفر کا ای میزبان کو یہ بتاتا ہے کہ درخواست کی حمایت نہیں کی گئی ہے۔
میزبان ایک میزبان وینڈر کی درخواست کے ذریعے وینڈر کی درخواستیں بھیجتا ہے۔ USB لائبریریاں، جیسے libusb، آپ کو اپنی مرضی کے مطابق میزبان وینڈر ایپلیکیشن تیار کرنے میں مدد کے لیے استعمال کی جا سکتی ہیں۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

60/174

API دستاویزات
API دستاویزات
API دستاویزات
ماڈیولز کی فہرست
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB ڈیوائس وینڈر API

تفصیل
USB Device API USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB ڈیوائس وینڈر API

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

61/174

USB ڈیوائس API
USB ڈیوائس API
USB ڈیوائس API
USB ڈیوائس API۔
ماڈیولز
USB Device ACM API USB Device CDC API USB Device Core API USB Device HID API USB Device MSC API USB Device MSC SCSI API USB ڈیوائس وینڈر API

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

62/174

USB ڈیوائس ACM API

USB ڈیوائس ACM API

USB ڈیوائس ACM API

USB ڈیوائس CDC ACM API۔
ماڈیولز
a sl_usbd_cdc_ cm_line_coding_t sl_usbd_cdc_acm_callbacks_t
افعال

sl_status_t sl_status_t
sl_status_t sl_status_t sl_status_t
sl_status_t
sl_status_t
sl_status_t
sl_status_t sl_status_t sl_status_t sl_status_t sl_status_t

ایک sl_usbd_cdc_ cm_init (باطل)
عالمی متغیرات۔
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
CDC ACM سیریل ایمولیشن سب کلاس کی ایک نئی مثال شامل کریں۔
aaaa sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr، uint8_t config_nbr)
USB ڈیوائس کنفیگریشن میں CDC ACM سب کلاس کلاس مثال شامل کریں۔
aa sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
CDC ACM سیریل ایمولیشن ذیلی کلاس فعال حالت حاصل کریں۔
aaa sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr، uint8_t *p_buf، uint32_t buf_len، uint16_t ٹائم آؤٹ، uint32_t
*p_xfer_len) CDC ACM سیریل ایمولیشن سب کلاس پر ڈیٹا حاصل کریں۔
aaaa sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr، uint8_t *p_buf، uint32_t buf_len، aaaa sl_usbd_cdc_ sync_function_t sync_fnct، void *p_ sync_)
CDC ACM سیریل ایمولیشن ذیلی کلاس پر ڈیٹا غیر مطابقت پذیری سے حاصل کریں۔
aa sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t ٹائم آؤٹ, uint32_t
*p_xfer_len) CDC ACM سیریل ایمولیشن سب کلاس پر ڈیٹا بھیجیں۔
aaa sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr، uint8_t *p_buf، uint32_t buf_len، aaaa sl_usbd_cdc_ sync_function_t sync_fnct، void *p_ sync_rg)
CDC ACM سیریل ایمولیشن ذیلی کلاس پر ڈیٹا غیر مطابقت پذیری سے بھیجیں۔
aaa sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
کنٹرول لائنوں کی حالت واپس کریں۔
aaa sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
لائن کوڈنگ کی موجودہ حالت حاصل کریں۔
aaa sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
ایک نئی لائن کوڈنگ سیٹ کریں۔
aaa sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr، uint8_t ایونٹس)
ایک لائن سٹیٹ ایونٹ سیٹ کریں۔
aaaa sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr، uint8_t ایونٹس)
ایک لائن اسٹیٹ ایونٹ (واقعات) کو صاف کریں۔

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

63/174

USB ڈیوائس ACM API
میکروس
SL_USBD_CDC_ACM_NBR_NONE 255u کی وضاحت کریں۔
ماڈیول
SL_USBD_CDC_ACM_PARITY_NONE 0u کی وضاحت کریں۔
پورٹ سیٹنگز کی وضاحت ہوتی ہے۔
#define SL_USBD_CDC_ACM_PARITY_ODD 1u #define SL_USBD_CDC_ACM_PARITY_EVEN 2u #define SL_USBD_CDC_ACM_PARITY_MARK 3u #Define SL_USBD_CDC_ACM_SPACEu4define SL_USBD_CDC_ACM_STOP_BIT_1 0u #define SL_USBD_CDC_ACM_STOP_BIT_1_5 1u #define SL_USBD_CDC_ACM_STOP_BIT_2 2u #define SL_USBD_CDC_ACM_ACM_01
لائن ایونٹس جھنڈوں کی وضاحت کرتا ہے۔
#define SL_USBD_CDC_ACM_CTRL_RTS 0 02u #define SL_USBD_CDC_ACM_CTRL_DTR 0 04u #define SL_USBD_CDC_ACM_STATE_DCD 0 01u # وضاحت کریں SL_USBD_CDC_ACM_STATE_BREAK 0 04u #define SL_USBD_CDC_ACM_STATE_RING 0 08u #define SL_USBD_CDC_ACM_STATE_FRAMING 0 10u #define SL_USBD_CDC_ACM_STATE_RING #Define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
کال مینجمنٹ کی صلاحیتیں
#define SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI 0 02u #define SL_USBD_CDC_ACM_CALL_MGMT_DATA_OVER_DCI 0 02u | 0 01u)
فنکشن دستاویزی
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
عالمی متغیرات۔ پیرامیٹرز
کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

64/174

USB ڈیوائس ACM API

قسم
باطل

سمت N/A

دلیل کا نام

میکروس گلوبل کنسٹنٹ فنکشن پروٹو ٹائپس سی ڈی سی اے سی ایم فنکشنز

CDC ACM سیریل ایمولیشن سب کلاس کو شروع کریں۔
واپسی

کامیابی پر SL_STATUS_OK یا ناکامی پر دوسرا SL_STATUS کوڈ لوٹاتا ہے۔

تفصیل

sl_usbd_cdc_acm_create_instance

sl_status_t sl_usbd_cdc_acm_create_instance (uint16_t line_state_interval, uint16_t call_mgmt_capabilities, sl_usbd_cdc_acm_callbacks_t * p_acm_callbacks, p_acm_callbacks, uint_brass_t_t*)

CDC ACM سیریل ایمولیشن سب کلاس کی ایک نئی مثال شامل کریں۔
پیرامیٹرز

قسم
uint16_t
uint16_t

سمت دلیل کا نام

تفصیل

N/A

line_state_interval لائن اسٹیٹ نوٹیفکیشن کا وقفہ ملی سیکنڈ میں (قدر لازمی ہے۔

2 کی طاقت ہو)۔

N/A

call_mgmt_capabilities کال مینجمنٹ کی صلاحیتوں کا بٹ میپ۔ OR'ed of the

مندرجہ ذیل جھنڈے:

SL_USBD_CDC_ACM_CALL_MGMT_DEV ڈیوائس کال مینجمنٹ کو خود ہینڈل کرتی ہے۔ SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI ڈیوائس ڈیٹا کلاس انٹرفیس پر کال مینجمنٹ کی معلومات بھیج یا وصول کر سکتی ہے۔

sl_usbd_cdc_acm_callbacks_t N/A
*

uint8_t *

N/A

p_acm_callbacks p_subclass_nbr

مختلف واقعات پر کال بیک فنکشنز کے لیے اختیاری پوائنٹرز۔
پرم سے متغیر جو CDC ACM سیریل ایمولیشن سب کلاس مثال نمبر وصول کرے گا۔

واپسی

کامیابی پر SL_STATUS_OK یا ناکامی پر دوسرا SL_STATUS کوڈ واپس کریں۔

sl_usbd_cdc_acm_add_to_configuration

sl_status_t sl_usbd_cdc_acm_add_to_configuration (uint8_t subclass_nbr، uint8_t config_nbr)

USB ڈیوائس کنفیگریشن میں CDC ACM سب کلاس کلاس مثال شامل کریں۔
پیرامیٹرز

قسم
uint8_t uint8_t

سمت N/AN/A

دلیل کا نام
subclass_nbr config_nbr

تفصیل CDC ACM سیریل ایمولیشن سب کلاس مثال نمبر۔ نئے ٹیسٹ کلاس انٹرفیس کو شامل کرنے کے لیے کنفیگریشن انڈیکس۔

واپسی

کاپی رائٹ © 2025 سیلیکون لیبارٹریز۔ جملہ حقوق محفوظ ہیں۔

65/174

USB ڈیوائس ACM API
کامیابی پر SL_STATUS_OK یا ناکامی پر دوسرا SL_STATUS کوڈ لوٹاتا ہے۔

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr، bool * p_enabled)

CDC ACM سیریل ایمولیشن ذیلی کلاس فعال حالت حاصل کریں۔
پیرامیٹرز

قسم

سمت

دلیل کا نام

تفصیل

uint8_t N/A

subclass_nbr CDC ACM سیریل ایمولیشن ذیلی کلاس مثال نمبر۔

bool * N/A

p_enabled

ایک متغیر کو بولین جو فعال کی حیثیت حاصل کرے گا۔ متغیر درست پر سیٹ ہے، CDC ACM سیریل ایمولیشن فعال ہے۔ وی اے

دستاویزات / وسائل

سلکان لیبز USB ڈیوائس اسٹیک [پی ڈی ایف] ہدایات دستی
USB ڈیوائس اسٹیک، ڈیوائس اسٹیک، اسٹیک

حوالہ جات

ایک تبصرہ چھوڑیں۔

آپ کا ای میل پتہ شائع نہیں کیا جائے گا۔ مطلوبہ فیلڈز نشان زد ہیں۔ *