സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഡിവൈസ് സ്റ്റാക്ക് ഇൻസ്ട്രക്ഷൻ മാനുവൽ

USB ഉപകരണ സ്റ്റാക്ക്

സ്പെസിഫിക്കേഷനുകൾ

  • യുഎസ്ബി പതിപ്പ്: 1.5.1
  • റിലീസ് തീയതി: ജൂലൈ 21, 2025
  • ലാളിത്യം SDK പതിപ്പ്: 2025.6.1

ഉൽപ്പന്നം കഴിഞ്ഞുview

സിലിക്കൺ ലാബ്‌സിന്റെ യുഎസ്ബി ഉപകരണ സ്റ്റാക്ക് വൈവിധ്യമാർന്നതും
IoT പ്രോജക്റ്റുകൾക്കായി ഉപയോഗിക്കാൻ എളുപ്പമുള്ള USB കണക്റ്റിവിറ്റി, സൗകര്യമൊരുക്കുന്നു
നെറ്റ്‌വർക്ക് കോ-പ്രോസസ്സറുകളും ഹോസ്റ്റുകളും തമ്മിലുള്ള ആശയവിനിമയം.

ഫീച്ചറുകൾ

  • കാര്യക്ഷമമായ USB ഉപകരണ സ്റ്റാക്ക്
  • IoT പ്രോജക്റ്റുകൾക്ക് അനുയോജ്യം
  • നെറ്റ്‌വർക്ക് കോ-പ്രോസസ്സറുകൾ തമ്മിലുള്ള ആശയവിനിമയത്തിനുള്ള പിന്തുണയും
    ഹോസ്റ്റുകൾ

ഉൽപ്പന്ന ഉപയോഗ നിർദ്ദേശങ്ങൾ

USB ഉപകരണ കോൺഫിഗറേഷൻ

നിങ്ങളുടെ പ്രോജക്റ്റ് അനുസരിച്ച് USB ഉപകരണ ക്രമീകരണങ്ങൾ കോൺഫിഗർ ചെയ്യുക.
USB ഡിവൈസ് കോൺഫിഗറേഷൻ വിഭാഗം റഫർ ചെയ്തുകൊണ്ട് ആവശ്യകതകൾ
ഡോക്യുമെന്റേഷനിൽ.

USB ഉപകരണ പ്രോഗ്രാമിംഗ് ഗൈഡ്

എങ്ങനെയെന്ന് മനസ്സിലാക്കാൻ USB ഡിവൈസ് പ്രോഗ്രാമിംഗ് ഗൈഡ് പിന്തുടരുക
വിവിധ ആവശ്യങ്ങൾക്കായി USB ഉപകരണം പ്രോഗ്രാം ചെയ്യുകയും സംവദിക്കുകയും ചെയ്യുക
അപേക്ഷകൾ.

USB ഉപകരണ ക്ലാസുകൾ

USB ഉപകരണ ക്ലാസുകൾ വിഭാഗം ഒരു ഓവർ നൽകുന്നുview വ്യത്യസ്തമായ
CDC ACM, HID, MSC SCSI, വെണ്ടർ ക്ലാസ് തുടങ്ങിയ ക്ലാസുകൾ. തിരഞ്ഞെടുക്കുക
നിങ്ങളുടെ ഉപകരണത്തിന്റെ പ്രവർത്തനക്ഷമതയെ അടിസ്ഥാനമാക്കിയുള്ള ഉചിതമായ ക്ലാസ്.

USB ഉപകരണ ട്രബിൾഷൂട്ടിംഗ്

USB ഉപകരണത്തിൽ എന്തെങ്കിലും പ്രശ്നങ്ങൾ നേരിടുകയാണെങ്കിൽ, കാണുക
പരിഹാരങ്ങൾക്കും ഡീബഗ്ഗിംഗിനുമുള്ള USB ഉപകരണ ട്രബിൾഷൂട്ടിംഗ് വിഭാഗം
നുറുങ്ങുകൾ.

മൈക്രോസോഫ്റ്റ് വിൻഡോസ് ഒഎസ് യുഎസ്ബി ഹോസ്റ്റ്

നിങ്ങൾ ഒരു Microsoft Windows OS USB ഉള്ള USB ഉപകരണം ഉപയോഗിക്കുകയാണെങ്കിൽ
ഹോസ്റ്റ്, നൽകിയിരിക്കുന്ന മാർഗ്ഗനിർദ്ദേശങ്ങൾ പാലിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക
തടസ്സമില്ലാത്ത സംയോജനത്തിനുള്ള ഡോക്യുമെന്റേഷൻ.

പതിവുചോദ്യങ്ങൾ

ചോദ്യം: ചില പൊതുവായ മുൻഭാഗങ്ങൾ എന്തൊക്കെയാണ്ampഎനിക്ക് നിർമ്മിക്കാൻ കഴിയുന്ന ഉപകരണങ്ങൾ എത്രയാണ്
ഈ യുഎസ്ബി സ്റ്റാക്ക്?

A: USB സ്റ്റാക്ക് നിങ്ങളെ പോലുള്ള ഉപകരണങ്ങൾ നിർമ്മിക്കാൻ അനുവദിക്കുന്നു
യുഎസ്ബി-ടു-സീരിയൽ അഡാപ്റ്ററുകൾ, മൗസുകൾ അല്ലെങ്കിൽ കീബോർഡുകൾ, നീക്കം ചെയ്യാവുന്ന സംഭരണം
ഉപകരണങ്ങൾ, ഇഷ്ടാനുസൃത ഉപകരണങ്ങൾ.

ചോദ്യം: ഇത് ഉപയോഗിക്കുന്നതിന് എന്തെങ്കിലും പ്രത്യേക സോഫ്റ്റ്‌വെയർ ആവശ്യകതകൾ ഉണ്ടോ?
യുഎസ്ബി ഉപകരണ സ്റ്റാക്ക്?

A: അനുയോജ്യമായ സോഫ്റ്റ്‌വെയറിൽ സിംപ്ലിസിറ്റി SDK, സിംപ്ലിസിറ്റി എന്നിവ ഉൾപ്പെടുന്നു
സ്റ്റുഡിയോ, സിംപ്ലിസിറ്റി കമാൻഡർ, ജിസിസി (ഗ്നു കംപൈലർ ശേഖരം),
ARM-നും IAR EWARM-നും വേണ്ടിയുള്ള IAR എംബഡഡ് വർക്ക്ബെഞ്ച്.

യൂണിവേഴ്സൽ സീരിയൽ ബസ് യുഎസ്ബി

യൂണിവേഴ്സൽ സീരിയൽ ബസ് യുഎസ്ബി

യുഎസ്ബി ഓവർview കഴിഞ്ഞുview
റിലീസ് നോട്ടുകൾ യുഎസ്ബി
സ്പെസിഫിക്കേഷനുകളും സവിശേഷതകളും കഴിഞ്ഞുview
USB ഉപകരണ കോൺഫിഗറേഷൻ കഴിഞ്ഞുview
USB ഉപകരണ പ്രോഗ്രാമിംഗ് ഗൈഡ് കഴിഞ്ഞുview
USB ഉപകരണ ക്ലാസുകൾ കഴിഞ്ഞുview CDC ACM ക്ലാസ് കഴിഞ്ഞുview HID ക്ലാസ് കഴിഞ്ഞുview MSC SCSI ക്ലാസ് കഴിഞ്ഞുview വെണ്ടർ ക്ലാസ് കഴിഞ്ഞുview
USB API API ഡോക്യുമെന്റേഷൻ USB ഡിവൈസ് API USB ഡിവൈസ് 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

യൂണിവേഴ്സൽ സീരിയൽ ബസ് യുഎസ്ബി
ഒരു sl_usbd_msc_scsi_lun_ പൈ
sl_usbd_msc_scsi_lun_വിവരം sl_usbd_msc_scsi_lun
USB ഡിവൈസ് വെണ്ടർ API sl_usbd_vendor_callbacks_t
API ഡോക്യുമെന്റേഷൻ USB ഉപകരണ ട്രബിൾഷൂട്ടിംഗ്
കഴിഞ്ഞുview മൈക്രോസോഫ്റ്റ് വിൻഡോസ് ഒഎസ് യുഎസ്ബി ഹോസ്റ്റ്
കഴിഞ്ഞുview

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

2/174

കഴിഞ്ഞുview
കഴിഞ്ഞുview
USB ഉപകരണം
കമ്പ്യൂട്ടർ സിസ്റ്റങ്ങളുടെ ചരിത്രത്തിലെ ഏറ്റവും വിജയകരമായ ആശയവിനിമയ ഇന്റർഫേസുകളിൽ ഒന്നാണ് യുഎസ്ബി, കമ്പ്യൂട്ടർ പെരിഫെറലുകൾ ബന്ധിപ്പിക്കുന്നതിനുള്ള യഥാർത്ഥ മാനദണ്ഡമാണിത്. എംബഡഡ് സിസ്റ്റങ്ങൾക്കായി പ്രത്യേകം രൂപകൽപ്പന ചെയ്ത ഒരു യുഎസ്ബി ഉപകരണ മൊഡ്യൂളാണ് സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഡിവൈസ് സ്റ്റാക്ക്. സിലിക്കൺ ലാബ്സിന്റെ ഗുണനിലവാരം, സ്കേലബിളിറ്റി, വിശ്വാസ്യത എന്നിവ ഉപയോഗിച്ച് അടിസ്ഥാനപരമായി നിർമ്മിച്ച ഇത്, യുഎസ്ബി 2.0 സ്പെസിഫിക്കേഷന് അനുസൃതമായി കർശനമായ ഒരു മൂല്യനിർണ്ണയ പ്രക്രിയയിലൂടെ കടന്നുപോയി. സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഡിവൈസ് സ്റ്റാക്ക് എങ്ങനെ ആരംഭിക്കാമെന്നും ആരംഭിക്കാമെന്നും ഉപയോഗിക്കാമെന്നും ഈ ഡോക്യുമെന്റേഷൻ വിവരിക്കുന്നു. വിവിധ കോൺഫിഗറേഷൻ മൂല്യങ്ങളും അവയുടെ ഉപയോഗങ്ങളും ഇത് വിശദീകരിക്കുന്നു. ഇതിൽ ഒരു ഓവർ ഉൾപ്പെടുന്നുview സാങ്കേതികവിദ്യ, കോൺഫിഗറേഷൻ സാധ്യതകളുടെ തരങ്ങൾ, നടപ്പിലാക്കൽ നടപടിക്രമങ്ങൾ, ഉദാampലഭ്യമായ ഓരോ ക്ലാസിനും സാധാരണ ഉപയോഗത്തിന്റെ അളവ്.
യുഎസ്ബി ആശയങ്ങൾ വേഗത്തിൽ മനസ്സിലാക്കാൻ നിങ്ങളെ സഹായിക്കുന്നതിന്, ഡോക്യുമെന്റേഷനിൽ നിരവധി ഉദാ:ampഅടിസ്ഥാന പ്രവർത്തനങ്ങളുള്ള USB യുടെ ലെസ്. ഇവ ഉദാ.ampഉപകരണങ്ങൾ വേഗത്തിൽ നിർമ്മിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു ചട്ടക്കൂട് les നിങ്ങൾക്ക് നൽകും. ഇവ ഉദാ.amples ഉൾപ്പെടുന്നു:
യുഎസ്ബി-ടു-സീരിയൽ അഡാപ്റ്റർ (കമ്മ്യൂണിക്കേഷൻസ് ഡിവൈസ് ക്ലാസ്) മൗസ് അല്ലെങ്കിൽ കീബോർഡ് (ഹ്യൂമൻ ഇന്റർഫേസ് ഡിവൈസ് ക്ലാസ്) നീക്കം ചെയ്യാവുന്ന സ്റ്റോറേജ് ഡിവൈസ് (മാസ് സ്റ്റോറേജ് ക്ലാസ്) കസ്റ്റം ഡിവൈസ് (വെൻഡർ ക്ലാസ്)
ഇനിപ്പറയുന്നത് ഓവർ ആണ്view ഡോക്യുമെന്റേഷൻ വിഭാഗങ്ങളിൽ:
സ്പെസിഫിക്കേഷനുകളും സവിശേഷതകളും USB ഡിവൈസ് കോൺഫിഗറേഷൻ USB ഡിവൈസ് പ്രോഗ്രാമിംഗ് ഗൈഡ് USB ഡിവൈസ് ക്ലാസുകൾ
CDC ACM ക്ലാസ് HID ക്ലാസ് MSC SCSI ക്ലാസ് വെണ്ടർ ക്ലാസ് USB ഉപകരണം ട്രബിൾഷൂട്ടിംഗ് Microsoft Windows OS USB ഹോസ്റ്റ്

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

3/174

USB
USB

USB പതിപ്പ് 1.5.1 ജൂലൈ 21, 2025 – റിലീസ് നോട്ടുകൾ
ലാളിത്യം SDK പതിപ്പ് 2025.6.1
സിലിക്കൺ ലാബിന്റെ കാര്യക്ഷമമായ യുഎസ്ബി ഉപകരണ സ്റ്റാക്ക്, നെറ്റ്‌വർക്ക് കോ-പ്രോസസ്സറുകളും ഹോസ്റ്റുകളും തമ്മിലുള്ള ആശയവിനിമയം ഉൾപ്പെടെ, ഐഒടി പ്രോജക്റ്റുകൾക്ക് അനുയോജ്യമായ വൈവിധ്യമാർന്നതും ഉപയോഗിക്കാൻ എളുപ്പമുള്ളതുമായ യുഎസ്ബി കണക്റ്റിവിറ്റി വാഗ്ദാനം ചെയ്യുന്നു. മുമ്പത്തെ പതിപ്പുകൾക്കായി ഇവിടെ ക്ലിക്ക് ചെയ്യുക.
പ്രകാശന സംഗ്രഹം
പ്രധാന സവിശേഷതകൾ | API മാറ്റങ്ങൾ | ബഗ് പരിഹാരങ്ങൾ | ചിപ്പ് പ്രവർത്തനക്ഷമമാക്കൽ
പ്രധാന സവിശേഷതകൾ
അടിസ്ഥാന പ്ലാറ്റ്‌ഫോം മാറ്റങ്ങൾ മാത്രം.
API മാറ്റങ്ങൾ
ഒന്നുമില്ല.
ബഗ് പരിഹാരങ്ങൾ
ഒന്നുമില്ല.
ചിപ്പ് പ്രവർത്തനക്ഷമമാക്കൽ
ഒന്നുമില്ല.
പ്രധാന സവിശേഷതകൾ
പുതിയ സവിശേഷതകൾ | മെച്ചപ്പെടുത്തലുകൾ | നീക്കം ചെയ്ത സവിശേഷതകൾ | ഒഴിവാക്കിയ സവിശേഷതകൾ
പുതിയ സവിശേഷതകൾ
ഒന്നുമില്ല.
മെച്ചപ്പെടുത്തലുകൾ
അടിസ്ഥാന പ്ലാറ്റ്‌ഫോം മാറ്റങ്ങൾ മാത്രം.
നീക്കം ചെയ്ത സവിശേഷതകൾ
ഒന്നുമില്ല.
ഒഴിവാക്കിയ സവിശേഷതകൾ
ഒന്നുമില്ല.
API മാറ്റങ്ങൾ
പുതിയ API-കൾ | പരിഷ്കരിച്ച API-കൾ | നീക്കം ചെയ്ത API-കൾ | ഒഴിവാക്കിയ API-കൾ
പുതിയ API-കൾ

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

4/174

USB
ഒന്നുമില്ല.
പരിഷ്കരിച്ച API-കൾ
ഒന്നുമില്ല.
നീക്കം ചെയ്ത API-കൾ
ഒന്നുമില്ല.
ഒഴിവാക്കിയ API-കൾ
ഒന്നുമില്ല.
ബഗ് പരിഹാരങ്ങൾ
ഒന്നുമില്ല.
ചിപ്പ് പ്രവർത്തനക്ഷമമാക്കൽ
ഒന്നുമില്ല.
അപേക്ഷ എക്സിampലെ മാറ്റങ്ങൾ
പുതിയ എക്സിampലെസ് | പരിഷ്കരിച്ച എക്സ്ampലെസ് | നീക്കം ചെയ്ത മുൻampലെസ് | ഒഴിവാക്കിയ മുൻampലെസ്
പുതിയ എക്സിampലെസ്
ഒന്നുമില്ല.
പരിഷ്കരിച്ച മുൻampലെസ്
ഒന്നുമില്ല.
നീക്കംചെയ്ത മുൻampലെസ്
ഒന്നുമില്ല.
ഒഴിവാക്കിയ മുൻampലെസ്
ഒന്നുമില്ല.
റിലീസ് മാറ്റങ്ങളുടെ ആഘാതം
ഇംപാക്റ്റ് സ്റ്റേറ്റ്‌മെന്റുകൾ | മൈഗ്രേഷൻ ഗൈഡ്
ഇംപാക്റ്റ് പ്രസ്താവനകൾ
ഒന്നുമില്ല.
മൈഗ്രേഷൻ ഗൈഡ്
ഒന്നുമില്ല.
അറിയപ്പെടുന്ന പ്രശ്നങ്ങളും പരിമിതികളും
ഒന്നുമില്ല.
ഈ റിലീസ് ഉപയോഗിച്ച്

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

5/174

USB

റിലീസിൽ എന്താണുള്ളത്? | അനുയോജ്യമായ സോഫ്റ്റ്‌വെയർ | ഇൻസ്റ്റാളേഷനും ഉപയോഗവും | സഹായവും ഫീഡ്‌ബാക്കും

റിലീസിൽ എന്താണുള്ളത്?

USB ഡിവൈസ് സ്റ്റാക്ക് ആപ്ലിക്കേഷൻ എക്സ്ampലെസ്
അനുയോജ്യമായ സോഫ്റ്റ്വെയർ

സോഫ്റ്റ്വെയർ
സിംപ്ലിസിറ്റി എസ്ഡികെ സിംപ്ലിസിറ്റി സ്റ്റുഡിയോ സിംപ്ലിസിറ്റി കമാൻഡർ ജിസിസി ദി ഗ്നു കംപൈലർ കളക്ഷൻ) ഐഎആർ എംബെഡഡ് വർക്ക്ബെഞ്ച് ഫോർ എആർഎം ഐഎആർ ഇവാർം

അനുയോജ്യമായ പതിപ്പ് അല്ലെങ്കിൽ വേരിയന്റ്
2025.6.0 5.11.0 1.18.2 (സിംപ്ലിസിറ്റി സ്റ്റുഡിയോ നൽകിയിട്ടുണ്ട്) 12.2.1 (സിംപ്ലിസിറ്റി സ്റ്റുഡിയോ നൽകിയിട്ടുണ്ട്) 9.40.1 (സിംപ്ലിസിറ്റി സ്റ്റുഡിയോ നൽകിയിട്ടുണ്ട്)

ഇൻസ്റ്റലേഷനും ഉപയോഗവും

നിങ്ങളുടെ വികസനം ആരംഭിക്കാൻ ഞങ്ങളുടെത് കാണുക:
യുഎസ്ബി ഡിവൈസ് പ്രോഗ്രാമിംഗ് ഗൈഡ്. API ഡോക്യുമെന്റേഷൻ.
സെക്യുർ വോൾട്ട് ഇന്റഗ്രേഷനെക്കുറിച്ചുള്ള വിവരങ്ങൾക്ക്, സെക്യുർ വോൾട്ട് കാണുക.
വീണ്ടുംview സുരക്ഷാ, സോഫ്റ്റ്‌വെയർ ഉപദേശക അറിയിപ്പുകൾ:
ò https://community.silabs.com/ എന്നതിലേക്ക് പോകുക. ó നിങ്ങളുടെ അക്കൗണ്ട് ക്രെഡൻഷ്യലുകൾ ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുക. ô നിങ്ങളുടെ പ്രോയിൽ ക്ലിക്ക് ചെയ്യുകfile പേജിന്റെ മുകളിൽ വലത് കോണിലുള്ള ഐക്കണിൽ ക്ലിക്കുചെയ്യുക.
õ ഡ്രോപ്പ്ഡൗൺ മെനുവിൽ നിന്ന് അറിയിപ്പുകൾ തിരഞ്ഞെടുക്കുക. ö അറിയിപ്പുകൾ വിഭാഗത്തിൽ, വീണ്ടുംview ചരിത്രപരമായ സുരക്ഷാ, സോഫ്റ്റ്‌വെയർ ഉപദേശം
അറിയിപ്പുകൾ
÷ നിങ്ങളുടെ മുൻഗണനകൾ കൈകാര്യം ചെയ്യുന്നതിന്, ഏത് ഉൽപ്പന്നമാണ് നിങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യുന്നതെന്നും ഉപദേശങ്ങൾ നൽകേണ്ടതെന്നും ഇഷ്ടാനുസൃതമാക്കാൻ അറിയിപ്പുകൾ നിയന്ത്രിക്കുക ടാബ് ഉപയോഗിക്കുക.
സ്വീകരിക്കുക.
ശുപാർശ ചെയ്യുന്ന കോൺഫിഗറേഷൻ ക്രമീകരണങ്ങൾക്ക്, ഇവിടെ കാണുക.
ഈ റിലീസിലുള്ള സോഫ്റ്റ്‌വെയറിനെക്കുറിച്ച് കൂടുതലറിയാൻ, ഞങ്ങളുടെ ഓൺലൈൻ ഡോക്യുമെന്റേഷനിലേക്ക് മുങ്ങുക.
സഹായവും ഫീഡ്‌ബാക്കും

സിലിക്കൺ ലാബ്സ് സപ്പോർട്ടുമായി ബന്ധപ്പെടുക. ഉത്തരങ്ങൾ ലഭിക്കുന്നതിന് ഞങ്ങളുടെ Ask AI ടൂൾ ഉപയോഗിക്കുന്നതിന്, ഈ പേജിന്റെ മുകളിലുള്ള തിരയൽ ഫീൽഡ് കാണുക.

കുറിപ്പ്: ആസ്ക് AI പരീക്ഷണാത്മകമാണ്.

ഞങ്ങളുടെ ഡെവലപ്പർ കമ്മ്യൂണിറ്റിയിൽ നിന്ന് സഹായം നേടുക.
SDK റിലീസും മെയിൻ്റനൻസ് നയവും
ഞങ്ങളുടെ SDK റിലീസ് ആൻഡ് മെയിന്റനൻസ് നയം കാണുക.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

6/174

കഴിഞ്ഞുview
കഴിഞ്ഞുview
സ്പെസിഫിക്കേഷനുകൾ
“യൂണിവേഴ്സൽ സീരിയൽ ബസ് സ്പെസിഫിക്കേഷൻ റിവിഷൻ 2.0” പാലിക്കുന്നു “ഇന്റർഫേസ് അസോസിയേഷൻ ഡിസ്ക്രിപ്റ്റർ എഞ്ചിനീയറിംഗ് ചേഞ്ച് നോട്ടീസ് (ECN)” നടപ്പിലാക്കുന്നു ട്രാൻസ്ഫർ തരങ്ങൾ
കൺട്രോൾ ബൾക്ക് ഇന്ററപ്റ്റ് യുഎസ്ബി ക്ലാസുകൾ കമ്മ്യൂണിക്കേഷൻ ഡിവൈസ് ക്ലാസ് (സിഡിസി) അബ്‌സ്ട്രാക്റ്റ് കൺട്രോൾ മോഡൽ (എസിഎം) ഹ്യൂമൻ ഇന്റർഫേസ് ഡിവൈസ് (എച്ച്ഐഡി) മാസ് സ്റ്റോറേജ് ക്ലാസ് (എംഎസ്‌സി) വെണ്ടർ-സ്പെസിഫിക് ക്ലാസ് ഫ്രെയിംവർക്ക്
ഫീച്ചറുകൾ
മെമ്മറി ഫൂട്ട്പ്രിന്റ് കുറയ്ക്കുന്നതിന് ആവശ്യമായ സവിശേഷതകൾ മാത്രം ഉൾപ്പെടുത്താൻ സ്കെയിലബിൾ പൂർണ്ണ വേഗതയെ പിന്തുണയ്ക്കുന്നു (12 Mbit/s) സംയോജിത (മൾട്ടി-ഫംഗ്ഷൻ) ഉപകരണങ്ങളെ പിന്തുണയ്ക്കുന്നു മൾട്ടി-കോൺഫിഗറേഷൻ ഉപകരണങ്ങളെ പിന്തുണയ്ക്കുന്നു യുഎസ്ബി പവർ-സേവിംഗ് പ്രവർത്തനങ്ങളെ പിന്തുണയ്ക്കുന്നു (ഉപകരണം താൽക്കാലികമായി നിർത്തി പുനരാരംഭിക്കുക) മൈക്രോം ഒഎസിലേക്ക് മാസ് സ്റ്റോറേജ് ക്ലാസിന്റെ പൂർണ്ണ സംയോജനം File വ്യത്യസ്ത OS-കളിൽ പ്രവർത്തിക്കാൻ കഴിയുന്ന തരത്തിൽ CMSIS-RTOS2 അബ്‌സ്ട്രാക്ഷൻ ലെയർ ഉപയോഗിച്ചാണ് സിസ്റ്റം മൊഡ്യൂൾ വികസിപ്പിച്ചിരിക്കുന്നത്. സിലിക്കൺ ലാബ്‌സ് GSDK, FreeRTOS, Micrium OS പോർട്ടുകൾക്കൊപ്പം വരുന്നു.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

7/174

കഴിഞ്ഞുview
കഴിഞ്ഞുview

USB ഉപകരണ കോൺഫിഗറേഷൻ

സിലിക്കൺ ലാബ്‌സ് യുഎസ്ബി ഉപകരണം എങ്ങനെ കോൺഫിഗർ ചെയ്യാമെന്ന് ഈ വിഭാഗം ചർച്ച ചെയ്യുന്നു. കോൺഫിഗറേഷൻ പാരാമീറ്ററുകളുടെ മൂന്ന് ഗ്രൂപ്പുകളുണ്ട്, അവ താഴെ പറയുന്നവയാണ്:
യുഎസ്ബി ഡിവൈസ് കോർ കോൺഫിഗറേഷൻ യുഎസ്ബി ഡിവൈസ് ഇൻഫർമേഷൻ കോൺഫിഗറേഷൻ യുഎസ്ബി ഡിവൈസ് ഹാർഡ്‌വെയർ കോൺഫിഗറേഷൻ
USB ഉപകരണ കോർ കോൺഫിഗറേഷൻ
sl_usbd_core_config.h-ൽ സ്ഥിതി ചെയ്യുന്ന #defines എന്ന സെറ്റ് വഴി കംപൈൽ സമയത്ത് സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഉപകരണം കോൺഫിഗർ ചെയ്യാൻ കഴിയും. file. USB ഉപകരണം സാധ്യമാകുമ്പോഴെല്ലാം #defines ഉപയോഗിക്കുന്നു, കാരണം അവ കംപൈൽ സമയത്ത് ഏത് സവിശേഷതകൾ പ്രാപ്തമാക്കിയിരിക്കുന്നു എന്നതിനെ അടിസ്ഥാനമാക്കി കോഡിന്റെയും ഡാറ്റയുടെയും വലുപ്പങ്ങൾ സ്കെയിൽ ചെയ്യാൻ അനുവദിക്കുന്നു. ഇത് സിലിക്കൺ ലാബ്സ് USB ഉപകരണത്തിന്റെ റീഡ്-ഒൺലി മെമ്മറി (ROM), റാൻഡം-ആക്സസ് മെമ്മറി (RAM) കാൽപ്പാടുകൾ നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ ആവശ്യകതകളെ അടിസ്ഥാനമാക്കി ക്രമീകരിക്കാൻ അനുവദിക്കുന്നു.
ശുപാർശ ചെയ്യുന്നത്: ഡിഫോൾട്ട് മൂല്യങ്ങൾ (ബോൾഡിൽ ഹൈലൈറ്റ് ചെയ്‌തിരിക്കുന്നു) ഉപയോഗിച്ച് കോൺഫിഗറേഷൻ പ്രക്രിയ ആരംഭിക്കുക.
ടെംപ്ലേറ്റ് കോൺഫിഗറേഷനിലെ ക്രമത്തെ അടിസ്ഥാനമാക്കിയാണ് താഴെയുള്ള വിഭാഗങ്ങൾ ക്രമീകരിച്ചിരിക്കുന്നത്. file, sl_usbd_core_config.h.
കോർ കോൺഫിഗറേഷൻ ക്ലാസുകൾ കോൺഫിഗറേഷൻ
കോർ കോൺഫിഗറേഷൻ
പട്ടിക - യുഎസ്ബി ഡിവൈസ് കോർ കോൺഫിഗറേഷൻ കോൺസ്റ്റന്റുകൾ

സ്ഥിരമായ വിവരണം

ഡിഫോൾട്ട് മൂല്യം

SL_USBD_TA SK_STACK_ വലുപ്പം

USBD കോർ ടാസ്‌ക്കിന്റെ സ്റ്റാക്ക് വലുപ്പം ബൈറ്റുകളിൽ കോൺഫിഗർ ചെയ്യുന്നു

4096

SL_USBD_TA SK_PRIORIT Y

USBD കോർ ടാസ്‌ക്കിന്റെ മുൻഗണന കോൺഫിഗർ ചെയ്യുന്നു. ഇതൊരു CMSIS-RTOS2 മുൻഗണനയാണ്.

osPriorityHigh (ഓസ്പ്രയോറിറ്റിഹൈ)

SL_USBD_A UTO_START _USB_DEVIC ഇ

പ്രവർത്തനക്ഷമമാക്കിയാൽ, കേർണൽ ആരംഭിച്ചുകഴിഞ്ഞാൽ USB ഉപകരണം യാന്ത്രികമായി ആരംഭിക്കുകയും 1 USBD കോർ ടാസ്‌ക് ആദ്യമായി ഷെഡ്യൂൾ ചെയ്യുകയും ചെയ്യും. പ്രവർത്തനരഹിതമാക്കിയാൽ, USB ഹോസ്റ്റ് കണ്ടെത്തുന്നതിന് തയ്യാറാകുമ്പോൾ നിങ്ങളുടെ ആപ്ലിക്കേഷൻ sl_usbd_core_start_device()-നെ വിളിക്കേണ്ടതുണ്ട്.

SL_USBD_C sl_usbd_add_configuration() വഴി ചേർക്കുന്ന കോൺഫിഗറേഷനുകളുടെ ആകെ എണ്ണം

1

ONFIGURATI ഫംഗ്‌ഷൻ.

ഓൺ_ക്വാണ്ടി

TY

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

8/174

കഴിഞ്ഞുview

സ്ഥിരമായ
SL_USBD _ഇന്റർഫ് ACE_QU ആന്റിറ്റി
SL_USBD _ALT_INT ERFACE_ ക്വാണ്ടി
TY
SL_USBD _ഇന്റർഫ് ACE_GR
OUP_QU
ആന്റി
SL_USBD _DESCRI
പി.ടി.ഒ.ആർ._ക്യു
UANTITY
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

വിവരണം നിങ്ങളുടെ എല്ലാ കോൺഫിഗറേഷനുകൾക്കുമായി ചേർക്കേണ്ട ആകെ യുഎസ്ബി ഇന്റർഫേസുകളുടെ എണ്ണം. ഇത് ഉപയോഗിക്കുന്ന ക്ലാസ്(കളെ) ആശ്രയിച്ചിരിക്കുന്നു. ഒരു ക്ലാസ് ഉദാഹരണത്തിന് എത്ര ഇന്റർഫേസുകൾ ആവശ്യമാണ് എന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, നിങ്ങളുടെ ക്ലാസ്സിന്റെ(കളെ) “കോറിൽ നിന്നുള്ള ഉറവിട ആവശ്യങ്ങൾ” എന്ന വിഭാഗം കാണുക.
നിങ്ങളുടെ എല്ലാ കോൺഫിഗറേഷനുകൾക്കുമായി ചേർക്കേണ്ട USB ഇതര ഇന്റർഫേസുകളുടെ ആകെ എണ്ണം. ഇത് ഉപയോഗിക്കുന്ന ക്ലാസ്(കളെ) ആശ്രയിച്ചിരിക്കുന്നു. ഈ മൂല്യം എല്ലായ്പ്പോഴും SL_USBD_INTERFACE_QUANTITY നേക്കാൾ തുല്യമോ വലുതോ ആയിരിക്കണം. ഒരു ക്ലാസ് ഉദാഹരണത്തിന് എത്ര ഇതര ഇന്റർഫേസുകൾ ആവശ്യമാണെന്ന് കൂടുതൽ വിവരങ്ങൾക്ക്, നിങ്ങളുടെ ക്ലാസ്(കളെ)യിലെ “കോറിൽ നിന്നുള്ള ഉറവിട ആവശ്യങ്ങൾ” എന്ന വിഭാഗം കാണുക.
നിങ്ങളുടെ എല്ലാ കോൺഫിഗറേഷനുകൾക്കുമായി ചേർക്കുന്ന യുഎസ്ബി ഇന്റർഫേസ് ഗ്രൂപ്പുകളുടെ ആകെ എണ്ണം. ഇത് ഉപയോഗിക്കുന്ന ക്ലാസ്(കളെ) ആശ്രയിച്ചിരിക്കുന്നു. എത്ര ഇന്റർഫേസ് ഗ്രൂപ്പുകൾക്ക് ഒരു ക്ലാസ് ഇൻസ്റ്റൻസ് ആവശ്യമാണ് എന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, നിങ്ങളുടെ ക്ലാസിന്റെ(കളെ) “കോറിൽ നിന്നുള്ള ഉറവിട ആവശ്യങ്ങൾ” എന്ന വിഭാഗം കാണുക.
നിങ്ങളുടെ എല്ലാ കോൺഫിഗറേഷനുകൾക്കുമായി ചേർക്കുന്ന എൻഡ്‌പോയിന്റ് ഡിസ്‌ക്രിപ്റ്ററുകളുടെ ആകെ എണ്ണം. ഇത് ഉപയോഗിക്കുന്ന ക്ലാസ്(കൾ) നെ ആശ്രയിച്ചിരിക്കുന്നു. ഒരു ക്ലാസ് ഇൻസ്റ്റൻസിന് എത്ര എൻഡ്‌പോയിന്റ് ഡിസ്‌ക്രിപ്റ്ററുകൾ ആവശ്യമാണ് എന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, നിങ്ങളുടെ ക്ലാസ്(കൾ)-ന്റെ “കോറിൽ നിന്നുള്ള ഉറവിട ആവശ്യങ്ങൾ” എന്ന വിഭാഗത്തിലെ “എൻഡ്‌പോയിന്റുകളുടെ എണ്ണം” കാണുക. ഇവിടെ കൺട്രോൾ എൻഡ്‌പോയിന്റുകളെ പരിഗണിക്കേണ്ടതില്ല എന്നത് ശ്രദ്ധിക്കുക. യുഎസ്ബി സ്ട്രിംഗുകളുടെ ആകെ എണ്ണം. അളവ് പൂജ്യത്തിലേക്ക് സജ്ജീകരിക്കുന്നത് സവിശേഷതയെ പ്രവർത്തനരഹിതമാക്കും. ഇത് പ്രവർത്തനരഹിതമാക്കുന്നത് ആപ്ലിക്കേഷനിൽ നിന്ന് പാസാക്കിയ യുഎസ്ബി വിവരണ സ്ട്രിംഗുകളൊന്നും ഉപകരണം സംഭരിക്കാതിരിക്കാൻ ഇടയാക്കും. ഇതിനർത്ഥം ഹോസ്റ്റിന് വിവരണ സ്ട്രിംഗുകൾ (നിർമ്മാതാവ്, ഉൽപ്പന്ന നാമം പോലുള്ളവ) വീണ്ടെടുക്കാൻ കഴിയില്ല എന്നാണ്. ഓരോ കോൺഫിഗറേഷനും തുറന്ന എൻഡ്‌പോയിന്റുകളുടെ ആകെ എണ്ണം. നിയന്ത്രണ കൈമാറ്റങ്ങൾക്കായി ഒരു ഉപകരണത്തിന് കുറഞ്ഞത് രണ്ട് തുറന്ന എൻഡ്‌പോയിന്റുകൾ ആവശ്യമാണ്, എന്നാൽ നിങ്ങൾ ഉപയോഗിക്കുന്ന ക്ലാസ്(കൾ)-ന്റെ എൻഡ്‌പോയിന്റുകളും ചേർക്കണം. ഒരു ക്ലാസ് ഇൻസ്റ്റൻസിന് എത്ര തുറന്ന എൻഡ്‌പോയിന്റുകൾ ആവശ്യമാണ് എന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, നിങ്ങളുടെ ക്ലാസ്(കൾ)-ന്റെ “കോറിൽ നിന്നുള്ള ഉറവിട ആവശ്യങ്ങൾ” എന്ന വിഭാഗത്തിലെ “എൻഡ്‌പോയിന്റുകളുടെ എണ്ണം” കാണുക.

ഡിഫോൾട്ട് മൂല്യം
10 10
2
20 30 20

ക്ലാസുകളുടെ കോൺഫിഗറേഷൻ
ക്ലാസുകൾക്ക് നിർദ്ദിഷ്ട കംപൈൽ-ടൈം കോൺഫിഗറേഷനുകൾ ഉണ്ട്. കൂടുതൽ വിവരങ്ങൾക്ക് USB ഉപകരണ ക്ലാസുകൾ കാണുക.
USB ഉപകരണ വിവര കോൺഫിഗറേഷൻ

sl_usbd_device_config.h കോൺഫിഗറേഷൻ file നിങ്ങളുടെ ഉപകരണത്തെക്കുറിച്ചുള്ള അടിസ്ഥാന വിവരങ്ങൾ, ഉദാഹരണത്തിന് വെണ്ടർ/പ്രൊഡക്റ്റ് ഐഡി, ഉപകരണ സ്ട്രിംഗുകൾ മുതലായവ സജ്ജമാക്കുന്നതിന് compile-time #define-s പുനഃക്രമീകരിക്കുന്നു. താഴെയുള്ള പട്ടിക ഈ കോൺഫിഗറേഷനിൽ ലഭ്യമായ ഓരോ വിവര കോൺഫിഗറേഷൻ നിർവചനത്തെയും വിവരിക്കുന്നു. file.

പട്ടിക - USB ഉപകരണ വിവര കോൺഫിഗറേഷൻ നിർവചിക്കുന്നു

സ്ഥിരമായ
SL_USBD_DEVIC ഇ_വെൻഡർ_ഐഡി
SL_USBD_DEVIC E_PRODUCT_ID

വിവരണം യുഎസ്ബി ഇംപ്ലിമെന്റേഴ്‌സ് ഫോറം നൽകുന്ന നിങ്ങളുടെ വെണ്ടർ ഐഡന്റിഫിക്കേഷൻ നമ്പർ. ഒരു വെണ്ടർ ഐഡി എങ്ങനെ നേടാം എന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, http://www.usb.org/developers/vendor/ കാണുക. നിങ്ങളുടെ ഉൽപ്പന്ന ഐഡന്റിഫിക്കേഷൻ നമ്പർ.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

9/174

കഴിഞ്ഞുview

സ്ഥിരമായ

വിവരണം

നിങ്ങളുടെ ഉപകരണത്തിന്റെ SL_USBD_DEVICE_RELEASE റിലീസ് നമ്പർ. _NUMBER

നിങ്ങളുടെ ഉപകരണത്തിന്റെ നിർമ്മാതാവിനെ വിവരിക്കുന്ന SL_USBD_DEVICE_MANUFA സ്ട്രിംഗ്. ഈ കോൺഫിഗറേഷൻ അവഗണിക്കപ്പെടുമ്പോൾ

സി.ടി.യു.ആർ.ആർ.എസ്

കോൺഫിഗറേഷൻ SL_USBD_STRING_QUANTITY 0 ആയി സജ്ജീകരിച്ചിരിക്കുന്നു.

നിങ്ങളുടെ ഉൽപ്പന്നത്തെ വിവരിക്കുന്ന SL_USBD_DEVICE_PRODUC സ്ട്രിംഗ്. കോൺഫിഗറേഷൻ ചെയ്യുമ്പോൾ ഈ കോൺഫിഗറേഷൻ അവഗണിക്കപ്പെടും

ടി_സ്ട്രിംഗ്

SL_USBD_STRING_QUANTITY എന്നത് 0 ആയി സജ്ജീകരിച്ചിരിക്കുന്നു.

SL_USBD_DEVICE_SERIAL_N നിങ്ങളുടെ ഉപകരണത്തിന്റെ സീരിയൽ നമ്പർ ഉൾക്കൊള്ളുന്ന സ്ട്രിംഗ്. ഈ കോൺഫിഗറേഷൻ അവഗണിക്കപ്പെടുമ്പോൾ

ഉംബർ_സ്ട്രിംഗ്

കോൺഫിഗറേഷൻ SL_USBD_STRING_QUANTITY 0 ആയി സജ്ജീകരിച്ചിരിക്കുന്നു.

നിങ്ങളുടെ ഉപകരണത്തിന്റെ സ്ട്രിംഗുകളുടെ ഭാഷയുടെ SL_USBD_DEVICE_LANGUA തിരിച്ചറിയൽ നമ്പർ. സാധ്യമായ മൂല്യങ്ങൾ ഇവയാണ്:
ജിഇ_ഐഡി

– 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_ഫ്രഞ്ച്

– SL_USBD_LANG_ID_ജർമ്മൻ

– SL_USBD_LANG_ID_ഗ്രീക്ക്

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_പോർച്ചുഗീസ്

– SL_USBD_LANG_ID_SANSKRIT

SL_USBD_STRING_QUANTITY കോൺഫിഗറേഷൻ 0 ആയി സജ്ജമാക്കുമ്പോൾ ഈ കോൺഫിഗറേഷൻ അവഗണിക്കപ്പെടും.

USB ഉപകരണ ഹാർഡ്‌വെയർ കോൺഫിഗറേഷൻ

നിങ്ങൾ ഉപയോഗിക്കുന്ന സിലിക്കൺ ലാബ്സ് ഉപകരണത്തെ ആശ്രയിച്ച്, USB VBUS സെൻസ് സിഗ്നലിനായി കോൺഫിഗർ ചെയ്യുന്നതിനായി നിങ്ങൾക്ക് GPIO പിൻ, പോർട്ട് എന്നിവ ഉണ്ടായിരിക്കാം. കോൺഫിഗറേഷൻ നിർവചനങ്ങൾ sl_usbd_hardware_config.h ഹെഡറിലാണ്. file.

സ്ഥിരമായ
SL_USBD_ഡ്രൈവർ_VBUS_SENSE_പോർട്ട് SL_USBD_ഡ്രൈവർ_VBUS_SENSE_പിൻ

വിവരണം
നിങ്ങളുടെ ബോർഡിലെ USB VBUS സെൻസ് സിഗ്നലിനുള്ള GPIO പോർട്ട്. നിങ്ങളുടെ ബോർഡിലെ USB VBUS സെൻസ് സിഗ്നലിനുള്ള GPIO പിൻ.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

10/174

കഴിഞ്ഞുview
കഴിഞ്ഞുview
USB ഉപകരണ പ്രോഗ്രാമിംഗ് ഗൈഡ്
യുഎസ്ബി ഡിവൈസ് മൊഡ്യൂൾ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഈ വിഭാഗം വിശദീകരിക്കുന്നു.
യുഎസ്ബി ഡിവൈസ് മൊഡ്യൂളിന്റെ പ്രാരംഭ സജ്ജീകരണം
യുഎസ്ബി ഡിവൈസ് മൊഡ്യൂൾ ആരംഭിക്കുന്നതിനും ഒരു ഉപകരണം ചേർക്കുന്നതിനും തയ്യാറാക്കുന്നതിനും ആരംഭിക്കുന്നതിനും ആവശ്യമായ അടിസ്ഥാന ഘട്ടങ്ങൾ ഈ വിഭാഗം വിവരിക്കുന്നു. യുഎസ്ബി ഡിവൈസ് മൊഡ്യൂൾ ആരംഭിക്കുന്നു യുഎസ്ബി ഡിവൈസ് കോർ ആരംഭിക്കുന്നു aCl ss(es) ആരംഭിക്കുന്നു നിങ്ങളുടെ യുഎസ്ബി ഡിവൈസ് ചേർക്കുന്നു നിങ്ങളുടെ യുഎസ്ബി ഡിവൈസ് നിർമ്മിക്കുന്നു കോൺഫിഗറേഷൻ(കൾ) ചേർക്കുന്നു യുഎസ്ബി ഫംഗ്ഷൻ(കൾ) ചേർക്കുന്നു നിങ്ങളുടെ യുഎസ്ബി ഡിവൈസ് ആരംഭിക്കുന്നു
ഇവന്റ് ഹുക്ക് പ്രവർത്തനങ്ങൾ
USB ഡിവൈസ് മൊഡ്യൂൾ ആരംഭിക്കുന്നു
USB ഡിവൈസ് കോർ ആരംഭിക്കുന്നു
a sl_usbd_core_init() ഫംഗ്ഷൻ ഉപയോഗിച്ച് B ഉപകരണ മൊഡ്യൂൾ കോർ ലിസ്റ്റിംഗ് ആരംഭിക്കുക. T aa ഉദാഹരണം താഴെ കാണിച്ചിരിക്കുന്നത് c lling sl_usbd_core_init() ആണ്.
Example – sl_usbd_core_init() വിളിക്കുന്നു
sl_status_t status; status = sl_usbd_core_init(); if (status ! 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,

/* പൂർണ്ണ വേഗതയിലുള്ള കോൺഫിഗറേഷൻ.

*/

“കോൺഫിഗർ ആഡ് എക്സ്ample ഫുൾ-സ്പീഡ് കോൺഫിഗറേഷൻ”,

&config_nbr_fs);

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */

}

യുഎസ്ബി ഫംഗ്ഷൻ(കൾ) ചേർക്കുന്നു
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് കുറഞ്ഞത് ഒരു കോൺഫിഗറേഷനെങ്കിലും വിജയകരമായി ചേർത്തുകഴിഞ്ഞാൽ, നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് ഇന്റർഫേസുകളും എൻഡ്‌പോയിന്റുകളും ചേർക്കാൻ കഴിയും. ഇന്റർഫേസ്, എൻഡ്‌പോയിന്റുകൾ, തരം, അളവ്, മറ്റ് പാരാമീറ്ററുകൾ എന്നിവയിൽ ഓരോ യുഎസ്ബി ക്ലാസിനും അതിന്റേതായ ആവശ്യങ്ങളുണ്ട്. സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഉപകരണം അത് വാഗ്ദാനം ചെയ്യുന്ന ക്ലാസുകളിൽ ഇന്റർഫേസുകളും എൻഡ്‌പോയിന്റുകളും ചേർക്കുന്നു.
നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ നിന്ന്, നിങ്ങൾക്ക് ഒരു USB ക്ലാസ് ഇൻസ്റ്റന്റിയേറ്റ് ചെയ്ത് ഒരു കോൺഫിഗറേഷനിലേക്ക് ചേർക്കാൻ കഴിയും. USB ഉപകരണ ക്ലാസ് ഇൻസ്റ്റൻസുകളുടെ ആശയത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, USB ഉപകരണ ക്ലാസുകൾ കാണുക. ഒരു മൾട്ടി-ഫംഗ്ഷൻ (കോമ്പോസിറ്റ്) ഉപകരണം സൃഷ്ടിക്കുന്നതിന് നിങ്ങൾക്ക് ഒരു കോൺഫിഗറേഷനിലേക്ക് നിരവധി വ്യത്യസ്ത ക്ലാസ് ഇൻസ്റ്റൻസുകൾ ഇൻസ്റ്റന്റിയേറ്റ് ചെയ്യാനും ചേർക്കാനും കഴിയുമെന്ന് ശ്രദ്ധിക്കുക.
മുൻampഒരു ക്ലാസ് ഇൻസ്റ്റൻസ് എങ്ങനെ സൃഷ്ടിക്കാമെന്നും അത് ഒരു കോൺഫിഗറേഷനിലേക്ക് എങ്ങനെ ചേർക്കാമെന്നും താഴെ കാണിച്ചിരിക്കുന്നു.
Example – നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് ഒരു ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു

sl_status_t സ്റ്റാറ്റസ്; uint8_t ക്ലാസ്_എൻ‌ബി‌ആർ;
/* നിങ്ങൾ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്ന ക്ലാസിന്റെ ഒരു ഉദാഹരണം സൃഷ്ടിക്കുക.*/ /* ക്ലാസിനെ ആശ്രയിച്ച് ഈ ഫംഗ്ഷന് കൂടുതൽ ആർഗ്യുമെന്റുകൾ ഉണ്ടാകാമെന്ന് ശ്രദ്ധിക്കുക. */ status = sl_usbd_ _create_instance(&class_nbr); if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */ }
/* ഫുൾ-സ്പീഡ് കോൺഫിഗറേഷനിലേക്ക് ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുക. */ status = sl_usbd_ _add_to_configuration(class_nbr, /* sl_usbd_ നൽകുന്ന ക്ലാസ് നമ്പർ _സൃഷ്ടിക്കുക_ഉദാഹരണം. */
config_nbr_fs); /* sl_usbd_core_add_configuration() നൽകിയ കോൺഫിഗറേഷൻ നമ്പർ. */ if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */ }
നിങ്ങളുടെ USB ഉപകരണം ആരംഭിക്കുന്നു
ഡിഫോൾട്ടായി, ഡിവൈസ് ഇനീഷ്യലൈസേഷൻ പൂർത്തിയാക്കി കേർണൽ ആരംഭിച്ചതിനുശേഷം, USB ഡിവൈസ് കോർ ടാസ്‌ക് വഴി ഉപകരണം സ്വയമേവ ആരംഭിക്കും. ഉപകരണം എപ്പോൾ ആരംഭിക്കുകയും USB ഹോസ്റ്റിന് ദൃശ്യമാകുകയും ചെയ്യുന്നുവെന്ന് നിയന്ത്രിക്കുന്നതിന്, ഓട്ടോ-സ്റ്റാർട്ട് സവിശേഷത പ്രവർത്തനരഹിതമാക്കാൻ SL_USBD_AUTO_START_USB_DEVICE എന്ന കോൺഫിഗറേഷൻ നിർവചനം ഉപയോഗിക്കുക. പ്രവർത്തനരഹിതമാക്കുമ്പോൾ, നിങ്ങളുടെ ഉപകരണം നിർമ്മിച്ച/തയ്യാറാക്കിയ ശേഷം, നിങ്ങൾക്ക് അത് ആരംഭിച്ച് sl_usbd_core_start_device() എന്ന ഫംഗ്‌ഷൻ വിളിച്ച് USB ഹോസ്റ്റിന് ദൃശ്യമാക്കാം.
മുൻampsl_usbd_core_start_device() ഫംഗ്ഷൻ ഉപയോഗിച്ച് നിങ്ങളുടെ ഉപകരണം എങ്ങനെ ആരംഭിക്കാമെന്ന് ചുവടെ കാണിച്ചിരിക്കുന്നു.
Example – നിങ്ങളുടെ ഉപകരണം ആരംഭിക്കുന്നു

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

12/174

കഴിഞ്ഞുview

sl_status_t സ്റ്റാറ്റസ്;
status = sl_usbd_core_start_device(); if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */ }

ഇവന്റ് ഹുക്ക് പ്രവർത്തനങ്ങൾ
യുഎസ്ബി ഡിവൈസ് കോർ മൊഡ്യൂൾ രണ്ട് ദുർബലമായ ഹുക്ക് ഫംഗ്ഷനുകൾ വാഗ്ദാനം ചെയ്യുന്നു, അവ നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ പുനർനിർവചിക്കാൻ കഴിയും. ബസ്, കോൺഫിഗറേഷൻ ഇവന്റുകൾ സംഭവിക്കുമ്പോൾ അറിയിക്കുക എന്നതാണ് അവയുടെ ഉദ്ദേശ്യം.
ടേബിൾ - യുഎസ്ബി ഇവന്റ് ഹുക്ക് ഫംഗ്ഷനുകൾ

സംഭവം

വിവരണം

ബസ്

USB ബസ് ഇവന്റ് സംഭവിക്കുമ്പോൾ വിളിക്കുന്നു

യുഎസ്ബി കോൺഫിഗറേഷൻ ഇവന്റ് സംഭവിക്കുമ്പോൾ വിളിക്കുന്ന കോൺഫിഗറേഷൻ

ഫംഗ്ഷൻ സിഗ്നേച്ചർ
sl_usbd_on_bus_event(sl_usbd_bus_event_t ഇവന്റ്) അസാധുവാണ്; sl_usbd_on_config_event(sl_usbd_config_event_t ഇവന്റ്, uint8_t config_nbr) അസാധുവാണ്;

Example – ഇവന്റ് ഹുക്ക് ഫംഗ്ഷനുകൾ

ശൂന്യമായ sl_usbd_on_bus_event(sl_usbd_bus_event_t ഇവന്റ്) { സ്വിച്ച് (ഇവന്റ്) { കേസ് SL_USBD_EVENT_BUS_CONNECT:
// ഒരു ഹോസ്റ്റ് കൺട്രോളർ ബ്രേക്കിൽ USB കേബിൾ ചേർക്കുമ്പോൾ വിളിക്കപ്പെടും;
കേസ് SL_USBD_EVENT_BUS_DISCONNECT: // ഒരു ഹോസ്റ്റ് കൺട്രോളർ ബ്രേക്കിൽ നിന്ന് USB കേബിൾ നീക്കം ചെയ്യുമ്പോൾ വിളിക്കുന്നു;
case SL_USBD_EVENT_BUS_RESET: // ഹോസ്റ്റ് റീസെറ്റ് കമാൻഡ് ബ്രേക്ക് അയയ്ക്കുമ്പോൾ വിളിക്കുന്നു;
case SL_USBD_EVENT_BUS_SUSPEND: // ഹോസ്റ്റ് സസ്‌പെൻഡ് കമാൻഡ് ബ്രേക്ക് അയയ്ക്കുമ്പോൾ വിളിക്കുന്നു;
case SL_USBD_EVENT_BUS_RESUME: // ഹോസ്റ്റ് വേക്ക് അപ്പ് കമാൻഡ് ബ്രേക്ക് അയയ്ക്കുമ്പോൾ വിളിക്കുന്നു;
സ്ഥിരസ്ഥിതി: ബ്രേക്ക്; } }
ശൂന്യമായ 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 ഉപകരണ ക്ലാസുകൾ

സിലിക്കൺ ലാബ്‌സ് യുഎസ്ബി ഡിവൈസിൽ ലഭ്യമായ യുഎസ്ബി ക്ലാസുകൾക്ക് ചില പൊതു സ്വഭാവസവിശേഷതകൾ ഉണ്ട്. ഈ വിഭാഗത്തിൽ ഈ സവിശേഷതകളും കോർ ലെയറുമായുള്ള അവയുടെ ഇടപെടലുകളും വിശദീകരിക്കുന്നു.
ഒരു പ്രത്യേക ക്ലാസിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, ഇനിപ്പറയുന്നവ കാണുക:
CDC ACM ക്ലാസ് HID ക്ലാസ് MSC SCSI ക്ലാസ് വെണ്ടർ ക്ലാസ്
ക്ലാസ് ഇൻസ്റ്റൻസുകളെ കുറിച്ച്
USB ഉപകരണത്തിൽ ലഭ്യമായ USB ക്ലാസുകൾ ക്ലാസ് ഇൻസ്റ്റൻസുകളുടെ ആശയം നടപ്പിലാക്കുന്നു. ഒരു ക്ലാസ് ഇൻസ്റ്റൻസ് ഒരു ഉപകരണത്തിനുള്ളിലെ ഒരു ഫംഗ്ഷനെ പ്രതിനിധീകരിക്കുന്നു. ഒരു ഇന്റർഫേസ് അല്ലെങ്കിൽ ഒരു കൂട്ടം ഇന്റർഫേസുകൾ ഉപയോഗിച്ച് ഫംഗ്ഷനെ വിവരിക്കാൻ കഴിയും, കൂടാതെ അത് ഒരു പ്രത്യേക ക്ലാസിൽ പെടുന്നു.
ക്ലാസ് ഇൻസ്റ്റൻസ് എന്ന ആശയത്തെ അടിസ്ഥാനമാക്കി, ഓരോ യുഎസ്ബി ക്ലാസ് ഇംപ്ലിമെന്റേഷനും പൊതുവായ ചില കോൺഫിഗറേഷനുകളും ഫംഗ്ഷനുകളും ഉണ്ട്. പൊതുവായ കോൺഫിഗറേഷനുകളും ഫംഗ്ഷനുകളും താഴെയുള്ള പട്ടികയിൽ അവതരിപ്പിച്ചിരിക്കുന്നു. 'കോൺസ്റ്റന്റുകൾ അല്ലെങ്കിൽ ഫംഗ്ഷൻ' എന്ന കോളം ശീർഷകത്തിൽ, പ്ലെയ്‌സ്‌ഹോൾഡർ XXXX ക്ലാസിന്റെ പേര് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാം: CDC, HID, MSC, CDC_ACM അല്ലെങ്കിൽ VENDOR (ഫംഗ്ഷൻ നാമങ്ങൾക്കുള്ള വെണ്ടർ).
പട്ടിക - ഒന്നിലധികം ക്ലാസ് ഉദാഹരണങ്ങളുടെ ആശയവുമായി ബന്ധപ്പെട്ട സ്ഥിരാങ്കങ്ങളും പ്രവർത്തനങ്ങളും.

സ്ഥിരം അല്ലെങ്കിൽ പ്രവർത്തനം
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_ATION_QUANTITY കോൺഫിഗർ ചെയ്യുക
sl_usb d _XXXX_cre _instant nce () കഴിച്ചു
sl_usbd_XXXX_add_to_conf iguration()

വിവരണം
ക്ലാസ് ഉദാഹരണങ്ങളുടെ പരമാവധി എണ്ണം കോൺഫിഗർ ചെയ്യുന്നു.
പരമാവധി എണ്ണം കോൺഫിഗറേഷനുകൾ കോൺഫിഗർ ചെയ്യുന്നു. ക്ലാസ് ഇനീഷ്യലൈസേഷൻ സമയത്ത്, സൃഷ്ടിച്ച ഒരു ക്ലാസ് ഇൻസ്റ്റൻസ് ഒന്നോ അതിലധികമോ കോൺഫിഗറേഷനുകളിലേക്ക് ചേർക്കും. ഒരു പുതിയ ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുന്നു.
നിർദ്ദിഷ്ട ഉപകരണ കോൺഫിഗറേഷനിലേക്ക് നിലവിലുള്ള ഒരു ക്ലാസ് ഉദാഹരണം ചേർക്കുന്നു.

കോഡ് നടപ്പിലാക്കലിന്റെ കാര്യത്തിൽ, ക്ലാസ് ഒരു ക്ലാസ് നിയന്ത്രണ ഘടന ഉൾക്കൊള്ളുന്ന ഒരു ലോക്കൽ ഗ്ലോബൽ വേരിയബിളിനെ പ്രഖ്യാപിക്കും. ഈ ക്ലാസ് നിയന്ത്രണ ഘടന ഒരു ക്ലാസ് ഉദാഹരണവുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു കൂടാതെ ക്ലാസ് ഉദാഹരണം കൈകാര്യം ചെയ്യുന്നതിനുള്ള നിർദ്ദിഷ്ട വിവരങ്ങൾ അടങ്ങിയിരിക്കും.
താഴെ കൊടുത്തിരിക്കുന്ന ചിത്രങ്ങൾ നിരവധി സാഹചര്യങ്ങൾ കാണിക്കുന്നു. ഓരോ ചിത്രത്തിലും ഒരു കോഡ് ഉൾപ്പെടുന്നു.ample അത് കേസ് സാഹചര്യവുമായി പൊരുത്തപ്പെടുന്നു.
ചിത്രം – ഒന്നിലധികം ക്ലാസ് ഇൻസ്റ്റൻസുകൾ – FS ഉപകരണം (1 ഇന്റർഫേസുള്ള 1 കോൺഫിഗറേഷൻ) ഒരു സാധാരണ USB ഉപകരണത്തെ പ്രതിനിധീകരിക്കുന്നു. ഉപകരണം ഫുൾ-സ്പീഡ് (FS) ആണ്, അതിൽ ഒരൊറ്റ കോൺഫിഗറേഷൻ അടങ്ങിയിരിക്കുന്നു. ഡാറ്റാ ആശയവിനിമയത്തിനായി ഒരു ജോഡി എൻഡ്‌പോയിന്റുകൾ അടങ്ങിയ ഒരു ഇന്റർഫേസാണ് ഉപകരണത്തിന്റെ പ്രവർത്തനം വിവരിക്കുന്നത്. ഒരു ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കപ്പെടുന്നു, കൂടാതെ അനുബന്ധ എൻഡ്‌പോയിന്റ് ഉപയോഗിച്ച് മുഴുവൻ ഇന്റർഫേസും കൈകാര്യം ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുകയും ചെയ്യും.
ചിത്രം – ഒന്നിലധികം ക്ലാസ് ഇൻസ്റ്റൻസുകൾ – 1 ഇന്റർഫേസുള്ള FS ഉപകരണം 1 കോൺഫിഗറേഷൻ)

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

15/174

കഴിഞ്ഞുview

ചിത്രം - മൾട്ടിപ്പിൾ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ - എഫ്എസ് ഉപകരണം (1 കോൺഫിഗറേഷൻ വിത്ത് 1 ഇന്റർഫേസ്) എന്നതിനോട് യോജിക്കുന്ന കോഡ് ഉദാഹരണത്തിൽ കാണിച്ചിരിക്കുന്നു.ampതാഴെ.
Example – മൾട്ടിപ്പിൾ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ – 1 ഇന്റർഫേസുള്ള FS ഡിവൈസ് 1 കോൺഫിഗറേഷൻ)

sl_status_t സ്റ്റാറ്റസ്; uint8_t ക്ലാസ്_0;

void app_usbd_XXXX_enable(uint8_t class_nbr) { /* ക്ലാസ് പ്രവർത്തനക്ഷമമാക്കൽ ഇവന്റ് കൈകാര്യം ചെയ്യുക. */ }

void app_usbd_XXXX_disable(uint8_t class_nbr) { /* ഹാൻഡിൽ ക്ലാസ് ഡിസേബിൾ ഇവന്റ്. */ }

sl_usbd_XXXX_callbacks_t ക്ലാസ്_callbacks = {

(1)

.enable = app_usbd_XXXX_enable,

.disable = app_usbd_XXXX_disable

};

സ്റ്റാറ്റസ് = sl_usbd_XXXX_init();

(2)

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* $$$$ പിശക് കൈകാര്യം ചെയ്യുക. */

}

സ്റ്റാറ്റസ് = sl_usbd_XXXX_create_instance(&class_callbacks,

(3)

&ക്ലാസ്_0);

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* $$$$ പിശക് കൈകാര്യം ചെയ്യുക. */

}

സ്റ്റാറ്റസ് = sl_usbd_XXXX_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_XXXX_create_instance() എന്ന ഫംഗ്ഷൻ class_0 മായി ബന്ധപ്പെട്ട ഒരു ക്ലാസ് കൺട്രോൾ ഘടനയെ അനുവദിക്കുന്നു. ക്ലാസിനെ ആശ്രയിച്ച്, ക്ലാസ് കൺട്രോൾ ഘടനയിൽ സംഭരിച്ചിരിക്കുന്ന ക്ലാസ്-നിർദ്ദിഷ്ട വിവരങ്ങൾ പ്രതിനിധീകരിക്കുന്ന ക്ലാസ് നമ്പറിന് പുറമെ sl_usbd_XXXX_create_instance() ന് അധിക പാരാമീറ്ററുകൾ ഉണ്ടായിരിക്കാം. aaa (3) നിർദ്ദിഷ്ട കോൺഫിഗറേഷൻ നമ്പറായ config_0 ലേക്ക് cl ss instnce, class_0 ചേർക്കുക. sl_usbd_XXXX_add_to_configuration() ഇന്റർഫേസ് 0 ഉം അതിന്റെ അനുബന്ധ IN, OUT എൻഡ്‌പോയിന്റുകളും സൃഷ്ടിക്കും. തൽഫലമായി, ക്ലാസ് ഇൻസ്റ്റൻസ് ഇന്റർഫേസ് 0 ഉം അതിന്റെ എൻഡ്‌പോയിന്റുകളും ഉൾക്കൊള്ളുന്നു. ഇന്റർഫേസ് 0-ൽ നടത്തുന്ന ഏതൊരു ആശയവിനിമയവും class_0 എന്ന ക്ലാസ് ഇൻസ്റ്റൻസ് നമ്പറിനെ പ്രതിനിധീകരിക്കുന്നു. ചിത്രം – മൾട്ടിപ്പിൾ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ – FS ഉപകരണം (2 കോൺഫിഗറേഷനുകളും മൾട്ടിപ്പിൾ ഇന്റർഫേസുകളും) കൂടുതൽ സങ്കീർണ്ണമായ ഒരു ഉദാഹരണത്തെ പ്രതിനിധീകരിക്കുന്നു.ample. ഒരു ഫുൾ-സ്പീഡ് ഉപകരണം രണ്ട് കോൺഫിഗറേഷനുകൾ ചേർന്നതാണ്. ഉപകരണത്തിന് ഒരേ ക്ലാസിൽ പെടുന്ന രണ്ട് ഫംഗ്ഷനുകളുണ്ട്, എന്നാൽ ഓരോ ഫംഗ്ഷനും രണ്ട് ഇന്റർഫേസുകളാൽ വിവരിക്കപ്പെടുന്നു, കൂടാതെ ഒരു ജോഡി ദ്വിദിശ എൻഡ്‌പോയിന്റുകളും ഉണ്ട്. ഈ ഉദാഹരണത്തിൽampഅപ്പോൾ, രണ്ട് ക്ലാസ് ഇൻസ്റ്റൻസുകൾ സൃഷ്ടിക്കപ്പെടുന്നു. ഓരോ ക്ലാസ് ഇൻസ്റ്റൻസും ഒരു കൂട്ടം ഇന്റർഫേസുകളുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു, എന്നാൽ ഫിഗർ - മൾട്ടിപ്പിൾ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ - എഫ്എസ് ഡിവൈസ് (1 കോൺഫിഗറേഷൻ വിത്ത് 1 ഇന്റർഫേസ്) ഉം ഫിഗർ - മൾട്ടിപ്പിൾ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ - എഫ്എസ് ഡിവൈസ് (2 കോൺഫിഗറേഷനുകളും മൾട്ടിപ്പിൾ ഇന്റർഫേസുകളും) ഉം ഇതിൽ ഉൾപ്പെടുന്നു, ഇവിടെ ക്ലാസ് ഇൻസ്റ്റൻസ് ഒരൊറ്റ ഇന്റർഫേസുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു.
ചിത്രം – ഒന്നിലധികം ക്ലാസ് ഇൻസ്റ്റൻസുകൾ – FS ഡിവൈസ് 2 കോൺഫിഗറേഷനുകളും മൾട്ടിപ്പിൾ ഇന്റർഫേസുകളും)

ചിത്രം - മൾട്ടിപ്പിൾ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ - എഫ്എസ് ഡിവൈസ് (2 കോൺഫിഗറേഷനുകളും മൾട്ടിപ്പിൾ ഇന്റർഫേസുകളും) എന്നതിനോട് യോജിക്കുന്ന കോഡ് ഉദാഹരണത്തിൽ കാണിച്ചിരിക്കുന്നു.ampതാഴെ. വ്യക്തതയ്ക്കായി പിശക് കൈകാര്യം ചെയ്യൽ ഒഴിവാക്കിയിരിക്കുന്നു.
Example – മൾട്ടിപ്പിൾ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ – FS ഡിവൈസ് 2 കോൺഫിഗറേഷനുകളും മൾട്ടിപ്പിൾ ഇന്റർഫേസുകളും)

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

17/174

കഴിഞ്ഞുview

sl_status_t സ്റ്റാറ്റസ്; uint8_t ക്ലാസ്_0; uint8_t ക്ലാസ്_1;
സ്റ്റാറ്റസ് = sl_usbd_XXXX_init();
സ്റ്റാറ്റസ് = sl_usbd_XXXX_create_instance(&class_0); സ്റ്റാറ്റസ് = sl_usbd_XXXX_create_instance(&class_1);
സ്റ്റാറ്റസ് = sl_usbd_XXXX_add_to_configuration(class_0, cfg_0); സ്റ്റാറ്റസ് = sl_usbd_XXXX_add_to_configuration(class_1, cfg_0);
സ്റ്റാറ്റസ് = sl_usbd_XXXX_add_to_configuration(class_0, cfg_1); സ്റ്റാറ്റസ് = sl_usbd_XXXX_add_to_configuration(class_1, cfg_1);

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

(1) ക്ലാസ് ഇനീഷ്യലൈസ് ചെയ്യുക. ഏതെങ്കിലും ഇന്റേണൽ വേരിയബിളുകൾ, ഘടനകൾ, ക്ലാസ് പോർട്ടുകൾ എന്നിവ ഇനീഷ്യലൈസ് ചെയ്യപ്പെടും.
(2) class_0 എന്ന ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുക. sl_usbd_XXXX_create_instance() എന്ന ഫംഗ്ഷൻ class_0 എന്ന ക്ലാസ് കൺട്രോൾ ഘടനയുമായി ബന്ധപ്പെട്ട ഒരു ക്ലാസ് അനുവദിക്കുന്നു.
(3) class_1 എന്ന ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുക. sl_usbd_XXXX_create_instance() എന്ന ഫംഗ്ഷൻ class_1 മായി ബന്ധപ്പെട്ട മറ്റൊരു ക്ലാസ് കൺട്രോൾ ഘടനയെ അനുവദിക്കുന്നു.
(4) cfg_0 എന്ന കോൺഫിഗറേഷനിലേക്ക് class_0 എന്ന ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുക. sl_usbd_XXXX_add_to_configuration() ഇന്റർഫേസ് 0, ഇന്റർഫേസ് 1, ഇതര ഇന്റർഫേസുകൾ, അനുബന്ധ IN, OUT എൻഡ്‌പോയിന്റുകൾ എന്നിവ സൃഷ്ടിക്കും. ഇന്റർഫേസ് 0 അല്ലെങ്കിൽ ഇന്റർഫേസ് 1 ലെ ഏത് ഡാറ്റാ ആശയവിനിമയത്തിനും ക്ലാസ് ഇൻസ്റ്റൻസ് നമ്പർ, class_0 ഉപയോഗിക്കും.
(5) cfg_0 എന്ന കോൺഫിഗറേഷനിലേക്ക് class_1 എന്ന ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുക. sl_usbd_XXXX_add_to_configuration() ഇന്റർഫേസ് 2, ഇന്റർഫേസ് 3, അവയുമായി ബന്ധപ്പെട്ട IN, OUT എൻഡ്‌പോയിന്റുകൾ എന്നിവ സൃഷ്ടിക്കും. ഇന്റർഫേസ് 2 അല്ലെങ്കിൽ ഇന്റർഫേസ് 3 ലെ ഏത് ഡാറ്റാ ആശയവിനിമയത്തിനും ക്ലാസ് ഇൻസ്റ്റൻസ് നമ്പർ, class_1 ഉപയോഗിക്കും.
(6) cfg_1 എന്ന മറ്റ് കോൺഫിഗറേഷനിലേക്ക് അതേ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ, class_0, class_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 ഡിവൈസ് CDC ബേസ് ക്ലാസ് കഴിഞ്ഞുview കോർ USB ഡിവൈസ് CDC ACM സബ്ക്ലാസ്സിൽ നിന്നുള്ള USB ഡിവൈസ് CDC ACM ക്ലാസ് റിസോഴ്‌സ് ആവശ്യകതകൾ ഓവർview USB ഡിവൈസ് CDC ACM ക്ലാസ് കോൺഫിഗറേഷൻ USB ഡിവൈസ് CDC ACM ക്ലാസ് പ്രോഗ്രാമിംഗ് ഗൈഡ്
ഈ വിഭാഗം കമ്മ്യൂണിക്കേഷൻസ് ഡിവൈസ് ക്ലാസ് (CDC) ക്ലാസിനെയും സിലിക്കൺ ലാബ്‌സിന്റെ USB ഡിവൈസ് സ്റ്റാക്ക് പിന്തുണയ്ക്കുന്ന അനുബന്ധ CDC സബ്‌ക്ലാസിനെയും വിവരിക്കുന്നു. സിലിക്കൺ ലാബ്‌സ് USB-ഡിവൈസ് നിലവിൽ സീരിയൽ എമുലേഷനായി സാധാരണയായി ഉപയോഗിക്കുന്ന അബ്‌സ്ട്രാക്റ്റ് കൺട്രോൾ മോഡൽ (ACM) സബ്‌ക്ലാസിനെ പിന്തുണയ്ക്കുന്നു.
സിഡിസിയിൽ വിവിധ ടെലികമ്മ്യൂണിക്കേഷൻ, നെറ്റ്‌വർക്കിംഗ് ഉപകരണങ്ങൾ ഉൾപ്പെടുന്നു. ടെലികമ്മ്യൂണിക്കേഷൻ ഉപകരണങ്ങളിൽ അനലോഗ് മോഡമുകൾ, അനലോഗ്, ഡിജിറ്റൽ ടെലിഫോണുകൾ, ഐഎസ്ഡിഎൻ ടെർമിനൽ അഡാപ്റ്ററുകൾ മുതലായവ ഉൾപ്പെടുന്നു. ഉദാഹരണത്തിന്ampഅതായത്, നെറ്റ്‌വർക്കിംഗ് ഉപകരണങ്ങളിൽ ADSL, കേബിൾ മോഡമുകൾ, ഇതർനെറ്റ് അഡാപ്റ്ററുകൾ, ഹബുകൾ എന്നിവ അടങ്ങിയിരിക്കുന്നു. ഒരു USB ലിങ്ക് ഉപയോഗിച്ച് V.250 (ടെലിഫോൺ നെറ്റ്‌വർക്കിലൂടെയുള്ള മോഡമുകൾക്ക്), ഇതർനെറ്റ് (ലോക്കൽ ഏരിയ നെറ്റ്‌വർക്ക് ഉപകരണങ്ങൾക്ക്) പോലുള്ള നിലവിലുള്ള ആശയവിനിമയ സേവന മാനദണ്ഡങ്ങൾ സംയോജിപ്പിക്കുന്നതിനുള്ള ഒരു ചട്ടക്കൂട് CDC നിർവചിക്കുന്നു. ഉപകരണ മാനേജ്‌മെന്റ്, ആവശ്യമുള്ളപ്പോൾ കോൾ മാനേജ്‌മെന്റ്, ഡാറ്റ ട്രാൻസ്മിഷൻ എന്നിവയുടെ ചുമതല ഒരു ആശയവിനിമയ ഉപകരണത്തിനാണ്.
സിഡിസി ഉപകരണങ്ങളുടെ ഏഴ് പ്രധാന ഗ്രൂപ്പുകളെ നിർവചിക്കുന്നു. ഓരോ ഗ്രൂപ്പും ഒരു ആശയവിനിമയ മാതൃകയിൽ പെടുന്നു, അതിൽ നിരവധി ഉപവിഭാഗങ്ങൾ ഉൾപ്പെട്ടേക്കാം. സിഡിസി അടിസ്ഥാന ക്ലാസിന് പുറമെ ഓരോ ഉപകരണ ഗ്രൂപ്പിനും അതിന്റേതായ സ്പെസിഫിക്കേഷൻ ഡോക്യുമെന്റ് ഉണ്ട്. ഏഴ് ഗ്രൂപ്പുകൾ ഇവയാണ്:
പബ്ലിക് സ്വിച്ച്ഡ് ടെലിഫോൺ നെറ്റ്‌വർക്ക് (PSTN), വോയ്‌സ്‌ബാൻഡ് മോഡമുകൾ, ടെലിഫോണുകൾ, സീരിയൽ എമുലേഷൻ ഉപകരണങ്ങൾ എന്നിവയുൾപ്പെടെയുള്ള ഉപകരണങ്ങൾ. ടെർമിനൽ അഡാപ്റ്ററുകൾ, ടെലിഫോണുകൾ എന്നിവയുൾപ്പെടെയുള്ള ഇന്റഗ്രേറ്റഡ് സർവീസസ് ഡിജിറ്റൽ നെറ്റ്‌വർക്ക് (ISDN) ഉപകരണങ്ങൾ. IEEE 802 കുടുംബത്തെ പിന്തുണയ്ക്കുന്ന ഉപകരണങ്ങൾ ഉൾപ്പെടെയുള്ള ഇതർനെറ്റ് കൺട്രോൾ മോഡൽ (ECM) ഉപകരണങ്ങൾ (ഉദാ: കേബിൾ, ADSL മോഡമുകൾ, വൈഫൈ അഡാപ്റ്ററുകൾ). ADSL മോഡമുകളും ATM നെറ്റ്‌വർക്കുകളുമായി ബന്ധിപ്പിച്ചിരിക്കുന്ന മറ്റ് ഉപകരണങ്ങളും (വർക്ക്‌സ്റ്റേഷനുകൾ, റൂട്ടറുകൾ, LAN സ്വിച്ചുകൾ) ഉൾപ്പെടെയുള്ള അസിൻക്രണസ് ട്രാൻസ്ഫർ മോഡ് (ATM) ഉപകരണങ്ങൾ. വോയ്‌സ്, ഡാറ്റ ആശയവിനിമയങ്ങൾ കൈകാര്യം ചെയ്യാൻ ഉപയോഗിക്കുന്ന മൾട്ടി-ഫംഗ്ഷൻ കമ്മ്യൂണിക്കേഷൻസ് ഹാൻഡ്‌സെറ്റ് ഉപകരണങ്ങൾ ഉൾപ്പെടെയുള്ള വയർലെസ് മൊബൈൽ കമ്മ്യൂണിക്കേഷൻസ് (WMC) ഉപകരണങ്ങൾ. ഇതർനെറ്റ്-ഫ്രെയിം ചെയ്‌ത ഡാറ്റ കൈമാറ്റം ചെയ്യുന്ന ഇതർനെറ്റ് എമുലേഷൻ മോഡൽ (EEM) ഉപകരണങ്ങൾ. ഹൈ-സ്പീഡ് നെറ്റ്‌വർക്ക് ഉപകരണങ്ങൾ ഉൾപ്പെടെയുള്ള നെറ്റ്‌വർക്ക് കൺട്രോൾ മോഡൽ (NCM) ഉപകരണങ്ങൾ (ഹൈ സ്പീഡ് പാക്കറ്റ് ആക്‌സസ് മോഡമുകൾ, ലൈൻ ടെർമിനൽ ഉപകരണങ്ങൾ)
സിഡിസിയും അനുബന്ധ സബ്ക്ലാസ് നടപ്പിലാക്കലും ഇനിപ്പറയുന്ന സ്പെസിഫിക്കേഷനുകൾ പാലിക്കുന്നു:
യൂണിവേഴ്സൽ സീരിയൽ ബസ്, കമ്മ്യൂണിക്കേഷൻസ് ഉപകരണങ്ങൾക്കുള്ള ക്ലാസ് നിർവചനങ്ങൾ, റിവിഷൻ 1.2, നവംബർ 3 2010. യൂണിവേഴ്സൽ സീരിയൽ ബസ്, കമ്മ്യൂണിക്കേഷൻസ്, PSTN ഉപകരണങ്ങൾക്കുള്ള സബ്ക്ലാസ്, റിവിഷൻ 1.2, ഫെബ്രുവരി 9 2007.
USB ഡിവൈസ് CDC ബേസ് ക്ലാസ് കഴിഞ്ഞുview
ആശയവിനിമയ ശേഷി നടപ്പിലാക്കുന്നതിനായി ഒരു CDC ഉപകരണം ഇനിപ്പറയുന്ന ഇന്റർഫേസുകൾ ഉൾക്കൊള്ളുന്നു:
കമ്മ്യൂണിക്കേഷൻസ് ക്ലാസ് ഇന്റർഫേസ് (CCI) ആണ് ഉപകരണ മാനേജ്മെന്റിനും ഓപ്ഷണലായി കോൾ മാനേജ്മെന്റിനും ഉത്തരവാദി.
ഉപകരണ മാനേജ്മെന്റ് ഉപകരണത്തിന്റെ പൊതുവായ കോൺഫിഗറേഷനും നിയന്ത്രണവും ഹോസ്റ്റിലേക്കുള്ള ഇവന്റുകളുടെ അറിയിപ്പും പ്രാപ്തമാക്കുന്നു. കോൾ മാനേജ്മെന്റ് കോളുകൾ സ്ഥാപിക്കലും അവസാനിപ്പിക്കലും പ്രാപ്തമാക്കുന്നു. കോൾ മാനേജ്മെന്റ് ഒരു DCI വഴി മൾട്ടിപ്ലക്സ് ചെയ്തേക്കാം. എല്ലാ CDC ഉപകരണങ്ങൾക്കും ഒരു CCI നിർബന്ധമാണ്. CDC ഉപകരണം പിന്തുണയ്ക്കുന്ന ആശയവിനിമയ മോഡൽ വ്യക്തമാക്കുന്നതിലൂടെ ഇത് CDC ഫംഗ്ഷനെ തിരിച്ചറിയുന്നു. CCI-യെ പിന്തുടരുന്ന ഇന്റർഫേസ്(കൾ) ഓഡിയോ അല്ലെങ്കിൽ വെണ്ടർ-നിർദ്ദിഷ്ട ഇന്റർഫേസ് പോലുള്ള ഏതെങ്കിലും നിർവചിക്കപ്പെട്ട USB ക്ലാസ് ഇന്റർഫേസ് ആകാം. വെണ്ടർ-നിർദ്ദിഷ്ട ഇന്റർഫേസിനെ ഒരു DCI പ്രത്യേകമായി പ്രതിനിധീകരിക്കുന്നു.
ഡാറ്റാ ക്ലാസ് ഇന്റർഫേസ് (ഡിസിഐ) ആണ് ഡാറ്റാ ട്രാൻസ്മിഷന്റെ ഉത്തരവാദിത്തം. കൈമാറ്റം ചെയ്യപ്പെടുന്നതും സ്വീകരിക്കപ്പെടുന്നതുമായ ഡാറ്റ ഒരു നിർദ്ദിഷ്ട മാനദണ്ഡം പാലിക്കുന്നില്ല.
ഫോർമാറ്റ്. ഡാറ്റ ഒരു കമ്മ്യൂണിക്കേഷൻ ലൈനിൽ നിന്നുള്ള അസംസ്കൃത ഡാറ്റയോ, ഒരു പ്രൊപ്രൈറ്ററി ഫോർമാറ്റ് പിന്തുടരുന്ന ഡാറ്റയോ ആകാം. CCI പിന്തുടരുന്ന എല്ലാ DCI-കളെയും സബോർഡിനേറ്റ് ഇന്റർഫേസുകളായി കാണാൻ കഴിയും.
ഒരു CDC ഉപകരണത്തിൽ കുറഞ്ഞത് ഒരു CCI ഉം പൂജ്യം അല്ലെങ്കിൽ അതിൽ കൂടുതൽ DCI കളും ഉണ്ടായിരിക്കണം. ഒരു CCI ഉം ഏതെങ്കിലും സബോർഡിനേറ്റ് DCI ഉം ഒരുമിച്ച് ഹോസ്റ്റിന് ഒരു സവിശേഷത നൽകുന്നു. ഈ ശേഷിയെ ഒരു ഫംഗ്ഷൻ എന്നും വിളിക്കുന്നു. ഒരു CDC കമ്പോസിറ്റ് ഉപകരണത്തിൽ, നിങ്ങൾക്ക് നിരവധി

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

19/174

കഴിഞ്ഞുview
ഫംഗ്ഷനുകൾ. അതിനാൽ, ചിത്രം - CDC കോമ്പോസിറ്റ് ഉപകരണത്തിൽ കാണിച്ചിരിക്കുന്നതുപോലെ, ഉപകരണം നിരവധി CCI, DCI(കൾ) എന്നിവ ചേർന്നതായിരിക്കും.
ചിത്രം - സിഡിസി കോമ്പോസിറ്റ് ഉപകരണം

ഒരു CDC ഉപകരണം ഇനിപ്പറയുന്ന എൻഡ്‌പോയിന്റുകളുടെ സംയോജനം ഉപയോഗിക്കാൻ സാധ്യതയുണ്ട്:
ഡിഫോൾട്ട് എൻഡ്‌പോയിന്റ് എന്ന് വിളിക്കുന്ന ഒരു ജോഡി കൺട്രോൾ IN, OUT എൻഡ്‌പോയിന്റുകൾ. ഒരു ഓപ്‌ഷണൽ ബൾക്ക് അല്ലെങ്കിൽ ഇന്ററപ്റ്റ് IN എൻഡ്‌പോയിന്റ്. ഒരു ജോഡി ബൾക്ക് അല്ലെങ്കിൽ ഐസോക്രോണസ് IN, OUT എൻഡ്‌പോയിന്റുകൾ. സിലിക്കൺ ലാബ്‌സ് യുഎസ്ബി ഉപകരണ സ്റ്റാക്ക് നിലവിൽ ഐസോക്രോണസ് എൻഡ്‌പോയിന്റുകളെ പിന്തുണയ്ക്കുന്നില്ലെന്ന് ശ്രദ്ധിക്കുക.
താഴെയുള്ള പട്ടിക വ്യത്യസ്ത എൻഡ്‌പോയിന്റുകളുടെ ഉപയോഗവും സിഡിസിയുടെ ഏത് ഇന്റർഫേസിലൂടെയാണ് അവ ഉപയോഗിക്കുന്നതെന്നും കാണിക്കുന്നു.
പട്ടിക - CDC എൻഡ്‌പോയിന്റ് ഉപയോഗം

അവസാന പോയിൻ്റ്
IN നിയന്ത്രിക്കുക
കൺട്രോൾ ഔട്ട്
ഇന്ററപ്റ്റ് അല്ലെങ്കിൽ ബൾക്ക് IN ബൾക്ക് അല്ലെങ്കിൽ ഐസോക്രോണസ് IN ബൾക്ക് അല്ലെങ്കിൽ ഐസോക്രോണസ്
പുറത്ത്

ദിശ
ഡിവൈസ് ടു-ഹോസ്റ്റ്
ഹോസ്റ്റ്-ടു-ഡിവൈസ്
ഡിവൈസ് ടു-ഹോസ്റ്റ്
ഡിവൈസ് ടു-ഹോസ്റ്റ്
ഹോസ്റ്റ്-ടു-ഡിവൈസ്

ഇന്റർഫേസ് ഉപയോഗം

സി.സി.ഐ

എണ്ണലിനുള്ള സ്റ്റാൻഡേർഡ് അഭ്യർത്ഥനകൾ, ക്ലാസ്-നിർദ്ദിഷ്ട അഭ്യർത്ഥനകൾ, ഉപകരണം

മാനേജ്മെന്റ്, ഓപ്ഷണലായി കോൾ മാനേജ്മെന്റ്.

സി.സി.ഐ

എണ്ണലിനുള്ള സ്റ്റാൻഡേർഡ് അഭ്യർത്ഥനകൾ, ക്ലാസ്-നിർദ്ദിഷ്ട അഭ്യർത്ഥനകൾ, ഉപകരണം

മാനേജ്മെന്റ്, ഓപ്ഷണലായി കോൾ മാനേജ്മെന്റ്.

സി.സി.ഐ

റിംഗ് ഡിറ്റക്റ്റ്, സീരിയൽ ലൈൻ സ്റ്റാറ്റസ്, നെറ്റ്‌വർക്ക് സ്റ്റാറ്റസ് തുടങ്ങിയ ഇവന്റ് അറിയിപ്പുകൾ.

ഡിസിഐ

അസംസ്കൃത അല്ലെങ്കിൽ ഫോർമാറ്റ് ചെയ്ത ഡാറ്റ ആശയവിനിമയം.

ഡിസിഐ

അസംസ്കൃത അല്ലെങ്കിൽ ഫോർമാറ്റ് ചെയ്ത ഡാറ്റ ആശയവിനിമയം.

മിക്ക ആശയവിനിമയ ഉപകരണങ്ങളും ഇവന്റുകളുടെ ഹോസ്റ്റിനെ അറിയിക്കാൻ ഒരു ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റ് ഉപയോഗിക്കുന്നു. USB പ്രോട്ടോക്കോൾ പിശകുകളുടെ കാര്യത്തിൽ ഒരു പ്രൊപ്രൈറ്ററി പ്രോട്ടോക്കോൾ ഡാറ്റ പുനഃസംപ്രേഷണത്തെ ആശ്രയിക്കുമ്പോൾ ഡാറ്റാ ട്രാൻസ്മിഷനായി ഐസോക്രോണസ് എൻഡ്‌പോയിന്റുകൾ ഉപയോഗിക്കരുത്. ഐസോക്രോണസ് ആശയവിനിമയത്തിന് പുനഃശ്രമ സംവിധാനങ്ങൾ ഇല്ലാത്തതിനാൽ അതിന് സ്വാഭാവികമായും ഡാറ്റ നഷ്ടപ്പെടാം.
ആശയവിനിമയത്തിന്റെ ഏഴ് പ്രധാന മോഡലുകൾ നിരവധി ഉപവിഭാഗങ്ങളെ ഉൾക്കൊള്ളുന്നു. ഉപകരണ മാനേജ്മെന്റും കോൾ മാനേജ്മെന്റും കൈകാര്യം ചെയ്യുന്നതിന് ഉപകരണം CCI എങ്ങനെ ഉപയോഗിക്കണമെന്ന് ഒരു ഉപവിഭാഗം വിവരിക്കുന്നു. താഴെയുള്ള പട്ടിക സാധ്യമായ എല്ലാ ഉപവിഭാഗങ്ങളെയും അവ ഉൾപ്പെടുന്ന ആശയവിനിമയ മോഡലിനെയും കാണിക്കുന്നു.
പട്ടിക - CDC ഉപവർഗ്ഗങ്ങൾ

ഉപവിഭാഗം
ഡയറക്ട് ലൈൻ കൺട്രോൾ മോഡൽ അമൂർത്ത നിയന്ത്രണ മോഡൽ

ആശയവിനിമയ മാതൃക
പി.എസ്.ടി.എൻ
പി.എസ്.ടി.എൻ

Exampഈ ഉപവിഭാഗം ഉപയോഗിക്കുന്ന ഉപകരണങ്ങളുടെ എണ്ണം
USB ഹോസ്റ്റ് നേരിട്ട് നിയന്ത്രിക്കുന്ന മോഡം ഉപകരണങ്ങൾ
സീരിയൽ എമുലേഷൻ ഉപകരണങ്ങൾ, സീരിയൽ കമാൻഡ് സെറ്റിലൂടെ നിയന്ത്രിക്കപ്പെടുന്ന മോഡം ഉപകരണങ്ങൾ

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

20/174

കഴിഞ്ഞുview

ഉപവിഭാഗം

ആശയവിനിമയ മാതൃക

Exampഈ ഉപവിഭാഗം ഉപയോഗിക്കുന്ന ഉപകരണങ്ങളുടെ എണ്ണം

ടെലിഫോൺ നിയന്ത്രണ മോഡൽ

പി.എസ്.ടി.എൻ

മൾട്ടി-ചാനൽ കൺട്രോൾ ഐ.എസ്.ഡി.എൻ മോഡൽ

CAPI നിയന്ത്രണ മോഡൽ ISDN

ഇതർനെറ്റ് നെറ്റ്‌വർക്കിംഗ് ECM നിയന്ത്രണ മോഡൽ

എടിഎം നെറ്റ്‌വർക്കിംഗ്

എ.ടി.എം

നിയന്ത്രണ മോഡൽ

വയർലെസ് ഹാൻഡ്‌സെറ്റ് കൺട്രോൾ മോഡൽ

ഡബ്ല്യുഎംസി

ഉപകരണ മാനേജ്മെന്റ് WMC

മൊബൈൽ ഡയറക്ട് ലൈൻ മോഡൽ

ഡബ്ല്യുഎംസി

ഒബെക്സ്

ഡബ്ല്യുഎംസി

ഇതർനെറ്റ് എമുലേഷൻ EEM മോഡൽ

നെറ്റ്‌വർക്ക് നിയന്ത്രണ മോഡൽ

രംഗങ്ങൾ

വോയ്‌സ് ടെലിഫോണി ഉപകരണങ്ങൾ
ബേസിക് റേറ്റ് ടെർമിനൽ അഡാപ്റ്ററുകൾ, പ്രൈമറി റേറ്റ് ടെർമിനൽ അഡാപ്റ്ററുകൾ, ടെലിഫോണുകൾ
ബേസിക് റേറ്റ് ടെർമിനൽ അഡാപ്റ്ററുകൾ, പ്രൈമറി റേറ്റ് ടെർമിനൽ അഡാപ്റ്ററുകൾ, ടെലിഫോണുകൾ DOC-SIS കേബിൾ മോഡമുകൾ, PPPoE എമുലേഷൻ പിന്തുണയ്ക്കുന്ന ADSL മോഡമുകൾ, Wi-Fi അഡാപ്റ്ററുകൾ (IEEE 802.11-ഫാമിലി), 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 ഡിവൈസ് CDC ACM സബ്ക്ലാസ് ഓവർview

സിഡിസി ബേസ് ക്ലാസ് ഒരു കമ്മ്യൂണിക്കേഷൻസ് ക്ലാസ് ഇന്റർഫേസും (സിസിഐ) ഡാറ്റ ക്ലാസ് ഇന്റർഫേസും (ഡിസിഐ) ചേർന്നതാണ്, ഇത് യുഎസ്ബി ഡിവൈസ് സിഡിസി ബേസ് ക്ലാസിൽ വിശദമായി ചർച്ച ചെയ്യുന്നു.view . ഈ വിഭാഗം ACM തരത്തിലുള്ള ഒരു CCI-യെക്കുറിച്ചാണ് ചർച്ച ചെയ്യുന്നത്. മാനേജ്മെന്റ് എലമെന്റിനുള്ള ഒരു ഡിഫോൾട്ട് എൻഡ്‌പോയിന്റും നോട്ടിഫിക്കേഷൻ എലമെന്റിനുള്ള ഒരു ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റും ഇതിൽ അടങ്ങിയിരിക്കുന്നു. DCI-യിൽ വ്യക്തമാക്കാത്ത ഡാറ്റ കൊണ്ടുപോകാൻ ഒരു ജോടി ബൾക്ക് എൻഡ്‌പോയിന്റുകൾ ഉപയോഗിക്കുന്നു.
രണ്ട് തരം ആശയവിനിമയ ഉപകരണങ്ങൾ ACM ഉപവിഭാഗം ഉപയോഗിക്കുന്നു:
AT കമാൻഡുകളെ പിന്തുണയ്ക്കുന്ന ഉപകരണങ്ങൾ (ഉദാഹരണത്തിന്, വോയ്‌സ്‌ബാൻഡ് മോഡമുകൾ). വെർച്വൽ COM പോർട്ട് ഉപകരണങ്ങൾ എന്നും വിളിക്കപ്പെടുന്ന സീരിയൽ എമുലേഷൻ ഉപകരണങ്ങൾ.
ACM സബ്ക്ലാസിനായി നിരവധി സബ്ക്ലാസ്-നിർദ്ദിഷ്ട അഭ്യർത്ഥനകൾ ഉണ്ട്. ഉപകരണം നിയന്ത്രിക്കാനും കോൺഫിഗർ ചെയ്യാനും അവ നിങ്ങളെ അനുവദിക്കുന്നു. എല്ലാ ACM അഭ്യർത്ഥനകളുടെയും പൂർണ്ണമായ ലിസ്റ്റും വിവരണവും സ്പെസിഫിക്കേഷനിൽ കാണാം.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

21/174

കഴിഞ്ഞുview PSTN ഉപകരണങ്ങൾക്കായുള്ള ഉപവിഭാഗം, പുനരവലോകനം 1.2, ഫെബ്രുവരി 9, 2007=, വിഭാഗം 6.2.2.
ഈ പട്ടികയിൽ നിന്ന്, സിലിക്കൺ ലാബ്സ്9 എസിഎം സബ്ക്ലാസ് ഇനിപ്പറയുന്നവയെ പിന്തുണയ്ക്കുന്നു:
പട്ടിക - സിലിക്കൺ ലാബ്സ് പിന്തുണയ്ക്കുന്ന ACM അഭ്യർത്ഥനകൾ

സബ്ക്ലാസ് അഭ്യർത്ഥന വിവരണം

സെറ്റ്കോംഫീച്ചർ ഗെറ്റ്കോംഫീച്ചർ ക്ലിയർകോംഫീച്ചർ

തന്നിരിക്കുന്ന ഒരു ആശയവിനിമയ സവിശേഷതയുടെ ക്രമീകരണങ്ങൾ നിയന്ത്രിക്കുന്നതിനാണ് ഹോസ്റ്റ് ഈ അഭ്യർത്ഥന അയയ്ക്കുന്നത്. സീരിയൽ എമുലേഷനായി ഉപയോഗിക്കുന്നില്ല.
നൽകിയിരിക്കുന്ന ഒരു ആശയവിനിമയ സവിശേഷതയ്ക്കുള്ള നിലവിലെ ക്രമീകരണങ്ങൾ ലഭിക്കുന്നതിനാണ് ഹോസ്റ്റ് ഈ അഭ്യർത്ഥന അയയ്ക്കുന്നത്. സീരിയൽ എമുലേഷനായി ഉപയോഗിക്കുന്നില്ല.
തന്നിരിക്കുന്ന ഒരു ആശയവിനിമയ സവിശേഷതയ്ക്കുള്ള ക്രമീകരണങ്ങൾ മായ്‌ക്കുന്നതിനാണ് ഹോസ്റ്റ് ഈ അഭ്യർത്ഥന അയയ്ക്കുന്നത്. സീരിയൽ എമുലേഷനായി ഉപയോഗിക്കുന്നില്ല.

സെറ്റ്‌ലൈൻകോഡിംഗ്

ACM ഉപകരണ ക്രമീകരണങ്ങൾ കോൺഫിഗർ ചെയ്യുന്നതിനായി ഹോസ്റ്റ് ഈ അഭ്യർത്ഥന അയയ്ക്കുന്നു: ബോഡ് നിരക്ക്, സ്റ്റോപ്പ് ബിറ്റുകളുടെ എണ്ണം, പാരിറ്റി തരം, ഡാറ്റ ബിറ്റുകളുടെ എണ്ണം. ഒരു സീരിയൽ എമുലേഷനായി, ഒരു ഓപ്പൺ വെർച്വൽ COM പോർട്ടിനായി സീരിയൽ ക്രമീകരണങ്ങൾ കോൺഫിഗർ ചെയ്യുമ്പോഴെല്ലാം ഒരു സീരിയൽ ടെർമിനൽ ഈ അഭ്യർത്ഥന സ്വയമേവ അയയ്ക്കും.

ഗെറ്റ്‌ലൈൻകോഡിംഗ്

നിലവിലെ ACM ക്രമീകരണങ്ങൾ (ബോഡ് നിരക്ക്, സ്റ്റോപ്പ് ബിറ്റുകൾ, പാരിറ്റി, ഡാറ്റ ബിറ്റുകൾ) ലഭിക്കുന്നതിനാണ് ഹോസ്റ്റ് ഈ അഭ്യർത്ഥന അയയ്ക്കുന്നത്. ഒരു സീരിയൽ എമുലേഷനായി, വെർച്വൽ COM പോർട്ട് തുറക്കുമ്പോൾ സീരിയൽ ടെർമിനലുകൾ ഈ അഭ്യർത്ഥന സ്വയമേവ അയയ്ക്കുന്നു.

SetControlLineState ഹാഫ്-ഡ്യൂപ്ലെക്സ് മോഡമുകൾക്കായി കാരിയറിനെ നിയന്ത്രിക്കുന്നതിനും ഡാറ്റ ടെർമിനൽ എക്യുപ്‌മെന്റ് (DTE) തയ്യാറാണോ അല്ലയോ എന്ന് സൂചിപ്പിക്കുന്നതിനുമായി ഹോസ്റ്റ് ഈ അഭ്യർത്ഥന അയയ്ക്കുന്നു. സീരിയൽ എമുലേഷൻ കേസിൽ, DTE ഒരു സീരിയൽ ടെർമിനലാണ്. ഒരു സീരിയൽ എമുലേഷനായി, ചില സീരിയൽ ടെർമിനലുകൾ നിയന്ത്രണങ്ങൾ സജ്ജീകരിച്ചുകൊണ്ട് ഈ അഭ്യർത്ഥന അയയ്ക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

സെറ്റ്ബ്രേക്ക്

ഒരു RS-232 സ്റ്റൈൽ ബ്രേക്ക് സൃഷ്ടിക്കുന്നതിനാണ് ഹോസ്റ്റ് ഈ അഭ്യർത്ഥന അയയ്ക്കുന്നത്. ഒരു സീരിയൽ എമുലേഷനായി, ചില സീരിയൽ ടെർമിനലുകൾ ഈ അഭ്യർത്ഥന അയയ്ക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

നിലവിലെ സീരിയൽ ലൈൻ അവസ്ഥയെക്കുറിച്ച് ഹോസ്റ്റിനെ അറിയിക്കാൻ സിലിക്കൺ ലാബ്സ്9 എസിഎം സബ്ക്ലാസ് ഇന്ററപ്റ്റ് IN എൻഡ്‌പോയിന്റ് ഉപയോഗിക്കുന്നു. സീരിയൽ
ലൈൻ സ്റ്റേറ്റ് എന്നത് ഹോസ്റ്റിനെ അറിയിക്കുന്ന ഒരു ബിറ്റ്മാപ്പ് ആണ്:

ഓവർറൺ പാരിറ്റി പിശക് കാരണം ഡാറ്റ ഉപേക്ഷിച്ചു ഫ്രെയിമിംഗ് പിശക് റിംഗ് സിഗ്നൽ കണ്ടെത്തലിന്റെ അവസ്ഥ ബ്രേക്ക് ഡിറ്റക്ഷൻ മെക്കാനിസത്തിന്റെ അവസ്ഥ ട്രാൻസ്മിഷൻ കാരിയറിന്റെ അവസ്ഥ റിസീവർ കാരിയർ കണ്ടെത്തലിന്റെ അവസ്ഥ

സിലിക്കൺ ലാബ്സ്9 എസിഎം സബ്ക്ലാസ് നടപ്പിലാക്കൽ ഇനിപ്പറയുന്ന സ്പെസിഫിക്കേഷനുകൾ പാലിക്കുന്നു:
യൂണിവേഴ്സൽ സീരിയൽ ബസ്, കമ്മ്യൂണിക്കേഷൻസ്, PSTN ഉപകരണങ്ങൾക്കായുള്ള സബ്ക്ലാസ്, റിവിഷൻ 1.2, ഫെബ്രുവരി 9, 2007.
USB ഡിവൈസ് CDC ACM ക്ലാസ് കോൺഫിഗറേഷൻ

CDC ACM ക്ലാസ് (കമ്മ്യൂണിക്കേഷൻ ഡിവൈസ് ക്ലാസ്, അബ്‌സ്ട്രാക്റ്റ് കൺട്രോൾ മോഡൽ) എങ്ങനെ കോൺഫിഗർ ചെയ്യാമെന്ന് ഈ വിഭാഗം ചർച്ച ചെയ്യുന്നു. കോൺഫിഗറേഷൻ പാരാമീറ്ററുകളുടെ രണ്ട് ഗ്രൂപ്പുകളുണ്ട്:
യുഎസ്ബി ഡിവൈസ് സിഡിസി എസിഎം ക്ലാസ് ആപ്ലിക്കേഷൻ നിർദ്ദിഷ്ട കോൺഫിഗറേഷനുകൾ യുഎസ്ബി ഡിവൈസ് സിഡിസി എസിഎം ക്ലാസ് ഇൻസ്റ്റൻസ് കോൺഫിഗറേഷനുകൾ
USB ഡിവൈസ് CDC ACM ക്ലാസ് ആപ്ലിക്കേഷൻ നിർദ്ദിഷ്ട കോൺഫിഗറേഷനുകൾ

CDC ബേസ് ക്ലാസ് ACM സബ്ക്ലാസ്
CDC ബേസ് ക്ലാസ്

ആദ്യം, സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഡിവൈസ് സിഡിസി ക്ലാസ് മൊഡ്യൂൾ ഉപയോഗിക്കുന്നതിന്, നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ആവശ്യങ്ങൾക്കനുസരിച്ച് സിഡിസി കംപൈൽ-ടൈം കോൺഫിഗറേഷൻ #define-s ക്രമീകരിക്കേണ്ടതുണ്ട്. അവ sl_usbd_core_config.h ഹെഡറിനുള്ളിൽ പുനഃക്രമീകരിക്കപ്പെടുന്നു. file CDC വിഭാഗത്തിന് കീഴിൽ. എത്ര USB CDC ഒബ്‌ജക്റ്റുകൾ അനുവദിക്കണമെന്ന് USB ഉപകരണ മൊഡ്യൂളിനെ അറിയിക്കുക എന്നതാണ് അവയുടെ ഉദ്ദേശ്യം.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

22/174

കഴിഞ്ഞുview

ഈ കോൺഫിഗറേഷൻ ഘടനയിൽ ലഭ്യമായ ഓരോ കോൺഫിഗറേഷൻ ഫീൽഡും താഴെയുള്ള പട്ടിക വിവരിക്കുന്നു.
പട്ടിക - USB ഡിവൈസ് CDC കോൺഫിഗറേഷൻ നിർവചിക്കുന്നു

കോൺഫിഗറേഷൻ പേര്
SL_USBD_CDC_CL AS S_INSTANCE_QUANT ITY
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_ഡാറ്റ _ഇന്റർഫേസ്_QUANTI
TY

വിവരണം
ഫംഗ്ഷനിലേക്ക് ഒരു കോൾ വഴി നിങ്ങൾ അനുവദിക്കുന്ന ക്ലാസ് ഉദാഹരണങ്ങളുടെ എണ്ണം
sl_usbd_cdc_acm_create_instance() എന്ന് ടൈപ്പ് ചെയ്യുക.
കോൺഫിഗറേഷനുകളുടെ എണ്ണം. sl_usbd_cdc_acm_add_to_configuration() എന്നതിലെ ഒന്നോ അതിലധികമോ aaaa കോൺഫിഗറേഷനുകളിലേക്ക് ACM ക്ലാസ് ഇൻസ്റ്റൻസുകൾ ചേർക്കാൻ കഴിയും.
എല്ലാ CDC ഫംഗ്ഷനുകൾക്കുമുള്ള ആകെ ഡാറ്റ ഇന്റർഫേസുകളുടെ എണ്ണം (DCI). ഓരോ CDC ACM ഫംഗ്ഷനും aaaaaaaaa sl_usbd_cdc_acm_create_instance() എന്ന ഫംഗ്ഷനിലേക്ക് dded vi cll ചെയ്യും.

ഡിഫോൾട്ട് മൂല്യം
2
1
2

എസിഎം സബ്ക്ലാസ്
താഴെയുള്ള പട്ടികയിൽ കാണിച്ചിരിക്കുന്നതുപോലെ, 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() എന്ന് വിളിക്കുക. ഇവിടെ വിവരിച്ചിരിക്കുന്നതുപോലെ അവന്റെ ഫംഗ്ഷൻ മൂന്ന് കോൺഫിഗറേഷൻ ആർഗ്യുമെന്റുകൾ ഉൾക്കൊള്ളുന്നു.

ലൈൻ_സ്റ്റേറ്റ്_ഇന്റർവെൽ
നിങ്ങളുടെ CDC ACM സീരിയൽ ക്ലാസ് ഇൻസ്റ്റൻസ് ലൈൻ സ്റ്റേറ്റ് നോട്ടിഫിക്കേഷനുകൾ T aa ഹോസ്റ്റിലേക്ക് റിപ്പോർട്ട് ചെയ്യുന്ന ഇടവേള (മില്ലിസെക്കൻഡുകളിൽ) ഇതാണ്. അവന്റെ v lue രണ്ടിന്റെ പവർ ആയിരിക്കണം (1, 2, 4, 8, 16, മുതലായവ).

കോൾ_എംജിഎംടി_ശേഷികൾ
കോൾ മാനേജ്മെന്റ് കഴിവുകൾ ബിറ്റ്മാപ്പ്. ബിറ്റ്മാപ്പിന്റെ സാധ്യമായ മൂല്യങ്ങൾ ഇപ്രകാരമാണ്:

മൂല്യം (ബിറ്റ്)
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 ACM ഇവന്റ് സംഭവിക്കുമ്പോൾ വിളിക്കേണ്ട കോൾബാക്ക് ഫംഗ്‌ഷനുകളുടെ CDC AC Cl ss സെറ്റ് നൽകുക എന്നതാണ് ഇതിന്റെ ഉദ്ദേശ്യം. എല്ലാ കോൾബാക്കുകളും നിർബന്ധമല്ല കൂടാതെ കോൾബാക്ക് ആവശ്യമില്ലാത്തപ്പോൾ കോൾബാക്ക് ഘടന വേരിയബിളിൽ ഒരു നൾ പോയിന്റർ ( NULL ) കൈമാറാൻ കഴിയും. താഴെയുള്ള പട്ടിക ഈ കോൺഫിഗറേഷൻ ഘടനയിൽ ലഭ്യമായ ഓരോ കോൺഫിഗറേഷൻ ഫീൽഡിനെയും വിവരിക്കുന്നു.
പട്ടിക – sl_usbd_cdc_acm _callbacks_t കോൺഫിഗറേഷൻ ഘടന

വയലുകൾ

വിവരണം

.പ്രാപ്തമാക്കുക

USB ക്ലാസ് ഇൻസ്റ്റൻസ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ വിളിക്കുന്നു

വിജയകരമായി.

.ഡിസേബിൾ ചെയ്യുക

USB ക്ലാസ് ഇൻസ്റ്റൻസ് പ്രവർത്തനരഹിതമാക്കുമ്പോൾ വിളിക്കുന്നു.

.line_control_changed ഒരു ലൈൻ കൺട്രോൾ മാറ്റം ലഭിക്കുമ്പോൾ വിളിക്കുന്നു.

line_coding_changed ഒരു ലൈൻ കോഡിംഗ് മാറ്റം ലഭിക്കുമ്പോൾ വിളിക്കുന്നു.

ഫംഗ്ഷൻ സിഗ്നേച്ചർ
അസാധുവായ app_usbd_cdc_acm_enable(uint8_t subclass_nbr);
അസാധുവായ app_usbd_cdc_acm_disable(uint8_t subclass_nbr);
അസാധുവായ app_usbd_cdc_acm_line_control_changed(uint8_t subclass_nbr, uint8_t event, 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
*പി_ലൈൻ_കോഡിംഗ്

കോൾബാക്ക് ഫംഗ്‌ഷനുകൾക്കായി ഇവന്റ് നോട്ടിഫിക്കേഷൻ കോൾബാക്കുകൾ രജിസ്റ്റർ ചെയ്യൽ വിഭാഗം കാണുക example.
USB ഡിവൈസ് CDC ACM ക്ലാസ് പ്രോഗ്രാമിംഗ് ഗൈഡ്

CDC അബ്‌സ്ട്രാക്റ്റ് കൺട്രോൾ മോഡൽ ക്ലാസ് എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഈ വിഭാഗം വിശദീകരിക്കുന്നു. USB ഡിവൈസ് CDC ACM ക്ലാസ് ആരംഭിക്കുന്നു നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് ഒരു USB ഡിവൈസ് CDC ACM ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു CDC ACM ക്ലാസ് ഉപയോഗിച്ച് ആശയവിനിമയം നടത്തുന്നു
USB ഡിവൈസ് CDC ACM ക്ലാസ് ആരംഭിക്കുന്നു

നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് CDC ACM ക്ലാസ് ഫംഗ്ഷണാലിറ്റി ചേർക്കുന്നതിന്, നിങ്ങൾ ആദ്യം sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() എന്നീ ഫംഗ്ഷനുകൾ ഉൾപ്പെടുത്തി CDC ബേസ് ക്ലാസും ACM സബ്ക്ലാസും ആരംഭിക്കണം. താഴെയുള്ള ഉദാഹരണം defult ruguments ഉപയോഗിച്ച് sl_usbd_cdc_init() nd sl_usbd_cdc_acm_init() എന്നിവ എങ്ങനെ പ്രവർത്തിപ്പിക്കാമെന്ന് കാണിക്കുന്നു.

Example – CDC ACM ക്ലാസ്സിന്റെ പ്രാരംഭം

sl_status_t സ്റ്റാറ്റസ്;
status = sl_usbd_cdc_init(); if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */
}
status = sl_usbd_cdc_acm_init(); if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */
}
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് ഒരു USB ഡിവൈസ് CDC ACM ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു.
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് CDC ACM ക്ലാസ് പ്രവർത്തനം ചേർക്കാൻ, നിങ്ങൾ ഒരു ഉദാഹരണം സൃഷ്ടിക്കണം, തുടർന്ന് അത് നിങ്ങളുടെ ഉപകരണത്തിന്റെ കോൺഫിഗറേഷനിലേക്ക്(കളിലേക്ക്) ചേർക്കണം.
ഒരു CDC ACM ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുന്നു

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

24/174

കഴിഞ്ഞുview
നിങ്ങളുടെ ഉപകരണത്തിന്റെ കോൺഫിഗറേഷനുകളിലേക്ക് CDC ACM ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു. ഇവന്റ് അറിയിപ്പ് കോൾബാക്കുകൾ രജിസ്റ്റർ ചെയ്യുന്നു.
ഒരു CDC ACM ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുന്നു
sl_usbd_cdc_acm_create_instance() എന്ന ഫംഗ്ഷൻ ഉപയോഗിച്ച് CDC AC cl ss ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുക. sl_usbd_cdc_acm_create_instance() എന്ന ഫംഗ്ഷൻ ഉപയോഗിച്ച് CDC AC cl ss ഇൻസ്റ്റൻസ് എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് ചുവടെയുള്ള ഉദാഹരണം കാണിക്കുന്നു.
Example – sl_usbd_cdc_acm_create_instance() വഴി ഒരു CDC ACM ഫംഗ്‌ഷൻ സൃഷ്‌ടിക്കുന്നു.

uint8_t സബ്ക്ലാസ്_എൻ‌ബി‌ആർ; sl_status_t സ്റ്റാറ്റസ്;
സ്റ്റാറ്റസ് = 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);
if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */
}
നിങ്ങളുടെ ഉപകരണത്തിന്റെ കോൺഫിഗറേഷനുകളിലേക്ക് CDC ACM ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു.
നിങ്ങൾ ഒരു CDC ACM ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിച്ച ശേഷം, ഫംഗ്‌ഷൻ വിളിച്ച് നിങ്ങൾക്ക് അത് ഒരു കോൺഫിഗറേഷനിലേക്ക് ചേർക്കാൻ കഴിയും.
sl_usbd_cdc_acm_add_to_configuration() എന്ന് ടൈപ്പ് ചെയ്യുക.
താഴെ കൊടുത്തിരിക്കുന്ന ഉദാഹരണം sl_usbd_cdc_acm_add_to_configuration() എങ്ങനെ cll ചെയ്യാമെന്ന് കാണിക്കുന്നു.
Example – USBD ACM sl_usbd_cdc_acm_add_to_configuration() ലേക്ക് വിളിക്കുക

sl_status_t സ്റ്റാറ്റസ്;

സ്റ്റാറ്റസ് = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,

(1)

കോൺഫിഗറേഷൻ_എൻ‌ബ്ര_എഫ്‌എസ്);

(2)

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */

}

aaa (1) sl_usbd_cdc_acm_create_instance() നൽകുന്ന കോൺഫിഗറേഷനിലേക്ക് Cl ss നമ്പർ dd ലേക്ക് മാറ്റുക. (2) കോൺഫിഗറേഷൻ നമ്പർ (ഇവിടെ ഇത് ഒരു ഫുൾ-സ്പീഡ് കോൺഫിഗറേഷനിലേക്ക് ചേർക്കുന്നു).
ഇവന്റ് അറിയിപ്പ് കോൾബാക്കുകൾ രജിസ്റ്റർ ചെയ്യുന്നു
ലൈൻ കൺട്രോളിലോ കോഡിംഗിലോ ഉണ്ടാകുന്ന ഏതെങ്കിലും മാറ്റങ്ങൾ CDC ACM സീരിയൽ ക്ലാസിന് നിങ്ങളുടെ ആപ്ലിക്കേഷനെ അറിയിപ്പ് കോൾബാക്ക് ഫംഗ്ഷനുകൾ വഴി അറിയിക്കാൻ കഴിയും. ACM ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കൽ സമയത്ത് ഒരു കോൾബാക്ക് ഫംഗ്ഷനുകളുടെ ഘടന ആർഗ്യുമെന്റായി കൈമാറാൻ കഴിയും. ആ കോൾബാക്കുകൾ ഓപ്ഷണൽ ആണെന്ന് ശ്രദ്ധിക്കുക. ഉദാ.ample – CDC ACM കോൾബാക്ക് രജിസ്ട്രേഷൻ കോൾബാക്ക് രജിസ്ട്രേഷൻ ഫംഗ്ഷനുകളുടെ ഉപയോഗം വ്യക്തമാക്കുന്നു. ഉദാ.ample – CDC ACM കോൾബാക്കുകൾ നടപ്പിലാക്കൽ ഒരു മുൻ കാണിക്കുന്നുampകോൾബാക്ക് ഫംഗ്‌ഷനുകൾ നടപ്പിലാക്കുന്നതിനെക്കുറിച്ചുള്ള le.
Example – CDC ACM കോൾബാക്ക് രജിസ്ട്രേഷൻ

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

25/174

കഴിഞ്ഞുview

uint8_t സബ്ക്ലാസ്_എൻ‌ബി‌ആർ; 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, };
സ്റ്റാറ്റസ് = 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_callbacks, &subclass_nbr);
if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */ }
Example – CDC ACM കോൾബാക്ക് നടപ്പിലാക്കൽ

bool app_usbd_cdc_acm_line_coding_changed (uint8_t)

സബ്ക്ലാസ്_എൻ‌ബി‌ആർ,

sl_usbd_cdc_acm_line_coding_t *p_line_coding) (ഉപയോക്തൃനാമം)

{

uint32_t ബോഡ്രേറ്റ്_ന്യൂ;

uint8_t പാരിറ്റി_പുതിയ;

uint8_t സ്റ്റോപ്പ്_ബിറ്റുകൾ_പുതിയ;

uint8_t ഡാറ്റ_ബിറ്റുകൾ_പുതിയ;

/* ചെയ്യേണ്ട കാര്യങ്ങൾ പുതിയ ലൈൻ കോഡിംഗ് പ്രയോഗിക്കുക.*/ 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)

}

അസാധുവായ app_usbd_cdc_acm_line_control_changed (uint8_t subclass_nbr, uint8_t event, uint8_t event_changed)
{ ബൂൾ rts_state; ബൂൾ rts_state_changed; ബൂൾ dtr_state; ബൂൾ dtr_state_changed; ബൂൾ brk_state; ബൂൾ brk_state_changed;

/* ചെയ്യേണ്ട കാര്യങ്ങൾ പുതിയ ലൈൻ നിയന്ത്രണം പ്രയോഗിക്കുക. */ rts_state = ((ഇവന്റ് & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((ഇവന്റ്_ചേഞ്ച്ഡ് & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((ഇവന്റ് & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((ഇവന്റ്_ചേഞ്ച്ഡ് & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((ഇവന്റ് & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? ശരി : തെറ്റ്;
}

(1) ലൈൻ കോഡിംഗ് പ്രയോഗിക്കുന്നത് പരാജയപ്പെട്ടാൽ, ഈ ഫംഗ്ഷനിലേക്ക് false തിരികെ നൽകേണ്ടത് പ്രധാനമാണ്. അല്ലെങ്കിൽ, true തിരികെ നൽകുക.
CDC ACM ക്ലാസ് ഉപയോഗിച്ച് ആശയവിനിമയം നടത്തുന്നു
സീരിയൽ സ്റ്റാറ്റസ്
ലൈൻ കോഡിംഗ് ലൈൻ നിയന്ത്രണം

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

26/174

കഴിഞ്ഞുview

ലൈൻ സ്റ്റേറ്റ് സബ്ക്ലാസ് ഇൻസ്റ്റൻസ് കമ്മ്യൂണിക്കേഷൻ
സീരിയൽ സ്റ്റാറ്റസ്
ലൈൻ കോഡിംഗ്
CDC ACM ഉപകരണത്തിന്റെ ലൈൻ കോഡിംഗ് (ബോഡ് നിരക്ക്, പാരിറ്റി മുതലായവ) USB ഹോസ്റ്റ് നിയന്ത്രിക്കുന്നു. ആവശ്യമുള്ളപ്പോൾ, ലൈൻ കോഡിംഗ് സജ്ജീകരിക്കുന്നതിന് ആപ്ലിക്കേഷന് ഉത്തരവാദിത്തമുണ്ട്. താഴെയുള്ള പട്ടികയിൽ വിവരിച്ചിരിക്കുന്നതുപോലെ, നിലവിലെ ലൈൻ കോഡിംഗ് വീണ്ടെടുക്കുന്നതിനും സജ്ജമാക്കുന്നതിനും രണ്ട് ഫംഗ്ഷനുകൾ നൽകിയിട്ടുണ്ട്.
പട്ടിക - CDC ACM ലൈൻ കോഡിംഗ് ഫംഗ്ഷനുകൾ

ഫംഗ്ഷൻ
sl_usbd_cdc_acm_g e t_line _co d ing ()
sl_usbd_cdc_acm_s e t_line _co d ing ()

വിവരണം
SetLineCoding അഭ്യർത്ഥനകളുള്ള ഹോസ്റ്റിൽ നിന്നോ sl_usbd_cdc_acm_set_line_coding() എന്ന ഫംഗ്ഷൻ ഉപയോഗിച്ചോ നിങ്ങളുടെ ആപ്ലിക്കേഷന് നിലവിലെ ലൈൻ കോഡിംഗ് ക്രമീകരണങ്ങൾ സജ്ജമാക്കാൻ കഴിയും.
നിങ്ങളുടെ ആപ്ലിക്കേഷന് ലൈൻ കോഡിംഗ് സജ്ജമാക്കാൻ കഴിയും. GetLineCoding അഭ്യർത്ഥന ഉപയോഗിച്ച് ഹോസ്റ്റിന് ക്രമീകരണങ്ങൾ വീണ്ടെടുക്കാൻ കഴിയും.

ലൈൻ നിയന്ത്രണം
CDC ACM ഉപകരണത്തിന്റെ ലൈൻ നിയന്ത്രണം (RTS, DTR പിന്നുകൾ, ബ്രേക്ക് സിഗ്നൽ മുതലായവ) USB ഹോസ്റ്റ് നിയന്ത്രിക്കുന്നു. ആവശ്യമുള്ളപ്പോൾ, ലൈൻ നിയന്ത്രണങ്ങൾ പ്രയോഗിക്കുന്നതിന് നിങ്ങളുടെ ആപ്ലിക്കേഷന് ഉത്തരവാദിത്തമുണ്ട്. താഴെയുള്ള പട്ടികയിൽ വിവരിച്ചിരിക്കുന്നതുപോലെ, നിലവിലെ ലൈൻ നിയന്ത്രണങ്ങൾ വീണ്ടെടുക്കുന്നതിനും സജ്ജമാക്കുന്നതിനും ഒരു ഫംഗ്ഷൻ നൽകിയിരിക്കുന്നു.
പട്ടിക - CDC ACM ലൈൻ കൺട്രോൾ ഫംഗ്‌ഷനുകൾ

ഫംഗ്ഷൻ
sl_usb d _cd c_acm_g e t_line _contr o l_state () () sl_usb d _cd c_acm_g e t_line _contr o l_state ()

SetControlLineState അഭ്യർത്ഥനയിലൂടെ ഹോസ്റ്റ് സജ്ജമാക്കിയ നിലവിലെ നിയന്ത്രണ ലൈൻ അവസ്ഥ നിങ്ങളുടെ ആപ്ലിക്കേഷന് ലഭിക്കും.

ലൈൻ സ്റ്റേറ്റ്
USB ഹോസ്റ്റ് ലൈൻ അവസ്ഥ ഒരു നിശ്ചിത ഇടവേളയിൽ വീണ്ടെടുക്കുന്നു. നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഓരോ തവണ മാറുമ്പോഴും ലൈൻ അവസ്ഥ അപ്ഡേറ്റ് ചെയ്യണം. ആവശ്യമുള്ളപ്പോൾ, ലൈൻ അവസ്ഥ സജ്ജീകരിക്കുന്നതിന് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഉത്തരവാദിയാണ്. താഴെയുള്ള പട്ടികയിൽ വിവരിച്ചിരിക്കുന്നതുപോലെ, നിലവിലെ ലൈൻ നിയന്ത്രണങ്ങൾ വീണ്ടെടുക്കുന്നതിനും സജ്ജമാക്കുന്നതിനും രണ്ട് ഫംഗ്ഷനുകൾ നൽകിയിട്ടുണ്ട്.
പട്ടിക - CDC ACM ലൈൻ സ്റ്റേറ്റ് ഫംഗ്ഷനുകൾ

ഫംഗ്ഷൻ
sl_usb d _cd c_acm_se t _line _state _e vent() എന്ന് ടൈപ്പ് ചെയ്യുക.
sl_usbd_cdc_acm_cle ആർ_ലൈൻ _സ്റ്റേറ്റ് _ഇ വെന്റ്()

നിങ്ങളുടെ ആപ്ലിക്കേഷന് ഏത് ലൈൻ സ്റ്റേറ്റ് ഇവന്റും(കളും) സജ്ജമാക്കാൻ കഴിയും. ലൈൻ സ്റ്റേറ്റ് സജ്ജമാക്കുമ്പോൾ, സീരിയൽ ലൈൻ സ്റ്റേറ്റിലെ മാറ്റത്തെക്കുറിച്ച് അറിയിക്കാൻ ഒരു ഇന്ററപ്റ്റ് IN ട്രാൻസ്ഫർ ഹോസ്റ്റിലേക്ക് അയയ്ക്കുന്നു.
ആപ്ലിക്കേഷന് ലൈൻ സ്റ്റേറ്റിന്റെ രണ്ട് ഇവന്റുകൾ ക്ലിയർ ചെയ്യാൻ കഴിയും: ട്രാൻസ്മിഷൻ കാരിയർ, റിസീവർ കാരിയർ ഡിറ്റക്ഷൻ. മറ്റെല്ലാ ഇവന്റുകളും ACM സീരിയൽ എമുലേഷൻ സബ്ക്ലാസ് സ്വയം ക്ലിയർ ചെയ്യുന്നു.

സബ്ക്ലാസ് ഇൻസ്റ്റൻസ് കമ്മ്യൂണിക്കേഷൻ

സിലിക്കൺ ലാബ്‌സിന്റെ ACM സബ്‌ക്ലാസ് ഹോസ്റ്റുമായി ആശയവിനിമയം നടത്തുന്നതിന് ഇനിപ്പറയുന്ന ഫംഗ്‌ഷനുകൾ വാഗ്ദാനം ചെയ്യുന്നു. functions9 പാരാമീറ്ററുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, CDC ACM സബ്‌ക്ലാസ് ഫംഗ്‌ഷൻ റഫറൻസ് കാണുക.

പ്രവർത്തനത്തിൻ്റെ പേര്
sl_usb d _cd c_acm_ റീ അഡ് () sl_usb d _cd c_acm_write ()

ഓപ്പറേഷൻ
ഒരു ബൾക്ക് OUT എൻഡ്‌പോയിന്റ് വഴി ഹോസ്റ്റിൽ നിന്ന് ഡാറ്റ സ്വീകരിക്കുന്നു. ഈ ഫംഗ്ഷൻ തടയുന്നു. ഒരു ബൾക്ക് IN എൻഡ്‌പോയിന്റ് വഴി ഹോസ്റ്റിലേക്ക് ഡാറ്റ അയയ്ക്കുന്നു. ഈ ഫംഗ്ഷൻ തടയുന്നു.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

27/174

കഴിഞ്ഞുview

പട്ടിക - CDC ACM കമ്മ്യൂണിക്കേഷൻ API സംഗ്രഹം aaaaa sl_usbd_cdc_acm_read() nd sl_usbd_cdc_acm_write() എന്നിവ സിൻക്രണസ് ആശയവിനിമയം നൽകുന്നു, ഇത് tr nsfer തടയുന്നു എന്നതിന്റെ സൂചനയാണ്. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ഫംഗ്ഷൻ വിളിക്കുമ്പോൾ, ഒരു പിശകോടെയോ അല്ലാതെയോ കൈമാറ്റം പൂർത്തിയാകുന്നതുവരെ ആപ്ലിക്കേഷൻ തടയുന്നു. എന്നെന്നേക്കുമായി കാത്തിരിക്കുന്നത് ഒഴിവാക്കാൻ ഒരു ടൈംഔട്ട് വ്യക്തമാക്കാം. ഉദാ.ampതാഴെ le ഒരു വായന, എഴുത്ത് മുൻ കാണിക്കുന്നു.ampബൾക്ക് OUT എൻഡ്‌പോയിന്റ് ഉപയോഗിച്ച് ഹോസ്റ്റിൽ നിന്ന് ഡാറ്റ സ്വീകരിക്കുന്ന le, ബൾക്ക് IN എൻഡ്‌പോയിന്റ് ഉപയോഗിച്ച് ഹോസ്റ്റിലേക്ക് ഡാറ്റ അയയ്ക്കുന്നു.
ലിസ്റ്റിംഗ് - സീരിയൽ റീഡ് ആൻഡ് റൈറ്റ് എക്സ്ample

__അലൈൻ ചെയ്‌തത്(4) uint8_t rx_buf[2];

__അലൈൻ ചെയ്‌തത്(4) uint8_t tx_buf[2];

uint32_t

എക്സ്ഫെർ_ലെൻ;

sl_status_t (സ്റ്റാറ്റസ്_ടി)

പദവി;

സ്റ്റാറ്റസ് = sl_usbd_cdc_acm_read(subclass_nbr,

(1)

ആർഎക്സ്_ബഫ്,

(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 aaaaa M (1) sl_usbd_cdc_acm_create_instance() ഉപയോഗിച്ച് സൃഷ്ടിച്ച cl ss instance നമ്പർ, ട്രാൻസ്ഫർ ശരിയായ ബൾക്ക് OUT അല്ലെങ്കിൽ IN എൻഡ്‌പോയിന്റിലേക്ക് റൂട്ട് ചെയ്യുന്നതിന് AC സബ്‌ക്ലാസിലേക്ക് ഒരു ഇന്റേൺ റഫറൻസ് നൽകുന്നു. (2) ഫംഗ്ഷനിലേക്ക് നൽകിയിരിക്കുന്ന ബഫർ എല്ലാ ഡാറ്റയും ഉൾക്കൊള്ളാൻ പര്യാപ്തമാണെന്ന് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഉറപ്പാക്കണം. അല്ലെങ്കിൽ, സിൻക്രൊണൈസേഷൻ പ്രശ്നങ്ങൾ ഉണ്ടാകാം. (3) അനന്തമായ തടയൽ സാഹചര്യം ഒഴിവാക്കാൻ, മില്ലിസെക്കൻഡുകളിൽ പ്രകടിപ്പിക്കുന്ന ഒരു ടൈംഔട്ട് വ്യക്തമാക്കുക. 809 എന്ന മൂല്യം ആപ്ലിക്കേഷൻ ടാസ്‌ക്കിനെ എന്നെന്നേക്കുമായി കാത്തിരിക്കാൻ പ്രേരിപ്പിക്കുന്നു. (4) ആപ്ലിക്കേഷൻ ഇനീഷ്യലൈസ് ചെയ്ത ട്രാൻസ്മിറ്റ് ബഫർ നൽകുന്നു.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

28/174

കഴിഞ്ഞുview
കഴിഞ്ഞുview

USB ഡിവൈസ് HID ക്ലാസ്

USB ഉപകരണ HID ക്ലാസ് കഴിഞ്ഞുview കോർ USB ഡിവൈസിൽ നിന്നുള്ള USB ഡിവൈസ് HID ക്ലാസ് റിസോഴ്‌സ് ആവശ്യകതകൾ USB ഡിവൈസ് HID ക്ലാസ് കോൺഫിഗറേഷൻ USB ഡിവൈസ് HID ക്ലാസ് പ്രോഗ്രാമിംഗ് ഗൈഡ് HID പീരിയോഡിക് ഇൻപുട്ട് റിപ്പോർട്ടുകൾ ടാസ്‌ക്
സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഡിവൈസ് പിന്തുണയ്ക്കുന്ന ഹ്യൂമൻ ഇന്റർഫേസ് ഡിവൈസ് (എച്ച്ഐഡി) ക്ലാസ്സിനെ ഈ വിഭാഗം വിവരിക്കുന്നു.
കീബോർഡുകൾ, മൗസുകൾ, പോയിന്റിംഗ് ഉപകരണങ്ങൾ, ഗെയിം ഉപകരണങ്ങൾ തുടങ്ങിയ കമ്പ്യൂട്ടർ പ്രവർത്തനങ്ങൾ നിയന്ത്രിക്കാൻ മനുഷ്യർ ഉപയോഗിക്കുന്ന ഉപകരണങ്ങളെ HID ക്ലാസ് ഉൾക്കൊള്ളുന്നു.
നോബുകൾ, സ്വിച്ചുകൾ, ബട്ടണുകൾ, സ്ലൈഡറുകൾ തുടങ്ങിയ നിയന്ത്രണങ്ങൾ ഉൾക്കൊള്ളുന്ന ഒരു സംയോജിത ഉപകരണത്തിലും HID ക്ലാസ് ഉപയോഗിക്കാം.ampഒരു ഓഡിയോ ഹെഡ്‌സെറ്റിലെ le, മ്യൂട്ട്, വോളിയം നിയന്ത്രണങ്ങൾ എന്നിവ ഹെഡ്‌സെറ്റിന്റെ HID ഫംഗ്‌ഷൻ വഴി നിയന്ത്രിക്കപ്പെടുന്നു. HID ക്ലാസിന് കൺട്രോൾ, ഇന്ററപ്റ്റ് ട്രാൻസ്ഫറുകൾ മാത്രം ഉപയോഗിച്ച് ഏത് ആവശ്യത്തിനും ഡാറ്റ കൈമാറ്റം ചെയ്യാൻ കഴിയും.
ഏറ്റവും പഴയതും വ്യാപകമായി ഉപയോഗിക്കുന്നതുമായ യുഎസ്ബി ക്ലാസുകളിൽ ഒന്നാണ് എച്ച്ഐഡി ക്ലാസ്. എല്ലാ പ്രധാന ഹോസ്റ്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളും എച്ച്ഐഡി ഉപകരണങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിന് ഒരു നേറ്റീവ് ഡ്രൈവർ നൽകുന്നു, അതുകൊണ്ടാണ് വിവിധ വെണ്ടർ-നിർദ്ദിഷ്ട ഉപകരണങ്ങൾ എച്ച്ഐഡി ക്ലാസുമായി പ്രവർത്തിക്കുന്നത്. എൽഇഡികൾ, ഓഡിയോ, സ്പർശന ഫീഡ്‌ബാക്ക് മുതലായ വിവിധ തരം ഔട്ട്‌പുട്ട് ഇനങ്ങളും ഈ ക്ലാസിൽ ഉൾപ്പെടുന്നു.
HID നടപ്പിലാക്കൽ ഇനിപ്പറയുന്ന സ്പെസിഫിക്കേഷനുകൾ പാലിക്കുന്നു:
ഹ്യൂമൻ ഇന്റർഫേസ് ഉപകരണങ്ങൾക്കുള്ള ഉപകരണ ക്ലാസ് നിർവചനം (HID), 6/27/01, പതിപ്പ് 1.11. യൂണിവേഴ്സൽ സീരിയൽ ബസ് HID ഉപയോഗ പട്ടികകൾ, 10/28/2004, പതിപ്പ് 1.12.
USB ഉപകരണ HID ക്ലാസ് കഴിഞ്ഞുview
കഴിഞ്ഞുview
ഒരു HID ഉപകരണത്തിൽ ഇനിപ്പറയുന്ന എൻഡ്‌പോയിന്റുകൾ അടങ്ങിയിരിക്കുന്നു:
ഡിഫോൾട്ട് എൻഡ്‌പോയിന്റ് എന്ന് വിളിക്കുന്ന ഒരു ജോഡി കൺട്രോൾ IN, OUT എൻഡ്‌പോയിന്റ് ഒരു ഇന്ററപ്റ്റ് IN എൻഡ്‌പോയിന്റ് ഒരു ഓപ്‌ഷണൽ ഇന്ററപ്റ്റ് OUT എൻഡ്‌പോയിന്റ്
വ്യത്യസ്ത എൻഡ്‌പോയിന്റുകളുടെ ഉപയോഗം താഴെയുള്ള പട്ടിക വിവരിക്കുന്നു:
പട്ടിക - HID ക്ലാസ് എൻഡ്‌പോയിന്റുകളുടെ ഉപയോഗം

എൻഡ്‌പോയിന്റ് ദിശ ഉപയോഗം

IN നിയന്ത്രിക്കുക
നിയന്ത്രണം
പുറത്ത്
ഇന്ററപ്റ്റ് IN
തടസ്സപ്പെടുത്തുക
പുറത്ത്

ഡിവൈസ് ടു-ഹോസ്റ്റ്
ഹോസ്റ്റ്-ടു-ഡിവൈസ്
ഡിവൈസ് ടു-ഹോസ്റ്റ്
ഹോസ്റ്റ്-ടു-ഡിവൈസ്

എണ്ണൽ, ക്ലാസ്-നിർദ്ദിഷ്ട അഭ്യർത്ഥനകൾ, ഡാറ്റ ആശയവിനിമയം എന്നിവയ്ക്കുള്ള സ്റ്റാൻഡേർഡ് അഭ്യർത്ഥനകൾ (GET_REPORT അഭ്യർത്ഥനയോടെ ഹോസ്റ്റിലേക്ക് അയച്ച ഇൻപുട്ട്, ഫീച്ചർ റിപ്പോർട്ടുകൾ). എണ്ണൽ, ക്ലാസ്-നിർദ്ദിഷ്ട അഭ്യർത്ഥനകൾ, ഡാറ്റ ആശയവിനിമയം എന്നിവയ്ക്കുള്ള സ്റ്റാൻഡേർഡ് അഭ്യർത്ഥനകൾ (SET_REPORT അഭ്യർത്ഥനയോടെ ഹോസ്റ്റിൽ നിന്ന് ലഭിച്ച ഔട്ട്പുട്ട്, ഫീച്ചർ റിപ്പോർട്ടുകൾ). ഡാറ്റ ആശയവിനിമയം (ഇൻപുട്ട്, ഫീച്ചർ റിപ്പോർട്ടുകൾ).
ഡാറ്റാ ആശയവിനിമയം (ഔട്ട്പുട്ട്, ഫീച്ചർ റിപ്പോർട്ടുകൾ).

റിപ്പോർട്ട് ചെയ്യുക

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

29/174

കഴിഞ്ഞുview

ഒരു ഹോസ്റ്റും ഒരു HID ഉപകരണവും റിപ്പോർട്ടുകൾ ഉപയോഗിച്ച് ഡാറ്റ കൈമാറ്റം ചെയ്യുന്നു. HID ഉപകരണത്തിന്റെ നിയന്ത്രണങ്ങളെയും മറ്റ് ഭൗതിക എന്റിറ്റികളെയും കുറിച്ചുള്ള വിവരങ്ങൾ നൽകുന്ന ഫോർമാറ്റ് ചെയ്ത ഡാറ്റ ഒരു റിപ്പോർട്ടിൽ അടങ്ങിയിരിക്കുന്നു. ഒരു നിയന്ത്രണം ഉപയോക്താവിന് കൈകാര്യം ചെയ്യാൻ കഴിയും കൂടാതെ ഉപകരണത്തിന്റെ ഒരു വശം പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുന്നു. ഉദാഹരണത്തിന്ample, ഒരു നിയന്ത്രണം ഒരു മൗസിലെയോ കീബോർഡിലെയോ ഒരു ബട്ടൺ, ഒരു സ്വിച്ച് മുതലായവ ആകാം. മറ്റ് എന്റിറ്റികൾ ചില ഉപകരണങ്ങളുടെ സവിശേഷതകളുടെ അവസ്ഥയെക്കുറിച്ച് ഉപയോക്താവിനെ അറിയിക്കുന്നു. ഉദാഹരണത്തിന്ample, ഒരു കീബോർഡിലെ LED-കൾ ക്യാപ്‌സ് ലോക്ക് ഓണാണെന്നും, സംഖ്യാ കീപാഡ് സജീവമാണെന്നും, മുതലായവയെക്കുറിച്ചും ഉപയോക്താവിനെ അറിയിക്കുന്നു.
റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്ററിന്റെ ഉള്ളടക്കം വിശകലനം ചെയ്തുകൊണ്ടാണ് റിപ്പോർട്ട് ഡാറ്റയുടെ ഫോർമാറ്റും ഉപയോഗവും ഹോസ്റ്റ് മനസ്സിലാക്കുന്നത്. ഉള്ളടക്കം വിശകലനം ചെയ്യുന്നത് ഒരു പാഴ്‌സറാണ്. ഒരു ഉപകരണത്തിലെ ഓരോ നിയന്ത്രണവും നൽകുന്ന ഡാറ്റയെ റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ വിവരിക്കുന്നു. ഉപകരണത്തെക്കുറിച്ചുള്ള വിവരങ്ങളുടെ ഭാഗങ്ങളും 1-ബൈറ്റ് പ്രിഫിക്സും വേരിയബിൾ-ദൈർഘ്യവും അടങ്ങുന്ന ഇനങ്ങൾ ഇതിൽ അടങ്ങിയിരിക്കുന്നു.
ഡാറ്റ. ഇന ഫോർമാറ്റിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, കാണുക
1.11=, സെക്ഷൻ 5.6 ഉം 6.2.2 ഉം.
മൂന്ന് പ്രധാന തരം ഇനങ്ങൾ ഉണ്ട്:
പ്രധാന ഇനം ചില തരം ഡാറ്റ ഫീൽഡുകളെ നിർവചിക്കുന്നു അല്ലെങ്കിൽ ഗ്രൂപ്പുചെയ്യുന്നു.
ഒരു നിയന്ത്രണത്തിന്റെ ഡാറ്റ സവിശേഷതകളെയാണ് ആഗോള ഇനം വിവരിക്കുന്നത്.
ഒരു നിയന്ത്രണത്തിന്റെ ഡാറ്റ സവിശേഷതകളെയാണ് ലോക്കൽ ഇനം വിവരിക്കുന്നത്.
ഓരോ ഇന തരത്തെയും വ്യത്യസ്ത ഫംഗ്ഷനുകൾ നിർവചിക്കുന്നു. ഒരു ഇന ഫംഗ്ഷനെ a എന്നും വിളിക്കാം. tag. ഒരു ഐറ്റം ഫംഗ്‌ഷനെ മൂന്ന് പ്രധാന ഇന തരങ്ങളിൽ ഒന്നിൽ ഉൾപ്പെടുന്ന ഒരു ഉപ ഇനമായി കാണാൻ കഴിയും. താഴെയുള്ള പട്ടിക ഒരു സംക്ഷിപ്ത വിവരണം നൽകുന്നുview ഓരോ ഇന തരത്തിലുമുള്ള item9s ഫംഗ്‌ഷനുകളുടെ. ഓരോ വിഭാഗത്തിലെയും ഇനങ്ങളുടെ പൂർണ്ണമായ വിവരണത്തിന്, കാണുക
പട്ടിക - ഓരോ ഇന തരത്തിനുമുള്ള ഇനത്തിന്റെ പ്രവർത്തന വിവരണം

ഇനം ഇനം തരം പ്രവർത്തനം

വിവരണം

പ്രധാന ഇൻപുട്ട്

ഒന്നോ അതിലധികമോ ഭൗതിക നിയന്ത്രണങ്ങൾ നൽകുന്ന ഡാറ്റയെക്കുറിച്ചുള്ള വിവരങ്ങൾ വിവരിക്കുന്നു.

പ്രധാന ഔട്ട്പുട്ട് ഉപകരണത്തിലേക്ക് അയച്ച ഡാറ്റയെ വിവരിക്കുന്നു.

പ്രധാന സവിശേഷത

ഉപകരണത്തിന്റെയോ അതിന്റെ ഘടകങ്ങളിലൊന്നിന്റെയോ മൊത്തത്തിലുള്ള സ്വഭാവത്തെ സ്വാധീനിക്കുന്ന, ഉപകരണത്തിലേക്ക് അയച്ചതോ സ്വീകരിച്ചതോ ആയ ഉപകരണ കോൺഫിഗറേഷൻ വിവരങ്ങൾ വിവരിക്കുന്നു.

പ്രധാന ശേഖരണ ഗ്രൂപ്പുമായി ബന്ധപ്പെട്ട ഇനങ്ങൾ (ഇൻപുട്ട്, ഔട്ട്പുട്ട് അല്ലെങ്കിൽ ഫീച്ചർ).

ഒരു ശേഖരം അടയ്ക്കുന്നതിന്റെ പ്രധാന അവസാനം. ശേഖരം

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

30/174

കഴിഞ്ഞുview

ഇനം ഇനം തരം പ്രവർത്തനം

വിവരണം

ആഗോള ഉപയോഗ പേജ്

ഉപകരണത്തിനുള്ളിൽ ലഭ്യമായ ഒരു ഫംഗ്ഷൻ തിരിച്ചറിയുന്നു.

ലോജിക്കൽ യൂണിറ്റുകളിൽ റിപ്പോർട്ട് ചെയ്ത മൂല്യങ്ങളുടെ താഴ്ന്ന പരിധി ഗ്ലോബൽ ലോജിക്കൽ നിർവചിക്കുന്നു. ഏറ്റവും കുറഞ്ഞത്

ലോജിക്കൽ യൂണിറ്റുകളിൽ റിപ്പോർട്ട് ചെയ്ത മൂല്യങ്ങളുടെ ഉയർന്ന പരിധി ഗ്ലോബൽ ലോജിക്കൽ നിർവചിക്കുന്നു. പരമാവധി

ഭൗതിക യൂണിറ്റുകളിൽ റിപ്പോർട്ട് ചെയ്യപ്പെട്ട മൂല്യങ്ങളുടെ താഴ്ന്ന പരിധിയെ ഗ്ലോബൽ ഫിസിക്കൽ നിർവചിക്കുന്നു, അതായത് ഭൗതിക യൂണിറ്റുകളിൽ പ്രകടിപ്പിക്കുന്ന ലോജിക്കൽ മിനിമം മിനിമം.

ആഗോള ഭൗതികം ഭൗതിക യൂണിറ്റുകളിൽ റിപ്പോർട്ട് ചെയ്യപ്പെട്ട മൂല്യങ്ങളുടെ ഉയർന്ന പരിധി നിർവചിക്കുന്നു, അതായത് ഭൗതിക യൂണിറ്റുകളിൽ പ്രകടിപ്പിക്കുന്ന ലോജിക്കൽ പരമാവധി പരമാവധി.

ഗ്ലോബൽ യൂണിറ്റ്

ബേസ് 10 ലെ യൂണിറ്റ് എക്സ്പോണന്റിനെ സൂചിപ്പിക്കുന്നു. എക്സ്പോണന്റിന്റെ ശ്രേണി -8 മുതൽ +7 വരെയാണ്.

എക്സ്പോണൻ്റ്

ഗ്ലോബൽ യൂണിറ്റ്

റിപ്പോർട്ട് ചെയ്ത മൂല്യങ്ങളുടെ യൂണിറ്റ് സൂചിപ്പിക്കുന്നു. ഉദാഹരണത്തിന്, നീളം, പിണ്ഡം, താപനില യൂണിറ്റുകൾ മുതലായവ.

ആഗോള റിപ്പോർട്ട് വലുപ്പം

റിപ്പോർട്ട് ഫീൽഡുകളുടെ വലുപ്പം ബിറ്റുകളിൽ സൂചിപ്പിക്കുന്നു.

ഗ്ലോബൽ റിപ്പോർട്ട് ഐഡി ഒരു പ്രത്യേക റിപ്പോർട്ടിൽ ചേർത്തിരിക്കുന്ന പ്രിഫിക്‌സിനെ സൂചിപ്പിക്കുന്നു.

ആഗോള റിപ്പോർട്ട് എണ്ണം

ഒരു ഇനത്തിനായുള്ള ഡാറ്റ ഫീൽഡുകളുടെ എണ്ണം സൂചിപ്പിക്കുന്നു.

ഗ്ലോബൽ പുഷ്

സിപിയു സ്റ്റാക്കിൽ ഗ്ലോബൽ ഇന സ്റ്റേറ്റ് ടേബിളിന്റെ ഒരു പകർപ്പ് സ്ഥാപിക്കുന്നു.

ഗ്ലോബൽ പോപ്പ്

സ്റ്റാക്കിലെ അവസാന ഘടന ഉപയോഗിച്ച് ഇനത്തിന്റെ അവസ്ഥ പട്ടിക മാറ്റിസ്ഥാപിക്കുന്നു.

പ്രാദേശിക ഉപയോഗം

ഒരു ഉപയോഗ പേജിനുള്ളിൽ ഒരു നിർദ്ദിഷ്ട ഉപയോഗം നിയോഗിക്കുന്നതിനുള്ള ഒരു സൂചികയെ പ്രതിനിധീകരിക്കുന്നു. ഒരു നിർദ്ദിഷ്ട നിയന്ത്രണത്തിനോ നിയന്ത്രണങ്ങളുടെ ഗ്രൂപ്പിനോ വേണ്ടി വെണ്ടർ നിർദ്ദേശിച്ച ഉപയോഗത്തെ ഇത് സൂചിപ്പിക്കുന്നു. ഒരു നിയന്ത്രണം യഥാർത്ഥത്തിൽ എന്താണ് അളക്കുന്നതെന്ന് ഒരു ആപ്ലിക്കേഷൻ ഡെവലപ്പർക്ക് ഒരു ഉപയോഗം വിവരങ്ങൾ നൽകുന്നു.

പ്രാദേശിക ഉപയോഗം

ഒരു അറേ അല്ലെങ്കിൽ ബിറ്റ്മാപ്പുമായി ബന്ധപ്പെട്ട ആരംഭ ഉപയോഗം നിർവചിക്കുന്നു.

കുറഞ്ഞത്

പ്രാദേശിക ഉപയോഗം

ഒരു അറേ അല്ലെങ്കിൽ ബിറ്റ്മാപ്പുമായി ബന്ധപ്പെട്ട അവസാന ഉപയോഗം നിർവചിക്കുന്നു.

പരമാവധി

ലോക്കൽ ഡിസൈനർ ഒരു നിയന്ത്രണത്തിനായി ഉപയോഗിക്കുന്ന ശരീരഭാഗം നിർണ്ണയിക്കുന്നു. ഫിസിക്കൽ വിഭാഗത്തിലെ ഒരു ഡിസൈനറെ സൂചിക സൂചിപ്പിക്കുന്നു.

സൂചിക

വിവരണം.

ലോക്കൽ ഡിസൈനേറ്റർ ഒരു അറേ അല്ലെങ്കിൽ ബിറ്റ്മാപ്പുമായി ബന്ധപ്പെട്ട ആരംഭ ഡിസൈനേറ്ററിന്റെ സൂചിക നിർവചിക്കുന്നു. കുറഞ്ഞത്

ലോക്കൽ ഡിസൈനേറ്റർ ഒരു അറേ അല്ലെങ്കിൽ ബിറ്റ്മാപ്പുമായി ബന്ധപ്പെട്ട അവസാന ഡിസൈനേറ്ററിന്റെ സൂചിക നിർവചിക്കുന്നു. പരമാവധി

ലോക്കൽ സ്ട്രിംഗ് സൂചിക

ഒരു സ്ട്രിംഗ് ഡിസ്ക്രിപ്റ്ററിനുള്ള സ്ട്രിംഗ് സൂചിക. ഒരു പ്രത്യേക ഇനവുമായോ നിയന്ത്രണവുമായോ ഒരു സ്ട്രിംഗ് ബന്ധപ്പെടുത്താൻ ഇത് അനുവദിക്കുന്നു.

ലോക്കൽ സ്ട്രിംഗ്

ഒരു അറേയിലെ നിയന്ത്രണങ്ങൾക്ക് ഒരു കൂട്ടം സീക്വൻഷൽ സ്ട്രിംഗുകൾ നൽകുമ്പോൾ ആദ്യ സ്ട്രിംഗ് സൂചിക വ്യക്തമാക്കുന്നു.

മിനിമം അല്ലെങ്കിൽ ബിറ്റ്മാപ്പ്.

ലോക്കൽ ലോക്കൽ

സ്ട്രിംഗ് പരമാവധി
ഡിലിമിറ്റർ

ഒരു അറേയിലോ ബിറ്റ്മാപ്പിലോ ഉള്ള നിയന്ത്രണങ്ങൾക്ക് ഒരു കൂട്ടം സീക്വൻഷൽ സ്ട്രിംഗുകൾ നൽകുമ്പോൾ അവസാന സ്ട്രിംഗ് സൂചിക വ്യക്തമാക്കുന്നു.
ഒരു കൂട്ടം പ്രാദേശിക ഇനങ്ങളുടെ ആരംഭമോ അവസാനമോ നിർവചിക്കുന്നു.

ഒരു കൺട്രോൾ9s ഡാറ്റ കുറഞ്ഞത് ഇനിപ്പറയുന്ന ഇനങ്ങളെങ്കിലും നിർവചിക്കണം:
ഇൻപുട്ട്, ഔട്ട്പുട്ട് അല്ലെങ്കിൽ ഫീച്ചർ പ്രധാന ഇനങ്ങൾ ഉപയോഗം പ്രാദേശിക ഇനം ഉപയോഗ പേജ് ആഗോള ഇനം ലോജിക്കൽ മിനിമം ആഗോള ഇനം ലോജിക്കൽ പരമാവധി ആഗോള ഇനം റിപ്പോർട്ട് വലുപ്പം ആഗോള ഇനം

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

31/174

കഴിഞ്ഞുview
റിപ്പോർട്ട് കൗണ്ട് ഗ്ലോബൽ ഇനം താഴെയുള്ള പട്ടിക ഒരു ഹോസ്റ്റ് HID പാഴ്‌സർ വീക്ഷണകോണിൽ നിന്നുള്ള ഒരു മൗസ് റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ ഉള്ളടക്കത്തിന്റെ പ്രാതിനിധ്യം കാണിക്കുന്നു. മൗസിന് മൂന്ന് ബട്ടണുകൾ (ഇടത്, വലത്, ചക്രം) ഉണ്ട്. ഉദാഹരണത്തിൽ അവതരിപ്പിച്ചിരിക്കുന്ന കോഡ്ampഈ മൗസ് റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ പ്രാതിനിധ്യവുമായി ബന്ധപ്പെട്ട ഒരു കോഡ് ഇംപ്ലിമെന്റേഷൻ താഴെ കൊടുത്തിരിക്കുന്നു.
ചിത്രം – ഒരു ഹോസ്റ്റ് HID പാർസറിൽ നിന്നുള്ള ഡിസ്ക്രിപ്റ്റർ ഉള്ളടക്കം റിപ്പോർട്ട് ചെയ്യുക View

(1) ഉപയോഗ പേജ് ഇന ഫംഗ്ഷൻ ഉപകരണത്തിന്റെ പൊതുവായ പ്രവർത്തനം വ്യക്തമാക്കുന്നു. ഈ ഉദാഹരണത്തിൽample, HID ഉപകരണം a യുടെതാണ്
പൊതുവായ ഡെസ്ക്ടോപ്പ് നിയന്ത്രണം.
(2) ശേഖരണ ആപ്ലിക്കേഷൻ ഗ്രൂപ്പുകൾ പൊതുവായ ഉദ്ദേശ്യമുള്ളതും ആപ്ലിക്കേഷനുകൾക്ക് പരിചിതവുമായ പ്രധാന ഇനങ്ങൾ. ഡയഗ്രാമിൽ, ഗ്രൂപ്പ് മൂന്ന് ഇൻപുട്ട് പ്രധാന ഇനങ്ങൾ ചേർന്നതാണ്. ഈ ശേഖരത്തിന്, ഉപയോഗ ഇനം സൂചിപ്പിച്ചിരിക്കുന്നതുപോലെ നിയന്ത്രണങ്ങൾക്കായി നിർദ്ദേശിക്കപ്പെട്ട ഉപയോഗം ഒരു മൗസ് ആണ്. (3) ആപ്ലിക്കേഷനുകൾക്ക് ഒരൊറ്റ നിയന്ത്രണത്തിന്റെയോ നിയന്ത്രണങ്ങളുടെ ഗ്രൂപ്പിന്റെയോ ഉപയോഗത്തെക്കുറിച്ച് കൂടുതൽ വിശദാംശങ്ങൾ നൽകാൻ നെസ്റ്റഡ് ശേഖരങ്ങൾ ഉപയോഗിക്കാം. ഈ ഉദാഹരണത്തിൽample, കളക്ഷൻ ആപ്ലിക്കേഷനിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന കളക്ഷൻ ഫിസിക്കൽ, കളക്ഷൻ ആപ്ലിക്കേഷൻ രൂപപ്പെടുത്തുന്ന അതേ മൂന്ന് ഇൻപുട്ട് ഇനങ്ങൾ ചേർന്നതാണ്. ഒരു ജ്യാമിതീയ പോയിന്റിൽ ശേഖരിച്ച ഡാറ്റ പോയിന്റുകളെ പ്രതിനിധീകരിക്കുന്ന ഒരു കൂട്ടം ഡാറ്റ ഇനങ്ങൾക്ക് കളക്ഷൻ ഫിസിക്കൽ ഉപയോഗിക്കുന്നു. ഉദാഹരണത്തിന്ample, നിർദ്ദേശിച്ച ഉപയോഗം ഉപയോഗ ഇനം സൂചിപ്പിക്കുന്നത് പോലെ ഒരു പോയിന്ററാണ്. ഇവിടെ പോയിന്റർ ഉപയോഗം മൗസ് സ്ഥാന കോർഡിനേറ്റുകളെ സൂചിപ്പിക്കുന്നു, കൂടാതെ സിസ്റ്റം സോഫ്റ്റ്‌വെയർ സ്‌ക്രീൻ കഴ്‌സറിന്റെ ചലനത്തിൽ മൗസ് കോർഡിനേറ്റുകളെ വിവർത്തനം ചെയ്യും. (4) നെസ്റ്റഡ് ഉപയോഗ പേജുകളും സാധ്യമാണ് കൂടാതെ ഉപകരണത്തിന്റെ പൊതുവായ പ്രവർത്തനത്തിനുള്ളിലെ ഒരു പ്രത്യേക വശത്തെക്കുറിച്ച് കൂടുതൽ വിശദാംശങ്ങൾ നൽകുന്നു. ഈ സാഹചര്യത്തിൽ, രണ്ട് ഇൻപുട്ട് ഇനങ്ങൾ ഗ്രൂപ്പുചെയ്‌തിരിക്കുന്നു, മൗസിന്റെ ബട്ടണുകളുമായി പൊരുത്തപ്പെടുന്നു. ഒരു ഇൻപുട്ട് ഇനം ഇനത്തിനായുള്ള ഡാറ്റ ഫീൽഡുകളുടെ എണ്ണം (റിപ്പോർട്ട് കൗണ്ട് ഇനം), ഒരു ഡാറ്റ ഫീൽഡിന്റെ വലുപ്പം (റിപ്പോർട്ട് വലുപ്പ ഇനം), ഓരോ ഡാറ്റ ഫീൽഡിനുമുള്ള സാധ്യമായ മൂല്യങ്ങൾ (ഉപയോഗ മിനിമം, മാക്സിമം, ലോജിക്കൽ മിനിമം, മാക്സിമം ഇനങ്ങൾ) എന്നിവയുടെ അടിസ്ഥാനത്തിൽ മൗസിന്റെ മൂന്ന് ബട്ടണുകളെ (വലത്, ഇടത്, ചക്രം) നിർവചിക്കുന്നു. മറ്റൊരു ഇൻപുട്ട് ഇനം ഇൻപുട്ട് റിപ്പോർട്ട് ഡാറ്റ ഒരു ബൈറ്റ് അതിർത്തിയിൽ വിന്യസിക്കാൻ അനുവദിക്കുന്ന 13-ബിറ്റ് സ്ഥിരാങ്കമാണ്. ഈ ഇൻപുട്ട് ഇനം പാഡിംഗ് ആവശ്യത്തിനായി മാത്രമാണ് ഉപയോഗിക്കുന്നത്. (5) ഒരു പൊതുവായ ഡെസ്‌ക്‌ടോപ്പ് നിയന്ത്രണത്തെ പരാമർശിക്കുന്ന മറ്റൊരു നെസ്റ്റഡ് ഉപയോഗ പേജ് മൗസ് സ്ഥാന കോർഡിനേറ്റുകൾക്ക് നിർവചിച്ചിരിക്കുന്നു. ഈ ഉപയോഗ പേജിനായി, ഇൻപുട്ട് ഇനം രണ്ട് ഉപയോഗ നിബന്ധനകൾ വ്യക്തമാക്കിയ x- നും y- അക്ഷത്തിനും അനുയോജ്യമായ ഡാറ്റ ഫീൽഡുകളെ വിവരിക്കുന്നു.
ഇനങ്ങൾ.
മുൻ മൗസ് റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ ഉള്ളടക്കം വിശകലനം ചെയ്ത ശേഷം, ഹോസ്റ്റ്9s HID പാഴ്‌സറിന് ഉപകരണം അയച്ച ഇൻപുട്ട് റിപ്പോർട്ട് ഡാറ്റയെ ഒരു ഇന്ററപ്റ്റ് IN ട്രാൻസ്ഫർ വഴിയോ അല്ലെങ്കിൽ ഒരു GET_REPORT അഭ്യർത്ഥനയ്ക്കുള്ള പ്രതികരണമായോ വ്യാഖ്യാനിക്കാൻ കഴിയും. മൗസുമായി ബന്ധപ്പെട്ട ഇൻപുട്ട് റിപ്പോർട്ട് ഡാറ്റ ചിത്രം - ഒരു ഹോസ്റ്റ് HID പാഴ്‌സറിൽ നിന്നുള്ള റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ ഉള്ളടക്കം എന്നിവയിൽ കാണിച്ചിരിക്കുന്നു. View is

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

32/174

കഴിഞ്ഞുview

താഴെയുള്ള പട്ടികയിൽ കാണിച്ചിരിക്കുന്നു. റിപ്പോർട്ട് ഡാറ്റയുടെ ആകെ വലുപ്പം 4 ബൈറ്റുകളാണ്. വ്യത്യസ്ത തരം റിപ്പോർട്ടുകൾ ഒരേ എൻഡ്‌പോയിന്റിലൂടെ അയച്ചേക്കാം. വ്യത്യസ്ത തരം റിപ്പോർട്ടുകൾ വേർതിരിച്ചറിയാൻ, ഡാറ്റ റിപ്പോർട്ടിൽ ഒരു 1-ബൈറ്റ് റിപ്പോർട്ട് ഐഡി പ്രിഫിക്സ് ചേർത്തിരിക്കുന്നു. ഉദാഹരണത്തിൽ ഒരു റിപ്പോർട്ട് ഐഡി ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽampമൗസ് റിപ്പോർട്ടിന്റെ le, റിപ്പോർട്ട് ഡാറ്റയുടെ ആകെ വലുപ്പം 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 (ഇന്ററപ്റ്റ് OUT എൻഡ്‌പോയിന്റ് പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ 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 ക്ലാസ് ആപ്ലിക്കേഷൻ-നിർദ്ദിഷ്ട കോൺഫിഗറേഷനുകൾ

ആദ്യം, സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഡിവൈസ് എച്ച്ഐഡി ക്ലാസ് മൊഡ്യൂൾ ഉപയോഗിക്കുന്നതിന്, നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ആവശ്യങ്ങൾക്കനുസരിച്ച് എച്ച്ഐഡി കംപൈൽ-ടൈം കോൺഫിഗറേഷൻ നിർവചനങ്ങൾ ക്രമീകരിക്കുക. അവ sl_usbd_core_config.h ഹെഡറിനുള്ളിൽ പുനഃക്രമീകരിക്കപ്പെടുന്നു. file HID വിഭാഗത്തിന് കീഴിൽ. അവയെ ക്വാണ്ടിറ്റേറ്റീവ് കോൺഫിഗറേഷനുകൾ എന്നും 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_ ഐഡി_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() എന്ന് ടൈപ്പ് ചെയ്യുക.
കോൺഫിഗറേഷനുകളുടെ എണ്ണം. sl_usbd_hid_add_to_configuration() എന്ന ഫംഗ്ഷനിലെ ഒന്നോ അതിലധികമോ aaaa കോൺഫിഗറേഷനുകളിലേക്ക് HID ക്ലാസ് ഇൻസ്റ്റൻസുകൾ ചേർക്കാൻ കഴിയും. അനുവദിക്കേണ്ട റിപ്പോർട്ട് ഐഡികളുടെ ആകെ എണ്ണം കോൺഫിഗർ ചെയ്യുന്നു.
അനുവദിക്കേണ്ട പുഷ്/പോപ്പ് ഇനങ്ങളുടെ ആകെ എണ്ണം കോൺഫിഗർ ചെയ്യുന്നു.
ടൈമർ ടാസ്‌ക് എല്ലാ ടൈമർ അടിസ്ഥാനമാക്കിയുള്ള HID പ്രവർത്തനങ്ങളും കൈകാര്യം ചെയ്യുന്നു. ഈ കോൺഫിഗറേഷൻ സ്റ്റാക്ക് വലുപ്പം (ബൈറ്റുകളുടെ എണ്ണത്തിൽ) സജ്ജമാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. HID ടാസ്‌ക്കിന്റെ മുൻഗണന. ഇത് ഒരു CMSIS-RTOS2 മുൻഗണനയാണ്.

ഡിഫോൾട്ട് മൂല്യം
2 1 2 0 2048
osPriorityHigh (ഓസ്പ്രയോറിറ്റിഹൈ)

USB ഡിവൈസ് HID ക്ലാസ് ഇൻസ്റ്റൻസ് കോൺഫിഗറേഷനുകൾ ക്ലാസ് ഇൻസ്റ്റൻസ് ക്രിയേഷൻ സബ്ക്ലാസ്
പ്രോട്ടോക്കോൾ കൺട്രി_കോഡ്
interval_in ഉം interval_out ഉം p_hid_callback HID ക്ലാസ് റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ എക്സ്ample ഈ വിഭാഗം 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_ഒന്നുമില്ല SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_മൗസ്
നിങ്ങളുടെ HID ഫംഗ്ഷൻ ഒരു മൗസ് ആണെങ്കിൽ, പ്രോട്ടോക്കോൾ aa SL_USBD_HID_PROTOCOL_MOUSE ആയി സജ്ജീകരിക്കണം. അത് കീബോർഡ് ആണെങ്കിൽ, അത് O SL_USBD_HID_PROTOCOL_KBD ആയി സജ്ജീകരിക്കണം. മറുവശത്ത്, പ്രോട്ടോക്കോൾ SL_USBD_HID_PROTOCOL_NONE ആയി സജ്ജീകരിക്കണം. സബ്ക്ലാസ് കോഡുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, HID സ്പെസിഫിക്കേഷൻ റിവിഷൻ 1.11 ലെ സെക്ഷൻ 4.3 കാണുക.
രാജ്യ കോഡ്
രാജ്യ കോഡിന്റെ ഐഡി. സാധ്യമായ മൂല്യങ്ങൾ ഇവയാണ്:
SL_USBD_HID_CONDRY_CODE_പിന്തുണയ്ക്കുന്നില്ല

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

34/174

കഴിഞ്ഞുview
SL_USBD_HID_CODE_ARABIC SL_USBD_HID_COUNTRY_CODE_BELGIAN SL_USBD_HID_COUNTRY_CODE_CANADIAN_BILINGUAL 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_COUNTRY_CODE_GERMAN SL_USBD_HID_COUNTRY_CODE_GREEW SL_USBD_HID_COUNTRY_CODE_HUNGARY SL_USBD_HID_COUNTRY_CODE_INTERNATIONAL SL_USBD_HID_CODE_ITALIAN SL_USBD_HID_CONDRY_CODE_JAPAN_KATAKANA SL_USBD_HID_CODE_COREAN SL_USBD_HID_CODE_KOREAN SL_USBD_HID_CONDRY_CODE_NETHERL ANDS_DUTCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PERSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL AND SL_USBD_HID_COUNTRY_CODE_POL AND SL_USBD_HID_COUNTRY_CODE_PORTUGUESE SL_USBD_HID_COUNTRY_CODE_RUSSIA 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_CODE_SWISS_GERMAN SL_USBD_HID_COUNTRY_CODE_SWITZERL ഉം SL_USBD_HID_COUNTRY_CODE_TAIWAN SL_USBD_HID_COUNTRY_CODE_TURKISH_Q SL_USBD_HID_COUNTRY_CODE_USUG OSL AVIA SL_USBD_HID_COUNTRY_CODE_TURKISH_F
ഹാർഡ്‌വെയർ ഏത് രാജ്യത്തേക്കാണ് പ്രാദേശികവൽക്കരിച്ചിരിക്കുന്നതെന്ന് രാജ്യ കോഡ് തിരിച്ചറിയുന്നു. മിക്ക ഹാർഡ്‌വെയറുകളും പ്രാദേശികവൽക്കരിച്ചിട്ടില്ല, അതിനാൽ ഈ അനുമതി SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED (0) ആയിരിക്കും. എന്നിരുന്നാലും, കീബോർഡ് കീ ക്യാപ്പുകളുടെ ഭാഷ സൂചിപ്പിക്കാൻ ഫീൽഡ് ഉപയോഗിക്കുന്നു.
രാജ്യ കോഡുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, HID സ്പെസിഫിക്കേഷൻ റിവിഷൻ 1.11-ന്റെ സെക്ഷൻ 6.2.1 കാണുക.
interval_in ഉം interval_out ഉം
interval_in ഉം interval_out ഉം IN ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റിന്റെയും OUT ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റിന്റെയും പോളിംഗ് ഇടവേളയെ പ്രതിനിധീകരിക്കുന്നു.
ഇത് മില്ലിസെക്കൻഡുകളിൽ എൻഡ്‌പോയിന്റിന്റെ പോളിംഗ് ഇടവേളയെ പ്രതിനിധീകരിക്കുന്നു. ഈ മൂല്യം സജ്ജീകരിക്കുന്നത് നിങ്ങളുടെ ഉപകരണം ഹോസ്റ്റിനായി ഒരു പുതിയ റിപ്പോർട്ട് സൃഷ്ടിക്കാൻ എത്ര തവണ സാധ്യതയുണ്ട് എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു. ഉദാഹരണത്തിന്, ഓരോ 16 മില്ലിസെക്കൻഡിലും ഒരു റിപ്പോർട്ട് ജനറേറ്റ് ചെയ്യുകയാണെങ്കിൽ, ഇടവേള 16 അല്ലെങ്കിൽ അതിൽ കുറവായിരിക്കണം.
മൂല്യം 2 ന്റെ ഒരു പവർ ആയിരിക്കണം (1, 2, 4, 8, 16, മുതലായവ).
ctrl_rd_en എന്നത് true ആയി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ interval_out v lue അവഗണിക്കപ്പെടും.
p_hid_callback
aaaa p_hid_callback എന്നത് sl_usbd_hid_callbacks_t എന്ന തരത്തിന്റെ ഘടനയിലേക്കുള്ള പോയിന്ററാണ്. ഒരു HID ഇവന്റ് സംഭവിക്കുമ്പോൾ വിളിക്കേണ്ട കോൾബാക്ക് ഫംഗ്ഷനുകളുടെ HID Cl ss സെറ്റ് നൽകുക എന്നതാണ് ഇതിന്റെ ഉദ്ദേശ്യം.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

35/174

കഴിഞ്ഞുview

എല്ലാ കോൾബാക്കുകളും നിർബന്ധമല്ല, കോൾബാക്ക് ആവശ്യമില്ലാത്തപ്പോൾ കോൾബാക്ക് ഘടന വേരിയബിളിൽ ഒരു നൾ പോയിന്റർ ( NULL ) കൈമാറാൻ കഴിയും. താഴെയുള്ള പട്ടിക ഈ കോൺഫിഗറേഷൻ ഘടനയിൽ ലഭ്യമായ ഓരോ കോൺഫിഗറേഷൻ ഫീൽഡും വിവരിക്കുന്നു.
പട്ടിക – sl_usbd_hid_callbacks_t കോൺഫിഗറേഷൻ ഘടന

വയലുകൾ

വിവരണം

ഫംഗ്ഷൻ സിഗ്നേച്ചർ

.പ്രാപ്തമാക്കുക .പ്രവർത്തനരഹിതമാക്കുക .get_report_desc
.ഗെറ്റ്_ഫൈ_ഡെസ്ക്
.സെറ്റ്_ഔട്ട്പുട്ട്_റിപ്പോർട്ട് .ഗെറ്റ്_ഫീച്ചർ_റിപ്പോർട്ട് .സെറ്റ്_ഫീച്ചർ_റിപ്പോർട്ട്

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);
അസാധുവായ 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_s

.പ്രോട്ടോക്കോൾ നേടുക

നിലവിലെ സജീവ പ്രോട്ടോക്കോൾ വീണ്ടെടുക്കുന്നു.

അസാധുവായ app_usbd_hid_get_protocol(uint8_t class_nbr, uint8_t *p_protocol);

.സെറ്റ്_പ്രോട്ടോക്കോൾ

നിലവിലെ സജീവ പ്രോട്ടോക്കോൾ സജ്ജമാക്കുന്നു.

അസാധുവായ app_usbd_hid_set_protocol(uint8_t class_nbr, uint8_t പ്രോട്ടോക്കോൾ);

HID ക്ലാസ് റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ എക്സ്ample

സിലിക്കൺ ലാബ്സിന്റെ HID ക്ലാസുകൾample അപേക്ഷ ഒരു മുൻകൂർ നൽകുന്നുampഒരു ലളിതമായ മൗസിനുള്ള റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്ററിന്റെ le. ഉദാ.ampതാഴെയുള്ള le ഒരു മൗസ് റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ കാണിക്കുന്നു.
Example – മൗസ് റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ

സ്റ്റാറ്റിക് 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_മൗസ്,

(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_മിനിറ്റ് +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_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_VARIABLE |

SL_USBD_HID_MAIN_RELATIVE, (LTD)

SL_USBD_HID_MAIN_ENDശേഖരം,(10)

SL_USBD_HID_MAIN_ENDശേഖരം

(11)};

(1) ഒരു മൗസ് റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്ററിനെ പ്രതിനിധീകരിക്കുന്ന പട്ടിക ഓരോ വരിയും ഒരു ചെറിയ ഇനവുമായി പൊരുത്തപ്പെടുന്ന വിധത്തിൽ ഇനീഷ്യലൈസ് ചെയ്തിരിക്കുന്നു. രണ്ടാമത്തേത് 1-ബൈറ്റ് പ്രിഫിക്സിൽ നിന്നും 1-ബൈറ്റ് ഡാറ്റയിൽ നിന്നും രൂപപ്പെടുത്തിയിരിക്കുന്നു. റഫർ ചെയ്യുക viewചിത്രം - ഒരു ഹോസ്റ്റ് HID പാഴ്‌സറിൽ നിന്നുള്ള ഡിസ്ക്രിപ്റ്റർ ഉള്ളടക്കം റിപ്പോർട്ട് ചെയ്യുക - ഒരു ഹോസ്റ്റ് HID പാഴ്‌സറിൽ നിന്നുള്ള ഒരു ഹോസ്റ്റ് HID പാഴ്‌സർ എഡിറ്റ് ചെയ്‌തു. View.
(2) ജനറിക് ഡെസ്ക്ടോപ്പ് ഉപയോഗ പേജ് ഉപയോഗിക്കുന്നു.
(3) ജനറിക് ഡെസ്ക്ടോപ്പ് ഉപയോഗ പേജിനുള്ളിൽ, ഉപയോഗം tag ഒരു മൗസിനെ നിയന്ത്രിക്കുന്നതിനാണ് നിയന്ത്രണങ്ങളുടെ ഗ്രൂപ്പ് എന്ന് സൂചിപ്പിക്കുന്നു. ഒരു മൗസ് ശേഖരത്തിൽ സാധാരണയായി രണ്ട് അക്ഷങ്ങളും (X ഉം Y ഉം) ഒന്ന്, രണ്ട്, അല്ലെങ്കിൽ മൂന്ന് ബട്ടണുകളും അടങ്ങിയിരിക്കുന്നു.
(4) മൗസ് ശേഖരണം ആരംഭിച്ചു.
(5) മൗസ് ശേഖരത്തിനുള്ളിൽ, ഒരു ഉപയോഗം tag മൗസ് നിയന്ത്രണങ്ങൾ പോയിന്റർ ശേഖരത്തിൽ പെട്ടതാണെന്ന് കൂടുതൽ വ്യക്തമായി സൂചിപ്പിക്കുന്നു. ഒരു ആപ്ലിക്കേഷനിലേക്ക് ഉപയോക്തൃ ഉദ്ദേശ്യങ്ങൾ നയിക്കാനോ സൂചിപ്പിക്കാനോ പോയിന്റ് ചെയ്യാനോ ഒരു മൂല്യം സൃഷ്ടിക്കുന്ന അക്ഷങ്ങളുടെ ഒരു ശേഖരമാണ് പോയിന്റർ ശേഖരം.
(6) പോയിന്റർ ശേഖരണം ആരംഭിച്ചു.
(7) ബട്ടണുകളുടെ ഉപയോഗ പേജ് മൂന്ന് 1-ബിറ്റ് ഫീൽഡുകൾ അടങ്ങിയ ഒരു ഇൻപുട്ട് ഇനത്തെ നിർവചിക്കുന്നു. ഓരോ 1-ബിറ്റ് ഫീൽഡും യഥാക്രമം മൗസിന്റെ ബട്ടൺ 1, 2, 3 എന്നിവയെ പ്രതിനിധീകരിക്കുന്നു, കൂടാതെ 0 അല്ലെങ്കിൽ 1 എന്ന മൂല്യം നൽകാനും കഴിയും.
(8) ബട്ടണുകളുടെ ഉപയോഗ പേജിനുള്ള ഇൻപുട്ട് ഇനം മറ്റ് 13 ബിറ്റുകൾക്കൊപ്പം പാഡ് ചെയ്തിരിക്കുന്നു.
(9) X, Y എന്നീ അക്ഷങ്ങൾ ഉപയോഗിച്ച് മൗസിന്റെ സ്ഥാനം വിവരിക്കുന്നതിന് മറ്റൊരു സാമാന്യ ഡെസ്ക്ടോപ്പ് ഉപയോഗ പേജ് സൂചിപ്പിച്ചിരിക്കുന്നു. ഇൻപുട്ട് ഇനം -127 നും 127 നും ഇടയിൽ മൂല്യം വരുന്ന രണ്ട് 8-ബിറ്റ് ഫീൽഡുകൾ ഉൾക്കൊള്ളുന്നു.
(10) പോയിന്റർ ശേഖരം അടച്ചിരിക്കുന്നു.
(11) മൗസ് ശേഖരം അടച്ചിരിക്കുന്നു.
USB.org HID പേജ്

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

37/174

കഴിഞ്ഞുview
യുഎസ്ബി ഇംപ്ലിമെന്റേഴ്‌സ് ഫോറം (യുഎസ്ബി-ഐഎഫ്) റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്റർ ഫോർമാറ്റിനെക്കുറിച്ചുള്ള മറ്റ് വിവരങ്ങൾക്കൊപ്പം “എച്ച്ഐഡി ഡിസ്ക്രിപ്റ്റർ ടൂൾ” എന്നൊരു ടൂൾ നൽകുന്നു. കൂടുതൽ വിവരങ്ങൾക്ക് http://www.usb.org/developers/hidpage/ കാണുക.
USB ഡിവൈസ് HID ക്ലാസ് പ്രോഗ്രാമിംഗ് ഗൈഡ്
ഈ വിഭാഗം HID ക്ലാസ് എങ്ങനെ ഉപയോഗിക്കാമെന്ന് വിശദീകരിക്കുന്നു. USB ഡിവൈസ് HID ക്ലാസ് ആരംഭിക്കുന്നു നിങ്ങളുടെ ഡിവൈസിലേക്ക് ഒരു USB ഡിവൈസ് HID ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു USB ഡിവൈസ് HID ക്ലാസ് ഉപയോഗിച്ച് ആശയവിനിമയം നടത്തുന്നു
USB ഡിവൈസ് HID ക്ലാസ് ആരംഭിക്കുന്നു
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് HID ക്ലാസ് പ്രവർത്തനം ചേർക്കാൻ, നിങ്ങൾ ആദ്യം sl_usbd_hid_init() എന്ന ഫംഗ്‌ഷൻ വിളിച്ച് ക്ലാസ് ആരംഭിക്കണം. ഉദാ.ampഡിഫോൾട്ട് ആർഗ്യുമെന്റുകൾ ഉപയോഗിച്ച് sl_usbd_hid_init() എങ്ങനെ വിളിക്കാമെന്ന് താഴെ കാണിച്ചിരിക്കുന്നു. sl_usbd_hid_init() ലേക്ക് കൈമാറേണ്ട കോൺഫിഗറേഷൻ ആർഗ്യുമെന്റുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, USB ഡിവൈസ് HID ക്ലാസ് ആപ്ലിക്കേഷൻ നിർദ്ദിഷ്ട കോൺഫിഗറേഷനുകൾ കാണുക.
Example – sl_usbd_hid_init() എന്ന് വിളിക്കുന്നു
sl_status_t സ്റ്റാറ്റസ്;
status = sl_usbd_hid_init(); if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */
}
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് ഒരു USB ഡിവൈസ് HID ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു.
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് HID ക്ലാസ് പ്രവർത്തനം ചേർക്കുന്നതിന്, നിങ്ങൾ ഒരു ഉദാഹരണം സൃഷ്ടിക്കണം, തുടർന്ന് അത് നിങ്ങളുടെ ഉപകരണത്തിന്റെ കോൺഫിഗറേഷനിലേക്ക്(കളിലേക്ക്) ചേർക്കണം.
ഒരു HID ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുന്നു
sl_usbd_hid_create_instance() എന്ന ഫംഗ്‌ഷനെ വിളിച്ച് ഒരു HID ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുക. ഉദാ.ampഡിഫോൾട്ട് ആർഗ്യുമെന്റുകൾ ഉപയോഗിച്ച് sl_usbd_hid_create_instance() വഴി ഒരു ലളിതമായ മൗസ് ഫംഗ്ഷൻ എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് ചുവടെ കാണിച്ചിരിക്കുന്നു. sl_usbd_hid_create_instance() ലേക്ക് കൈമാറേണ്ട കോൺഫിഗറേഷൻ ആർഗ്യുമെന്റുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, USB ഡിവൈസ് HID ക്ലാസ് ഇൻസ്റ്റൻസ് കോൺഫിഗറേഷനുകൾ കാണുക.
Example – sl_usbd_hid_create_instance() വഴി ഒരു മൗസ് ഫംഗ്ഷൻ ചേർക്കുന്നു.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

38/174

കഴിഞ്ഞുview
/* ഗ്ലോബൽ കോൺസ്റ്റന്റുകൾ. */ സ്റ്റാറ്റിക് കോൺസ്റ്റ് 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_MAIN_COLLECTION + 1, 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_PHYSICAL, SL_USBD_HID_GLOBAL_USAGE_PAGE + 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_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, SL_USBD_HID_GLOBAL_REPORT_SIZE + 1, 0 0D, SL_USBD_HID_MAIN_INPUT + 1, SL_USBD_HID_MAIN_CONSTANT, 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, 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, NULL };
അസാധുവായ app_usbd_hid_get_report_desc(uint8_t class_nbr, const uint8_t **p_report_ptr, uint16_t *p_report_len)
{ (ശൂന്യം)ക്ലാസ്_എൻ‌ബി‌ആർ;
*p_report_ptr = app_usbd_hid_mouse_report_desc; *p_report_len = sizeof(app_usbd_hid_mouse_report_desc); }
സ്റ്റാറ്റസ് = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_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() എന്ന് ടൈപ്പ് ചെയ്യുക.
മുൻampsl_usbd_hid_add_to_configuration() എങ്ങനെ വിളിക്കാമെന്ന് താഴെ കാണിച്ചിരിക്കുന്നു.
Example – sl_usbd_hid_add_to_configuration() വിളിക്കുന്നു

sl_status_t സ്റ്റാറ്റസ്;

sl_usbd_hid_add_to_configuration(ക്ലാസ്_എൻ‌ബി‌ആർ,

(1)

കോൺഫിഗ്_എൻ‌ബ്ര_എഫ്‌എസ്); (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() എന്ന് ടൈപ്പ് ചെയ്യുക

പ്രവർത്തനം ഇന്ററപ്റ്റ് ഔട്ട് എൻഡ്‌പോയിന്റ് വഴി ഹോസ്റ്റിൽ നിന്ന് ഡാറ്റ സ്വീകരിക്കുന്നു. ഈ ഫംഗ്ഷൻ തടയുന്നു. ഇന്ററപ്റ്റ് IN എൻഡ്‌പോയിന്റ് വഴി ഹോസ്റ്റിലേക്ക് ഡാറ്റ അയയ്ക്കുന്നു. ഈ ഫംഗ്ഷൻ ബ്ലോക്കിംഗ് ചെയ്യുന്നു.

സിൻക്രണസ് കമ്മ്യൂണിക്കേഷൻ സിൻക്രണസ് കമ്മ്യൂണിക്കേഷൻ എന്നാൽ കൈമാറ്റം തടയപ്പെടുന്നു എന്നാണ്. ഫംഗ്ഷൻ കോളിൽ, ഒരു പിശകോടെയോ അല്ലാതെയോ കൈമാറ്റം പൂർത്തിയാകുന്നതുവരെ ആപ്ലിക്കേഷനുകൾ തടയുന്നു. എന്നെന്നേക്കുമായി കാത്തിരിക്കുന്നത് ഒഴിവാക്കാൻ ഒരു ടൈംഔട്ട് വ്യക്തമാക്കാം. ഉദാ.ampഇന്ററപ്റ്റ് OUT എൻഡ്‌പോയിന്റ് ഉപയോഗിച്ച് ഹോസ്റ്റിൽ നിന്ന് ഡാറ്റ സ്വീകരിക്കുകയും ഇന്ററപ്റ്റ് IN എൻഡ്‌പോയിന്റ് ഉപയോഗിച്ച് ഹോസ്റ്റിലേക്ക് ഡാറ്റ അയയ്ക്കുകയും ചെയ്യുന്ന ഒരു റീഡ് ആൻഡ് റൈറ്റ് പ്രക്രിയയാണ് le താഴെ കൊടുത്തിരിക്കുന്നത്.
Example – സിൻക്രണസ് HID വായനയും എഴുത്തും

__അലൈൻ ചെയ്‌തത്(4) uint8_t rx_buf[2];

__അലൈൻ ചെയ്‌തത്(4) uint8_t tx_buf[2];

uint32_t

എക്സ്ഫെർ_ലെൻ;

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() ൽ നിന്ന് സൃഷ്ടിച്ച ക്ലാസ് ഇൻസ്റ്റൻസ് നമ്പർ, ട്രാൻസ്ഫറിനെ ശരിയായ ഇന്ററപ്റ്റ് OUT അല്ലെങ്കിൽ IN എൻഡ്‌പോയിന്റിലേക്ക് റൂട്ട് ചെയ്യുന്നതിനായി HID ക്ലാസിനുള്ള ഒരു ആന്തരിക റഫറൻസ് നൽകുന്നു.
(2) ഫംഗ്ഷനിൽ നൽകിയിരിക്കുന്ന ബഫർ എല്ലാ ഡാറ്റയും ഉൾക്കൊള്ളാൻ പര്യാപ്തമാണെന്ന് ആപ്ലിക്കേഷൻ ഉറപ്പാക്കണം. അല്ലെങ്കിൽ, സിൻക്രൊണൈസേഷൻ പ്രശ്നങ്ങൾ ഉണ്ടാകാം. ആന്തരികമായി, sl_usbd_hid_create_instance() വിളിക്കുമ്പോൾ കൺട്രോൾ റീഡ് ഫ്ലാഗ് സെറ്റ് അനുസരിച്ച്, കൺട്രോൾ എൻഡ്‌പോയിന്റ് ഉപയോഗിച്ചോ ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റ് ഉപയോഗിച്ചോ റീഡ് പ്രവർത്തനം നടത്തുന്നു.
(3) അനന്തമായ തടയൽ സാഹചര്യം ഒഴിവാക്കാൻ, മില്ലിസെക്കൻഡുകളിൽ പ്രകടിപ്പിക്കുന്ന ഒരു ടൈംഔട്ട് വ്യക്തമാക്കാം. 809 എന്ന മൂല്യം ആപ്ലിക്കേഷൻ ടാസ്‌ക്കിനെ എന്നെന്നേക്കുമായി കാത്തിരിക്കാൻ പ്രേരിപ്പിക്കുന്നു.
(4) ആപ്ലിക്കേഷൻ ഇനീഷ്യലൈസ് ചെയ്ത ട്രാൻസ്മിറ്റ് ബഫർ നൽകുന്നു.
HID പീരിയോഡിക് ഇൻപുട്ട് റിപ്പോർട്ട് ടാസ്‌ക്
ബാൻഡ്‌വിഡ്ത്ത് ലാഭിക്കുന്നതിന്, റിപ്പോർട്ടിംഗ് ഫ്രീക്വൻസി പരിമിതപ്പെടുത്തിക്കൊണ്ട് ഒരു ഇന്ററപ്റ്റ് IN എൻഡ്‌പോയിന്റിൽ നിന്നുള്ള റിപ്പോർട്ടുകൾ നിശബ്ദമാക്കാൻ ഹോസ്റ്റിന് കഴിയും. അങ്ങനെ ചെയ്യുന്നതിന്, ഹോസ്റ്റ് SET_IDLE അഭ്യർത്ഥന അയയ്ക്കണം. സിലിക്കൺ ലാബ്‌സ് നടപ്പിലാക്കിയ HID ക്ലാസിൽ, ഒന്നോ അതിലധികമോ ഇൻപുട്ട് റിപ്പോർട്ടുകളിൽ നിങ്ങൾക്ക് പ്രയോഗിക്കാൻ കഴിയുന്ന റിപ്പോർട്ടിംഗ് ഫ്രീക്വൻസി പരിമിതിയെ മാനിക്കുന്ന ഒരു ആന്തരിക ടാസ്‌ക് അടങ്ങിയിരിക്കുന്നു. ചിത്രം പീരിയോഡിക് ഇൻപുട്ട് റിപ്പോർട്ട്സ് ടാസ്‌ക് പീരിയോഡിക് ഇൻപുട്ട് റിപ്പോർട്ട്സ് ടാസ്‌ക് പ്രവർത്തനക്ഷമത കാണിക്കുന്നു.
ചിത്രം – പീരിയോഡിക് ഇൻപുട്ട് റിപ്പോർട്ട് ടാസ്‌ക്

(1) ഉപകരണത്തിന് ഒരു SET_IDLE അഭ്യർത്ഥന ലഭിക്കുന്നു. നൽകിയിരിക്കുന്ന റിപ്പോർട്ട് ഐഡിക്ക് ഈ അഭ്യർത്ഥന ഒരു നിഷ്‌ക്രിയ ദൈർഘ്യം വ്യക്തമാക്കുന്നു. SET_IDLE അഭ്യർത്ഥനയെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, കാണുക
(2) HID ക്ലാസ് ഇനീഷ്യലൈസേഷൻ ഘട്ടത്തിൽ അനുവദിച്ച ഒരു റിപ്പോർട്ട് ഐഡി ഘടന, നിഷ്‌ക്രിയ ദൈർഘ്യം ഉപയോഗിച്ച് അപ്‌ഡേറ്റ് ചെയ്യുന്നു. നിഷ്‌ക്രിയ ദൈർഘ്യ മൂല്യം ഉപയോഗിച്ച് ഒരു നിഷ്‌ക്രിയ ദൈർഘ്യ കൗണ്ടർ സമാരംഭിക്കുന്നു. ഇൻപുട്ട് റിപ്പോർട്ടുകൾ ഐഡി ഘടനകൾ അടങ്ങിയ ഒരു ലിങ്ക് ചെയ്‌ത ലിസ്റ്റിന്റെ അവസാനം റിപ്പോർട്ട് ഐഡി ഘടന ചേർത്തിരിക്കുന്നു. നിഷ്‌ക്രിയ ദൈർഘ്യ മൂല്യം 4-ms യൂണിറ്റിൽ പ്രകടിപ്പിക്കുന്നു, ഇത് 4 മുതൽ 1020 ms വരെ ശ്രേണി നൽകുന്നു.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

41/174

കഴിഞ്ഞുview
ഇന്ററപ്റ്റ് IN എൻഡ്‌പോയിന്റിന്റെ പോളിംഗ് ഇടവേളയേക്കാൾ നിഷ്‌ക്രിയ ദൈർഘ്യം കുറവാണെങ്കിൽ, പോളിംഗ് ഇടവേളയിൽ റിപ്പോർട്ടുകൾ സൃഷ്ടിക്കപ്പെടും.
(3) ഓരോ 4 ms-ലും, പീരിയോഡിക് ഇൻപുട്ട് റിപ്പോർട്ട് ടാസ്‌ക് ഇൻപുട്ട് റിപ്പോർട്ട് ഐഡി ലിസ്റ്റ് ബ്രൗസ് ചെയ്യുന്നു. ഓരോ ഇൻപുട്ട് റിപ്പോർട്ട് ഐഡിക്കും, ടാസ്‌ക് സാധ്യമായ രണ്ട് പ്രവർത്തനങ്ങളിൽ ഒന്ന് നിർവ്വഹിക്കുന്നു. ടാസ്‌ക് കാലയളവിന്റെ ദൈർഘ്യം നിഷ്‌ക്രിയ കാലയളവിനായി ഉപയോഗിക്കുന്ന 4-ms യൂണിറ്റുമായി പൊരുത്തപ്പെടുന്നു. ഹോസ്റ്റ് SET_IDLE അഭ്യർത്ഥനകളൊന്നും അയച്ചിട്ടില്ലെങ്കിൽ, ഇൻപുട്ട് റിപ്പോർട്ട് ഐഡി ലിസ്റ്റ് ശൂന്യമായിരിക്കും, കൂടാതെ ടാസ്‌കിന് പ്രോസസ്സ് ചെയ്യാൻ ഒന്നുമില്ല. 0-ൽ നിന്ന് വ്യത്യസ്തവും 0-ൽ കൂടുതലുള്ള നിഷ്‌ക്രിയ കാലയളവുള്ളതുമായ റിപ്പോർട്ട് ഐഡികൾ മാത്രമേ ടാസ്‌ക് പ്രോസസ്സുകൾ ചെയ്യുന്നുള്ളൂ.
(4) നൽകിയിരിക്കുന്ന ഒരു ഇൻപുട്ട് റിപ്പോർട്ട് ഐഡിക്ക്, നിഷ്‌ക്രിയ കാലയളവ് കഴിഞ്ഞോ എന്ന് ടാസ്‌ക് പരിശോധിക്കുന്നു. നിഷ്‌ക്രിയ കാലയളവ് കഴിഞ്ഞിട്ടില്ലെങ്കിൽ, കൗണ്ടർ കുറയ്ക്കുകയും ഹോസ്റ്റിലേക്ക് ഇൻപുട്ട് റിപ്പോർട്ട് അയയ്ക്കുകയും ചെയ്യുന്നില്ല.
(5) ഐഡൽ ദൈർഘ്യം കഴിഞ്ഞുപോയാൽ (അതായത്, ഐഡൽ ദൈർഘ്യ കൌണ്ടർ പൂജ്യത്തിലെത്തിയാൽ), ഇന്ററപ്റ്റ് IN എൻഡ്‌പോയിന്റ് വഴി sl_usbd_hid_write_sync() ഫംഗ്‌ഷൻ വിളിച്ച് ഹോസ്റ്റിലേക്ക് ഒരു ഇൻപുട്ട് റിപ്പോർട്ട് അയയ്ക്കുന്നു.
(6) റിപ്പോർട്ട് ഡിസ്ക്രിപ്റ്ററിൽ വിവരിച്ചിരിക്കുന്ന ഓരോ ഇൻപുട്ട് റിപ്പോർട്ടിനും അനുവദിച്ചിരിക്കുന്ന ഒരു ഇന്റേണൽ ഡാറ്റ ബഫറിൽ നിന്നാണ് ടാസ്‌ക് അയച്ച ഇൻപുട്ട് റിപ്പോർട്ട് ഡാറ്റ വരുന്നത്. ഒരു ആപ്ലിക്കേഷൻ ടാസ്‌കിന് ഒരു ഇൻപുട്ട് റിപ്പോർട്ട് അയയ്ക്കാൻ sl_usbd_hid_write_sync() ഫംഗ്‌ഷനെ വിളിക്കാൻ കഴിയും. ഇൻപുട്ട് റിപ്പോർട്ട് ഡാറ്റ അയച്ചതിനുശേഷം, sl_usbd_hid_write_sync() ഇപ്പോൾ അയച്ച ഡാറ്റ ഉപയോഗിച്ച് ഒരു ഇൻപുട്ട് റിപ്പോർട്ട് ഐഡിയുമായി ബന്ധപ്പെട്ട ഇന്റേണൽ ബഫർ അപ്‌ഡേറ്റ് ചെയ്യുന്നു. തുടർന്ന്, ഓരോ നിഷ്‌ക്രിയ കാലയളവ് കഴിഞ്ഞതിനുശേഷവും ആപ്ലിക്കേഷൻ ടാസ്‌ക് ഇന്റേണൽ ബഫറിലെ ഡാറ്റ അപ്‌ഡേറ്റ് ചെയ്യുന്നതുവരെയും പീരിയോഡിക് ഇൻപുട്ട് റിപ്പോർട്ട് ടാസ്‌ക് എല്ലായ്പ്പോഴും ഒരേ ഇൻപുട്ട് റിപ്പോർട്ട് ഡാറ്റ അയയ്ക്കുന്നു. പീരിയോഡിക് ഇൻപുട്ട് റിപ്പോർട്ട് ടാസ്‌ക് നടത്തുന്ന ട്രാൻസ്മിഷന്റെ കൃത്യമായ സമയത്ത് ഒരു പരിഷ്‌ക്കരണം സംഭവിക്കുന്ന സാഹചര്യത്തിൽ ഇൻപുട്ട് റിപ്പോർട്ട് ഐഡി ഡാറ്റയുടെ അഴിമതി ഒഴിവാക്കാൻ ചില ലോക്കിംഗ് സംവിധാനം ഉണ്ട്.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

42/174

കഴിഞ്ഞുview
കഴിഞ്ഞുview
യുഎസ്ബി ഡിവൈസ് എംഎസ്‌സി ക്ലാസ്
USB ഉപകരണ MSC ക്ലാസ് കഴിഞ്ഞുview കോർ USB ഡിവൈസിൽ നിന്നുള്ള USB ഡിവൈസ് MSC ക്ലാസ് റിസോഴ്‌സ് ആവശ്യകതകൾ MSC ക്ലാസ് കോൺഫിഗറേഷൻ USB ഡിവൈസ് MSC ക്ലാസ് പ്രോഗ്രാമിംഗ് ഗൈഡ് USB ഡിവൈസ് MSC ക്ലാസ് സ്റ്റോറേജ് ഡ്രൈവറുകൾ
സിലിക്കൺ ലാബ്‌സ് യുഎസ്ബി ഡിവൈസ് പിന്തുണയ്ക്കുന്ന മാസ് സ്റ്റോറേജ് ഡിവൈസ് ക്ലാസ് (എംഎസ്‌സി) ഈ വിഭാഗം വിവരിക്കുന്നു. ഒരു യുഎസ്ബി ഡിവൈസിനും ഹോസ്റ്റിനും ഇടയിൽ വിവരങ്ങൾ കൈമാറാൻ പ്രാപ്തമാക്കുന്ന ഒരു പ്രോട്ടോക്കോളാണ് എംഎസ്‌സി. എക്സിക്യൂട്ടബിൾ പ്രോഗ്രാമുകൾ, സോഴ്‌സ് കോഡ്, ഡോക്യുമെന്റുകൾ, ഇമേജുകൾ, കോൺഫിഗറേഷൻ ഡാറ്റ, അല്ലെങ്കിൽ മറ്റ് ടെക്സ്റ്റ് അല്ലെങ്കിൽ സംഖ്യാ ഡാറ്റ എന്നിവ പോലുള്ള ഇലക്ട്രോണിക് ആയി സംഭരിക്കാൻ കഴിയുന്ന എന്തും കൈമാറ്റം ചെയ്യപ്പെടുന്ന വിവരങ്ങളാണ്. യുഎസ്ബി ഉപകരണം ഹോസ്റ്റിലേക്ക് ഒരു ബാഹ്യ സംഭരണ ​​മാധ്യമമായി ദൃശ്യമാകുന്നു, ഇത് കൈമാറ്റം സാധ്യമാക്കുന്നു fileഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് വഴി.
A file സിസ്റ്റം എങ്ങനെ നിർവചിക്കുന്നു fileസ്റ്റോറേജ് മീഡിയയിലാണ് ഇവ ക്രമീകരിച്ചിരിക്കുന്നത്. യുഎസ്ബി മാസ് സ്റ്റോറേജ് ക്ലാസ് സ്പെസിഫിക്കേഷന് പ്രത്യേകമായി ഒന്നും ആവശ്യമില്ല. file കൺഫോർമിംഗ് ഉപകരണങ്ങളിൽ ഉപയോഗിക്കേണ്ട സിസ്റ്റം. പകരം, സ്മോൾ കമ്പ്യൂട്ടർ സിസ്റ്റം ഇന്റർഫേസ് (SCSI) ട്രാൻസ്പരന്റ് കമാൻഡ് സെറ്റ് ഉപയോഗിച്ച് ഡാറ്റയുടെ സെക്ടറുകൾ വായിക്കാനും എഴുതാനും ലളിതമായ ഒരു ഇന്റർഫേസ് ഇത് നൽകുന്നു. അതുപോലെ, ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾക്ക് USB ഡ്രൈവിനെ ഒരു ഹാർഡ് ഡ്രൈവ് പോലെ കണക്കാക്കാം, കൂടാതെ ഏത് file അവർ ഇഷ്ടപ്പെടുന്ന സിസ്റ്റം.
യുഎസ്ബി മാസ് സ്റ്റോറേജ് ഡിവൈസ് ക്ലാസ് രണ്ട് ട്രാൻസ്പോർട്ട് പ്രോട്ടോക്കോളുകളെ പിന്തുണയ്ക്കുന്നു, ഇനിപ്പറയുന്നവ:
ബൾക്ക്-ഒൺലി ട്രാൻസ്പോർട്ട് (ബിഒടി) കൺട്രോൾ/ബൾക്ക്/ഇന്ററപ്റ്റ് (സിബിഐ) ട്രാൻസ്പോർട്ട് (ഫ്ലോപ്പി ഡിസ്ക് ഡ്രൈവുകൾക്ക് മാത്രം ഉപയോഗിക്കുന്നു)
മാസ് സ്റ്റോറേജ് ഡിവൈസ് ക്ലാസ്, BOT പ്രോട്ടോക്കോൾ മാത്രം ഉപയോഗിച്ച് SCSI ട്രാൻസ്പരന്റ് കമാൻഡ് സെറ്റ് നടപ്പിലാക്കുന്നു, അതായത് ഡാറ്റയും സ്റ്റാറ്റസ് വിവരങ്ങളും കൈമാറാൻ ബൾക്ക് എൻഡ് പോയിന്റുകൾ മാത്രമേ ഉപയോഗിക്കൂ. MSC ഇംപ്ലിമെന്റേഷൻ ഒന്നിലധികം ലോജിക്കൽ യൂണിറ്റുകളെ പിന്തുണയ്ക്കുന്നു.
എം‌എസ്‌സി നടപ്പിലാക്കൽ ഇനിപ്പറയുന്ന സ്പെസിഫിക്കേഷനുകൾ പാലിക്കുന്നു:
യൂണിവേഴ്സൽ സീരിയൽ ബസ് മാസ് സ്റ്റോറേജ് ക്ലാസ് സ്പെസിഫിക്കേഷൻ കഴിഞ്ഞുview, റിവിഷൻ 1.3 സെപ്റ്റംബർ 5, 2008. യൂണിവേഴ്സൽ സീരിയൽ ബസ് മാസ് സ്റ്റോറേജ് ക്ലാസ് ബൾക്ക്-ഒൺലി ട്രാൻസ്പോർട്ട്, റിവിഷൻ 1.0 സെപ്റ്റംബർ 31, 1999.
USB ഉപകരണം MSC aCl ss ഓവർview
പ്രോട്ടോക്കോൾ എൻഡ്‌പോയിന്റുകൾ ക്ലാസ് അഭ്യർത്ഥനകൾ ചെറിയ കമ്പ്യൂട്ടർ സിസ്റ്റം ഇന്റർഫേസ് (SCSI)
പ്രോട്ടോക്കോൾ
ഈ വിഭാഗത്തിൽ, മാസ് സ്റ്റോറേജ് ക്ലാസിന്റെ ബൾക്ക്-ഒൺലി ട്രാൻസ്പോർട്ട് (BOT) പ്രോട്ടോക്കോളിനെക്കുറിച്ച് നമ്മൾ ചർച്ച ചെയ്യും. ബൾക്ക്-ഒൺലി ട്രാൻസ്പോർട്ട് പ്രോട്ടോക്കോളിൽ മൂന്ന് സെഷനുകൾ ഉണ്ട്.tages:
കമാൻഡ് ട്രാൻസ്പോർട്ട് ഡാറ്റ ട്രാൻസ്പോർട്ട് സ്റ്റാറ്റസ് ട്രാൻസ്പോർട്ട്
കമാൻഡ് ബ്ലോക്ക് റാപ്പർ (CBW) എന്ന ഘടനയിലൂടെയാണ് ഹോസ്റ്റ് മാസ് സ്റ്റോറേജ് കമാൻഡുകൾ അയയ്ക്കുന്നത്. ഡാറ്റ ട്രാൻസ്പോർട്ട് ആവശ്യമുള്ള കമാൻഡുകൾക്ക്tage, CBW യുടെ നീളവും ഫ്ലാഗ് ഫീൽഡുകളും വ്യക്തമാക്കിയിരിക്കുന്നതുപോലെ, ഉപകരണത്തിൽ നിന്ന് കൃത്യമായ ബൈറ്റുകൾ അയയ്ക്കാനോ സ്വീകരിക്കാനോ ഹോസ്റ്റ് ശ്രമിക്കും. ഡാറ്റ ട്രാൻസ്ഫറിന് ശേഷം stage, കമാൻഡിന്റെ സ്റ്റാറ്റസും ഏതെങ്കിലും ഡാറ്റ അവശിഷ്ടവും വിശദമാക്കുന്ന ഒരു കമാൻഡ് സ്റ്റാറ്റസ് റാപ്പർ (CSW) ഉപകരണത്തിൽ നിന്ന് സ്വീകരിക്കാൻ ഹോസ്റ്റ് ശ്രമിക്കുന്നു (എങ്കിൽ

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

43/174

കഴിഞ്ഞുview
ഏതെങ്കിലും). ഡാറ്റ ട്രാൻസ്പോർട്ട് ഉൾപ്പെടാത്ത കമാൻഡുകൾക്ക് stage, CBW അയച്ചതിനുശേഷം ഹോസ്റ്റ് നേരിട്ട് CSW സ്വീകരിക്കാൻ ശ്രമിക്കുന്നു. പ്രോട്ടോക്കോൾ ചിത്രം - MSC പ്രോട്ടോക്കോളിൽ വിശദമായി പ്രതിപാദിച്ചിരിക്കുന്നു.
ചിത്രം - എം‌എസ്‌സി പ്രോട്ടോക്കോൾ

അന്തിമ പോയിന്റുകൾ
ഉപകരണത്തിന്റെ വശത്ത്, BOT സ്പെസിഫിക്കേഷന് അനുസൃതമായി, MSC ഇനിപ്പറയുന്ന എൻഡ്‌പോയിന്റുകൾ ഉൾക്കൊള്ളുന്നു: ഡിഫോൾട്ട് എൻഡ്‌പോയിന്റ് എന്ന് വിളിക്കപ്പെടുന്ന ഒരു ജോഡി കൺട്രോൾ IN, OUT എൻഡ്‌പോയിന്റുകൾ. ഒരു ജോഡി ബൾക്ക് IN, OUT എൻഡ്‌പോയിന്റുകൾ.
താഴെയുള്ള പട്ടിക എൻഡ്‌പോയിന്റുകളുടെ വ്യത്യസ്ത ഉപയോഗങ്ങളെ സൂചിപ്പിക്കുന്നു.
പട്ടിക - 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 സ്റ്റോറേജ് ഉപകരണവുമായി ആശയവിനിമയം നടത്തുന്നതിന് അനുയോജ്യമായ ഉപകരണ ഡ്രൈവർ ലോഡ് ചെയ്യാൻ ഹോസ്റ്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തെ സഹായിക്കുകയും ചെയ്യുന്നു. USB MSC സ്റ്റോറേജ് ഉപകരണങ്ങളിൽ ഉപയോഗിക്കുന്ന ഏറ്റവും സാധാരണമായ പ്രോട്ടോക്കോൾ SCSI ആണ്. ഞങ്ങളുടെ GSDK ഉപയോക്താക്കൾക്ക് ബോക്സിന് പുറത്ത് ഉപയോഗിക്കാൻ കഴിയുന്ന MSC SCSI സബ്ക്ലാസിനായി ഞങ്ങൾ ഒരു ഇംപ്ലിമെന്റേഷൻ നൽകുന്നു.
കമ്പ്യൂട്ടറുകളും പെരിഫറൽ ഉപകരണങ്ങളും തമ്മിലുള്ള ആശയവിനിമയം കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഒരു കൂട്ടം മാനദണ്ഡങ്ങളാണ് SCSI. കമാൻഡുകൾ, പ്രോട്ടോക്കോളുകൾ, ഇലക്ട്രിക്കൽ ഇന്റർഫേസുകൾ, ഒപ്റ്റിക്കൽ ഇന്റർഫേസുകൾ എന്നിവ ഈ മാനദണ്ഡങ്ങളിൽ ഉൾപ്പെടുന്നു. USB പോലുള്ള മറ്റ് ഹാർഡ്‌വെയർ ഇന്റർഫേസുകൾ ഉപയോഗിക്കുന്ന സ്റ്റോറേജ് ഉപകരണങ്ങൾ, ഉപകരണ/ഹോസ്റ്റ് വിവരങ്ങൾ നേടുന്നതിനും ഉപകരണത്തിന്റെ പ്രവർത്തനം നിയന്ത്രിക്കുന്നതിനും സ്റ്റോറേജ് മീഡിയയിലെ ഡാറ്റ ബ്ലോക്കുകൾ കൈമാറുന്നതിനും SCSI കമാൻഡുകൾ ഉപയോഗിക്കുന്നു.
SCSI കമാൻഡുകൾ വൈവിധ്യമാർന്ന ഉപകരണ തരങ്ങളും പ്രവർത്തനങ്ങളും ഉൾക്കൊള്ളുന്നു, അതിനാൽ, ഉപകരണങ്ങൾക്ക് ഈ കമാൻഡുകളുടെ ഒരു ഉപവിഭാഗം ആവശ്യമാണ്. പൊതുവേ, അടിസ്ഥാന ആശയവിനിമയത്തിന് ഇനിപ്പറയുന്ന കമാൻഡുകൾ ആവശ്യമാണ്:
അന്വേഷണം വായനാ ശേഷി(10) വായനാ ശേഷി(10) അഭ്യർത്ഥന സെൻസ് ടെസ്റ്റ് യൂണിറ്റ് റെഡി റൈറ്റ്(10)
കോറിൽ നിന്നുള്ള USB ഉപകരണ MSC ക്ലാസ് റിസോഴ്‌സ് ആവശ്യകതകൾ

sl_usbd_msc_add_to_configuration() എന്ന ഫംഗ്ഷൻ വഴി ഒരു യുഎസ്ബി കോൺഫിഗറേഷനിലേക്ക് ഒരു എംഎസ്സി ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുമ്പോഴെല്ലാം, കോറിൽ നിന്ന് ഇനിപ്പറയുന്ന ഉറവിടങ്ങൾ അനുവദിക്കപ്പെടും.

റിസോഴ്സ്
ഇന്റർഫേസുകൾ ഇതര ഇന്റർഫേസുകൾ എൻഡ്‌പോയിന്റുകൾ ഇന്റർഫേസ് ഗ്രൂപ്പുകൾ

അളവ്
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 ക്ലാസ് കോൺഫിഗറേഷൻ

MSC ക്ലാസ് കോൺഫിഗർ ചെയ്യുന്നതിന് രണ്ട് ഗ്രൂപ്പ് കോൺഫിഗറേഷൻ പാരാമീറ്ററുകൾ ഉപയോഗിക്കുന്നു:
യുഎസ്ബി ഡിവൈസ് എംഎസ്സി ക്ലാസ് ആപ്ലിക്കേഷൻ-നിർദ്ദിഷ്ട കോൺഫിഗറേഷനുകൾ യുഎസ്ബി ഡിവൈസ് എംഎസ്സി ക്ലാസ് ലോജിക്കൽ യൂണിറ്റ് കോൺഫിഗറേഷൻ
USB ഡിവൈസ് MSC ക്ലാസ് ആപ്ലിക്കേഷൻ-നിർദ്ദിഷ്ട കോൺഫിഗറേഷനുകൾ

ക്ലാസ് കംപൈൽ-ടൈം കോൺഫിഗറേഷനുകൾ ക്ലാസ് ഇൻസ്റ്റൻസ് ക്രിയേഷൻ

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

45/174

കഴിഞ്ഞുview

ക്ലാസ് കംപൈൽ-ടൈം കോൺഫിഗറേഷനുകൾ
sl_usbd_core_config.h-ൽ സ്ഥിതി ചെയ്യുന്ന #defines വഴി കംപൈൽ സമയത്ത് സിലിക്കൺ ലാബ്‌സ് USB ഡിവൈസ് MSC ക്ലാസും SCSI സബ്ക്ലാസും കോൺഫിഗർ ചെയ്യാവുന്നതാണ്. 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 ഉപകരണ ക്ലാസ് callbacks connect/disconnect-ന് പുറമേ, ലോജിക്കൽ യൂണിറ്റിൽ ഒരു ഇവന്റ് സംഭവിക്കുമ്പോൾ വിളിക്കപ്പെടുന്ന ഒരു കൂട്ടം ഓപ്ഷണൽ callback ഫംഗ്ഷനുകളും ഇത് MSC ക്ലാസിന് നൽകുന്നു. callbacks ആവശ്യമില്ലെങ്കിൽ ഈ ആർഗ്യുമെന്റിലേക്ക് ഒരു null pointer ( NULL ) കൈമാറാൻ കഴിയും.
ഈ കോൺഫിഗറേഷൻ ഘടനയിൽ ലഭ്യമായ ഓരോ കോൺഫിഗറേഷൻ ഫീൽഡും താഴെയുള്ള പട്ടിക വിവരിക്കുന്നു.
പട്ടിക – sl_usbd_msc_scsi_callbacks_t കോൺഫിഗറേഷൻ ഘടന

വയലുകൾ

വിവരണം

.പ്രാപ്തമാക്കുക

യുഎസ്ബി ക്ലാസ് ഇൻസ്റ്റൻസ് വിജയകരമായി പ്രാപ്തമാക്കുമ്പോൾ വിളിക്കുന്നു.

.disable USB ക്ലാസ് ഇൻസ്റ്റൻസ് പ്രവർത്തനരഹിതമാക്കുമ്പോൾ വിളിക്കുന്നു.

ഹോസ്റ്റിൽ നിന്ന് ഒരു ലോജിക്കൽ യൂണിറ്റ് പുറത്തുകടക്കുമ്പോൾ വിളിക്കപ്പെടുന്ന .host_eject ഫംഗ്ഷൻ.

ഫംഗ്ഷൻ സിഗ്നേച്ചർ
അസാധുവായ app_usbd_msc_scsi_enable(uint8_t class_nbr);
അസാധുവായ app_usbd_msc_scsi_disable(uint8_t class_nbr); അസാധുവായ 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 എന്നത് sl_usbd_msc_scsi_lun_info_t എന്ന തരത്തിലുള്ള ഒരു ഘടനയിലേക്കുള്ള ഒരു പോയിന്ററാണ്. ലോജിക്കൽ യൂണിറ്റിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ MSC ക്ലാസിന് നൽകുക എന്നതാണ് ഇതിന്റെ ഉദ്ദേശ്യം.
ഈ കോൺഫിഗറേഷൻ ഘടനയിൽ ലഭ്യമായ ഓരോ കോൺഫിഗറേഷൻ ഫീൽഡും താഴെയുള്ള പട്ടിക വിവരിക്കുന്നു.

പട്ടിക – sl_usbd_msc_scsi_lun_info_t കോൺഫിഗറേഷൻ ഘടന

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

46/174

കഴിഞ്ഞുview

ഫീൽഡ്

വിവരണം

ഫീൽഡ്
.scsi_lun_api_p ട്ര

വിവരണം
ഈ ലോജിക്കൽ യൂണിറ്റ് കൈകാര്യം ചെയ്യുന്ന മീഡിയ ഡ്രൈവർ API-യിലേക്കുള്ള പോയിന്റർ. സ്റ്റോറേജ് ഡ്രൈവറുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക് USB ഡിവൈസ് MSC ക്ലാസ് സ്റ്റോറേജ് ഡ്രൈവറുകൾ കാണുക.

.ഞാന്‍ഡ് ഒ ആര്‍_ഐഡി _ പി ടി ആര്‍
.പ്രൊഡക്റ്റ്_ഐഡി_പിടിആർ
.p ro d uct_ re v isi on_level .is_ re ad _only എന്നൊക്കെയാണ് പറയുന്നത്.

ലോജിക്കൽ യൂണിറ്റിന്റെ വെണ്ടർ ഐഡന്റിഫിക്കേഷൻ അടങ്ങിയിരിക്കുന്ന ഒരു സ്ട്രിംഗിലേക്കുള്ള പോയിന്റർ. സ്ട്രിംഗിന്റെ പരമാവധി നീളം 8 പ്രതീകങ്ങളാണ്. ലോജിക്കൽ യൂണിറ്റിന്റെ ഉൽപ്പന്ന ഐഡന്റിഫിക്കേഷൻ അടങ്ങിയിരിക്കുന്ന ഒരു സ്ട്രിംഗിലേക്കുള്ള പോയിന്റർ. സ്ട്രിംഗിന്റെ പരമാവധി നീളം 16 പ്രതീകങ്ങളാണ്. ഉൽപ്പന്ന പുനരവലോകന നില.
ലോജിക്കൽ യൂണിറ്റ് വായിക്കാൻ മാത്രമുള്ളതായി കാണണമോ എന്ന് സൂചിപ്പിക്കുന്ന ഫ്ലാഗ് view ഹോസ്റ്റിന്റെ (ശരി) അല്ലെങ്കിൽ അല്ല (തെറ്റ്).

USB ഡിവൈസ് MSC ക്ലാസ് പ്രോഗ്രാമിംഗ് ഗൈഡ്

എം‌എസ്‌സി ക്ലാസ് എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഈ വിഭാഗം വിശദീകരിക്കുന്നു.
യുഎസ്ബി ഡിവൈസ് എംഎസ്സി ക്ലാസ് ആരംഭിക്കുന്നു നിങ്ങളുടെ ഡിവൈസിലേക്ക് ഒരു യുഎസ്ബി ഡിവൈസ് എംഎസ്സി എസ്സിഎസ്ഐ ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു യുഎസ്ബി ഡിവൈസ് എംഎസ്സി ക്ലാസ് ലോജിക്കൽ യൂണിറ്റ് കൈകാര്യം ചെയ്യൽ
USB ഡിവൈസ് MSC ക്ലാസ് ആരംഭിക്കുന്നു.

നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് MSC SCSI ക്ലാസ് പ്രവർത്തനം ചേർക്കുന്നതിന്, ആദ്യം sl_usbd_msc_init() , sl_usbd_msc_scsi_init() എന്നീ ഫംഗ്ഷനുകൾ വിളിച്ചുകൊണ്ട് MSC ബേസ് ക്ലാസും SCSI സബ്ക്ലാസും ആരംഭിക്കുക.
മുൻampsl_usbd_msc_init() ഉം sl_usbd_msc_scsi_init() ഉം എങ്ങനെ വിളിക്കാമെന്ന് താഴെ കാണിച്ചിരിക്കുന്നു.

Example – sl_usbd_msc_init() ഉം sl_usbd_msc_scsi_init() ഉം വിളിക്കുന്നു

sl_status_t സ്റ്റാറ്റസ്;
status = sl_usbd_msc_init(); if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */
}
status = sl_usbd_msc_scsi_init(); if (status ! 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 ക്ലാസ്_എൻ‌ബി‌ആർ; sl_status_t സ്റ്റാറ്റസ്;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .enable = NULL, .disable = NULL, .host_eject = NULL };
സ്റ്റാറ്റസ് = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
if (status ! 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)

കോൺഫിഗറേഷൻ_എൻ‌ബ്ര_എഫ്‌എസ്);

(2)

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */

}

(1) sl_usbd_msc_scsi_create_instance() നൽകുന്ന കോൺഫിഗറേഷനിലേക്ക് ചേർക്കേണ്ട ക്ലാസ് നമ്പർ. (32) കോൺഫിഗറേഷൻ നമ്പർ (ഇവിടെ ഇത് ഒരു ഫുൾ-സ്പീഡ് കോൺഫിഗറേഷനിലേക്ക് ചേർക്കുന്നു).
USB ഡിവൈസ് MSC ക്ലാസ് ലോജിക്കൽ യൂണിറ്റ് കൈകാര്യം ചെയ്യൽ
ഒരു ലോജിക്കൽ യൂണിറ്റ് ചേർക്കൽ ഒരു സ്റ്റോറേജ് മീഡിയം അറ്റാച്ചുചെയ്യൽ/വേർപെടുത്തൽ
ഒരു ലോജിക്കൽ യൂണിറ്റ് ചേർക്കുന്നു
നിങ്ങളുടെ MSC SCSI ക്ലാസ് ഉദാഹരണത്തിലേക്ക് ഒരു ലോജിക്കൽ യൂണിറ്റ് ചേർക്കുമ്പോൾ, അത് ഒരു സ്റ്റോറേജ് മീഡിയവുമായി (RAMDisk, SD കാർഡ്, ഫ്ലാഷ് മെമ്മറി മുതലായവ) ബന്ധിപ്പിച്ചിരിക്കണം. സ്റ്റോറേജ് മീഡിയയുമായി ആശയവിനിമയം നടത്താൻ MSC ക്ലാസ് ഒരു സ്റ്റോറേജ് ഡ്രൈവർ ഉപയോഗിക്കുന്നു. ലോജിക്കൽ യൂണിറ്റ് ചേർക്കുമ്പോൾ ഈ ഡ്രൈവർ സപ്ലൈ ചെയ്യേണ്ടതുണ്ട്.
മുൻampsl_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 ലു_ഇൻഫോ;

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 (ലു_ഇൻഫോ.പ്രൊഡക്റ്റ്_ഐഡി_പിടിആർ)

= “ബ്ലോക്ക് ഉപകരണം ഉദാampലെ”;

lu_info.product_revision_level = 0x1000u;

lu_info.is_വായിക്കാൻ_മാത്രം

= തെറ്റ്;

സ്റ്റാറ്റസ് = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */ }

ഒരു സംഭരണ ​​മാധ്യമം ഘടിപ്പിക്കൽ/വേർപെടുത്തൽ
ലോജിക്കൽ യൂണിറ്റ് ചേർത്തതിനുശേഷം, ഹോസ്റ്റ് ഭാഗത്ത് നിന്ന് ലഭ്യമാകുന്നതിന് ഒരു സ്റ്റോറേജ് മീഡിയം ഘടിപ്പിക്കണം. ലോജിക്കൽ യൂണിറ്റിലേക്കുള്ള സ്റ്റോറേജ് മീഡിയ അസോസിയേഷനെ നിയന്ത്രിക്കുന്നതിന് MSC ക്ലാസ് രണ്ട് ഫംഗ്ഷനുകൾ വാഗ്ദാനം ചെയ്യുന്നു: sl_usbd_msc_scsi_lun_attach() ഉം sl_usbd_msc_scsi_lun_detach() ഉം. ആവശ്യമെങ്കിൽ എംബഡഡ് ആപ്ലിക്കേഷനിൽ നിന്ന് വീണ്ടും ആക്സസ് നേടുന്നതിന് ഒരു സ്റ്റോറേജ് ഡിവൈസിന്റെ നീക്കം ചെയ്യൽ അനുകരിക്കാൻ ഈ ഫംഗ്ഷനുകൾ നിങ്ങളെ അനുവദിക്കുന്നു.
മുൻampsl_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); if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */
}

(1)

സ്റ്റാറ്റസ് = sl_usbd_msc_scsi_lun_detach(lu_object_ptr); (സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {
/* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */
}

(2)

സ്റ്റാറ്റസ് = sl_usbd_msc_scsi_lun_attach(lu_object_ptr) (സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {
/* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */
}

(3)

(1) ഈ നിമിഷം മുതൽ, MSC ഉപകരണം ഒരു ഹോസ്റ്റുമായി ബന്ധിപ്പിച്ചിട്ടുണ്ടെങ്കിൽ, സ്റ്റോറേജ് മീഡിയ ആക്‌സസ് ചെയ്യാൻ കഴിയും.
(2) MSC ഉപകരണം ഒരു ഹോസ്റ്റുമായി ബന്ധിപ്പിച്ചിട്ടുണ്ടെങ്കിൽ, മീഡിയ ഇപ്പോൾ ലഭ്യമല്ലെന്ന് ദൃശ്യമാകും. ഈ നിമിഷം, എംബഡഡ് ആപ്ലിക്കേഷനിൽ നിന്ന് മീഡിയയിൽ പ്രവർത്തനങ്ങൾ നടത്താൻ കഴിയും.
(3) വീണ്ടും, MSC ഉപകരണം ഹോസ്റ്റുമായി ബന്ധിപ്പിച്ചിട്ടുണ്ടെങ്കിൽ, സ്റ്റോറേജ് മീഡിയ ബന്ധിപ്പിച്ചതായി ദൃശ്യമാകും.
USB ഡിവൈസ് MSC ക്ലാസ് സ്റ്റോറേജ് ഡ്രൈവറുകൾ
ഒരു സ്റ്റോറേജ് മീഡിയവുമായി ആശയവിനിമയം നടത്താൻ USB ഡിവൈസ് MSC ക്ലാസിന് ഒരു സ്റ്റോറേജ് ഡ്രൈവർ ആവശ്യമാണ്. ഇപ്പോൾ, സിലിക്കൺ ലാബ്സ് ഡ്രൈവറുകൾ നൽകുന്നില്ല.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

49/174

കഴിഞ്ഞുview
TPY aa ഡ്രൈവർ AI എന്നത് typedef sl_usbd_msc_scsi_lun_api_t എന്ന typedef പ്രകാരമാണ് നിർവചിച്ചിരിക്കുന്നത്. sl_usbd_msc_scsi_lun_api_t v rible, sl_usbd_msc_scsi_lun_add() ഉപയോഗിച്ച് നിങ്ങൾ ലോജിക് എൽ യൂണിറ്റ് ഡിഡി ചെയ്യുമ്പോൾ നിങ്ങളുടെ sl_usbd_msc_scsi_lun_info_t v rible, p ssed s rgument എന്നിവ aaaaaaaaa ഉൾപ്പെടുത്തണം. ഘടനകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക് വിഭാഗം USB Device MSC SCSI API കാണുക. സ്റ്റോറേജ് ഡ്രൈവർ ഇംപ്ലിമെന്റേഷൻ RAM-ലെ സെക്ടറുകളുടെ ഒരു നിര പോലെ ലളിതമായിരിക്കും. മാസ് സ്റ്റോറേജ് ഉപകരണങ്ങൾക്ക് സാധാരണ സെക്ടർ വലുപ്പം (അതായത്, ബ്ലോക്ക് വലുപ്പം) 512 ഉം CD-ROM-കൾക്ക് 2048 ഉം ആണ്.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

50/174

കഴിഞ്ഞുview
കഴിഞ്ഞുview
USB ഉപകരണ വെണ്ടർ ക്ലാസ്
USB ഉപകരണ വെണ്ടർ ക്ലാസ് കഴിഞ്ഞുview കോർ യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് കോൺഫിഗറേഷനിൽ നിന്നുള്ള യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് റിസോഴ്‌സ് ആവശ്യകതകൾ യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് പ്രോഗ്രാമിംഗ് ഗൈഡ് ഒരു പ്രൊപ്രൈറ്ററി പ്രോട്ടോക്കോൾ നടപ്പിലാക്കാൻ കഴിയുന്ന വെണ്ടർ-നിർദ്ദിഷ്ട ഉപകരണങ്ങൾ നിർമ്മിക്കാൻ വെണ്ടർ ക്ലാസ് നിങ്ങളെ അനുവദിക്കുന്നു. ഹോസ്റ്റിനും ഉപകരണത്തിനും ഇടയിൽ ഡാറ്റ കൈമാറുന്നതിന് ഇത് ഒരു ജോടി ബൾക്ക് എൻഡ്‌പോയിന്റുകളെ ആശ്രയിക്കുന്നു. ബൾക്ക് ട്രാൻസ്ഫറുകൾ വലിയ അളവിൽ ഘടനയില്ലാത്ത ഡാറ്റ കൈമാറുന്നതിനും ഒരു പിശക് കണ്ടെത്തലും വീണ്ടും ശ്രമിക്കൽ സംവിധാനവും ഉപയോഗിച്ച് വിശ്വസനീയമായ ഡാറ്റ കൈമാറ്റം നൽകുന്നതിനും സൗകര്യപ്രദമാണ്. ബൾക്ക് എൻഡ്‌പോയിന്റുകൾക്ക് പുറമേ, വെണ്ടർ ക്ലാസിന് ഒരു ഓപ്‌ഷണൽ ജോഡി ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റുകളും ഉപയോഗിക്കാം. വെണ്ടർ ക്ലാസ് കൈകാര്യം ചെയ്യാൻ OS-ന് ഒരു ഡ്രൈവർ ഉണ്ടെങ്കിൽ ഏത് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനും (OS) വെണ്ടർ ക്ലാസുമായി പ്രവർത്തിക്കാൻ കഴിയും. OS-നെ ആശ്രയിച്ച്, ഡ്രൈവർ നേറ്റീവ് അല്ലെങ്കിൽ വെണ്ടർ-നിർദ്ദിഷ്ടമാകാം. ഉദാഹരണത്തിന്, Microsoft Windows®-ന് കീഴിൽ, വെണ്ടർ ഉപകരണവുമായി ആശയവിനിമയം നടത്താൻ Microsoft നൽകുന്ന WinUSB ഡ്രൈവറുമായി നിങ്ങളുടെ ആപ്ലിക്കേഷൻ സംവദിക്കുന്നു.
USB ഉപകരണ വെണ്ടർ ക്ലാസ് കഴിഞ്ഞുview
ചിത്രം – വിൻഡോസ് ഹോസ്റ്റിനും വെണ്ടർ ക്ലാസിനും ഇടയിലുള്ള ജനറൽ ആർക്കിടെക്ചർ, വെണ്ടർ ക്ലാസ് ഉപയോഗിച്ച് ഹോസ്റ്റിനും ഉപകരണത്തിനും ഇടയിലുള്ള പൊതുവായ ആർക്കിടെക്ചർ കാണിക്കുന്നു. ഈ ഉദാഹരണത്തിൽampലെ, ഹോസ്റ്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം എംഎസ് വിൻഡോസ് ആണ്.
ചിത്രം – എംഎസ് വിൻഡോസ് ഹോസ്റ്റിനും വെണ്ടർ ക്ലാസിനും ഇടയിലുള്ള പൊതുവായ വാസ്തുവിദ്യ

എംഎസ് വിൻഡോസ് ഭാഗത്ത്, ഒരു യുഎസ്ബി ലൈബ്രറിയുമായി ഇടപഴകുന്നതിലൂടെയാണ് ആപ്ലിക്കേഷൻ വെണ്ടർ ഉപകരണവുമായി ആശയവിനിമയം നടത്തുന്നത്. ലിബസ്ബി പോലുള്ള ലൈബ്രറികൾ, ഒരു ഉപകരണവും അതുമായി ബന്ധപ്പെട്ട പൈപ്പുകളും കൈകാര്യം ചെയ്യുന്നതിനും നിയന്ത്രണം, ബൾക്ക്, ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റുകൾ എന്നിവയിലൂടെ ഉപകരണവുമായി ആശയവിനിമയം നടത്തുന്നതിനും ഒരു എപിഐ വാഗ്ദാനം ചെയ്യുന്നു.
ഉപകരണ വശത്ത്, വെണ്ടർ ക്ലാസ് ഇനിപ്പറയുന്ന എൻഡ്‌പോയിന്റുകൾ ഉൾക്കൊള്ളുന്നു:
ഒരു ജോഡി നിയന്ത്രണ IN, OUT എൻഡ്‌പോയിന്റുകൾ ഡിഫോൾട്ട് എൻഡ്‌പോയിന്റ് എന്ന് വിളിക്കുന്നു. ഒരു ജോഡി ബൾക്ക് IN, OUT എൻഡ്‌പോയിന്റുകൾ.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

51/174

കഴിഞ്ഞുview

ഇന്ററപ്റ്റ് IN, OUT എൻഡ്‌പോയിന്റുകളുടെ ഒരു ജോഡി. ഈ ജോഡി ഓപ്ഷണലാണ്. താഴെയുള്ള പട്ടിക വ്യത്യസ്ത എൻഡ്‌പോയിന്റുകളുടെ ഉപയോഗം സൂചിപ്പിക്കുന്നു:
പട്ടിക - വെണ്ടർ ക്ലാസ് എൻഡ്‌പോയിന്റുകൾ ഉപയോഗം

എൻഡ്‌പോയിന്റ് ദിശ

IN നിയന്ത്രിക്കുക
നിയന്ത്രണം
പുറത്ത്
ബൾക്ക് IN

ഡിവൈസ്-ടുഹോസ്റ്റ്
>ഹോസ്റ്റ്-ടുഡിവൈസ്
ഡിവൈസ്-ടുഹോസ്റ്റ്

ബൾക്ക് ഔട്ട്
ഇന്ററപ്റ്റ് IN
തടസ്സപ്പെടുത്തുക
പുറത്ത്

ഹോസ്റ്റ്-ടു-ഡിവൈസ്
ഡിവൈസ്-ടുഹോസ്റ്റ്
ഹോസ്റ്റ്-ടു-ഡിവൈസ്

ഉപയോഗം
എണ്ണലിനുള്ള സ്റ്റാൻഡേർഡ് അഭ്യർത്ഥനകളും വെണ്ടർ-നിർദ്ദിഷ്ട അഭ്യർത്ഥനകളും.
എണ്ണലിനുള്ള സ്റ്റാൻഡേർഡ് അഭ്യർത്ഥനകളും വെണ്ടർ-നിർദ്ദിഷ്ട അഭ്യർത്ഥനകളും.
റോ ഡാറ്റ ആശയവിനിമയം. ഒരു പ്രൊപ്രൈറ്ററി പ്രോട്ടോക്കോൾ അനുസരിച്ച് ഡാറ്റ ക്രമീകരിക്കാൻ കഴിയും.
റോ ഡാറ്റ ആശയവിനിമയം. ഒരു പ്രൊപ്രൈറ്ററി പ്രോട്ടോക്കോൾ അനുസരിച്ച് ഡാറ്റ ക്രമീകരിക്കാൻ കഴിയും.
റോ ഡാറ്റാ കമ്മ്യൂണിക്കേഷൻ അല്ലെങ്കിൽ അറിയിപ്പ്. ഒരു പ്രൊപ്രൈറ്ററി പ്രോട്ടോക്കോൾ അനുസരിച്ച് ഡാറ്റ ഘടനാപരമാക്കാം. റോ ഡാറ്റാ കമ്മ്യൂണിക്കേഷൻ അല്ലെങ്കിൽ അറിയിപ്പ്. ഒരു പ്രൊപ്രൈറ്ററി പ്രോട്ടോക്കോൾ അനുസരിച്ച് ഡാറ്റ ഘടനാപരമാക്കാം.

ഹോസ്റ്റിലേക്കോ അതിൽ നിന്നോ ഡാറ്റ അയയ്ക്കുന്നതിനോ സ്വീകരിക്കുന്നതിനോ ഉപകരണ ആപ്ലിക്കേഷന് ബൾക്ക്, ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റുകൾ ഉപയോഗിക്കാൻ കഴിയും. ഹോസ്റ്റ് അയച്ച വെണ്ടർ-നിർദ്ദിഷ്ട അഭ്യർത്ഥനകൾ ഡീകോഡ് ചെയ്യാൻ മാത്രമേ ഇതിന് ഡിഫോൾട്ട് എൻഡ്‌പോയിന്റ് ഉപയോഗിക്കാൻ കഴിയൂ. സിലിക്കൺ ലാബ്‌സ് യുഎസ്ബി ഉപകരണത്തിന്റെ കോർ ലെയറാണ് സ്റ്റാൻഡേർഡ് അഭ്യർത്ഥനകൾ ആന്തരികമായി കൈകാര്യം ചെയ്യുന്നത്.
കോറിൽ നിന്നുള്ള 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 ഡിവൈസ് വെണ്ടർ ക്ലാസ് ആപ്ലിക്കേഷൻ-നിർദ്ദിഷ്ട കോൺഫിഗറേഷനുകൾ
ആദ്യം, സിലിക്കൺ ലാബ്സ് യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് മൊഡ്യൂൾ ഉപയോഗിക്കുന്നതിന്, നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ആവശ്യങ്ങൾക്കനുസരിച്ച് വെണ്ടർ കംപൈൽ-ടൈം കോൺഫിഗറേഷൻ നിർവചനങ്ങൾ ക്രമീകരിക്കുക. അവ sl_usbd_core_config.h ഹെഡറിനുള്ളിൽ പുനഃക്രമീകരിക്കപ്പെടുന്നു. file വെണ്ടർ വിഭാഗത്തിന് കീഴിൽ. എത്ര യുഎസ്ബി വെണ്ടർ ഒബ്‌ജക്റ്റുകൾ അനുവദിക്കണമെന്ന് യുഎസ്ബി ഉപകരണ മൊഡ്യൂളിനെ അറിയിക്കുക എന്നതാണ് ക്വാണ്ടിറ്റി കോൺഫിഗറേഷനുകളുടെ ലക്ഷ്യം.
താഴെയുള്ള പട്ടിക ഓരോ കോൺഫിഗറേഷൻ നിർവചനത്തെയും വിവരിക്കുന്നു.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

52/174

കഴിഞ്ഞുview

പട്ടിക - USB ഉപകരണ വെണ്ടർ കോൺഫിഗറേഷൻ നിർവചിക്കുന്നു

കോൺഫിഗറേഷൻ പേര്

വിവരണം

ഡിഫോൾട്ട് മൂല്യം

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY sl_usbd_vendor_create_instance() എന്ന 2 ഫംഗ്ഷനിലേക്ക് ഒരു കോൾ വഴി നിങ്ങൾ അനുവദിക്കുന്ന ക്ലാസ് ഇൻസ്റ്റൻസുകളുടെ എണ്ണം.

SL_USBD_VENDOR_CONFIGURATIY കോൺഫിഗറേഷനുകളുടെ എണ്ണം. sl_usbd_vendor_add_to_configuration() എന്ന ഫംഗ്ഷനിലേക്കുള്ള ഒരു കോൾ വഴി വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസുകൾ ഒന്നോ അതിലധികമോ കോൺഫിഗറേഷനുകളിലേക്ക് 1 ചേർക്കാൻ കഴിയും.

USB ഡിവൈസ് വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് കോൺഫിഗറേഷനുകൾ

വെണ്ടർ ക്ലാസ് സംഭവങ്ങളുമായി ബന്ധപ്പെട്ട കോൺഫിഗറേഷനുകൾ ഈ വിഭാഗം നിർവചിക്കുന്നു.
ക്ലാസ് ഇൻസ്റ്റൻസ് ക്രിയേഷൻ intr_en ഇടവേള p_vendor_callbacks
ക്ലാസ് ഇൻസ്റ്റൻസ് ക്രിയേഷൻ

ഒരു വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുന്നത് sl_usbd_vendor_create_instance() എന്ന ഫംഗ്ഷനെ വിളിച്ചുകൊണ്ടാണ് ചെയ്യുന്നത്, അത് താഴെ വിവരിച്ചിരിക്കുന്ന മൂന്ന് കോൺഫിഗറേഷൻ ആർഗ്യുമെന്റുകൾ എടുക്കുന്നു.

ഇൻട്ര_എൻ
ഒരു ജോഡി ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റുകൾ ചേർക്കണോ വേണ്ടയോ എന്ന് സൂചിപ്പിക്കുന്ന ബൂളിയൻ.

മൂല്യം
യഥാർത്ഥ കള്ളം

വിവരണം
ഒരു ജോഡി IN/OUT എൻഡ്‌പോയിന്റുകൾ ചേർത്ത് എംബഡഡ് ആപ്ലിക്കേഷനിൽ ലഭ്യമാക്കും. ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റ് ചേർക്കില്ല. ഒരു ജോഡി ബൾക്ക് IN/OUT എൻഡ്‌പോയിന്റ് മാത്രമേ ലഭ്യമാകൂ.

ഇടവേള
intr_en എന്നത് true ആയി സജ്ജീകരിച്ചാൽ, ഇന്ററപ്റ്റ് എൻഡ്‌പോയിന്റ് പോളിംഗ് ഇടവേള (മില്ലിസെക്കൻഡുകളിൽ) നിങ്ങൾക്ക് വ്യക്തമാക്കാം. intr_en എന്നത് false ആയി സജ്ജീകരിച്ചാൽ, ക്ലാസ് അവഗണിക്കുന്നതിനാൽ നിങ്ങൾക്ക് interval 0 ആയി സജ്ജമാക്കാം.
പി_വെണ്ടർ_കോൾബാക്കുകൾ
p_vendor_callbacks എന്നത് ഒരു കോൾബാക്ക് ഫംഗ്‌ഷൻ ഘടന വേരിയബിളിലേക്കുള്ള ഒരു പോയിന്ററാണ്. ക്ലാസ് നിർദ്ദിഷ്ട നിയന്ത്രണ അഭ്യർത്ഥനകൾ കൈകാര്യം ചെയ്യാൻ നിങ്ങൾക്ക് അത് വ്യക്തമാക്കാൻ കഴിയും. നിങ്ങൾ ഏതെങ്കിലും ക്ലാസ് നിർദ്ദിഷ്ട അഭ്യർത്ഥനകൾ ഉപയോഗിക്കുന്നില്ലെങ്കിൽ അല്ലെങ്കിൽ അറിയിപ്പ് പ്രവർത്തനക്ഷമമാക്കുകയോ പ്രവർത്തനരഹിതമാക്കുകയോ ചെയ്യേണ്ടതുണ്ടെങ്കിൽ, നിങ്ങൾക്ക് ഇത് NULL ആയി സജ്ജമാക്കാം.
മുൻampനിങ്ങളുടെ ക്ലാസ് നിർദ്ദിഷ്ട അഭ്യർത്ഥന ഹാൻഡ്‌ലറിന്റെ പ്രതീക്ഷിക്കുന്ന ഒപ്പ് താഴെയുള്ള le നൽകുന്നു.
Example – ക്ലാസ്-സ്പെസിഫിക് റിക്വസ്റ്റ് ഫംഗ്ഷന്റെ ഒപ്പ്

അസാധുവായ app_usbd_vendor_req_handle(uint8_t)

ക്ലാസ്_എൻ‌ബി‌ആർ, (1)

കോൺസ്റ്റ് 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 ഡിവൈസ് വെണ്ടർ ക്ലാസ് പ്രോഗ്രാമിംഗ് ഗൈഡ്
ഈ വിഭാഗം വെണ്ടർ ക്ലാസ് എങ്ങനെ ഉപയോഗിക്കാമെന്ന് വിശദീകരിക്കുന്നു. യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് ആരംഭിക്കുന്നു നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് ഒരു യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് ഉപയോഗിച്ച് ആശയവിനിമയം നടത്തുന്നു
യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് ആരംഭിക്കുന്നു
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് ഒരു വെണ്ടർ ക്ലാസ് ഫംഗ്ഷണാലിറ്റി ചേർക്കാൻ, ആദ്യം USBD_Vendor_Init() എന്ന ഫംഗ്ഷൻ വിളിച്ച് ക്ലാസ് ആരംഭിക്കുക. ഉദാ.ampsl_usbd_vendor_init() എങ്ങനെ വിളിക്കാമെന്ന് താഴെ കാണിച്ചിരിക്കുന്നു.
Example – sl_usbd_vendor_init() എന്ന് വിളിക്കുന്നു

sl_status_t സ്റ്റാറ്റസ്;
status = sl_usbd_vendor_init(); if (status ! SL_STATUS_OK) { /* ഒരു പിശക് സംഭവിച്ചു. പിശക് കൈകാര്യം ചെയ്യൽ ഇവിടെ ചേർക്കണം. */ }
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് ഒരു യുഎസ്ബി ഡിവൈസ് വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു.
നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് വെണ്ടർ ക്ലാസ് പ്രവർത്തനം ചേർക്കുന്നതിന്, നിങ്ങൾ ആദ്യം ഒരു ഉദാഹരണം സൃഷ്ടിക്കണം, തുടർന്ന് അത് നിങ്ങളുടെ ഉപകരണത്തിന്റെ കോൺഫിഗറേഷനിലേക്ക്(കളിലേക്ക്) ചേർക്കണം.
ഒരു വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുന്നു നിങ്ങളുടെ ഉപകരണത്തിന്റെ കോൺഫിഗറേഷനുകളിലേക്ക് വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് ചേർക്കുന്നു
ഒരു വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുന്നു
sl_usbd_vendor_create_instance() എന്ന ഫംഗ്‌ഷനെ വിളിച്ച് ഒരു വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് സൃഷ്ടിക്കുക. ഉദാ.ampഡിഫോൾട്ട് ആർഗ്യുമെന്റുകൾ ഉപയോഗിച്ച് sl_usbd_vendor_create_instance() എങ്ങനെ വിളിക്കാമെന്ന് താഴെ കാണിച്ചിരിക്കുന്നു. sl_usbd_vendor_create_instance() ലേക്ക് കൈമാറേണ്ട കോൺഫിഗറേഷൻ ആർഗ്യുമെന്റുകളെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, USB ഡിവൈസ് വെണ്ടർ ക്ലാസ് ഇൻസ്റ്റൻസ് കോൺഫിഗറേഷനുകൾ കാണുക.
Example – sl_usbd_vendor_create_instance() എന്ന് വിളിക്കുന്നു

uint8_t ക്ലാസ്_എൻ‌ബി‌ആർ; sl_status_t സ്റ്റാറ്റസ്;

സ്റ്റാറ്റസ് = sl_usbd_vendor_create_instance(തെറ്റ്,

(1)

0u,

(2)

app_usbd_vendor_callback_functions, (3)

&ക്ലാസ്_എൻ‌ബി‌ആർ);

(സ്റ്റാറ്റസ് ! 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)

കോൺഫിഗറേഷൻ_എൻ‌ബ്ര_എഫ്‌എസ്);

(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() sl_usb d _v e nd o r_write _b ulk_asy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_sy nc() sl_usb d _v e nd o r_write _inte rrup t_sy nc() sl_usb d _v e nd o r_ re ad _inte rrup t_asy nc
()
sl_usb d _v e nd o r_write _inte rrup t_asy nc
()

Operation Receives data from host through bulk OUT endpoint. This function is blocking. Sends data to host through bulk IN endpoint. This function is blocking. Receives data from host through bulk OUT endpoint. This function is non-blocking. Sends data to host through bulk IN endpoint. This function is non-blocking. Receives data from host through interrupt OUT endpoint. This function is blocking. Sends data to host through interrupt IN endpoint. This function is blocking. Receives data from host through interrupt OUT endpoint. This function is non-
തടയുന്നു.
Sends data to host through interrupt IN endpoint. This function is non-blocking.

The vendor requests are also another way to communicate with the host. When managing vendor requests sent by the host, the application can receive or send data from or to the host using the control endpoint; you will need to provide an application callback passed as a parameter of sl_usbd_vendor_create_instance() . Synchronous Communication

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

55/174

കഴിഞ്ഞുview

Synchronous communication means that the transfer is blocking. When a function is called, the application blocks until the transfer completes with or without an error. A timeout can be specified to avoid waiting forever. The example below shows a read and write that receives data from the host using the bulk OUT endpoint and sends data to the host using the bulk IN endpoint.
Example – Synchronous Bulk Read and Write

__അലൈൻ ചെയ്‌തത്(4) uint8_t rx_buf[2];

__അലൈൻ ചെയ്‌തത്(4) uint8_t tx_buf[2];

uint32_t

എക്സ്ഫെർ_ലെൻ;

sl_status_t (സ്റ്റാറ്റസ്_ടി)

പദവി;

status = sl_usbd_vendor_read_bulk_sync(class_nbr,

(1)

(void *)&rx_buf[0],

(2)

2u,

0u,

(3)

&xfer_len); (എഴുതുക);

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* $$$$ പിശക് കൈകാര്യം ചെയ്യുക. */

}

status = sl_usbd_vendor_write_bulk_sync( class_nbr,

(1)

(void *)&tx_buf[0],

(4)

2u,

0u,

(3)

false,

(5)

&xfer_len); (എഴുതുക);

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* $$$$ പിശക് കൈകാര്യം ചെയ്യുക. */

}

(1) The class instance number created with sl_usbd_vendor_create_instance() provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint.
(2) The application must ensure that the buffer provided to the function is large enough to accommodate all the data. Otherwise, synchronization issues might happen.
(3) In order to avoid an infinite blocking situation, a timeout expressed in milliseconds can be specified. A value of 809 makes the application task wait forever.
(4) ആപ്ലിക്കേഷൻ ഇനീഷ്യലൈസ് ചെയ്ത ട്രാൻസ്മിറ്റ് ബഫർ നൽകുന്നു.
(5) If this flag is set to true , and the transfer length is multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of the transfer.
The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_sync() and sl_usbd_vendor_write_interrupt_sync() , is similar to bulk endpoint communication functions presented in Example – Synchronous Bulk Read and Write.
അസിൻക്രണസ് കമ്മ്യൂണിക്കേഷൻ
Asynchronous communication means that the transfer is non-blocking. When a function is called, the application passes the transfer information to the device stack and does not block. Other application processing can be done while the transfer is in progress over the USB bus. Once the transfer has completed, a callback function is called by the device stack to inform the application about the transfer completion. The example below shows asynchronous read and write.
Example – Asynchronous Bulk Read and Write

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

56/174

കഴിഞ്ഞുview

void app_usbd_vendor_comm (uint8_t class_nbr)

{

__അലൈൻ ചെയ്‌തത്(4) uint8_t rx_buf[2];

__അലൈൻ ചെയ്‌തത്(4) uint8_t tx_buf[2];

sl_status_t (സ്റ്റാറ്റസ്_ടി)

പദവി;

status = sl_usbd_vendor_read_bulk_async(class_nbr,

(void *)&rx_buf[0],

(2)

2u,

app_usbd_vendor_rx_completed,

NULL);

(4)

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* $$$$ പിശക് കൈകാര്യം ചെയ്യുക. */

}

status = sl_usbd_vendor_write_bulk_async(class_nbr,

(void *)&tx_buf[0],

(5)

2u,

app_usbd_vendor_tx_completed,

ശൂന്യം,

(4)

false);

(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 status)

{

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* $$$$ Do some processing. */

} വേറെ {

/* $$$$ പിശക് കൈകാര്യം ചെയ്യുക. */

}

}

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 status)

{

(സ്റ്റാറ്റസ് ! SL_STATUS_OK) ആണെങ്കിൽ {

/* $$$$ Do some processing. */

} വേറെ {

/* $$$$ പിശക് കൈകാര്യം ചെയ്യുക. */

}

}

(1) The class instance number provides an internal reference to the Vendor class to route the transfer to the proper bulk OUT or IN endpoint. (2) The application must ensure that the buffer provided is large enough to accommodate all the data. Otherwise, there may be synchronization issues. (3) The application provides a callback function pointer passed as a parameter. Upon completion of the transfer, the device stack calls this callback function so that the application can finalize the transfer by analyzing the transfer result. For instance, on completion of a read operation, the application might perform processing on the received data. Upon write completion, the application can indicate if the write was successful and how many bytes were sent.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

57/174

കഴിഞ്ഞുview
(4) An argument associated with the callback can be also passed. Then in the callback context, some private information can be retrieved. (5) The application provides the initialized transmit buffer. (6) If this flag is set to true , and the transfer length is a multiple of the endpoint maximum packet size, the device stack will send a zero-length packet to the host to signal the end of transfer. The use of interrupt endpoint communication functions, sl_usbd_vendor_read_interrupt_async() and sl_usbd_vendor_write_interrupt_async() , is similar to the bulk endpoint communication functions presented in Example Asynchronous Bulk Read and Write.
Vendor Request
The USB 2.0 specification defines three types of requests: standard, class, and vendor. All standard requests are handled directly by the core layer, while class requests are managed by the proper associated class. Vendor requests can be processed by the vendor class. To process vendor requests, you must provide an application callback as a parameter of sl_usbd_vendor_create_instance() . After a vendor request is received by the USB device, it must be decoded properly. The example below shows vendor request decoding. Certain requests may be required to receive from or send to the host during the data stage of a control transfer. If no data stage is present, you only have to decode the Setup packet. This example shows the three types of data stage management: no data, data OUT and data IN.
Example – Vendor Request Decoding

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

58/174

കഴിഞ്ഞുview

#define APP_VENDOR_REQ_NO_DATA

0x01u

#define APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST 0x02u

#define APP_VENDOR_REQ_SEND_DATA_TO_HOST 0x03u

#define 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 valid;

sl_status_t സ്റ്റാറ്റസ്;

uint16_t req_len;

uint32_t xfer_len;

(void)class_nbr;

switch(p_setup_req->bRequest) { case APP_VENDOR_REQ_NO_DATA: valid = true; break;

(2) (3)

case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:

(4)

req_len = p_setup_req->wLength;

if (req_len > APP_VENDOR_REQ_DATA_BUF_SIZE) {

// Not enough room to receive data.

return (false);

}

// Receive data via Control OUT EP. // Wait transfer completion forever. status = 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;

case APP_VENDOR_REQ_SEND_DATA_TO_HOST:

(5)

req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;

// Fill buf with a pattern. Mem_Set((void *)&AppVendorReqBuf[0u],
'എ',
req_len);

// Send data via Control IN EP. // Wait transfer completion forever. status = 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)

// Request is not supported.

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

59/174

കഴിഞ്ഞുview

valid =true;break;
case APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST:(4) req_len = p_setup_req->wLength;if(req_len > APP_VENDOR_REQ_DATA_BUF_SIZE){// Not enough room to receive data.return(false);}// Receive data via Control OUT EP.// Wait transfer completion forever. status =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;
case APP_VENDOR_REQ_SEND_DATA_TO_HOST:(5) req_len = APP_VENDOR_REQ_DATA_BUF_SIZE;// Fill buf with a pattern.Mem_Set((void *)&AppVendorReqBuf[0u],’A’,
req_len);// Send data via Control IN EP.// Wait transfer completion forever. status =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;
default:(6)// Request is not supported. valid = DEF_FAIL;break;}return(valid);}

(1) The core will pass the Setup packet content to your application. The structure sl_usbd_setup_req_t contains the same fields as defined by the USB 2.0 specification (refer to section “9.3 USB Device Requests” of the specification for more details):

ടൈപ്പ്ഡെഫ് സ്ട്രക്റ്റ് {

uint8_t bmRequestType; /* Characteristics of request.

*/

uint8_t bRequest; /* Specific request.

*/

uint16_t wValue; /* Varies according to request.

*/

uint16_t wIndex; /* Varies according to request; typically used as index.*/

uint16_t wLength; /* Transfer length if data stagഇ അവതരിപ്പിക്കുന്നു.

*/

} sl_usbd_setup_req_t;

(2) Determine the request. You may use a switch statement if you are using different requests. In this example, there are three different requests corresponding to the three types of the data stage: APP_VENDOR_REQ_NO_DATA, APP_VENDOR_REQ_RECEIVE_DATA_FROM_HOST, and APP_VENDOR_REQ_SEND_DATA_TO_HOST.
(3) If no data stage is present, you only need to decode the other fields. The presence of a data stage or not is indicated by the field wLength being non-null or null.
(4) If the host sends data to the device, you must call the function sl_usbd_core_read_control_sync() . The buffer provided should be able to contain up to wLength bytes. If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(5) If the host receives data from the device, you must call the function sl_usbd_core_write_control_sync() . If any error occurs, return false to the core that will stall the status stage of the control transfer, indicating to the host that the request cannot be processed. true is returned in case of success.
(6) In this example, all requests not recognized are marked by returning false to the core. This one will stall the data or status stage of the control transfer indicating to the host that the request is not supported.
The host sends vendor requests through a host vendor application. USb libraries, such as libusb, can be used to help you develop your custom host vendor application.

പകർപ്പവകാശം © 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 Device Vendor 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 Device Vendor API

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

61/174

USB Device API
USB Device API
USB Device 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 Device Vendor API

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

62/174

USB Device ACM API

USB Device ACM API

USB Device ACM API

USB Device 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

a sl_usbd_cdc_ cm_init(void)
GLOBAL VARIABLES.
ssll__uussbbdd__ccddcc__aaccmm__ccraellabtaec_kins_stta*npc_ea(cumin_tc1a6l_lbtalicnkes_,sutaintte8__int t*eprv_saul,bucinlats1s6__nt bcra)ll_mgmt_capabilities,
Add a new instance of the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_ dd_to_configur tion(uint8_t subcl ss_nbr, uint8_t config_nbr)
Add a CDC ACM subclass class instance into USB device configuration.
a a sl_usbd_cdc_ cm_is_en bled(uint8_t subclass_nbr, bool *p_enabled)
Get the CDC ACM serial emulation subclass enable state.
a a a sl_usbd_cdc_ cm_re d(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Receive data on the CDC ACM serial emulation subclass.
a a a a sl_usbd_cdc_ cm_re d_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Receive data on the CDC ACM serial emulation subclass asynchronously.
a a sl_usbd_cdc_ cm_write(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, uint16_t timeout, uint32_t
*p_xfer_len) Send data on the CDC ACM serial emulation subclass.
a a a sl_usbd_cdc_ cm_write_ sync(uint8_t subcl ss_nbr, uint8_t *p_buf, uint32_t buf_len, a a a a sl_usbd_cdc_ sync_function_t sync_fnct, void *p_ sync_ rg)
Send data on the CDC ACM serial emulation subclass asynchronously.
a a a sl_usbd_cdc_ cm_get_line_control_st te(uint8_t subcl ss_nbr, uint8_t *p_line_ctrl)
Return the state of control lines.
a a a sl_usbd_cdc_ cm_get_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Get the current state of the line coding.
a a a sl_usbd_cdc_ cm_set_line_coding(uint8_t subcl ss_nbr, sl_usbd_cdc_ cm_line_coding_t *p_line_coding)
Set a new line coding.
a a a sl_usbd_cdc_ cm_set_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Set a line state event(s).
a a a a sl_usbd_cdc_ cm_cle r_line_st te_event(uint8_t subcl ss_nbr, uint8_t events)
Clear a line state event(s).

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

63/174

USB Device ACM API
മാക്രോകൾ
#define SL_USBD_CDC_ACM_NBR_NONE 255u
മൊഡ്യൂൾ.
#define SL_USBD_CDC_ACM_PARITY_NONE 0u
PORT SETTINGS DEFINES.
#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_PARITY_SPACE 4u #define 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_CTRL_BREAK 0 01u
LINE EVENTS FLAGS DEFINES.
#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 #define SL_USBD_CDC_ACM_STATE_DSR 0 02u #define 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_PARITY 0 20u #define SL_USBD_CDC_ACM_STATE_OVERUN 0 40u #define SL_USBD_CDC_ACM_CALL_MGMT_DEV 0 01u
CALL MANAGEMENT CAPABILITIES.
#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)
Function Documentation
sl_usbd_cdc_acm_init
sl_status_t sl_usbd_cdc_acm_init (void )
GLOBAL VARIABLES. Parameters
പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

64/174

USB Device ACM API

ടൈപ്പ് ചെയ്യുക
ശൂന്യം

Direction N/A

Argument Name

MACROS GLOBAL CONSTANTS FUNCTION PROTOTYPES CDC ACM FUNCTIONS

Initialize the CDC ACM serial emulation subclass.
മടങ്ങുന്നു

Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

വിവരണം

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, uint8_t * p_subclass_nbr)

Add a new instance of the CDC ACM serial emulation subclass.
പരാമീറ്ററുകൾ

ടൈപ്പ് ചെയ്യുക
uint16_t
uint16_t

Direction Argument Name

വിവരണം

N/A

line_state_interval Line state notification interval in milliseconds (value must

be a power of 2).

N/A

call_mgmt_capabilities Call Management Capabilities bitmap. OR’ed of the

following flags:

SL_USBD_CDC_ACM_CALL_MGMT_DEV Device handles call management itself. SL_USBD_CDC_ACM_CALL_MGMT_DATA_CCI_DCI Device can send/receive call management information over a Data Class interface.

sl_usbd_cdc_acm_callbacks_t N/A
*

uint8_t *

N/A

p_acm_callbacks p_subclass_nbr

Optional pointers to callback functions to be called on various events.
Param to variable that will receive CDC ACM serial emulation subclass instance number.

മടങ്ങുന്നു

Return SL_STATUS_OK on success or another SL_STATUS code on failure.

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)

Add a CDC ACM subclass class instance into USB device configuration.
പരാമീറ്ററുകൾ

ടൈപ്പ് ചെയ്യുക
uint8_t uint8_t

Direction N/A N/A

Argument Name
subclass_nbr config_nbr

Description CDC ACM serial emulation subclass instance number. Configuration index to add new test class interface to.

മടങ്ങുന്നു

പകർപ്പവകാശം © 2025 സിലിക്കൺ ലബോറട്ടറികൾ. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്തം.

65/174

USB Device ACM API
Returns SL_STATUS_OK on success or another SL_STATUS code on failure.

sl_usbd_cdc_acm_is_enabled

sl_status_t sl_usbd_cdc_acm_is_enabled (uint8_t subclass_nbr, bool * p_enabled)

Get the CDC ACM serial emulation subclass enable state.
പരാമീറ്ററുകൾ

ടൈപ്പ് ചെയ്യുക

ദിശ

Argument Name

വിവരണം

uint8_t N/A

subclass_nbr CDC ACM serial emulation subclass instance number.

bool * N/A

p_enabled

Boolean to a variable that will receive enable status. The variable is set to true, CDC ACM serial emulation is enabled. The va

പ്രമാണങ്ങൾ / വിഭവങ്ങൾ

SILICON LABS USB Device Stack [pdf] നിർദ്ദേശ മാനുവൽ
USB Device Stack, Device Stack, Stack

റഫറൻസുകൾ

ഒരു അഭിപ്രായം ഇടൂ

നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിക്കില്ല. ആവശ്യമായ ഫീൽഡുകൾ അടയാളപ്പെടുത്തി *