સિલિકોન લેબ્સ યુએસબી ડિવાઇસ સ્ટેક સૂચના માર્ગદર્શિકા

USB ઉપકરણ સ્ટેક

વિશિષ્ટતાઓ

  • યુએસબી સંસ્કરણ: 1.5.1
  • પ્રકાશન તારીખ: જુલાઈ 21, 2025
  • સિમ્પ્લીસિટી SDK વર્ઝન: 2025.6.1

ઉત્પાદન ઓવરview

સિલિકોન લેબ્સ દ્વારા યુએસબી ડિવાઇસ સ્ટેક બહુમુખી અને
IoT પ્રોજેક્ટ્સ માટે ઉપયોગમાં સરળ USB કનેક્ટિવિટી, સુવિધા આપે છે
નેટવર્ક કો-પ્રોસેસર્સ અને હોસ્ટ્સ વચ્ચે વાતચીત.

લક્ષણો

  • કાર્યક્ષમ USB ઉપકરણ સ્ટેક
  • IoT પ્રોજેક્ટ્સ માટે આદર્શ
  • નેટવર્ક કો-પ્રોસેસરો વચ્ચે વાતચીત માટે સપોર્ટ અને
    યજમાનો

ઉત્પાદન વપરાશ સૂચનાઓ

USB ઉપકરણ ગોઠવણી

તમારા પ્રોજેક્ટ અનુસાર USB ઉપકરણ સેટિંગ્સ ગોઠવો.
USB ઉપકરણ રૂપરેખાંકન વિભાગનો સંદર્ભ લઈને આવશ્યકતાઓ
દસ્તાવેજીકરણમાં.

USB ઉપકરણ પ્રોગ્રામિંગ માર્ગદર્શિકા

કેવી રીતે કરવું તે સમજવા માટે USB ડિવાઇસ પ્રોગ્રામિંગ માર્ગદર્શિકાને અનુસરો
વિવિધ માટે USB ઉપકરણ સાથે પ્રોગ્રામ અને ક્રિયાપ્રતિક્રિયા કરો
એપ્લિકેશન્સ

USB ઉપકરણ વર્ગો

યુએસબી ડિવાઇસ ક્લાસ વિભાગ ઓવર પૂરું પાડે છેview અલગ અલગ
CDC ACM, HID, MSC SCSI, અને વેન્ડર ક્લાસ જેવા વર્ગો. પસંદ કરો
તમારા ઉપકરણની કાર્યક્ષમતાના આધારે યોગ્ય વર્ગ.

USB ઉપકરણ મુશ્કેલીનિવારણ

જો તમને USB ઉપકરણમાં કોઈ સમસ્યા આવે, તો નો સંદર્ભ લો
ઉકેલો અને ડિબગીંગ માટે USB ઉપકરણ મુશ્કેલીનિવારણ વિભાગ
ટીપ્સ

માઈક્રોસોફ્ટ વિન્ડોઝ ઓએસ યુએસબી હોસ્ટ

જો તમે Microsoft Windows OS USB સાથે USB ઉપકરણનો ઉપયોગ કરી રહ્યા છો
યજમાન, માં આપેલી માર્ગદર્શિકાનું પાલન કરવાનું ભૂલશો નહીં
સીમલેસ એકીકરણ માટે દસ્તાવેજીકરણ.

FAQ

પ્ર: કેટલાક સામાન્ય ભૂતપૂર્વ શું છેampહું કેટલા ઉપકરણોનો ઉપયોગ કરીને બનાવી શકું છું
આ USB સ્ટેક?

A: USB સ્ટેક તમને ઉપકરણો બનાવવાની મંજૂરી આપે છે જેમ કે
યુએસબી-ટુ-સીરીયલ એડેપ્ટર, ઉંદર અથવા કીબોર્ડ, દૂર કરી શકાય તેવું સ્ટોરેજ
ઉપકરણો, અને કસ્ટમ ઉપકરણો.

પ્રશ્ન: શું આનો ઉપયોગ કરવા માટે કોઈ ચોક્કસ સોફ્ટવેર આવશ્યકતાઓ છે?
USB ઉપકરણ સ્ટેક?

A: સુસંગત સોફ્ટવેરમાં સિમ્પ્લીસિટી SDK, સિમ્પ્લીસિટીનો સમાવેશ થાય છે.
સ્ટુડિયો, સિમ્પ્લીસિટી કમાન્ડર, GCC (ધ GNU કમ્પાઇલર કલેક્શન),
ARM માટે IAR એમ્બેડેડ વર્કબેન્ચ, અને IAR EWARM.

યુનિવર્સલ સીરીયલ બસ યુએસબી

યુનિવર્સલ સીરીયલ બસ યુએસબી

યુએસબી ઓવરview ઉપરview
પ્રકાશન નોંધો USB
સ્પષ્ટીકરણો અને સુવિધાઓview
USB ઉપકરણ ગોઠવણી પૂર્ણview
યુએસબી ડિવાઇસ પ્રોગ્રામિંગ માર્ગદર્શિકાview
યુએસબી ડિવાઇસ વર્ગો સમાપ્તview સીડીસી એસીએમ ક્લાસ ઓવર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_ઉપકરણ_રૂપરેખાંકન_t sl_usbd_સેટઅપ_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 ઉપકરણ
USB એ કમ્પ્યુટર સિસ્ટમ્સના ઇતિહાસમાં સૌથી સફળ કોમ્યુનિકેશન ઇન્ટરફેસમાંનું એક છે અને કમ્પ્યુટર પેરિફેરલ્સને કનેક્ટ કરવા માટેનું વાસ્તવિક ધોરણ છે. સિલિકોન લેબ્સ USB ડિવાઇસ સ્ટેક એ એક USB ડિવાઇસ મોડ્યુલ છે જે ખાસ કરીને એમ્બેડેડ સિસ્ટમ્સ માટે રચાયેલ છે. સિલિકોન લેબ્સની ગુણવત્તા, સ્કેલેબિલિટી અને વિશ્વસનીયતા સાથે ગ્રાઉન્ડ અપથી બનેલ, તે USB 2.0 સ્પષ્ટીકરણનું પાલન કરવા માટે સખત માન્યતા પ્રક્રિયામાંથી પસાર થયું છે. આ દસ્તાવેજીકરણ સિલિકોન લેબ્સ USB ડિવાઇસ સ્ટેકને કેવી રીતે પ્રારંભ કરવું, શરૂ કરવું અને તેનો ઉપયોગ કેવી રીતે કરવો તેનું વર્ણન કરે છે. તે વિવિધ રૂપરેખાંકન મૂલ્યો અને તેમના ઉપયોગો સમજાવે છે. તેમાં ઓવરview ટેકનોલોજી, રૂપરેખાંકન શક્યતાઓના પ્રકારો, અમલીકરણ પ્રક્રિયાઓ, અને ભૂતપૂર્વampદરેક ઉપલબ્ધ વર્ગ માટે લાક્ષણિક ઉપયોગના થોડાક.
USB ખ્યાલોને ઝડપથી સમજવામાં તમારી મદદ કરવા માટે, દસ્તાવેજીકરણમાં ઘણા ભૂતપૂર્વampમૂળભૂત કાર્યો સાથે USB ના ઓછા. આ ભૂતપૂર્વampલેસ તમને એક માળખું પૂરું પાડશે જે તમને ઝડપથી ઉપકરણો બનાવવા માટે પરવાનગી આપે છે. આ ભૂતપૂર્વampલેસ સમાવેશ થાય છે:
યુએસબી-ટુ-સીરીયલ એડેપ્ટર (કોમ્યુનિકેશન ડિવાઇસ ક્લાસ) માઉસ અથવા કીબોર્ડ (હ્યુમન ઇન્ટરફેસ ડિવાઇસ ક્લાસ) રીમુવેબલ સ્ટોરેજ ડિવાઇસ (માસ સ્ટોરેજ ક્લાસ) કસ્ટમ ડિવાઇસ (વેન્ડર ક્લાસ)
નીચેની ઓવર છેview દસ્તાવેજીકરણ વિભાગોમાંથી:
સ્પષ્ટીકરણો અને સુવિધાઓ USB ઉપકરણ રૂપરેખાંકન USB ઉપકરણ પ્રોગ્રામિંગ માર્ગદર્શિકા USB ઉપકરણ વર્ગો
સીડીસી એસીએમ ક્લાસ એચઆઈડી ક્લાસ એમએસસી એસસીએસઆઈ ક્લાસ વેન્ડર ક્લાસ યુએસબી ડિવાઇસ ટ્રબલશૂટિંગ માઈક્રોસોફ્ટ વિન્ડોઝ ઓએસ યુએસબી હોસ્ટ

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

3/174

યુએસબી
યુએસબી

USB વર્ઝન 1.5.1 21 જુલાઈ, 2025 – રિલીઝ નોટ્સ
સિમ્પ્લીસિટી SDK વર્ઝન 2025.6.1
સિલિકોન લેબ્સનું કાર્યક્ષમ USB ડિવાઇસ સ્ટેક IoT પ્રોજેક્ટ્સ માટે બહુમુખી, ઉપયોગમાં સરળ USB કનેક્ટિવિટી પ્રદાન કરે છે, જેમાં નેટવર્ક કો-પ્રોસેસર્સ અને હોસ્ટ્સ વચ્ચે વાતચીતનો સમાવેશ થાય છે. અગાઉના પ્રકાશનો માટે અહીં ક્લિક કરો.
પ્રકાશન સારાંશ
મુખ્ય સુવિધાઓ | API ફેરફારો | બગ ફિક્સ | ચિપ સક્ષમતા
મુખ્ય લક્ષણો
ફક્ત અંતર્ગત પ્લેટફોર્મ બદલાય છે.
API ફેરફારો
કોઈ નહિ.
બગ ફિક્સેસ
કોઈ નહિ.
ચિપ સક્ષમતા
કોઈ નહિ.
મુખ્ય લક્ષણો
નવી સુવિધાઓ | ઉન્નત્તિકરણો | દૂર કરેલી સુવિધાઓ | નાપસંદ કરેલી સુવિધાઓ
નવી સુવિધાઓ
કોઈ નહિ.
ઉન્નત્તિકરણો
ફક્ત અંતર્ગત પ્લેટફોર્મ બદલાય છે.
દૂર કરેલી સુવિધાઓ
કોઈ નહિ.
વંચિત સુવિધાઓ
કોઈ નહિ.
API ફેરફારો
નવા API | સંશોધિત API | દૂર કરેલા API | નાપસંદ કરેલા API
નવા API

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

4/174

યુએસબી
કોઈ નહિ.
સંશોધિત API
કોઈ નહિ.
દૂર કરેલા API
કોઈ નહિ.
નાપસંદ કરેલ API
કોઈ નહિ.
બગ ફિક્સેસ
કોઈ નહિ.
ચિપ સક્ષમતા
કોઈ નહિ.
અરજી Exampલે ચેન્જીસ
નવા ભૂતપૂર્વampલેસ | સંશોધિત ભૂતપૂર્વampદૂર કરેલ ભૂતપૂર્વampલેસ | નાપસંદ કરેલ ભૂતપૂર્વampલેસ
નવા ભૂતપૂર્વampલેસ
કોઈ નહિ.
સંશોધિત ભૂતપૂર્વampલેસ
કોઈ નહિ.
દૂર કરેલ ભૂતપૂર્વampલેસ
કોઈ નહિ.
નાપસંદ કરેલ એક્સampલેસ
કોઈ નહિ.
પ્રકાશન ફેરફારોની અસર
અસર નિવેદનો | સ્થળાંતર માર્ગદર્શિકા
અસર નિવેદનો
કોઈ નહિ.
સ્થળાંતર માર્ગદર્શિકા
કોઈ નહિ.
જાણીતા મુદ્દાઓ અને મર્યાદાઓ
કોઈ નહિ.
આ પ્રકાશનનો ઉપયોગ કરીને

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

5/174

યુએસબી

પ્રકાશનમાં શું છે? | સુસંગત સોફ્ટવેર | ઇન્સ્ટોલેશન અને ઉપયોગ | મદદ અને પ્રતિસાદ

રિલીઝમાં શું છે?

USB ઉપકરણ સ્ટેક એપ્લિકેશન એક્સampલેસ
સુસંગત સોફ્ટવેર

સોફ્ટવેર
સિમ્પ્લીસિટી એસડીકે સિમ્પ્લીસિટી સ્ટુડિયો સિમ્પ્લીસિટી કમાન્ડર જીસીસી ધ જીએનયુ કમ્પાઇલર કલેક્શન) એઆરએમ માટે આઇએઆર એમ્બેડેડ વર્કબેન્ચ આઇએઆર ઇવાર્મ

સુસંગત સંસ્કરણ અથવા પ્રકાર
૨૦૨૫.૬.૦ ૫.૧૧.૦ ૧.૧૮.૨ (સિમ્પ્લીસિટી સ્ટુડિયો સાથે પ્રદાન કરેલ) ૧૨.૨.૧ (સિમ્પ્લીસિટી સ્ટુડિયો સાથે પ્રદાન કરેલ) ૯.૪૦.૧ (સિમ્પ્લીસિટી સ્ટુડિયો સાથે પ્રદાન કરેલ)

સ્થાપન અને ઉપયોગ

તમારા વિકાસને શરૂ કરવા માટે અમારી મુલાકાત લો:
USB ડિવાઇસ પ્રોગ્રામિંગ માર્ગદર્શિકા. API દસ્તાવેજીકરણ.
સિક્યોર વૉલ્ટ ઇન્ટિગ્રેશન વિશે માહિતી માટે, સિક્યોર વૉલ્ટ જુઓ.
ફરીview સુરક્ષા અને સોફ્ટવેર સલાહકાર સૂચનાઓ અને તમારી સૂચના પસંદગીઓનું સંચાલન કરો:
ò https://community.silabs.com/ પર જાઓ. ó તમારા એકાઉન્ટ ઓળખપત્રો સાથે લોગ ઇન કરો. ô તમારા પ્રો પર ક્લિક કરોfile પૃષ્ઠના ઉપર-જમણા ખૂણામાં ચિહ્ન.
õ ડ્રોપડાઉન મેનૂમાંથી સૂચનાઓ પસંદ કરો. ö સૂચનાઓ વિભાગમાં, ફરીથી જોવા માટે મારા ઉત્પાદન સૂચનાઓ ટેબ પર જાઓview ઐતિહાસિક સુરક્ષા અને સોફ્ટવેર સલાહકાર
સૂચનાઓ
÷ તમારી પસંદગીઓનું સંચાલન કરવા માટે, તમે કયા ઉત્પાદન અપડેટ્સ અને સલાહ આપો છો તે કસ્ટમાઇઝ કરવા માટે સૂચનાઓ મેનેજ કરો ટેબનો ઉપયોગ કરો
પ્રાપ્ત કરો.
ભલામણ કરેલ ગોઠવણી સેટિંગ્સ માટે, અહીં જુઓ.
આ પ્રકાશનમાં સોફ્ટવેર વિશે વધુ જાણવા માટે, અમારા ઓનલાઈન દસ્તાવેજોનો અભ્યાસ કરો.
મદદ અને પ્રતિસાદ

સિલિકોન લેબ્સ સપોર્ટનો સંપર્ક કરો. જવાબો મેળવવા માટે અમારા Ask AI ટૂલનો ઉપયોગ કરવા માટે, આ પૃષ્ઠની ટોચ પર શોધ ક્ષેત્ર જુઓ.

નોંધ: Ask AI પ્રાયોગિક છે.

અમારા ડેવલપર સમુદાય પાસેથી મદદ મેળવો.
SDK પ્રકાશન અને જાળવણી નીતિ
અમારી SDK રિલીઝ અને જાળવણી નીતિ જુઓ.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

6/174

ઉપરview
ઉપરview
વિશિષ્ટતાઓ
"યુનિવર્સલ સીરીયલ બસ સ્પષ્ટીકરણ પુનરાવર્તન 2.0" નું પાલન કરે છે "ઇન્ટરફેસ એસોસિએશન ડિસ્ક્રીપ્ટર એન્જિનિયરિંગ ચેન્જ નોટિસ (ECN)" લાગુ કરે છે ટ્રાન્સફર પ્રકારો
કંટ્રોલ બલ્ક ઇન્ટરપ્ટ યુએસબી ક્લાસ કોમ્યુનિકેશન ડિવાઇસ ક્લાસ (સીડીસી) એબ્સ્ટ્રેક્ટ કંટ્રોલ મોડેલ (એસીએમ) હ્યુમન ઇન્ટરફેસ ડિવાઇસ (એચઆઈડી) માસ સ્ટોરેજ ક્લાસ (એમએસસી) વેન્ડર-વિશિષ્ટ ક્લાસ ફ્રેમવર્ક
લક્ષણો
મેમરી ફૂટપ્રિન્ટને ન્યૂનતમ કરવા માટે ફક્ત જરૂરી સુવિધાઓ શામેલ કરવા માટે સ્કેલેબલ પૂર્ણ-સ્પીડ (12 Mbit/s) ને સપોર્ટ કરે છે સંયુક્ત (મલ્ટિ-ફંક્શન) ઉપકરણોને સપોર્ટ કરે છે મલ્ટી-કન્ફિગરેશન ઉપકરણોને સપોર્ટ કરે છે USB પાવર-સેવિંગ કાર્યક્ષમતાઓને સપોર્ટ કરે છે (ડિવાઇસ સસ્પેન્ડ અને રિઝ્યુમ) માઇક્રોમ OS માં માસ સ્ટોરેજ ક્લાસનું સંપૂર્ણ એકીકરણ File સિસ્ટમ મોડ્યુલ CMSIS-RTOS2 એબ્સ્ટ્રેક્શન લેયર સાથે વિકસાવવામાં આવ્યું છે જેથી તે વિવિધ OS સાથે કામ કરી શકે. સિલિકોન લેબ્સ GSDK ફ્રીRTOS અને માઇક્રોમ OS પોર્ટ સાથે આવે છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

7/174

ઉપરview
ઉપરview

USB ઉપકરણ ગોઠવણી

આ વિભાગ સિલિકોન લેબ્સ યુએસબી ડિવાઇસને કેવી રીતે ગોઠવવું તેની ચર્ચા કરે છે. રૂપરેખાંકન પરિમાણોના ત્રણ જૂથો છે, નીચે મુજબ:
USB ઉપકરણ મુખ્ય રૂપરેખાંકન USB ઉપકરણ માહિતી રૂપરેખાંકન USB ઉપકરણ હાર્ડવેર રૂપરેખાંકન
USB ઉપકરણ કોર રૂપરેખાંકન
સિલિકોન લેબ્સ યુએસબી ડિવાઇસને sl_usbd_core_config.h માં સ્થિત #defines ના સેટ દ્વારા કમ્પાઇલ સમયે ગોઠવી શકાય છે. file. USB ઉપકરણ શક્ય હોય ત્યારે #defines નો ઉપયોગ કરે છે કારણ કે તે કમ્પાઇલ સમયે કોડ અને ડેટા કદને સક્ષમ સુવિધાઓના આધારે સ્કેલ કરવાની મંજૂરી આપે છે. આ સિલિકોન લેબ્સ USB ઉપકરણના રીડ-ઓન્લી મેમરી (ROM) અને રેન્ડમ-એક્સેસ મેમરી (RAM) ફૂટપ્રિન્ટ્સને તમારી એપ્લિકેશનની જરૂરિયાતોના આધારે ગોઠવવાની મંજૂરી આપે છે.
ભલામણ કરેલ: રૂપરેખાંકન પ્રક્રિયાને ડિફોલ્ટ મૂલ્યો (બોલ્ડમાં પ્રકાશિત) સાથે શરૂ કરો.
નીચેના વિભાગો ટેમ્પલેટ રૂપરેખાંકનમાં ક્રમના આધારે ગોઠવાયેલા છે. file, sl_usbd_core_config.h.
મુખ્ય રૂપરેખાંકન વર્ગો રૂપરેખાંકન
મુખ્ય રૂપરેખાંકન
કોષ્ટક - USB ઉપકરણ કોર રૂપરેખાંકન સ્થિરાંકો

સતત વર્ણન

ડિફૉલ્ટ મૂલ્ય

SL_USBD_TA SK_STACK_ કદ

USBD કોર ટાસ્કના સ્ટેક કદને બાઇટ્સમાં ગોઠવે છે.

4096

SL_USBD_TA SK_PRIORIT Y

USBD કોર કાર્યની પ્રાથમિકતા ગોઠવે છે. આ CMSIS-RTOS2 પ્રાથમિકતા છે.

ઓએસપ્રાયોરિટીહાઈ

SL_USBD_A UTO_START _USB_DEVIC E

જો સક્ષમ હોય, તો કર્નલ શરૂ થયા પછી USB ઉપકરણ આપમેળે શરૂ થશે અને તે 1 USBD કોર કાર્ય પહેલી વાર શેડ્યૂલ કરવામાં આવશે. જો અક્ષમ હોય, તો તમારી એપ્લિકેશન USB હોસ્ટ દ્વારા શોધવા માટે તૈયાર થાય ત્યારે sl_usbd_core_start_device() ને કૉલ કરવાની જરૂર પડશે.

SL_USBD_C sl_usbd_add_configuration() દ્વારા ઉમેરવામાં આવનાર કુલ રૂપરેખાંકનોની સંખ્યા

1

ઓનફિગુરાટી ફંક્શન.

ઓન_ક્વોન્ટી

TY

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

8/174

ઉપરview

સતત
SL_USBD _ઇન્ટરફ ACE_QU એન્ટિટી
SL_USBD _ALT_INT ERFACE_QUANTI
TY
SL_USBD _ઇન્ટરફ ACE_GR
OUP_QU
એન્ટિટી
SL_USBD _DESCRI
પીટીઓઆર_ક્યુ
યુએનટીટી
SL_USBD _STRING _QUANTI
TY
SL_USBD _OPEN_E NDPOIN TS_QUA NTITY

વર્ણન તમારા બધા રૂપરેખાંકનો માટે ઉમેરવાના કુલ USB ઇન્ટરફેસની સંખ્યા. આ મોટાભાગે ઉપયોગમાં લેવાતા વર્ગ(ઓ) પર આધાર રાખે છે. વર્ગના દાખલાને કેટલા ઇન્ટરફેસની જરૂર છે તે વિશે વધુ માહિતી માટે, તમારા વર્ગ(ઓ) ના "કોરમાંથી સંસાધન જરૂરિયાતો" વિભાગનો સંદર્ભ લો.
તમારા બધા રૂપરેખાંકનો માટે ઉમેરવાના કુલ USB વૈકલ્પિક ઇન્ટરફેસની સંખ્યા. આ મોટાભાગે ઉપયોગમાં લેવાતા વર્ગ(ઓ) પર આધાર રાખે છે. આ મૂલ્ય હંમેશા SL_USBD_INTERFACE_QUANTITY કરતા સમાન અથવા વધારે હોવું જોઈએ. વર્ગના દાખલાને કેટલા વૈકલ્પિક ઇન્ટરફેસની જરૂર છે તે વિશે વધુ માહિતી માટે, તમારા વર્ગ(ઓ) ના "કોરમાંથી સંસાધન જરૂરિયાતો" વિભાગનો સંદર્ભ લો.
તમારા બધા રૂપરેખાંકનો માટે ઉમેરવામાં આવનાર કુલ USB ઇન્ટરફેસ જૂથોની સંખ્યા. આ મોટાભાગે ઉપયોગમાં લેવાતા વર્ગ(ઓ) પર આધાર રાખે છે. એક વર્ગના ઉદાહરણ માટે કેટલા ઇન્ટરફેસ જૂથોની જરૂર છે તે અંગે વધુ માહિતી માટે, તમારા વર્ગ(ઓ) ના "કોરમાંથી સંસાધન જરૂરિયાતો" વિભાગનો સંદર્ભ લો.
તમારા બધા રૂપરેખાંકનો માટે ઉમેરવામાં આવનાર કુલ એન્ડપોઇન્ટ ડિસ્ક્રીપ્ટર્સની સંખ્યા. આ મોટાભાગે ઉપયોગમાં લેવાતા વર્ગ(ઓ) પર આધાર રાખે છે. ક્લાસ ઇન્સ્ટન્સને કેટલા એન્ડપોઇન્ટ ડિસ્ક્રીપ્ટર્સની જરૂર છે તે અંગે વધુ માહિતી માટે, તમારા વર્ગ(ઓ) ના "કોરમાંથી સંસાધન જરૂરિયાતો" વિભાગમાં "એન્ડપોઇન્ટ્સની સંખ્યા" નો સંદર્ભ લો. નોંધ કરો કે નિયંત્રણ અંતિમ બિંદુઓને અહીં ધ્યાનમાં લેવાની જરૂર નથી. USB સ્ટ્રિંગ્સની કુલ સંખ્યા. જથ્થાને શૂન્ય પર સેટ કરવાથી સુવિધા અક્ષમ થઈ જશે. આને અક્ષમ કરવાથી ઉપકરણ એપ્લિકેશનમાંથી પસાર થયેલ કોઈપણ USB વર્ણન સ્ટ્રિંગ્સ સંગ્રહિત કરી શકશે નહીં. આનો અર્થ એ છે કે હોસ્ટ વર્ણન સ્ટ્રિંગ્સ (જેમ કે ઉત્પાદક અને ઉત્પાદન નામ) પુનઃપ્રાપ્ત કરવામાં અસમર્થ રહેશે. રૂપરેખાંકન દીઠ ખુલ્લા અંતિમ બિંદુઓની કુલ સંખ્યા. ઉપકરણને નિયંત્રણ સ્થાનાંતરણ માટે ઓછામાં ઓછા બે ખુલ્લા અંતિમ બિંદુઓની જરૂર છે, પરંતુ તમારે ઉપયોગમાં લેવાતા વર્ગ(ઓ) ના અંતિમ બિંદુઓ પણ ઉમેરવા આવશ્યક છે. ક્લાસ ઇન્સ્ટન્સને કેટલા ખુલ્લા અંતિમ બિંદુઓની જરૂર છે તે અંગે વધુ માહિતી માટે, તમારા વર્ગ(ઓ) ના "કોરમાંથી સંસાધન જરૂરિયાતો" વિભાગમાં "એન્ડપોઇન્ટ્સની સંખ્યા" નો સંદર્ભ લો.

ડિફૉલ્ટ મૂલ્ય
10 10
2
20 30 20

વર્ગો રૂપરેખાંકન
વર્ગોમાં ચોક્કસ કમ્પાઇલ-ટાઇમ ગોઠવણીઓ હોય છે. વધુ માહિતી માટે USB ડિવાઇસ વર્ગોનો સંદર્ભ લો.
USB ઉપકરણ માહિતી ગોઠવણી

sl_usbd_device_config.h રૂપરેખાંકન file તમારા ઉપકરણ સંબંધિત મૂળભૂત માહિતી, જેમ કે વેન્ડર/પ્રોડક્ટ ID, ઉપકરણ સ્ટ્રિંગ્સ, વગેરે સેટ કરવા માટે કમ્પાઇલ-ટાઇમ #define-s ને ફરીથી જૂથબદ્ધ કરે છે. નીચે આપેલ કોષ્ટક આ રૂપરેખાંકનમાં ઉપલબ્ધ દરેક માહિતી રૂપરેખાંકન વ્યાખ્યાયિત કરે છે. file.

કોષ્ટક - USB ઉપકરણ માહિતી રૂપરેખાંકન વ્યાખ્યાયિત કરે છે

સતત
SL_USBD_DEVIC ઇ_વેન્ડર_આઈડી
SL_USBD_DEVIC E_PRODUCT_ID

વર્ણન USB ઇમ્પ્લીમેન્ટર્સ ફોરમ દ્વારા આપવામાં આવેલ તમારો વિક્રેતા ઓળખ નંબર. તમે વિક્રેતા ID કેવી રીતે મેળવી શકો છો તે વિશે વધુ માહિતી માટે, http://www.usb.org/developers/vendor/ જુઓ. તમારો ઉત્પાદન ઓળખ નંબર.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

9/174

ઉપરview

સતત

વર્ણન

તમારા ઉપકરણનો SL_USBD_DEVICE_RELEASE રિલીઝ નંબર. _NUMBER

SL_USBD_DEVICE_MANUFA તમારા ઉપકરણના ઉત્પાદકનું વર્ણન કરતી સ્ટ્રિંગ. આ ગોઠવણી અવગણવામાં આવે છે જ્યારે

સીટીયુઆર_સ્ટ્રિંગ

રૂપરેખાંકન 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_FRENCH

- SL_USBD_LANG_ID_GERMAN

– SL_USBD_LANG_ID_ગ્રીક

– SL_USBD_LANG_ID_ITALIAN

– SL_USBD_LANG_ID_પોર્ટુગીઝ

– SL_USBD_LANG_ID_સંસ્કૃત

જ્યારે SL_USBD_STRING_QUANTITY રૂપરેખાંકન 0 પર સેટ હોય ત્યારે આ રૂપરેખાંકનને અવગણવામાં આવે છે.

USB ઉપકરણ હાર્ડવેર ગોઠવણી

તમે જે સિલિકોન લેબ્સ ડિવાઇસનો ઉપયોગ કરી રહ્યા છો તેના આધારે, તમારી પાસે USB VBUS સેન્સ સિગ્નલ માટે ગોઠવવા માટે GPIO પિન અને પોર્ટ હશે. ગોઠવણી વ્યાખ્યાઓ sl_usbd_hardware_config.h હેડરમાં છે. file.

સતત
SL_USBD_DRIVER_VBUS_SENSE_PORT SL_USBD_DRIVER_VBUS_SENSE_PIN

વર્ણન
તમારા બોર્ડ પર USB VBUS સેન્સ સિગ્નલ માટે GPIO પોર્ટ. તમારા બોર્ડ પર USB VBUS સેન્સ સિગ્નલ માટે GPIO પિન.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

10/174

ઉપરview
ઉપરview
USB ઉપકરણ પ્રોગ્રામિંગ માર્ગદર્શિકા
આ વિભાગ USB ઉપકરણ મોડ્યુલનો ઉપયોગ કેવી રીતે કરવો તે સમજાવે છે.
USB ઉપકરણ મોડ્યુલનું પ્રારંભિક સેટઅપ
આ વિભાગ USB ઉપકરણ મોડ્યુલ શરૂ કરવા અને ઉપકરણ ઉમેરવા, તૈયાર કરવા અને શરૂ કરવા માટે જરૂરી મૂળભૂત પગલાંઓનું વર્ણન કરે છે. USB ઉપકરણ મોડ્યુલ શરૂ કરવું USB ઉપકરણ કોર શરૂ કરવું aClss(es) શરૂ કરવું તમારું USB ઉપકરણ ઉમેરવું તમારું USB ઉપકરણ બનાવવું રૂપરેખાંકન(ઓ) ઉમેરી રહ્યા છીએ USB કાર્ય(ઓ) ઉમેરી રહ્યા છીએ તમારું USB ઉપકરણ શરૂ કરી રહ્યા છીએ
ઇવેન્ટ હૂક ફંક્શન્સ
USB ઉપકરણ મોડ્યુલ શરૂ કરી રહ્યા છીએ
USB ઉપકરણ કોર શરૂ કરી રહ્યા છીએ
a US a ફંક્શન sl_usbd_core_init() ને ક્લિંગ કરીને B ડિવાઇસ મોડ્યુલ કોરને લાઈઝ કરીને શરૂઆત કરો. નીચે આપેલ ઉદાહરણ clling sl_usbd_core_init() બતાવે છે.
Example – sl_usbd_core_init() ને કૉલ કરી રહ્યા છીએ
sl_status_t status; status = sl_usbd_core_init(); જો (status ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */
}
વર્ગ(ઓ) શરૂ કરી રહ્યા છીએ
USB ડિવાઇસ મોડ્યુલ કોર શરૂ થયા પછી, તમારે દરેક ક્લાસનો ઉપયોગ શરૂ કરવો આવશ્યક છે જેનો તમે ઉપયોગ કરવા માંગો છો. વધુ માહિતી માટે તમારા aclss(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_ઉપકરણ_સ્પીડ_ફુલ,

/* પૂર્ણ-સ્પીડ ગોઠવણી.

*/

"રૂપરેખાંકન ઉમેરો ભૂતપૂર્વ"amp"ફુલ-સ્પીડ રૂપરેખાંકન",

&config_nbr_fs);

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

USB ફંક્શન(ઓ) ઉમેરી રહ્યા છીએ
તમારા ઉપકરણમાં ઓછામાં ઓછું એક રૂપરેખાંકન સફળતાપૂર્વક ઉમેર્યા પછી, તમે તમારા ઉપકરણમાં ઇન્ટરફેસ અને એન્ડપોઇન્ટ ઉમેરી શકો છો. ઇન્ટરફેસ અને એન્ડપોઇન્ટના પ્રકાર, જથ્થા અને અન્ય પરિમાણોના સંદર્ભમાં દરેક USB વર્ગની પોતાની જરૂરિયાતો હોય છે. સિલિકોન લેબ્સ USB ઉપકરણ તે જે વર્ગો ઓફર કરે છે તેમાં ઇન્ટરફેસ અને એન્ડપોઇન્ટ ઉમેરે છે.
તમારી એપ્લિકેશનમાંથી, તમે USB ક્લાસને ઇન્સ્ટન્ટિએટ કરી શકો છો અને તેને રૂપરેખાંકનમાં ઉમેરી શકો છો. USB ડિવાઇસ ક્લાસ ઇન્સ્ટન્સની વિભાવના વિશે વધુ માહિતી માટે, USB ડિવાઇસ ક્લાસ જુઓ. નોંધ કરો કે તમે મલ્ટિ-ફંક્શન (કમ્પોઝિટ) ડિવાઇસ બનાવવા માટે રૂપરેખાંકનમાં ઘણા જુદા જુદા ક્લાસ ઇન્સ્ટન્સને ઇન્સ્ટન્ટિએટ કરી શકો છો અને ઉમેરી શકો છો.
માજીampનીચે બતાવેલ છે કે ક્લાસ ઇન્સ્ટન્સ કેવી રીતે બનાવવું અને તેને રૂપરેખાંકનમાં કેવી રીતે ઉમેરવું.
Example – તમારા ઉપકરણમાં ક્લાસ ઇન્સ્ટન્સ ઉમેરવું

sl_status_t સ્થિતિ; uint8_t વર્ગ_nbr;
/* તમે જે ક્લાસનો ઉપયોગ કરવા માંગો છો તેનો એક ઇન્સ્ટન્સ બનાવો.*/ /* નોંધ કરો કે ક્લાસના આધારે આ ફંક્શનમાં વધુ દલીલો હોઈ શકે છે. */ 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() દ્વારા પરત કરાયેલ રૂપરેખાંકન નંબર. */ જો (સ્થિતિ ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */ }
તમારું USB ઉપકરણ શરૂ કરી રહ્યું છે
ડિફૉલ્ટ રૂપે, ડિવાઇસ ઇનિશિએલાઇઝેશન પૂર્ણ થયા પછી અને કર્નલ શરૂ થયા પછી, USB ડિવાઇસ કોર ટાસ્ક દ્વારા ડિવાઇસ આપમેળે શરૂ થશે. ડિવાઇસ ક્યારે શરૂ થાય છે અને USB હોસ્ટ દ્વારા દૃશ્યમાન થાય છે તે નિયંત્રિત કરવા માટે, ઓટો-સ્ટાર્ટ સુવિધાને અક્ષમ કરવા માટે રૂપરેખાંકન વ્યાખ્યાયિત કરો SL_USBD_AUTO_START_USB_DEVICE નો ઉપયોગ કરો. જ્યારે અક્ષમ હોય, ત્યારે તમે તમારા ડિવાઇસને બનાવી/તૈયાર કરી લો તે પછી, તમે તેને શરૂ કરી શકો છો અને sl_usbd_core_start_device() ફંક્શનને કૉલ કરીને USB હોસ્ટ માટે તેને દૃશ્યમાન બનાવી શકો છો.
માજીampનીચે આપેલ માહિતી sl_usbd_core_start_device() ફંક્શનનો ઉપયોગ કરીને તમારા ઉપકરણને કેવી રીતે શરૂ કરવું તે બતાવે છે.
Example - તમારું ઉપકરણ શરૂ કરી રહ્યું છે

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

12/174

ઉપરview

sl_status_t સ્થિતિ;
status = sl_usbd_core_start_device(); જો (status ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */ }

ઇવેન્ટ હૂક ફંક્શન્સ
USB ડિવાઇસ કોર મોડ્યુલ બે નબળા હૂક ફંક્શન્સ પ્રદાન કરે છે જેને તમે તમારી એપ્લિકેશનમાં ફરીથી વ્યાખ્યાયિત કરી શકો છો. તેમનો હેતુ બસ અને ગોઠવણી ઘટનાઓ બને ત્યારે સૂચના આપવાનો છે.
ટેબલ - USB ઇવેન્ટ હૂક ફંક્શન્સ

ઘટના

વર્ણન

બસ

જ્યારે USB બસ ઘટના બને ત્યારે કૉલ કરવામાં આવે છે

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 – ઇવેન્ટ હૂક ફંક્શન્સ

void sl_usbd_on_bus_event(sl_usbd_bus_event_t ઇવેન્ટ) { સ્વીચ (ઇવેન્ટ) { કેસ SL_USBD_EVENT_BUS_CONNECT:
// જ્યારે USB કેબલ હોસ્ટ કંટ્રોલર બ્રેકમાં દાખલ કરવામાં આવે છે ત્યારે કોલ કરવામાં આવે છે;
કેસ SL_USBD_EVENT_BUS_DISCONNECT: // જ્યારે USB કેબલ હોસ્ટ કંટ્રોલર બ્રેકમાંથી દૂર કરવામાં આવે છે ત્યારે કોલ કરવામાં આવે છે;
કેસ SL_USBD_EVENT_BUS_RESET: // જ્યારે હોસ્ટ રીસેટ કમાન્ડ બ્રેક મોકલે છે ત્યારે કોલ કરવામાં આવે છે;
કેસ SL_USBD_EVENT_BUS_SUSPEND: // જ્યારે હોસ્ટ સસ્પેન્ડ કમાન્ડ બ્રેક મોકલે છે ત્યારે કોલ કરવામાં આવે છે;
કેસ SL_USBD_EVENT_BUS_RESUME: // જ્યારે હોસ્ટ વેક અપ કમાન્ડ બ્રેક મોકલે છે ત્યારે કોલ કરવામાં આવે છે;
ડિફોલ્ટ: બ્રેક; } }
void sl_usbd_on_config_event(sl_usbd_config_event_t ઇવેન્ટ, uint8_t config_nbr) { સ્વીચ (ઇવેન્ટ) { કેસ SL_USBD_EVENT_CONFIG_SET:
// જ્યારે હોસ્ટ રૂપરેખાંકન વિરામ સેટ કરે છે ત્યારે કૉલ થાય છે;
case SL_USBD_EVENT_CONFIG_UNSET: // જ્યારે રૂપરેખાંકન અનસેટ હોય ત્યારે કૉલ થાય છે બ્રેક;
ડિફોલ્ટ: બ્રેક; } }

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

13/174

ઉપરview

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

14/174

ઉપરview
ઉપરview

USB ઉપકરણ વર્ગો

સિલિકોન લેબ્સ યુએસબી ડિવાઇસમાં ઉપલબ્ધ યુએસબી ક્લાસ કેટલીક સામાન્ય લાક્ષણિકતાઓ શેર કરે છે. આ વિભાગ આ લાક્ષણિકતાઓ અને કોર લેયર સાથેની તેમની ક્રિયાપ્રતિક્રિયાઓ સમજાવે છે.
ચોક્કસ વર્ગ વિશે વધુ માહિતી માટે, નીચે આપેલ જુઓ:
સીડીસી એસીએમ ક્લાસ એચઆઈડી ક્લાસ એમએસસી એસસીએસઆઈ ક્લાસ વેન્ડર ક્લાસ
ક્લાસ ઇન્સ્ટન્સ વિશે
USB ડિવાઇસમાં ઉપલબ્ધ USB ક્લાસ ક્લાસ ઇન્સ્ટન્સના ખ્યાલને અમલમાં મૂકે છે. ક્લાસ ઇન્સ્ટન્સ ડિવાઇસમાં એક ફંક્શનનું પ્રતિનિધિત્વ કરે છે. આ ફંક્શનને એક ઇન્ટરફેસ દ્વારા અથવા ઇન્ટરફેસના જૂથ દ્વારા વર્ણવી શકાય છે અને તે ચોક્કસ ક્લાસ સાથે સંબંધિત છે.
દરેક USB ક્લાસ અમલીકરણમાં ક્લાસ ઇન્સ્ટન્સના ખ્યાલ પર આધારિત કેટલાક રૂપરેખાંકનો અને કાર્યો સામાન્ય હોય છે. સામાન્ય રૂપરેખાંકનો અને કાર્યો નીચેના કોષ્ટકમાં રજૂ કરવામાં આવ્યા છે. 'કોન્સ્ટન્ટ્સ અથવા ફંક્શન' કૉલમ શીર્ષકમાં, પ્લેસહોલ્ડર XXXX ને ક્લાસના નામથી બદલી શકાય છે: CDC, HID, MSC, CDC_ACM અથવા VENDOR (ફંક્શન નામો માટે વિક્રેતા).
કોષ્ટક - બહુવિધ વર્ગ ઉદાહરણોના ખ્યાલ સાથે સંબંધિત સ્થિરાંકો અને કાર્યો

સતત અથવા કાર્ય
SL_USBD_XXXX_CL ASS_INS TANCE_QUANTITY
SL_USBD_XXXX_CONFIGUR ATION_QUANTITY
sl_usb d _XXXX_cre ate _install ()
sl_usbd_XXXX_conf માં_એડ_કરો ()

વર્ણન
ક્લાસ ઇન્સ્ટન્સની મહત્તમ સંખ્યાને ગોઠવે છે.
મહત્તમ સંખ્યાના રૂપરેખાંકનો ગોઠવે છે. વર્ગ પ્રારંભ દરમિયાન, બનાવેલ વર્ગ ઉદાહરણ એક અથવા વધુ રૂપરેખાંકનોમાં ઉમેરવામાં આવશે. એક નવો વર્ગ ઉદાહરણ બનાવે છે.
ઉલ્લેખિત ઉપકરણ ગોઠવણીમાં હાલના વર્ગના ઉદાહરણને ઉમેરે છે.

કોડ અમલીકરણની દ્રષ્ટિએ, વર્ગ એક સ્થાનિક વૈશ્વિક ચલ જાહેર કરશે જેમાં વર્ગ નિયંત્રણ માળખું હશે. આ વર્ગ નિયંત્રણ માળખું એક વર્ગ ઉદાહરણ સાથે સંકળાયેલું છે અને વર્ગ ઉદાહરણને સંચાલિત કરવા માટે ચોક્કસ માહિતી ધરાવશે.
નીચેના આંકડાઓ ઘણા કેસ દૃશ્યો દર્શાવે છે. દરેક આકૃતિમાં એક કોડ એક્સ શામેલ છેample જે કેસ દૃશ્યને અનુરૂપ છે.
આકૃતિ - બહુવિધ વર્ગ ઉદાહરણો - FS ઉપકરણ (1 ઇન્ટરફેસ સાથે 1 રૂપરેખાંકન) એક લાક્ષણિક USB ઉપકરણનું પ્રતિનિધિત્વ કરે છે. ઉપકરણ પૂર્ણ-સ્પીડ (FS) છે અને તેમાં એક જ રૂપરેખાંકન છે. ઉપકરણનું કાર્ય ડેટા સંચાર માટે અંતિમ બિંદુઓની જોડીથી બનેલા એક ઇન્ટરફેસ દ્વારા વર્ણવવામાં આવ્યું છે. એક વર્ગ ઉદાહરણ બનાવવામાં આવ્યું છે અને તમને તેના સંકળાયેલ અંતિમ બિંદુ સાથે સમગ્ર ઇન્ટરફેસનું સંચાલન કરવાની મંજૂરી આપશે.
આકૃતિ - બહુવિધ વર્ગ ઉદાહરણો - 1 ઇન્ટરફેસ સાથે FS ઉપકરણ 1 રૂપરેખાંકન)

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

15/174

ઉપરview

આકૃતિ - બહુવિધ વર્ગ ઉદાહરણો - FS ઉપકરણ (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)

.સક્ષમ કરો = એપ_યુએસબીડી_XXXX_સક્ષમ કરો,

.અક્ષમ કરો = app_usbd_XXXX_અક્ષમ કરો

};

સ્થિતિ = 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() સાથે ક્લાસ ઇન્સ્ટન્સ બનાવતી વખતે કોલબેક સ્ટ્રક્ચર ઑબ્જેક્ટને આર્ગ્યુમેન્ટ તરીકે પાસ કરવામાં આવે છે.
કાર્ય
(૧) ક્લાસ શરૂ કરો. બધા આંતરિક ચલો, માળખાં અને ક્લાસ પોર્ટ શરૂ કરવામાં આવશે. નોંધ લો કે કેટલાક ક્લાસમાં 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 inst nce, class_0, ઉમેરો. sl_usbd_XXXX_add_to_configuration() ઇન્ટરફેસ 0 અને તેના સંકળાયેલ IN અને OUT એન્ડપોઇન્ટ્સ બનાવશે. પરિણામે, ક્લાસ ઇન્સ્ટન્સ ઇન્ટરફેસ 0 અને તેના એન્ડપોઇન્ટ્સને સમાવે છે. ઇન્ટરફેસ 0 પર કરવામાં આવેલ કોઈપણ સંચાર ક્લાસ ઇન્સ્ટન્સ નંબર, class_0 નો ઉપયોગ કરશે. આકૃતિ - બહુવિધ વર્ગ ઇન્સ્ટન્સ - FS ઉપકરણ (2 રૂપરેખાંકનો અને બહુવિધ ઇન્ટરફેસ) વધુ જટિલ ભૂતપૂર્વ રજૂ કરે છેample. એક ફુલ-સ્પીડ ડિવાઇસ બે રૂપરેખાંકનોથી બનેલું હોય છે. ડિવાઇસમાં બે ફંક્શન હોય છે જે એક જ વર્ગના હોય છે, પરંતુ દરેક ફંક્શન બે ઇન્ટરફેસ દ્વારા વર્ણવવામાં આવે છે અને તેમાં દ્વિદિશ અંતિમ બિંદુઓની જોડી હોય છે. આ ઉદાહરણમાંampલે, બે ક્લાસ ઇન્સ્ટન્સ બનાવવામાં આવે છે. દરેક ક્લાસ ઇન્સ્ટન્સ ઇન્ટરફેસના જૂથ સાથે સંકળાયેલ છે, જે ફિગર - મલ્ટીપલ ક્લાસ ઇન્સ્ટન્સ - FS ડિવાઇસ (1 ઇન્ટરફેસ સાથે 1 કન્ફિગરેશન) અને ફિગર - મલ્ટીપલ ક્લાસ ઇન્સ્ટન્સ - FS ડિવાઇસ (2 કન્ફિગરેશન અને મલ્ટીપલ ઇન્ટરફેસ) ની વિરુદ્ધ છે જ્યાં ક્લાસ ઇન્સ્ટન્સ એક ઇન્ટરફેસ સાથે સંકળાયેલું હતું.
આકૃતિ - બહુવિધ વર્ગ ઉદાહરણો - FS ઉપકરણ 2 રૂપરેખાંકનો અને બહુવિધ ઇન્ટરફેસ)

આકૃતિ - બહુવિધ વર્ગ ઉદાહરણો - FS ઉપકરણ (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_configuration માં ઉમેરો (વર્ગ_0, cfg_0); સ્થિતિ = sl_usbd_XXXX_configuration માં ઉમેરો (વર્ગ_1, cfg_0);
સ્થિતિ = sl_usbd_XXXX_configuration માં ઉમેરો (વર્ગ_0, cfg_1); સ્થિતિ = sl_usbd_XXXX_configuration માં ઉમેરો (વર્ગ_1, cfg_1);

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

(૧) ક્લાસ શરૂ કરો. કોઈપણ આંતરિક ચલ, માળખાં અને ક્લાસ પોર્ટ શરૂ કરવામાં આવશે.
(2) ક્લાસ ઇન્સ્ટન્સ બનાવો, class_0. ફંક્શન sl_usbd_XXXX_create_instance() class_0 સાથે સંકળાયેલ ક્લાસ કંટ્રોલ સ્ટ્રક્ચર ફાળવે છે.
(૩) ક્લાસ ઇન્સ્ટન્સ બનાવો, class_1. ફંક્શન sl_usbd_XXXX_create_instance() class_1 સાથે સંકળાયેલ બીજા ક્લાસ કંટ્રોલ સ્ટ્રક્ચરને ફાળવે છે.
(૪) cfg_0 રૂપરેખાંકનમાં ક્લાસ ઇન્સ્ટન્સ, class_0 ઉમેરો. sl_usbd_XXXX_add_to_configuration() ઇન્ટરફેસ 0, ઇન્ટરફેસ 1, વૈકલ્પિક ઇન્ટરફેસ અને સંકળાયેલ IN અને OUT એન્ડપોઇન્ટ બનાવશે. ક્લાસ ઇન્સ્ટન્સ નંબર, class_0, ઇન્ટરફેસ 0 અથવા ઇન્ટરફેસ 1 પર કોઈપણ ડેટા સંચાર માટે ઉપયોગમાં લેવાશે.
(5) cfg_0 રૂપરેખાંકનમાં ક્લાસ ઇન્સ્ટન્સ, class_1, ઉમેરો. sl_usbd_XXXX_add_to_configuration() ઇન્ટરફેસ 2, ઇન્ટરફેસ 3 અને તેમના સંકળાયેલ IN અને OUT એન્ડપોઇન્ટ બનાવશે. ક્લાસ ઇન્સ્ટન્સ નંબર, class_1, ઇન્ટરફેસ 2 અથવા ઇન્ટરફેસ 3 પર કોઈપણ ડેટા સંચાર માટે ઉપયોગમાં લેવાશે.
(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 વર્ગ
યુએસબી ડિવાઇસ સીડીસી બેઝ ક્લાસ ઓવરview કોર યુએસબી ડિવાઇસ સીડીસી એસીએમ ક્લાસ રિસોર્સ નીડ્સ ઓવરview USB ઉપકરણ CDC ACM વર્ગ રૂપરેખાંકન USB ઉપકરણ CDC ACM વર્ગ પ્રોગ્રામિંગ માર્ગદર્શિકા
આ વિભાગ કોમ્યુનિકેશન્સ ડિવાઇસ ક્લાસ (CDC) ક્લાસ અને સિલિકોન લેબ્સના USB ડિવાઇસ સ્ટેક દ્વારા સપોર્ટેડ સંકળાયેલ CDC સબક્લાસનું વર્ણન કરે છે. સિલિકોન લેબ્સ USB-ડિવાઇસ હાલમાં એબ્સ્ટ્રેક્ટ કંટ્રોલ મોડેલ (ACM) સબક્લાસને સપોર્ટ કરે છે, જેનો ઉપયોગ સામાન્ય રીતે સીરીયલ ઇમ્યુલેશન માટે થાય છે.
સીડીસીમાં વિવિધ ટેલિકોમ્યુનિકેશન અને નેટવર્કિંગ ઉપકરણોનો સમાવેશ થાય છે. ટેલિકોમ્યુનિકેશન ઉપકરણોમાં એનાલોગ મોડેમ, એનાલોગ અને ડિજિટલ ટેલિફોન, આઇએસડીએન ટર્મિનલ એડેપ્ટર વગેરેનો સમાવેશ થાય છે. ઉદાહરણ તરીકેampલેસ, નેટવર્કિંગ ઉપકરણોમાં ADSL અને કેબલ મોડેમ, ઇથરનેટ એડેપ્ટર અને હબ હોય છે. CDC USB લિંકનો ઉપયોગ કરીને V.250 (ટેલિફોન નેટવર્ક પર મોડેમ માટે) અને ઇથરનેટ (સ્થાનિક ક્ષેત્ર નેટવર્ક ઉપકરણો માટે) જેવા હાલના સંચાર સેવાઓના ધોરણોને સમાવિષ્ટ કરવા માટે એક માળખું વ્યાખ્યાયિત કરે છે. સંચાર ઉપકરણ ઉપકરણ વ્યવસ્થાપન, જરૂર પડે ત્યારે કોલ વ્યવસ્થાપન અને ડેટા ટ્રાન્સમિશનનો હવાલો સંભાળે છે.
સીડીસી ઉપકરણોના સાત મુખ્ય જૂથોને વ્યાખ્યાયિત કરે છે. દરેક જૂથ સંદેશાવ્યવહારના એક મોડેલનો છે, જેમાં અનેક પેટા વર્ગો શામેલ હોઈ શકે છે. સીડીસી બેઝ ક્લાસ ઉપરાંત ઉપકરણોના દરેક જૂથનો પોતાનો સ્પષ્ટીકરણ દસ્તાવેજ હોય ​​છે. સાત જૂથો છે:
પબ્લિક સ્વિચ્ડ ટેલિફોન નેટવર્ક (PSTN), વૉઇસબેન્ડ મોડેમ, ટેલિફોન અને સીરીયલ ઇમ્યુલેશન ડિવાઇસ સહિત ઉપકરણો. ઇન્ટિગ્રેટેડ સર્વિસીસ ડિજિટલ નેટવર્ક (ISDN) ડિવાઇસ, જેમાં ટર્મિનલ એડેપ્ટર અને ટેલિફોનનો સમાવેશ થાય છે. ઇથરનેટ કંટ્રોલ મોડેલ (ECM) ડિવાઇસ, જેમાં IEEE 802 ફેમિલીને સપોર્ટ કરતા ડિવાઇસ (ઉદાહરણ તરીકે: કેબલ અને ADSL મોડેમ, વાઇફાઇ એડેપ્ટર)નો સમાવેશ થાય છે. એસિંક્રોનસ ટ્રાન્સફર મોડ (ATM) ડિવાઇસ, જેમાં ADSL મોડેમ અને ATM નેટવર્ક્સ (વર્કસ્ટેશન, રાઉટર્સ, LAN સ્વિચ) સાથે જોડાયેલા અન્ય ડિવાઇસનો સમાવેશ થાય છે. વાયરલેસ મોબાઇલ કોમ્યુનિકેશન્સ (WMC) ડિવાઇસ, જેમાં વૉઇસ અને ડેટા કોમ્યુનિકેશનનું સંચાલન કરવા માટે વપરાતા મલ્ટિ-ફંક્શન કોમ્યુનિકેશન્સ હેન્ડસેટ ડિવાઇસનો સમાવેશ થાય છે. ઇથરનેટ ઇમ્યુલેશન મોડેલ (EEM) ડિવાઇસ જે ઇથરનેટ-ફ્રેમ્ડ ડેટાનું વિનિમય કરે છે. નેટવર્ક કંટ્રોલ મોડેલ (NCM) ડિવાઇસ, જેમાં હાઇ-સ્પીડ નેટવર્ક ડિવાઇસ (હાઇ સ્પીડ પેકેટ એક્સેસ મોડેમ, લાઇન ટર્મિનલ ઇક્વિપમેન્ટ)નો સમાવેશ થાય છે.
સીડીસી અને સંકળાયેલ સબક્લાસ અમલીકરણ નીચેના સ્પષ્ટીકરણોનું પાલન કરે છે:
યુનિવર્સલ સીરીયલ બસ, કોમ્યુનિકેશન ડિવાઇસીસ માટે ક્લાસ વ્યાખ્યાઓ, રિવિઝન ૧.૨, ૩ નવેમ્બર ૨૦૧૦. યુનિવર્સલ સીરીયલ બસ, કોમ્યુનિકેશન્સ, પીએસટીએન ડિવાઇસીસ માટે સબક્લાસ, રિવિઝન ૧.૨, ૯ ફેબ્રુઆરી ૨૦૦૭.
યુએસબી ડિવાઇસ સીડીસી બેઝ ક્લાસ ઓવરview
સંદેશાવ્યવહાર ક્ષમતાને અમલમાં મૂકવા માટે CDC ઉપકરણ નીચેના ઇન્ટરફેસોથી બનેલું છે:
કોમ્યુનિકેશન્સ ક્લાસ ઇન્ટરફેસ (CCI) ડિવાઇસ મેનેજમેન્ટ અને વૈકલ્પિક રીતે કોલ મેનેજમેન્ટ માટે જવાબદાર છે.
ડિવાઇસ મેનેજમેન્ટ ડિવાઇસના સામાન્ય રૂપરેખાંકન અને નિયંત્રણ અને હોસ્ટને ઇવેન્ટ્સની સૂચના સક્ષમ કરે છે. કૉલ મેનેજમેન્ટ કૉલ્સ સ્થાપના અને સમાપ્તિને સક્ષમ કરે છે. કૉલ મેનેજમેન્ટ DCI દ્વારા મલ્ટિપ્લેક્સ થઈ શકે છે. બધા CDC ઉપકરણો માટે CCI ફરજિયાત છે. તે CDC ઉપકરણ દ્વારા સપોર્ટેડ કોમ્યુનિકેશન મોડેલનો ઉલ્લેખ કરીને CDC કાર્યને ઓળખે છે. CCI પછીનો ઇન્ટરફેસ કોઈપણ વ્યાખ્યાયિત USB વર્ગ ઇન્ટરફેસ હોઈ શકે છે, જેમ કે ઑડિઓ અથવા વિક્રેતા-વિશિષ્ટ ઇન્ટરફેસ. વિક્રેતા-વિશિષ્ટ ઇન્ટરફેસ ખાસ કરીને DCI દ્વારા રજૂ થાય છે.
ડેટા ક્લાસ ઇન્ટરફેસ (DCI) ડેટા ટ્રાન્સમિશન માટે જવાબદાર છે. ટ્રાન્સમિટ થયેલ અને/અથવા પ્રાપ્ત થયેલ ડેટા ચોક્કસને અનુસરતો નથી
ફોર્મેટ. ડેટા કોમ્યુનિકેશન લાઇનમાંથી કાચો ડેટા, માલિકીના ફોર્મેટને અનુસરતો ડેટા, વગેરે હોઈ શકે છે. CCI ને અનુસરતા બધા DCI ને ગૌણ ઇન્ટરફેસ તરીકે જોઈ શકાય છે.
એક CDC ઉપકરણમાં ઓછામાં ઓછું એક CCI અને શૂન્ય કે તેથી વધુ DCI હોવા આવશ્યક છે. એક CCI અને કોઈપણ ગૌણ DCI મળીને હોસ્ટને એક સુવિધા પૂરી પાડે છે. આ ક્ષમતાને ફંક્શન તરીકે પણ ઓળખવામાં આવે છે. CDC સંયુક્ત ઉપકરણમાં, તમારી પાસે અનેક હોઈ શકે છે

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

19/174

ઉપરview
કાર્યો. તેથી, આકૃતિ - CDC કમ્પોઝિટ ડિવાઇસમાં બતાવ્યા પ્રમાણે, ઉપકરણ CCI અને DCI(s) ના ઘણા સેટથી બનેલું હશે.
આકૃતિ - સીડીસી કમ્પોઝિટ ડિવાઇસ

સીડીસી ઉપકરણ નીચેના અંતિમ બિંદુઓના સંયોજનનો ઉપયોગ કરે તેવી શક્યતા છે:
નિયંત્રણ IN અને OUT એન્ડપોઇન્ટ્સની જોડી જેને ડિફોલ્ટ એન્ડપોઇન્ટ કહેવાય છે. એક વૈકલ્પિક બલ્ક અથવા ઇન્ટરપ્ટ IN એન્ડપોઇન્ટ. બલ્ક અથવા આઇસોક્રોનસ IN અને OUT એન્ડપોઇન્ટ્સની જોડી. નોંધ કરો કે સિલિકોન લેબ્સ USB ડિવાઇસ સ્ટેક હાલમાં આઇસોક્રોનસ એન્ડપોઇન્ટ્સને સપોર્ટ કરતું નથી.
નીચે આપેલ કોષ્ટક વિવિધ અંતિમ બિંદુઓનો ઉપયોગ અને CDC ના કયા ઇન્ટરફેસ દ્વારા તેનો ઉપયોગ થાય છે તે દર્શાવે છે.
કોષ્ટક - સીડીસી એન્ડપોઇન્ટ ઉપયોગ

અંતિમ બિંદુ
નિયંત્રણ IN
નિયંત્રણ બહાર
બલ્ક અથવા આઇસોક્રોનસમાં ઇન્ટરપ્ટ અથવા બલ્ક
બહાર

દિશા
ડિવાઇસ ટુ-હોસ્ટ
હોસ્ટ-ટુડિવાઇસ
ડિવાઇસ ટુ-હોસ્ટ
ડિવાઇસ ટુ-હોસ્ટ
હોસ્ટ-ટુડિવાઇસ

ઈન્ટરફેસ વપરાશ

CCI

ગણતરી માટે માનક વિનંતીઓ, વર્ગ-વિશિષ્ટ વિનંતીઓ, ઉપકરણ

મેનેજમેન્ટ, અને વૈકલ્પિક રીતે કૉલ મેનેજમેન્ટ.

CCI

ગણતરી માટે માનક વિનંતીઓ, વર્ગ-વિશિષ્ટ વિનંતીઓ, ઉપકરણ

મેનેજમેન્ટ, અને વૈકલ્પિક રીતે કૉલ મેનેજમેન્ટ.

CCI

ઇવેન્ટ્સ નોટિફિકેશન, જેમ કે રિંગ ડિટેક્ટ, સીરીયલ લાઇન સ્ટેટસ, નેટવર્ક સ્ટેટસ.

ડીસીઆઈ

કાચો અથવા ફોર્મેટ કરેલ ડેટા સંચાર.

ડીસીઆઈ

કાચો અથવા ફોર્મેટ કરેલ ડેટા સંચાર.

મોટાભાગના સંદેશાવ્યવહાર ઉપકરણો ઇવેન્ટ્સના હોસ્ટને સૂચિત કરવા માટે ઇન્ટરપ્ટ એન્ડપોઇન્ટનો ઉપયોગ કરે છે. જ્યારે USB પ્રોટોકોલ ભૂલોના કિસ્સામાં માલિકીનો પ્રોટોકોલ ડેટા રીટ્રાન્સમિશન પર આધાર રાખે છે ત્યારે ડેટા ટ્રાન્સમિશન માટે આઇસોક્રોનસ એન્ડપોઇન્ટનો ઉપયોગ ન કરવો જોઈએ. આઇસોક્રોનસ સંદેશાવ્યવહાર સ્વાભાવિક રીતે ડેટા ગુમાવી શકે છે કારણ કે તેમાં કોઈ પુનઃપ્રયાસ પદ્ધતિ નથી.
સંદેશાવ્યવહારના સાત મુખ્ય મોડેલોમાં અનેક પેટા વર્ગોનો સમાવેશ થાય છે. એક પેટા વર્ગ ઉપકરણ સંચાલન અને કોલ વ્યવસ્થાપનને હેન્ડલ કરવા માટે ઉપકરણે CCI નો ઉપયોગ કેવી રીતે કરવો જોઈએ તેનું વર્ણન કરે છે. નીચે આપેલ કોષ્ટક બધા શક્ય પેટા વર્ગો અને તેઓ કયા સંચાર મોડેલ સાથે સંબંધિત છે તે દર્શાવે છે.
કોષ્ટક - સીડીસી પેટા વર્ગો

પેટા વર્ગ
ડાયરેક્ટ લાઇન કંટ્રોલ મોડેલ એબ્સ્ટ્રેક્ટ કંટ્રોલ મોડેલ

કોમ્યુનિકેશન મોડેલ
PSTN
PSTN

Exampઆ પેટા વર્ગનો ઉપયોગ કરતા ઉપકરણોની યાદી
USB હોસ્ટ દ્વારા સીધા નિયંત્રિત મોડેમ ઉપકરણો
સીરીયલ ઇમ્યુલેશન ડિવાઇસ, સીરીયલ કમાન્ડ સેટ દ્વારા નિયંત્રિત મોડેમ ડિવાઇસ

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

20/174

ઉપરview

પેટા વર્ગ

કોમ્યુનિકેશન મોડેલ

Exampઆ પેટા વર્ગનો ઉપયોગ કરતા ઉપકરણોની યાદી

ટેલિફોન નિયંત્રણ મોડેલ

PSTN

મલ્ટી-ચેનલ નિયંત્રણ ISDN મોડેલ

CAPI નિયંત્રણ મોડેલ ISDN

ઇથરનેટ નેટવર્કિંગ ECM નિયંત્રણ મોડેલ

એટીએમ નેટવર્કિંગ

એટીએમ

નિયંત્રણ મોડલ

વાયરલેસ હેન્ડસેટ નિયંત્રણ મોડેલ

ડબલ્યુએમસી

ડિવાઇસ મેનેજમેન્ટ WMC

મોબાઇલ ડાયરેક્ટ લાઇન મોડેલ

ડબલ્યુએમસી

ઓબેક્સ

ડબલ્યુએમસી

ઇથરનેટ ઇમ્યુલેશન EEM મોડેલ

નેટવર્ક નિયંત્રણ મોડલ

NCM

વૉઇસ ટેલિફોની ઉપકરણો
બેઝિક રેટ ટર્મિનલ એડેપ્ટર્સ, પ્રાઇમરી રેટ ટર્મિનલ એડેપ્ટર્સ, ટેલિફોન
બેઝિક રેટ ટર્મિનલ એડેપ્ટરો, પ્રાઇમરી રેટ ટર્મિનલ એડેપ્ટરો, ટેલિફોન 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 રૂપરેખાંકન મૂલ્ય માટે, કારણ કે અંતિમ બિંદુઓ ફક્ત ત્યારે જ ખુલે છે જ્યારે હોસ્ટ દ્વારા રૂપરેખાંકન સેટ કરવામાં આવે છે, તમારે ફક્ત વર્ગના ઉદાહરણ માટે જરૂરી અંતિમ બિંદુઓની સંખ્યા ધ્યાનમાં લેવાની જરૂર છે.
યુએસબી ડિવાઇસ સીડીસી એસીએમ સબક્લાસ ઓવર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 વર્ગ એપ્લિકેશન વિશિષ્ટ રૂપરેખાંકનો USB ઉપકરણ CDC ACM વર્ગ ઇન્સ્ટન્સ રૂપરેખાંકનો
USB ઉપકરણ CDC ACM વર્ગ એપ્લિકેશન વિશિષ્ટ રૂપરેખાંકનો

સીડીસી બેઝ ક્લાસ એસીએમ સબક્લાસ
સીડીસી બેઝ ક્લાસ

સૌપ્રથમ, સિલિકોન લેબ્સ યુએસબી ડિવાઇસ સીડીસી ક્લાસ મોડ્યુલનો ઉપયોગ કરવા માટે, તમારે તમારી એપ્લિકેશન જરૂરિયાતો અનુસાર સીડીસી કમ્પાઇલ-ટાઇમ ગોઠવણી #define-s ને સમાયોજિત કરવાની જરૂર પડશે. તેમને sl_usbd_core_config.h હેડરની અંદર ફરીથી જૂથબદ્ધ કરવામાં આવે છે. file CDC વિભાગ હેઠળ. તેમનો હેતુ USB ઉપકરણ મોડ્યુલને કેટલા USB CDC ઑબ્જેક્ટ ફાળવવા તે અંગે માહિતી આપવાનો છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

22/174

ઉપરview

નીચે આપેલ કોષ્ટક આ રૂપરેખાંકન માળખામાં ઉપલબ્ધ દરેક રૂપરેખાંકન ક્ષેત્રનું વર્ણન કરે છે.
કોષ્ટક - USB ઉપકરણ CDC રૂપરેખાંકન વ્યાખ્યાયિત કરે છે

રૂપરેખાંકન નામ
S_INSTANCE_QUANT ITY તરીકે SL_USBD_CDC_CL
SL_USBD_CDC_CONF IGURATION_QUANTI
TY
SL_USBD_CDC_ડેટા _ઇન્ટરફેસ_ક્વોન્ટી
TY

વર્ણન
ફંક્શનને કોલ કરીને તમે ફાળવશો તે ક્લાસ ઇન્સ્ટન્સની સંખ્યા
sl_usbd_cdc_acm_create_instance() .
રૂપરેખાંકનોની સંખ્યા. ACM ક્લાસ ઇન્સ્ટન્સને sl_usbd_cdc_acm_add_to_configuration() માં એક અથવા વધુ aaaa રૂપરેખાંકનોમાં ઉમેરી શકાય છે.
બધા CDC ફંક્શન્સ માટે ડેટા ઇન્ટરફેસ (DCI) ની કુલ સંખ્યા. દરેક CDC ACM ફંક્શન sl_usbd_cdc_acm_create_instance() ફંક્શન સાથે જોડાયેલ છે, જે dd dt ઇન્ટરફેસ કરશે.

ડિફૉલ્ટ મૂલ્ય
2
1
2

ACM સબક્લાસ
ACM સબક્લાસમાં નીચેના કોષ્ટકમાં બતાવેલ એક કમ્પાઇલ-ટાઇમ ગોઠવણી છે.
કોષ્ટક - USB ઉપકરણ CDC ACM રૂપરેખાંકન વ્યાખ્યાયિત કરો

રૂપરેખાંકન નામ
SL_USBD_CDC_ACM_SUBCL ASS_I NSTANCE_QUANTITY

વર્ણન
ને કોલ દ્વારા ફાળવવામાં આવનાર સબક્લાસ ઇન્સ્ટન્સની સંખ્યાને ગોઠવે છે
ફંક્શન sl_usbd_cdc_acm_create_instance() .

ડિફૉલ્ટ મૂલ્ય
2

USB ઉપકરણ CDC ACM વર્ગ ઇન્સ્ટન્સ રૂપરેખાંકનો

આ વિભાગ CDC ACM સીરીયલ ક્લાસ ઇન્સ્ટન્સ સંબંધિત રૂપરેખાંકનોને વ્યાખ્યાયિત કરે છે. ક્લાસ ઇન્સ્ટન્સ ક્રિએશન લાઇન સ્ટેટ ઇન્ટરવલ કોલ mgmt ક્ષમતાઓ p_acm_callbacks
ક્લાસ ઇન્સ્ટન્સ બનાવટ

CDC ACM સીરીયલ ક્લાસ ઇન્સ્ટન્સ બનાવવા માટે, ફંક્શન T a sl_usbd_cdc_acm_create_instance() ને કૉલ કરો. તેનું ફંક્શન ત્રણ રૂપરેખાંકન દલીલો ધરાવે છે, જેમ કે અહીં વર્ણવેલ છે.

લાઇન_સ્ટેટ_ઇન્ટરવલ
આ અંતરાલ (મિલિસેકન્ડમાં) છે જેમાં તમારા CDC ACM સીરીયલ ક્લાસ ઇન્સ્ટન્સ Taa હોસ્ટને લાઇન સ્ટેટ સૂચનાઓની જાણ કરશે. તેનો 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_કોલબેક

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

23/174

ઉપરview

aa M aa p_acm_callbacks એ sl_usbd_cdc_acm_callbacks_t પ્રકારના સ્ટ્રક્ચરનો પોઇન્ટર છે. તેનો હેતુ CDC AC Clss કોલબેક ફંક્શનનો સેટ આપવાનો છે જે CDC ACM ઇવેન્ટ થાય ત્યારે કોલ કરી શકાય. બધા કોલબેક ફરજિયાત નથી અને જ્યારે કોલબેકની જરૂર ન હોય ત્યારે કોલબેક સ્ટ્રક્ચર વેરીએબલમાં નલ પોઇન્ટર (NULL) પાસ કરી શકાય છે. નીચેનું કોષ્ટક આ કન્ફિગરેશન સ્ટ્રક્ચરમાં ઉપલબ્ધ દરેક કન્ફિગરેશન ફીલ્ડનું વર્ણન કરે છે.
કોષ્ટક – sl_usbd_cdc_acm _callbacks_t રૂપરેખાંકન માળખું

ક્ષેત્રો

વર્ણન

.સક્ષમ કરો

જ્યારે USB ક્લાસ ઇન્સ્ટન્સ સક્ષમ હોય ત્યારે કૉલ કરવામાં આવે છે

સફળતાપૂર્વક

.અક્ષમ કરો

જ્યારે USB ક્લાસ ઇન્સ્ટન્સ અક્ષમ હોય ત્યારે કૉલ કરવામાં આવે છે.

.line_control_changed જ્યારે લાઇન કંટ્રોલ ફેરફાર પ્રાપ્ત થાય ત્યારે કૉલ થાય છે.

line_coding_changed જ્યારે લાઇન કોડિંગમાં ફેરફાર પ્રાપ્ત થાય ત્યારે કૉલ થાય છે.

કાર્ય સહી
રદબાતલ એપ્લિકેશન_યુએસબીડી_સીડીસી_એસીએમ_સક્ષમ (યુઆઇટી8_ટી સબક્લાસ_એનબીઆર);
રદબાતલ એપ્લિકેશન_યુએસબીડી_સીડીસી_એસીએમ_ડિઝેબલ (યુઆઇટી8_ટી સબક્લાસ_એનબીઆર);
void app_usbd_cdc_acm_line_control_changed(uint8_t સબક્લાસ_nbr, uint8_t ઇવેન્ટ, uint8_t ઇવેન્ટ_chngd); bool app_usbd_cdc_acm_line_coding_changed(uint8_t સબક્લાસ_nbr, સબક્લાસ_nbr, sl_usbd_cdc_acm_line_coding_t
*પી_લાઇન_કોડિંગ

કૉલબેક ફંક્શન્સ માટે ઇવેન્ટ નોટિફિકેશન કૉલબેક્સ રજીસ્ટર કરવું વિભાગ જુઓ ઉદાહરણ તરીકેample
USB ઉપકરણ CDC ACM વર્ગ પ્રોગ્રામિંગ માર્ગદર્શિકા

આ વિભાગ CDC એબ્સ્ટ્રેક્ટ કંટ્રોલ મોડેલ ક્લાસનો ઉપયોગ કેવી રીતે કરવો તે સમજાવે છે. USB ડિવાઇસ શરૂ કરી રહ્યા છીએ CDC ACM ક્લાસ તમારા ડિવાઇસમાં USB ડિવાઇસ CDC ACM ક્લાસ ઇન્સ્ટન્સ ઉમેરવું CDC ACM ક્લાસનો ઉપયોગ કરીને વાતચીત કરવી
USB ઉપકરણ CDC ACM વર્ગ શરૂ કરી રહ્યા છીએ

તમારા ઉપકરણમાં CDC ACM ક્લાસ કાર્યક્ષમતા ઉમેરવા માટે, તમારે પહેલા sl_usbd_cdc_init() અને sl_usbd_cdc_acm_init() ફંક્શન્સને aacll કરીને CDC બેઝ ક્લાસ અને ACM સબક્લાસને શરૂ કરવા પડશે. નીચે આપેલ ઉદાહરણ બતાવે છે કે ડિફોલ્ટ રગમેન્ટ્સનો ઉપયોગ કરીને sl_usbd_cdc_init() અને sl_usbd_cdc_acm_init() કેવી રીતે cll કરવું.

Example – CDC ACM વર્ગની શરૂઆત

sl_status_t સ્થિતિ;
status = sl_usbd_cdc_init(); જો (status ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */
}
status = sl_usbd_cdc_acm_init(); જો (status ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */
}
તમારા ઉપકરણમાં USB ઉપકરણ CDC ACM ક્લાસ ઇન્સ્ટન્સ ઉમેરવું
તમારા ઉપકરણમાં CDC ACM વર્ગ કાર્યક્ષમતા ઉમેરવા માટે, તમારે એક ઉદાહરણ બનાવવું પડશે, અને પછી તેને તમારા ઉપકરણના રૂપરેખાંકન(ઓ)માં ઉમેરવું પડશે.
સીડીસી એસીએમ ક્લાસ ઇન્સ્ટન્સ બનાવવું

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

24/174

ઉપરview
તમારા ઉપકરણના રૂપરેખાંકન(ઓ)માં CDC ACM ક્લાસ ઇન્સ્ટન્સ ઉમેરવું ઇવેન્ટ સૂચના કૉલબેક્સની નોંધણી કરવી
સીડીસી એસીએમ ક્લાસ ઇન્સ્ટન્સ બનાવવું
aa M aaa ફંક્શન sl_usbd_cdc_acm_create_instance() ને ભરીને CDC AC clss instnce બનાવો. T aaa M aaa નીચે આપેલ ઉદાહરણ બતાવે છે કે sl_usbd_cdc_acm_create_instance() દ્વારા CDC AC clss instnce કેવી રીતે બનાવવું.
Example – sl_usbd_cdc_acm_create_instance() દ્વારા CDC ACM ફંક્શન બનાવવું

uint8_t સબક્લાસ_એનબીઆર; sl_સ્ટેટસ_ટી સ્ટેટસ;
સ્થિતિ = sl_usbd_cdc_acm_create_instance(64u, SL_USBD_ACM_SERIAL_CALL_MGMT_DATA_CCI_DCI | SL_USBD_ACM_SERIAL_CALL_MGMT_DEV, NULL, &subclass_nbr);
જો (સ્થિતિ ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */
}
તમારા ઉપકરણના રૂપરેખાંકન(ઓ)માં CDC ACM ક્લાસ ઇન્સ્ટન્સ ઉમેરવું
CDC ACM ક્લાસ ઇન્સ્ટન્સ બનાવ્યા પછી, તમે ફંક્શનને કૉલ કરીને તેને ગોઠવણીમાં ઉમેરી શકો છો
sl_usbd_cdc_acm_add_to_configuration() .
નીચે આપેલ ઉદાહરણ બતાવે છે કે sl_usbd_cdc_acm_add_to_configuration() કેવી રીતે કરવું.
Example – USBD ACM sl_usbd_cdc_acm_add_to_configuration() પર કૉલ કરો

sl_status_t સ્થિતિ;

સ્થિતિ = sl_usbd_cdc_acm_add_to_configuration(subclass_nbr,

(1)

રૂપરેખા_nbr_fs);

(2)

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

aaa (1) sl_usbd_cdc_acm_create_instance() દ્વારા પરત કરાયેલ રૂપરેખાંકનમાં dd કરવા માટે Cl ss નંબર. (2) રૂપરેખાંકન નંબર (અહીં તેને પૂર્ણ-સ્પીડ રૂપરેખાંકનમાં ઉમેરી રહ્યા છીએ).
ઇવેન્ટ સૂચના કૉલબેક્સની નોંધણી
CDC ACM સીરીયલ ક્લાસ તમારી એપ્લિકેશનને લાઇન કંટ્રોલ અથવા કોડિંગમાં કોઈપણ ફેરફારની સૂચના કોલબેક ફંક્શન દ્વારા સૂચિત કરી શકે છે. ACM ઇન્સ્ટન્સ બનાવટ દરમિયાન કોલબેક ફંક્શન સ્ટ્રક્ચરને દલીલ તરીકે પસાર કરી શકાય છે. નોંધ કરો કે તે કોલબેક વૈકલ્પિક છે. ઉદાહરણ તરીકેample – CDC ACM કોલબેક નોંધણી કોલબેક નોંધણી કાર્યોના ઉપયોગને દર્શાવે છે. ઉદાહરણ તરીકેample – CDC ACM કોલબેક્સ અમલીકરણ એક ભૂતપૂર્વ બતાવે છેampકોલબેક ફંક્શન્સના અમલીકરણનો સમયગાળો.
Example – CDC ACM કોલબેક્સ નોંધણી

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

25/174

ઉપરview

uint8_t સબક્લાસ_એનબીઆર; sl_સ્ટેટસ_ટી સ્ટેટસ;
sl_usbd_cdc_acm_callbacks_t sli_usbd_cdc_acm_callbacks = { એપ_usbd_cdc_acm_કનેક્ટ, એપ_usbd_cdc_acm_ડિસ્કનેક્ટ, એપ_usbd_cdc_acm_લાઇન_કંટ્રોલ_બદલાયેલ, એપ_usbd_cdc_acm_લાઇન_કોડિંગ_બદલાયેલ, };
સ્થિતિ = 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);
જો (સ્થિતિ ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */ }
Example – CDC ACM કોલબેક્સ અમલીકરણ

bool app_usbd_cdc_acm_line_coding_બદલ્યું (uint8_t

સબક્લાસ_એનબીઆર,

sl_usbd_cdc_acm_લાઇન_કોડિંગ_t *p_લાઇન_કોડિંગ)

{

uint32_t બોડ્રેટ_નવું;

uint8_t પેરિટી_નવું;

uint8_t સ્ટોપ_બિટ્સ_નવું;

uint8_t ડેટા_બિટ્સ_નવું;

/* TODO નવી લાઇન કોડિંગ લાગુ કરો.*/ baudrate_new = p_line_coding->BaudRate; parity_new = p_line_coding->Parity; stop_bits_new = p_line_coding->StopBits; data_bits_new = p_line_coding->DataBits;

રીટર્ન (સાચું);

(1)

}

void app_usbd_cdc_acm_line_control_changed (uint8_t સબક્લાસ_nbr, uint8_t ઇવેન્ટ, uint8_t ઇવેન્ટ_ચેન્જ્ડ)
{ બુલ આરટીએસ_સ્ટેટ; બુલ આરટીએસ_સ્ટેટ_બદલાયેલ; બુલ ડીટીઆર_સ્ટેટ; બુલ ડીટીઆર_સ્ટેટ_બદલાયેલ; બુલ બ્રક_સ્ટેટ; બુલ બ્રક_સ્ટેટ_બદલાયેલ;

/* TODO નવું લાઇન કંટ્રોલ લાગુ કરો. */ rts_state = ((event & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; rts_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_RTS) ! 0) ? true : false; dtr_state = ((event & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; dtr_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_DTR) ! 0) ? true : false; brk_state = ((event & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? true : false; brk_state_changed = ((event_changed & SL_USBD_CDC_ACM_CTRL_BREAK) ! 0) ? સાચું : ખોટું;
}

(૧) જો લાઈન કોડિંગ લાગુ કરવામાં નિષ્ફળ જાય તો આ ફંક્શનમાં false પરત કરવું મહત્વપૂર્ણ છે. નહિંતર, true પરત કરો.
સીડીસી એસીએમ ક્લાસનો ઉપયોગ કરીને વાતચીત કરવી
સીરીયલ સ્ટેટસ
લાઇન કોડિંગ લાઇન કંટ્રોલ

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

26/174

ઉપરview

લાઇન સ્ટેટ સબક્લાસ ઇન્સ્ટન્સ કોમ્યુનિકેશન
સીરીયલ સ્ટેટસ
લાઇન કોડિંગ
USB હોસ્ટ CDC ACM ઉપકરણના લાઇન કોડિંગ (બૉડ રેટ, પેરિટી, વગેરે) ને નિયંત્રિત કરે છે. જ્યારે જરૂરી હોય ત્યારે, એપ્લિકેશન લાઇન કોડિંગ સેટ કરવા માટે જવાબદાર હોય છે. નીચેના કોષ્ટકમાં વર્ણવ્યા મુજબ, વર્તમાન લાઇન કોડિંગને પુનઃપ્રાપ્ત કરવા અને સેટ કરવા માટે બે કાર્યો પૂરા પાડવામાં આવ્યા છે.
કોષ્ટક - સીડીસી એસીએમ લાઇન કોડિંગ કાર્યો

કાર્ય
sl_usbd_cdc_acm_g અને t_line _co d ing ()
sl_usbd_cdc_acm_s અને t_line _co d ing ()

વર્ણન
તમારી એપ્લિકેશન SetLineCoding વિનંતીઓ સાથે અથવા sl_usbd_cdc_acm_set_line_coding() ફંક્શન સાથે હોસ્ટ પાસેથી વર્તમાન લાઇન કોડિંગ સેટિંગ્સ સેટ કરી શકે છે.
તમારી એપ્લિકેશન લાઇન કોડિંગ સેટ કરી શકે છે. હોસ્ટ GetLineCoding વિનંતી સાથે સેટિંગ્સ પુનઃપ્રાપ્ત કરી શકે છે.

રેખા નિયંત્રણ
USB હોસ્ટ CDC ACM ઉપકરણના લાઇન કંટ્રોલ (RTS અને DTR પિન, બ્રેક સિગ્નલ, વગેરે) ને નિયંત્રિત કરે છે. જ્યારે જરૂરી હોય ત્યારે, તમારી એપ્લિકેશન લાઇન કંટ્રોલ લાગુ કરવા માટે જવાબદાર છે. નીચેના કોષ્ટકમાં વર્ણવ્યા મુજબ, વર્તમાન લાઇન કંટ્રોલને પુનઃપ્રાપ્ત કરવા અને સેટ કરવા માટે એક કાર્ય પ્રદાન કરવામાં આવ્યું છે.
કોષ્ટક - સીડીસી એસીએમ લાઇન કંટ્રોલ ફંક્શન્સ

કાર્ય
sl_usb d _cd c_acm_g e t_line _co ntr o l_state ()

તમારી એપ્લિકેશન SetControlLineState વિનંતી સાથે હોસ્ટ દ્વારા સેટ કરેલી વર્તમાન નિયંત્રણ રેખા સ્થિતિ મેળવી શકે છે.

રેખા રાજ્ય
USB હોસ્ટ નિયમિત અંતરાલે લાઇન સ્ટેટ મેળવે છે. તમારી એપ્લિકેશને દર વખતે જ્યારે તે બદલાય છે ત્યારે લાઇન સ્ટેટ અપડેટ કરવી આવશ્યક છે. જ્યારે જરૂરી હોય ત્યારે, તમારી એપ્લિકેશન લાઇન સ્ટેટ સેટ કરવા માટે જવાબદાર છે. નીચેના કોષ્ટકમાં વર્ણવ્યા મુજબ, વર્તમાન લાઇન કંટ્રોલ્સને પુનઃપ્રાપ્ત કરવા અને સેટ કરવા માટે બે કાર્યો પૂરા પાડવામાં આવ્યા છે.
કોષ્ટક - સીડીસી એસીએમ લાઇન સ્ટેટ કાર્યો

કાર્ય
sl_usb d _cd c_acm_se t _લાઇન _સ્ટેટ _e vent()
sl_usbd_cdc_acm_cle ar_line _state _e vent()

તમારી એપ્લિકેશન કોઈપણ લાઇન સ્ટેટ ઇવેન્ટ(ઓ) સેટ કરી શકે છે. લાઇન સ્ટેટ સેટ કરતી વખતે, સીરીયલ લાઇન સ્ટેટમાં ફેરફાર વિશે જાણ કરવા માટે હોસ્ટને એક ઇન્ટરપ્ટ 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() સિંક્રનસ કોમ્યુનિકેશન પ્રદાન કરે છે, જેનો અર્થ એ થાય કે trnsfer અવરોધિત કરી રહ્યું છે. બીજા શબ્દોમાં કહીએ તો, ફંક્શનને કૉલ કરવા પર, એપ્લિકેશન ભૂલ સાથે અથવા તેના વિના ટ્રાન્સફર પૂર્ણ થાય ત્યાં સુધી અવરોધિત થાય છે. કાયમ રાહ જોવાનું ટાળવા માટે સમયસમાપ્તિનો ઉલ્લેખ કરી શકાય છે. ભૂતપૂર્વampનીચે વાંચવા અને લખવાનો અનુભવ બતાવે છેample જે બલ્ક OUT એન્ડપોઇન્ટનો ઉપયોગ કરીને હોસ્ટ પાસેથી ડેટા મેળવે છે અને બલ્ક IN એન્ડપોઇન્ટનો ઉપયોગ કરીને હોસ્ટને ડેટા મોકલે છે.
લિસ્ટિંગ - સીરીયલ રીડ અને રાઈટ એક્સample

__સંરેખિત(4) uint8_t rx_buf[2];

__સંરેખિત(4) uint8_t tx_buf[2];

uint32_t

એક્સફર_લેન;

sl_સ્ટેટસ_ટી

સ્થિતિ;

સ્થિતિ = sl_usbd_cdc_acm_read(સબક્લાસ_nbr,

(1)

આરએક્સ_બફ,

(2)

2u,

0u,

(3)

&xfer_len);

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

સ્થિતિ = sl_usbd_cdc_acm_write(સબક્લાસ_nbr,

(1)

tx_buf,

(4)

2u,

0u,

(3)

&xfer_len);

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

T aaaaa M (1) he cl ss inst nce નંબર sl_usbd_cdc_acm_create_instance() સાથે બનાવેલ છે જે ટ્રાન્સફરને યોગ્ય બલ્ક OUT અથવા IN એન્ડપોઇન્ટ પર રૂટ કરવા માટે AC સબક્લાસનો n ઇન્ટર્ન સંદર્ભ પૂરો પાડે છે. (2) તમારી એપ્લિકેશને ખાતરી કરવી જોઈએ કે ફંક્શનને આપવામાં આવેલ બફર બધા ડેટાને સમાવવા માટે પૂરતો મોટો છે. નહિંતર, સિંક્રનાઇઝેશન સમસ્યાઓ થઈ શકે છે. (3) અનંત બ્લોકિંગ પરિસ્થિતિને ટાળવા માટે, મિલિસેકન્ડમાં દર્શાવવામાં આવેલ સમયસમાપ્તિનો ઉલ્લેખ કરો. 809 નું મૂલ્ય એપ્લિકેશન કાર્યને કાયમ માટે રાહ જુએ છે. (4) એપ્લિકેશન પ્રારંભિક ટ્રાન્સમિટ બફર પ્રદાન કરે છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

28/174

ઉપરview
ઉપરview

USB ઉપકરણ HID વર્ગ

USB ઉપકરણ HID વર્ગ ઓવરview USB ઉપકરણ HID વર્ગ કોરમાંથી સંસાધન જરૂરિયાતો USB ઉપકરણ HID વર્ગ રૂપરેખાંકન USB ઉપકરણ HID વર્ગ પ્રોગ્રામિંગ માર્ગદર્શિકા HID સામયિક ઇનપુટ રિપોર્ટ્સ કાર્ય
આ વિભાગ સિલિકોન લેબ્સ યુએસબી ડિવાઇસ દ્વારા સપોર્ટેડ હ્યુમન ઇન્ટરફેસ ડિવાઇસ (HID) ક્લાસનું વર્ણન કરે છે.
HID વર્ગમાં માનવીઓ દ્વારા કમ્પ્યુટર કામગીરીને નિયંત્રિત કરવા માટે ઉપયોગમાં લેવાતા ઉપકરણોનો સમાવેશ થાય છે, જેમ કે કીબોર્ડ, ઉંદર, પોઇન્ટિંગ ઉપકરણો અને રમત ઉપકરણો.
HID ક્લાસનો ઉપયોગ સંયુક્ત ઉપકરણમાં પણ થઈ શકે છે જેમાં નોબ્સ, સ્વિચ, બટનો અને સ્લાઇડર્સ જેવા નિયંત્રણો હોય છે. ઉદાહરણ તરીકેampઓડિયો હેડસેટમાં લે, મ્યૂટ અને વોલ્યુમ કંટ્રોલ હેડસેટના HID ફંક્શન દ્વારા નિયંત્રિત થાય છે. HID ક્લાસ ફક્ત કંટ્રોલ અને ઇન્ટરપ્ટ ટ્રાન્સફરનો ઉપયોગ કરીને કોઈપણ હેતુ માટે ડેટાનું વિનિમય કરી શકે છે.
HID ક્લાસ એ સૌથી જૂના અને સૌથી વધુ ઉપયોગમાં લેવાતા USB ક્લાસમાંનો એક છે. બધી મુખ્ય હોસ્ટ ઓપરેટિંગ સિસ્ટમ્સ HID ઉપકરણોનું સંચાલન કરવા માટે એક મૂળ ડ્રાઇવર પ્રદાન કરે છે, તેથી જ વિવિધ વિક્રેતા-વિશિષ્ટ ઉપકરણો HID ક્લાસ સાથે કાર્ય કરે છે. આ ક્લાસમાં LEDs, ઑડિઓ, ટેક્ટાઇલ ફીડબેક વગેરે જેવા વિવિધ પ્રકારના આઉટપુટ વસ્તુઓનો પણ સમાવેશ થાય છે.
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, નિયંત્રણ માઉસ અથવા કીબોર્ડ પરનું બટન, સ્વીચ, વગેરે હોઈ શકે છે. અન્ય એન્ટિટીઓ વપરાશકર્તાને ચોક્કસ ઉપકરણની સુવિધાઓની સ્થિતિ વિશે જાણ કરે છે. ઉદાહરણ તરીકેampકીબોર્ડ પરના LEDs વપરાશકર્તાને કેપ્સ લોક ચાલુ હોવા, ન્યુમેરિક કીપેડ સક્રિય હોવા વગેરે વિશે સૂચિત કરે છે.
રિપોર્ટ ડેટાનું ફોર્મેટ અને ઉપયોગ હોસ્ટ દ્વારા રિપોર્ટ ડિસ્ક્રીપ્ટરની સામગ્રીનું વિશ્લેષણ કરીને સમજવામાં આવે છે. સામગ્રીનું વિશ્લેષણ પાર્સર દ્વારા કરવામાં આવે છે. રિપોર્ટ ડિસ્ક્રીપ્ટર ઉપકરણમાં દરેક નિયંત્રણ દ્વારા પ્રદાન કરવામાં આવેલા ડેટાનું વર્ણન કરે છે. તે એવી વસ્તુઓથી બનેલું છે જે ઉપકરણ વિશેની માહિતીના ટુકડાઓ છે અને તેમાં 1-બાઇટ ઉપસર્ગ અને ચલ-લંબાઈનો સમાવેશ થાય છે.
ડેટા. આઇટમ ફોર્મેટ વિશે વધુ વિગતો માટે, નો સંદર્ભ લો
૧.૧૧=, વિભાગ ૫.૬ અને ૬.૨.૨.
ત્રણ મુખ્ય પ્રકારની વસ્તુઓ છે:
મુખ્ય વસ્તુ ચોક્કસ પ્રકારના ડેટા ફીલ્ડને વ્યાખ્યાયિત કરે છે અથવા જૂથબદ્ધ કરે છે.
વૈશ્વિક વસ્તુ નિયંત્રણની ડેટા લાક્ષણિકતાઓનું વર્ણન કરે છે.
સ્થાનિક વસ્તુ નિયંત્રણની ડેટા લાક્ષણિકતાઓનું વર્ણન કરે છે.
દરેક વસ્તુનો પ્રકાર અલગ અલગ કાર્યો દ્વારા વ્યાખ્યાયિત થયેલ છે. આઇટમ ફંક્શનને a પણ કહી શકાય tag. આઇટમ ફંક્શનને ત્રણ મુખ્ય આઇટમ પ્રકારોમાંથી એક સાથે સંબંધિત પેટા-આઇટમ તરીકે જોઈ શકાય છે. નીચે આપેલ કોષ્ટક સંક્ષિપ્તમાં આપે છેview દરેક આઇટમ પ્રકારમાં આઇટમ9s ફંક્શન્સ. દરેક શ્રેણીમાં આઇટમ્સના સંપૂર્ણ વર્ણન માટે, જુઓ
કોષ્ટક - દરેક વસ્તુ પ્રકાર માટે વસ્તુના કાર્યનું વર્ણન

વસ્તુ વસ્તુ પ્રકાર કાર્ય

વર્ણન

મુખ્ય ઇનપુટ

એક અથવા વધુ ભૌતિક નિયંત્રણો દ્વારા પૂરા પાડવામાં આવેલ ડેટા વિશેની માહિતીનું વર્ણન કરે છે.

મુખ્ય આઉટપુટ ઉપકરણ પર મોકલવામાં આવેલા ડેટાનું વર્ણન કરે છે.

મુખ્ય લક્ષણ

ઉપકરણને મોકલવામાં આવેલી અથવા પ્રાપ્ત થયેલી ઉપકરણ ગોઠવણી માહિતીનું વર્ણન કરે છે જે ઉપકરણ અથવા તેના ઘટકોમાંથી એકના એકંદર વર્તનને પ્રભાવિત કરે છે.

મુખ્ય સંગ્રહ જૂથ સંબંધિત વસ્તુઓ (ઇનપુટ, આઉટપુટ અથવા સુવિધા).

સંગ્રહનો મુખ્ય અંત સંગ્રહ બંધ કરે છે. સંગ્રહ

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

30/174

ઉપરview

વસ્તુ વસ્તુ પ્રકાર કાર્ય

વર્ણન

વૈશ્વિક ઉપયોગ પૃષ્ઠ

ઉપકરણમાં ઉપલબ્ધ કાર્ય ઓળખે છે.

ગ્લોબલ લોજિકલ લોજિકલ એકમોમાં અહેવાલિત મૂલ્યોની નીચલી મર્યાદા વ્યાખ્યાયિત કરે છે. ન્યૂનતમ

ગ્લોબલ લોજિકલ લોજિકલ એકમોમાં અહેવાલિત મૂલ્યોની ઉપલી મર્યાદા વ્યાખ્યાયિત કરે છે. મહત્તમ

વૈશ્વિક ભૌતિક ભૌતિક એકમોમાં અહેવાલિત મૂલ્યોની નીચલી મર્યાદાને વ્યાખ્યાયિત કરે છે, જે ભૌતિક એકમોમાં દર્શાવવામાં આવેલ તાર્કિક લઘુત્તમ લઘુત્તમ છે.

વૈશ્વિક ભૌતિક ભૌતિક એકમોમાં અહેવાલ કરેલ મૂલ્યોની ઉપલી મર્યાદા વ્યાખ્યાયિત કરે છે, જે ભૌતિક એકમોમાં વ્યક્ત કરાયેલ તાર્કિક મહત્તમ મહત્તમ છે.

વૈશ્વિક એકમ

આધાર 10 માં એકમ ઘાતાંક દર્શાવે છે. ઘાતાંક -8 થી +7 સુધીનો હોય છે.

ઘાત

વૈશ્વિક એકમ

અહેવાલ કરેલ મૂલ્યોના એકમ સૂચવે છે. ઉદાહરણ તરીકે, લંબાઈ, દળ, તાપમાન એકમો, વગેરે.

વૈશ્વિક રિપોર્ટ કદ

રિપોર્ટ ફીલ્ડ્સનું કદ બિટ્સમાં દર્શાવે છે.

ગ્લોબલ રિપોર્ટ ID ચોક્કસ રિપોર્ટમાં ઉમેરાયેલ ઉપસર્ગ સૂચવે છે.

વૈશ્વિક અહેવાલ ગણતરી

આઇટમ માટે ડેટા ફીલ્ડ્સની સંખ્યા દર્શાવે છે.

ગ્લોબલ પુશ

CPU સ્ટેક પર ગ્લોબલ આઇટમ સ્ટેટ ટેબલની એક નકલ મૂકે છે.

ગ્લોબલ પોપ

સ્ટેકમાંથી છેલ્લા સ્ટ્રક્ચર સાથે આઇટમ સ્ટેટ ટેબલને બદલે છે.

સ્થાનિક ઉપયોગ

ઉપયોગ પૃષ્ઠમાં ચોક્કસ ઉપયોગને નિયુક્ત કરવા માટે એક સૂચકાંક રજૂ કરે છે. તે ચોક્કસ નિયંત્રણ અથવા નિયંત્રણોના જૂથ માટે વિક્રેતા દ્વારા સૂચવેલ ઉપયોગ સૂચવે છે. ઉપયોગ એપ્લિકેશન ડેવલપરને નિયંત્રણ ખરેખર શું માપી રહ્યું છે તે વિશે માહિતી પૂરી પાડે છે.

સ્થાનિક ઉપયોગ

એરે અથવા બીટમેપ સાથે સંકળાયેલ પ્રારંભિક ઉપયોગને વ્યાખ્યાયિત કરે છે.

ન્યૂનતમ

સ્થાનિક ઉપયોગ

એરે અથવા બીટમેપ સાથે સંકળાયેલ અંતિમ ઉપયોગને વ્યાખ્યાયિત કરે છે.

મહત્તમ

સ્થાનિક નિયુક્તકર્તા નિયંત્રણ માટે ઉપયોગમાં લેવાતા શરીરના ભાગને નક્કી કરે છે. ભૌતિકમાં અનુક્રમણિકા નિયુક્તકર્તાને નિર્દેશ કરે છે

અનુક્રમણિકા

વર્ણનકર્તા.

સ્થાનિક ડિઝાઇનર એરે અથવા બીટમેપ સાથે સંકળાયેલ પ્રારંભિક ડિઝાઇનરની અનુક્રમણિકા વ્યાખ્યાયિત કરે છે. ન્યૂનતમ

સ્થાનિક ડિઝાઇનર એરે અથવા બીટમેપ સાથે સંકળાયેલ અંતિમ ડિઝાઇનરની અનુક્રમણિકા વ્યાખ્યાયિત કરે છે. મહત્તમ

સ્થાનિક સ્ટ્રિંગ ઇન્ડેક્સ

સ્ટ્રિંગ ડિસ્ક્રીપ્ટર માટે સ્ટ્રિંગ ઇન્ડેક્સ. તે સ્ટ્રિંગને ચોક્કસ વસ્તુ અથવા નિયંત્રણ સાથે સાંકળવાની મંજૂરી આપે છે.

સ્થાનિક સ્ટ્રિંગ

એરેમાં નિયંત્રણોને ક્રમિક સ્ટ્રિંગ્સના જૂથને સોંપતી વખતે પ્રથમ સ્ટ્રિંગ ઇન્ડેક્સનો ઉલ્લેખ કરે છે.

ન્યૂનતમ અથવા બીટમેપ.

સ્થાનિક સ્થાનિક

સ્ટ્રિંગ મહત્તમ
ડિલિમિટર

એરે અથવા બીટમેપમાં નિયંત્રણોને ક્રમિક સ્ટ્રિંગ્સના જૂથને સોંપતી વખતે છેલ્લી સ્ટ્રિંગ ઇન્ડેક્સનો ઉલ્લેખ કરે છે.
સ્થાનિક વસ્તુઓના સમૂહની શરૂઆત અથવા અંત વ્યાખ્યાયિત કરે છે.

control9s ડેટામાં ઓછામાં ઓછી નીચેની વસ્તુઓ વ્યાખ્યાયિત હોવી જોઈએ:
ઇનપુટ, આઉટપુટ અથવા સુવિધા મુખ્ય વસ્તુઓનો ઉપયોગ સ્થાનિક વસ્તુનો ઉપયોગ પૃષ્ઠ વૈશ્વિક વસ્તુ લોજિકલ ન્યૂનતમ વૈશ્વિક વસ્તુ લોજિકલ મહત્તમ વૈશ્વિક વસ્તુ રિપોર્ટ કદ વૈશ્વિક વસ્તુ

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

31/174

ઉપરview
રિપોર્ટ કાઉન્ટ ગ્લોબલ આઇટમ નીચે આપેલ કોષ્ટક હોસ્ટ HID પાર્સર દ્રષ્ટિકોણથી માઉસ રિપોર્ટ ડિસ્ક્રીપ્ટર સામગ્રીનું પ્રતિનિધિત્વ બતાવે છે. માઉસમાં ત્રણ બટનો (ડાબે, જમણે અને વ્હીલ) છે. ભૂતપૂર્વમાં રજૂ કરાયેલ કોડampનીચે આ માઉસ રિપોર્ટ વર્ણનકર્તા પ્રતિનિધિત્વને અનુરૂપ કોડ અમલીકરણ છે.
આકૃતિ - હોસ્ટ HID પાર્સરમાંથી વર્ણનકર્તા સામગ્રીની જાણ કરો View

(1) ઉપયોગ પૃષ્ઠ આઇટમ ફંક્શન ઉપકરણના સામાન્ય કાર્યને સ્પષ્ટ કરે છે. આ ઉદાહરણમાંampલે, HID ઉપકરણ a નું છે
સામાન્ય ડેસ્કટોપ નિયંત્રણ.
(2) કલેક્શન એપ્લિકેશન મુખ્ય વસ્તુઓનું જૂથ બનાવે છે જેનો સામાન્ય હેતુ હોય છે અને તે એપ્લિકેશનો માટે પરિચિત હોઈ શકે છે. ડાયાગ્રામમાં, જૂથ ત્રણ ઇનપુટ મુખ્ય વસ્તુઓથી બનેલું છે. આ સંગ્રહ માટે, ઉપયોગ આઇટમ દ્વારા સૂચવ્યા મુજબ નિયંત્રણો માટે સૂચવેલ ઉપયોગ માઉસ છે. (3) નેસ્ટેડ સંગ્રહોનો ઉપયોગ એપ્લિકેશનોને એક નિયંત્રણ અથવા નિયંત્રણોના જૂથના ઉપયોગ વિશે વધુ વિગતો આપવા માટે થઈ શકે છે. આ ઉદાહરણમાંampકલેક્શન ફિઝિકલ, જે કલેક્શન એપ્લિકેશનમાં નેસ્ટેડ છે, તે કલેક્શન એપ્લિકેશન બનાવતી ત્રણ ઇનપુટ વસ્તુઓથી બનેલું છે. કલેક્શન ફિઝિકલનો ઉપયોગ ડેટા આઇટમ્સના સમૂહ માટે થાય છે જે એક ભૌમિતિક બિંદુ પર એકત્રિત ડેટા પોઇન્ટનું પ્રતિનિધિત્વ કરે છે. ઉદાહરણ તરીકેampલે, સૂચવેલ ઉપયોગ એ ઉપયોગ આઇટમ દ્વારા સૂચવાયેલ પોઇન્ટર છે. અહીં પોઇન્ટર ઉપયોગ માઉસ પોઝિશન કોઓર્ડિનેટ્સનો સંદર્ભ આપે છે અને સિસ્ટમ સોફ્ટવેર સ્ક્રીન કર્સરની ગતિમાં માઉસ કોઓર્ડિનેટ્સનું ભાષાંતર કરશે. (4) નેસ્ટેડ ઉપયોગ પૃષ્ઠો પણ શક્ય છે અને ઉપકરણના સામાન્ય કાર્યમાં ચોક્કસ પાસા વિશે વધુ વિગતો આપે છે. આ કિસ્સામાં, બે ઇનપુટ વસ્તુઓ જૂથબદ્ધ છે અને માઉસના બટનોને અનુરૂપ છે. એક ઇનપુટ આઇટમ માઉસના ત્રણ બટનો (જમણે, ડાબે અને વ્હીલ) ને આઇટમ માટે ડેટા ફીલ્ડની સંખ્યા (રિપોર્ટ કાઉન્ટ આઇટમ), ડેટા ફીલ્ડનું કદ (રિપોર્ટ કદ આઇટમ) અને દરેક ડેટા ફીલ્ડ માટે શક્ય મૂલ્યો (વપરાશ લઘુત્તમ અને મહત્તમ, લોજિકલ લઘુત્તમ અને મહત્તમ વસ્તુઓ) ના સંદર્ભમાં વ્યાખ્યાયિત કરે છે. બીજી ઇનપુટ આઇટમ 13-બીટ સ્થિરાંક છે જે ઇનપુટ રિપોર્ટ ડેટાને બાઇટ સીમા પર ગોઠવવાની મંજૂરી આપે છે. આ ઇનપુટ આઇટમનો ઉપયોગ ફક્ત પેડિંગ હેતુ માટે થાય છે. (5) સામાન્ય ડેસ્કટોપ નિયંત્રણનો ઉલ્લેખ કરતું બીજું નેસ્ટેડ ઉપયોગ પૃષ્ઠ માઉસ પોઝિશન કોઓર્ડિનેટ્સ માટે વ્યાખ્યાયિત કરવામાં આવ્યું છે. આ ઉપયોગ પૃષ્ઠ માટે, ઇનપુટ આઇટમ બે ઉપયોગ દ્વારા ઉલ્લેખિત x- અને y-અક્ષને અનુરૂપ ડેટા ફીલ્ડ્સનું વર્ણન કરે છે.
વસ્તુઓ
પાછલા માઉસ રિપોર્ટ ડિસ્ક્રીપ્ટર સામગ્રીનું વિશ્લેષણ કર્યા પછી, હોસ્ટ9s HID પાર્સર ઉપકરણ દ્વારા ઇન્ટરપ્ટ IN ટ્રાન્સફર સાથે અથવા GET_REPORT વિનંતીના પ્રતિભાવમાં મોકલવામાં આવેલા ઇનપુટ રિપોર્ટ ડેટાનું અર્થઘટન કરી શકે છે. આકૃતિમાં બતાવેલ માઉસ રિપોર્ટ ડિસ્ક્રીપ્ટરને અનુરૂપ ઇનપુટ રિપોર્ટ ડેટા - હોસ્ટ HID પાર્સરમાંથી રિપોર્ટ ડિસ્ક્રીપ્ટર સામગ્રી View is

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

32/174

ઉપરview

નીચેના કોષ્ટકમાં બતાવેલ છે. રિપોર્ટ ડેટાનું કુલ કદ 4 બાઇટ છે. એક જ એન્ડપોઇન્ટ પર વિવિધ પ્રકારના રિપોર્ટ મોકલી શકાય છે. વિવિધ પ્રકારના રિપોર્ટ્સને અલગ પાડવાના હેતુ માટે, ડેટા રિપોર્ટમાં 1-બાઇટ રિપોર્ટ ID ઉપસર્ગ ઉમેરવામાં આવે છે. જો રિપોર્ટ ID નો ઉપયોગ ભૂતપૂર્વમાં કરવામાં આવ્યો હોયampમાઉસ રિપોર્ટના આધારે, રિપોર્ટ ડેટાનું કુલ કદ 5 બાઇટ્સ હશે.
કોષ્ટક - ઇનપુટ રિપોર્ટ હોસ્ટને મોકલવામાં આવ્યો છે અને 3 બટનવાળા માઉસની સ્થિતિને અનુરૂપ છે.

બીટ ઓફસેટ
0 1 2 3 16 24

બીટ ગણતરી ૧ ૧ ૧ ૧૩ ૮ ૮

વર્ણન બટન 1 (ડાબું બટન). બટન 2 (જમણું બટન). બટન 3 (વ્હીલ બટન). વપરાયેલ નથી. અક્ષ X પર સ્થિતિ. અક્ષ Y પર સ્થિતિ.

ભૌતિક વર્ણનકર્તા શરીરના તે ભાગ અથવા ભાગો સૂચવે છે જેનો હેતુ નિયંત્રણ અથવા નિયંત્રણોને સક્રિય કરવાનો છે. એપ્લિકેશન આ માહિતીનો ઉપયોગ ઉપકરણના નિયંત્રણને કાર્યક્ષમતા સોંપવા માટે કરી શકે છે. ભૌતિક વર્ણનકર્તા એ વૈકલ્પિક વર્ગ-વિશિષ્ટ વર્ણનકર્તા છે અને મોટાભાગના ઉપકરણોને તેનો ઉપયોગ કરવાથી બહુ ઓછો ફાયદો થાય છે. નો સંદર્ભ લો
કોરમાંથી USB ઉપકરણ HID વર્ગ સંસાધન જરૂરિયાતો

દર વખતે જ્યારે તમે sl_usbd_hid_add_to_configuration() ફંક્શન પર કૉલ કરીને USB કન્ફિગરેશનમાં HID ક્લાસ ઇન્સ્ટન્સ ઉમેરો છો, ત્યારે નીચેના સંસાધનો કોરમાંથી ફાળવવામાં આવશે.

સંસાધન
ઇન્ટરફેસ વૈકલ્પિક ઇન્ટરફેસ એન્ડપોઇન્ટ્સ ઇન્ટરફેસ જૂથો

જથ્થો
૧ ૧ ૧ (જો ઇન્ટરપ્ટ આઉટ એન્ડપોઇન્ટ સક્ષમ હોય તો ૨) ૦

નોંધ કરો કે તે સંખ્યાઓ દરેક રૂપરેખાંકન માટે છે. તમારા 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 વર્ગ એપ્લિકેશન-વિશિષ્ટ રૂપરેખાંકનો

સૌપ્રથમ, સિલિકોન લેબ્સ યુએસબી ડિવાઇસ HID ક્લાસ મોડ્યુલનો ઉપયોગ કરવા માટે, તમારી એપ્લિકેશન જરૂરિયાતો અનુસાર વ્યાખ્યાયિત HID કમ્પાઇલ-ટાઇમ ગોઠવણીને સમાયોજિત કરો. તેમને sl_usbd_core_config.h હેડરની અંદર ફરીથી જૂથબદ્ધ કરવામાં આવે છે. file HID વિભાગ હેઠળ. તેમને બે વિભાગોમાં વિભાજિત કરી શકાય છે, જથ્થાત્મક રૂપરેખાંકનો અને HID કાર્ય રૂપરેખાંકનો. જથ્થાત્મક રૂપરેખાંકનોનો હેતુ USB ઉપકરણ મોડ્યુલને કેટલા USB HID ઑબ્જેક્ટ ફાળવવા તે વિશે જાણ કરવાનો છે.
નીચે આપેલ કોષ્ટક દરેક રૂપરેખાંકન વ્યાખ્યાયિત કરે છે.
કોષ્ટક - USB ઉપકરણ HID રૂપરેખાંકન વ્યાખ્યાયિત કરે છે

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

33/174

ઉપરview

રૂપરેખાંકન નામ
SL_USBD_HID_CL ASS_I NSTANCE_QUANTITY
SL_USBD_HID_CONFIG URATION_QUANTITY
SL_USBD_HID_REPORT_ ID_QUANTITY
SL_USBD_HID_PUSH_P OP_ITEM_QUANTITY
SL_USBD_HID_TIMER_T ASK_STACK_SIZE
SL_USBD_HID_TIMER_T ASK_PRIORITY

વર્ણન
ફંક્શનને કોલ કરીને તમે ફાળવશો તે ક્લાસ ઇન્સ્ટન્સની સંખ્યા
sl_usbd_છુપાવેલું_બનાવટ_ઇન્સ્ટન્સ() .
રૂપરેખાંકનોની સંખ્યા. HID ક્લાસ ઇન્સ્ટન્સ એક અથવા વધુ aaaa રૂપરેખાંકનોમાં ઉમેરી શકાય છે જેમ કે sl_usbd_hid_add_to_configuration() ફંક્શનમાં. ફાળવવા માટે રિપોર્ટ ID ની કુલ સંખ્યાને ગોઠવે છે.
ફાળવવા માટે પુશ/પૉપ આઇટમ્સની કુલ સંખ્યા ગોઠવે છે.
ટાઈમર ટાસ્ક બધા ટાઈમર-આધારિત HID કામગીરીને હેન્ડલ કરે છે. આ રૂપરેખાંકન તમને સ્ટેક કદ (બાઈટ્સની સંખ્યામાં) સેટ કરવાની મંજૂરી આપે છે. HID ટાસ્કની પ્રાથમિકતા. તે CMSIS-RTOS2 પ્રાથમિકતા છે.

ડિફૉલ્ટ મૂલ્ય
2 1 2 0 2048
ઓએસપ્રાયોરિટીહાઈ

USB ઉપકરણ HID વર્ગ ઇન્સ્ટન્સ રૂપરેખાંકનો વર્ગ ઇન્સ્ટન્સ બનાવટ સબક્લાસ
પ્રોટોકોલ દેશ_કોડ
interval_in અને interval_out p_hid_callback HID ક્લાસ રિપોર્ટ ડિસ્ક્રીપ્ટર Example આ વિભાગ HID વર્ગના ઉદાહરણોથી સંબંધિત રૂપરેખાંકનોને વ્યાખ્યાયિત કરે છે.
ક્લાસ ઇન્સ્ટન્સ બનાવટ
HID ક્લાસ ઇન્સ્ટન્સ બનાવવાનું કાર્ય aaa sl_usbd_hid_create_instance() ફંક્શનને કૉલ કરીને કરવામાં આવે છે, જે નીચે વર્ણવેલ રૂપરેખાંકન દલીલોને તોડી નાખે છે.
પેટા વર્ગ
HID પેટા વર્ગનો કોડ. શક્ય મૂલ્યો છે:
SL_USBD_HID_SUBCL ASS_NONE SL_USBD_HID_SUBCL ASS_BOOT
બુટ સબક્લાસનો ઉપયોગ કરતા HID ઉપકરણે પ્રમાણભૂત રિપોર્ટ ફોર્મેટનો ઉપયોગ કરવો આવશ્યક છે. સબક્લાસ કોડ્સ વિશે વધુ માહિતી માટે, HID સ્પષ્ટીકરણ પુનરાવર્તન 1.11 ના વિભાગ 4.2 જુઓ.
પ્રોટોકોલ
HID ઉપકરણ દ્વારા ઉપયોગમાં લેવાતો પ્રોટોકોલ. શક્ય મૂલ્યો છે:
SL_USBD_HID_PROTOCOL_NONE SL_USBD_HID_PROTOCOL_KBD SL_USBD_HID_PROTOCOL_માઉસ
જો તમારું HID ફંક્શન માઉસ છે, તો પ્રોટોકોલ aa SL_USBD_HID_PROTOCOL_MOUSE પર સેટ કરેલો હોવો જોઈએ. જો તે કીબોર્ડ છે, તો તે O SL_USBD_HID_PROTOCOL_KBD પર સેટ કરેલો હોવો જોઈએ. તે જ સમયે, પ્રોટોકોલ SL_USBD_HID_PROTOCOL_NONE પર સેટ કરેલો હોવો જોઈએ. સબક્લાસ કોડ્સ વિશે વધુ માહિતી માટે, HID સ્પષ્ટીકરણ પુનરાવર્તન 1.11 ના વિભાગ 4.3 જુઓ.
દેશનો કોડ
દેશના કોડનું ID. શક્ય મૂલ્યો આ પ્રમાણે છે:
SL_USBD_HID_COUNTRY_CODE_સપોર્ટેડ નથી

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

34/174

ઉપરview
SL_USBD_HID_COUNTRY_CODE_અરબી SL_USBD_HID_COUNTRY_CODE_બેલ્જિયન SL_USBD_HID_COUNTRY_CODE_CANADIAN_BILINGUAL SL_USBD_HID_COUNTRY_CODE_CANADIAN_FRENCH SL_USBD_HID_COUNTRY_CODE_CZECH_Republic SL_USBD_HID_COUNTRY_CODE_DANISH SL_USBD_HID_COUNTRY_CODE_FINNISH SL_USBD_HID_COUNTRY_CODE_FRENCH SL_USBD_HID_COUNTRY_CODE_GERMAN SL_USBD_HID_COUNTRY_CODE_ગ્રીક SL_USBD_HID_COUNTRY_CODE_હિબ્રુ SL_USBD_HID_COUNTRY_CODE_હંગેરી SL_USBD_HID_COUNTRY_CODE_આંતરરાષ્ટ્રીય SL_USBD_HID_COUNTRY_CODE_ઇટાલીયન SL_USBD_HID_COUNTRY_CODE_JAPAN_KATAKANA SL_USBD_HID_COUNTRY_CODE_KOREAN SL_USBD_HID_COUNTRY_CODE_L એટિન અમેરિકન SL_USBD_HID_COUNTRY_CODE_NETHERL ANDS_DUCH SL_USBD_HID_COUNTRY_CODE_NORWEGIAN SL_USBD_HID_COUNTRY_CODE_PORSIAN_FARSI SL_USBD_HID_COUNTRY_CODE_POL અને SL_USBD_HID_COUNTRY_CODE_POL અને SL_USBD_HID_COUNTRY_CODE_PORTUGUESE SL_USBD_HID_COUNTRY_CODE_RUSIA 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_UG 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 એ IN ઇન્ટરપ્ટ એન્ડપોઇન્ટ અને OUT ઇન્ટરપ્ટ એન્ડપોઇન્ટના મતદાન અંતરાલનું પ્રતિનિધિત્વ કરે છે.
આ એન્ડપોઇન્ટના મતદાન અંતરાલને મિલિસેકન્ડમાં દર્શાવે છે. આ મૂલ્ય સેટ કરવું એ તમારા ઉપકરણ હોસ્ટ માટે કેટલી વાર નવો રિપોર્ટ જનરેટ કરવા માટે સંવેદનશીલ છે તેના પર આધાર રાખે છે. ઉદાહરણ તરીકે, જો દર 16 મિલિસેકન્ડે રિપોર્ટ જનરેટ થાય છે, તો અંતરાલ 16 કે તેથી ઓછો હોવો જોઈએ.
મૂલ્ય 2 (1, 2, 4, 8, 16, વગેરે) ની ઘાત હોવી જોઈએ.
જો ctrl_rd_en ને true પર સેટ કરેલ હોય તો interval_out v lue અવગણવામાં આવે છે.
પી_હિડ_કોલબેક
aaaa p_hid_callback એ sl_usbd_hid_callbacks_t પ્રકારના બંધારણનો નિર્દેશક છે. તેનો હેતુ HID ઇવેન્ટ થાય ત્યારે કૉલબેક ફંક્શન્સના HID Cl ss સેટને કૉલ કરવાનો છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

35/174

ઉપરview

બધા કોલબેક ફરજિયાત નથી અને જ્યારે કોલબેકની જરૂર ન હોય ત્યારે કોલબેક સ્ટ્રક્ચર વેરીએબલમાં નલ પોઇન્ટર (NULL) પાસ કરી શકાય છે. નીચે આપેલ કોષ્ટક આ કન્ફિગરેશન સ્ટ્રક્ચરમાં ઉપલબ્ધ દરેક કન્ફિગરેશન ફીલ્ડનું વર્ણન કરે છે.
કોષ્ટક – sl_usbd_hid_callbacks_t રૂપરેખાંકન માળખું

ક્ષેત્રો

વર્ણન

કાર્ય સહી

.સક્ષમ કરો .અક્ષમ કરો .રિપોર્ટ_ડેસ્ક_ગેટ કરો
.ગેટ_ફાઇ_ડેસ્ક
.સેટ_આઉટપુટ_રિપોર્ટ .ગેટ_ફીચર_રિપોર્ટ .સેટ_ફીચર_રિપોર્ટ

જ્યારે USB ક્લાસ ઇન્સ્ટન્સ સફળતાપૂર્વક સક્ષમ થાય ત્યારે કૉલ કરવામાં આવે છે. જ્યારે USB ક્લાસ ઇન્સ્ટન્સ અક્ષમ થાય ત્યારે કૉલ કરવામાં આવે છે.
HID ઇન્સ્ટન્સ બનાવટ દરમિયાન તમારા રિપોર્ટ ડિસ્ક્રીપ્ટરને પાસ કરવા માટે કોલ કરવામાં આવે છે. તમારા દરેક HID ફંક્શન માટે, તમારે રિપોર્ટ ડિસ્ક્રીપ્ટર પ્રદાન કરવું આવશ્યક છે. રિપોર્ટ ડિસ્ક્રીપ્ટર હોસ્ટને સૂચવે છે કે ઉપકરણ દ્વારા મોકલવામાં આવનાર સામયિક રિપોર્ટનું વિશ્લેષણ કેવી રીતે કરવું જોઈએ. તમારું પોતાનું રિપોર્ટ ડિસ્ક્રીપ્ટર લખવું પડકારજનક હોઈ શકે છે, અને તેથી જ મદદ કરવા માટે કેટલાક સંસાધનો છે. આ એકમાત્ર ફરજિયાત કોલબેક ફંક્શન છે. HID ઇન્સ્ટન્સ બનાવટ દરમિયાન તમારા ભૌતિક ડિસ્ક્રીપ્ટરને પાસ કરવા માટે કોલ કરવામાં આવે છે. ભૌતિક ડિસ્ક્રીપ્ટર એ એક ડિસ્ક્રીપ્ટર છે જે માનવ શરીરના ચોક્કસ ભાગ અથવા ભાગો વિશે માહિતી પ્રદાન કરે છે જે નિયંત્રણ અથવા નિયંત્રણોને સક્રિય કરી રહ્યા છે. ભૌતિક ડિસ્ક્રીપ્ટર વિશે વધુ માહિતી માટે, HID સ્પષ્ટીકરણ પુનરાવર્તન 1.11 ના વિભાગ 6.2.3 જુઓ. ભૌતિક ડિસ્ક્રીપ્ટર વૈકલ્પિક છે અને મોટાભાગે અવગણવામાં આવે છે. અહીં પસાર થયેલ બફર NULL પર સેટ કરી શકાય છે અને લંબાઈ 0 પર સેટ કરી શકાય છે. જ્યારે હોસ્ટ તમારા રિપોર્ટ ડિસ્ક્રીપ્ટરમાં વર્ણવ્યા મુજબ રિપોર્ટ સેટ કરે છે ત્યારે કોલ કરવામાં આવે છે (જ્યારે તે રિપોર્ટ મોકલે છે).
જ્યારે હોસ્ટ તમારા રિપોર્ટ વર્ણનકર્તામાં વર્ણવ્યા મુજબ ફીચર રિપોર્ટની વિનંતી કરે છે ત્યારે કૉલ કરવામાં આવે છે.
જ્યારે હોસ્ટ તમારા રિપોર્ટ ડિસ્ક્રીપ્ટરમાં વર્ણવ્યા મુજબ ફીચર રિપોર્ટ સેટ કરે છે ત્યારે કૉલ થાય છે.

રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_એનેબલ (યુઆઇટી8_ટી ક્લાસ_એનબીઆર); રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_ડિઝેબલ (યુઆઇટી8_ટી ક્લાસ_એનબીઆર); રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_ગેટ_રિપોર્ટ_ડેસ્ક (યુઆઇટી8_ટી ક્લાસ_એનબીઆર, કોન્સ્ટ યુઆઇટી8_ટી *પી_રિપોર્ટ_પીટીઆર, યુઆઇટી16_ટીપી_રિપોર્ટ_લેન);
રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_ગેટ_ફાઇ_ડેસ્ક (યુઆઇટી8_ટી ક્લાસ_એનબીઆર, કોન્સ્ટ યુઆઇટી8_ટી *પી_રિપોર્ટ_પીટીઆર, યુઆઇટી16_ટીપી_રિપોર્ટ_લેન);
રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_સેટ_આઉટપુટ_રિપોર્ટ(યુઆઇટી8_ટી ક્લાસ_એનબીઆર, યુઆઇટી8_ટી રિપોર્ટ_આઈડી, યુઆઇટી8_ટી *પી_રિપોર્ટ_બફ, યુઆઇટી16_ટી રિપોર્ટ_લેન); રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_ગેટ_ફીચર_રિપોર્ટ(યુઆઇટી8_ટી ક્લાસ_એનબીઆર, યુઆઇટી8_ટી રિપોર્ટ_આઈડી, યુઆઇટી8_ટી *પી_રિપોર્ટ_બફ, યુઆઇટી16_ટી રિપોર્ટ_લેન); રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_સેટ_ફીચર_રિપોર્ટ(યુઆઇટી8_ટી ક્લાસ_એનબીઆર, યુઆઇટી8_ટી રિપોર્ટ_આઈડી, યુઆઇટી8_ટી *પી_રિપોર્ટ_બફ, યુઆઇટી16_ટી રિપોર્ટ_લેન);

.પ્રોટોકોલ મેળવો

વર્તમાન સક્રિય પ્રોટોકોલ મેળવે છે.

રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_ગેટ_પ્રોટોકોલ (યુઆઇટી8_ટી ક્લાસ_એનબીઆર, યુઆઇટી8_ટી *પી_પ્રોટોકોલ);

.સેટ_પ્રોટોકોલ

વર્તમાન સક્રિય પ્રોટોકોલ સેટ કરે છે.

રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_સેટ_પ્રોટોકોલ (યુઆઇટી8_ટી ક્લાસ_એનબીઆર, યુઆઇટી8_ટી પ્રોટોકોલ);

HID ક્લાસ રિપોર્ટ વર્ણનકર્તા ભૂતપૂર્વample

સિલિકોન લેબ્સના HID વર્ગોampઅરજી એક ભૂતપૂર્વampસરળ ઉંદર માટે રિપોર્ટ વર્ણનકર્તાનો le. ભૂતપૂર્વampનીચે માઉસ રિપોર્ટ વર્ણનકર્તા બતાવે છે.
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_MIN +1,0 01,

SL_USBD_HID_LOCAL_USAGE_MAX +1,0 03,

SL_USBD_HID_GLOBAL_LOG_MIN +1,000,

SL_USBD_HID_GLOBAL_LOG_MAX +1,0 01,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 03,

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 01,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_DATA |

SL_USBD_HID_MAIN_VARIABLE |

SL_USBD_HID_MAIN_ABSOLUTE,

SL_USBD_HID_GLOBAL_REPORT_COUNT +1,0 01,(8)

SL_USBD_HID_GLOBAL_REPORT_SIZE +1,0 0D,

SL_USBD_HID_MAIN_INPUT +1, SL_USBD_HID_MAIN_CONSTANT,(9)

SL_USBD_HID_GLOBAL_USAGE_PAGE +1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_X,

SL_USBD_HID_LOCAL_USAGE +1, SL_USBD_HID_DV_Y,

SL_USBD_HID_GLOBAL_LOG_MIN +1,000,

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_ENDસંગ્રહ,(10)

SL_USBD_HID_MAIN_ENDસંગ્રહ

(૧૧)};

(૧) માઉસ રિપોર્ટ ડિસ્ક્રીપ્ટરનું પ્રતિનિધિત્વ કરતું કોષ્ટક એવી રીતે શરૂ કરવામાં આવે છે કે દરેક લાઇન એક ટૂંકી વસ્તુને અનુરૂપ હોય છે. બાદમાં 1-બાઇટ ઉપસર્ગ અને 1-બાઇટ ડેટામાંથી બનેલ છે. નો સંદર્ભ લો viewઆકૃતિમાં હોસ્ટ HID પાર્સર દ્વારા સંપાદિત - હોસ્ટ HID પાર્સરમાંથી રિપોર્ટ ડિસ્ક્રીપ્ટર સામગ્રી View.
(2) સામાન્ય ડેસ્કટોપ ઉપયોગ પૃષ્ઠનો ઉપયોગ થાય છે.
(૩) સામાન્ય ડેસ્કટોપ ઉપયોગ પૃષ્ઠની અંદર, ઉપયોગ tag સૂચવે છે કે નિયંત્રણોનો સમૂહ માઉસને નિયંત્રિત કરવા માટે છે. માઉસ સંગ્રહમાં સામાન્ય રીતે બે અક્ષો (X અને Y) અને એક, બે, અથવા ત્રણ બટનો હોય છે.
(૪) ઉંદર સંગ્રહ શરૂ થયો છે.
(5) માઉસ કલેક્શનમાં, એક ઉપયોગ tag વધુ સ્પષ્ટ રીતે સૂચવે છે કે માઉસ નિયંત્રણો પોઇન્ટર સંગ્રહના છે. પોઇન્ટર સંગ્રહ એ અક્ષોનો સંગ્રહ છે જે એપ્લિકેશન તરફ વપરાશકર્તાના ઇરાદાઓને દિશામાન કરવા, સૂચવવા અથવા નિર્દેશ કરવા માટે મૂલ્ય ઉત્પન્ન કરે છે.
(6) પોઇન્ટર કલેક્શન શરૂ થયું છે.
(૭) બટન્સ યુસેજ પેજ ત્રણ ૧-બીટ ફીલ્ડ્સથી બનેલી ઇનપુટ આઇટમને વ્યાખ્યાયિત કરે છે. દરેક ૧-બીટ ફીલ્ડ અનુક્રમે માઉસ૯ના બટન ૧, ૨ અને ૩નું પ્રતિનિધિત્વ કરે છે અને ૦ અથવા ૧ નું મૂલ્ય પરત કરી શકે છે.
(૮) બટનો ઉપયોગ પૃષ્ઠ માટે ઇનપુટ આઇટમ ૧૩ અન્ય બિટ્સ સાથે પેડ કરેલી છે.
(૯) X અને Y અક્ષો સાથે માઉસની સ્થિતિનું વર્ણન કરવા માટે બીજું સામાન્ય ડેસ્કટોપ વપરાશ પૃષ્ઠ સૂચવવામાં આવ્યું છે. ઇનપુટ આઇટમ બે 8-બીટ ફીલ્ડથી બનેલી છે જેની કિંમત -૧૨૭ અને ૧૨૭ ની વચ્ચે હોઈ શકે છે.
(૧૦) પોઇન્ટર કલેક્શન બંધ છે.
(૧૧) ઉંદર સંગ્રહ બંધ છે.
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(); જો (status ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */
}
તમારા ઉપકરણમાં USB ઉપકરણ HID વર્ગ ઇન્સ્ટન્સ ઉમેરવું
તમારા ઉપકરણમાં HID વર્ગ કાર્યક્ષમતા ઉમેરવા માટે, તમારે એક ઉદાહરણ બનાવવું પડશે, અને પછી તેને તમારા ઉપકરણના રૂપરેખાંકન(ઓ)માં ઉમેરવું પડશે.
HID ક્લાસ ઇન્સ્ટન્સ બનાવવું
sl_usbd_hid_create_instance() ફંક્શનને કૉલ કરીને HID ક્લાસ ઇન્સ્ટન્સ બનાવો. exampનીચે આપેલ માહિતી ડિફોલ્ટ દલીલોનો ઉપયોગ કરીને sl_usbd_hid_create_instance() દ્વારા સરળ માઉસ ફંક્શન કેવી રીતે બનાવવું તે બતાવે છે. sl_usbd_hid_create_instance() ને પાસ કરવા માટેની રૂપરેખાંકન દલીલો વિશે વધુ માહિતી માટે, USB ઉપકરણ HID વર્ગ ઇન્સ્ટન્સ રૂપરેખાંકનો જુઓ.
Example – sl_usbd_hid_create_instance() દ્વારા માઉસ ફંક્શન ઉમેરવું

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

38/174

ઉપરview
/* વૈશ્વિક સ્થિરાંકો. */ સ્થિર const uint8_t app_usbd_hid_mouse_report_desc[] = {
SL_USBD_HID_GLOBAL_USAGE_PAGE + 1, SL_USBD_HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, SL_USBD_HID_LOCAL_USAGE + 1, SL_USBD_HID_CA_MOUSE, SL_USBD_HID_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 ૦૧, SL_USBD_HID_LOCAL_USAGE_MAX + ૧, ૦ ૦૩, SL_USBD_HID_GLOBAL_LOG_MIN + ૧, ૦ ૦૦, SL_USBD_HID_GLOBAL_LOG_MAX + ૧, ૦ ૦૧, SL_USBD_HID_GLOBAL_REPORT_COUNT + ૧, ૦ ૦૩, SL_USBD_HID_GLOBAL_REPORT_SIZE + ૧, ૦ ૦૧, SL_USBD_HID_MAIN_INPUT + ૧, 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 = { શૂન્ય, શૂન્ય, એપ_usbd_hid_get_report_desc, શૂન્ય, શૂન્ય, શૂન્ય, શૂન્ય, શૂન્ય };
રદબાતલ એપ્લિકેશન_યુએસબીડી_હિડ_ગેટ_રિપોર્ટ_ડેસ્ક (યુઆઇટી8_ટી ક્લાસ_એનબીઆર, કોન્સ્ટ યુઆઇટી8_ટી **પી_રિપોર્ટ_પીટીઆર, યુઆઇટી16_ટી *પી_રિપોર્ટ_લેન)
{ (રદબાતલ) વર્ગ_એનબીઆર;
*પી_રિપોર્ટ_પીટીઆર = એપ_યુએસબીડી_હિડ_માઉસ_રિપોર્ટ_ડેસ્ક; *પી_રિપોર્ટ_લેન = (એપ_યુએસબીડી_હિડ_માઉસ_રિપોર્ટ_ડેસ્ક); }
સ્થિતિ = sl_usbd_hid_create_instance(SL_USBD_HID_SUBCLASS_BOOT, SL_USBD_HID_PROTOCOL_MOUSE, SL_USBD_HID_COUNTRY_CODE_NOT_SUPPORTED, Ex_USBD_HID_Mouse_ReportDesc, sizeof(Ex_USBD_HID_Mouse_ReportDesc), 2u, 2u, true, &app_usbd_hid_callbacks, &class_nbr);
કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

39/174

ઉપરview
/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */}
તમારા ડિવાઇસના કન્ફિગરેશન(ઓ) માં HID ક્લાસ ઇન્સ્ટન્સ ઉમેરવું HID ક્લાસ ઇન્સ્ટન્સ બનાવ્યા પછી, તમે ફંક્શનને કૉલ કરીને તેને કન્ફિગરેશનમાં ઉમેરી શકો છો.
sl_usbd_છુપાયેલ_એડ_ટુ_કોન્ફિગરેશન() .
માજીampનીચે બતાવેલ છે કે sl_usbd_hid_add_to_configuration() ને કેવી રીતે કૉલ કરવું.
Example – sl_usbd_hid_add_to_configuration() ને કૉલ કરી રહ્યું છે

sl_status_t સ્થિતિ;

sl_usbd_છુપાવો_એડ_ટુ_કોન્ફિગરેશન(ક્લાસ_એનબીઆર,

(1)

રૂપરેખા_nbr_fs); (2)

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

(૧) sl_usbd_hid_create_instance() દ્વારા પરત કરાયેલ રૂપરેખાંકનમાં ઉમેરવા માટેનો વર્ગ નંબર. (૨) રૂપરેખાંકન નંબર (અહીં તેને પૂર્ણ-સ્પીડ રૂપરેખાંકનમાં ઉમેરી રહ્યા છીએ).
USB ઉપકરણ HID વર્ગનો ઉપયોગ કરીને વાતચીત કરવી
ક્લાસ ઇન્સ્ટન્સ કોમ્યુનિકેશન સિંક્રનસ કોમ્યુનિકેશન ક્લાસ ઇન્સ્ટન્સ કોમ્યુનિકેશન HID ક્લાસ હોસ્ટ સાથે વાતચીત કરવા માટે નીચેના કાર્યો પ્રદાન કરે છે.
કોષ્ટક - HID કોમ્યુનિકેશન API સારાંશ

કાર્યનું નામ
sl_usb d _hid _ re ad _sy nc() sl_usb d _hid _write _sy nc()

ઓપરેશન ઇન્ટરપ્ટ આઉટ એન્ડપોઇન્ટ દ્વારા હોસ્ટ પાસેથી ડેટા મેળવે છે. આ ફંક્શન બ્લોકિંગ છે. ઇન્ટરપ્ટ IN એન્ડપોઇન્ટ દ્વારા હોસ્ટને ડેટા મોકલે છે. આ ફંક્શન બ્લોકિંગ છે.

સિંક્રનસ કોમ્યુનિકેશન સિંક્રનસ કોમ્યુનિકેશનનો અર્થ એ છે કે ટ્રાન્સફર બ્લોક થઈ રહ્યું છે. ફંક્શન કોલ પર, એપ્લિકેશન્સ બ્લોક થાય છે જ્યાં સુધી ટ્રાન્સફર ભૂલ સાથે અથવા તેના વગર પૂર્ણ ન થાય. કાયમ રાહ જોવાનું ટાળવા માટે સમયસમાપ્તિનો ઉલ્લેખ કરી શકાય છે. ભૂતપૂર્વampનીચે આપેલ રીડ અને રાઈટ બતાવે છે જે ઇન્ટરપ્ટ OUT એન્ડપોઇન્ટનો ઉપયોગ કરીને હોસ્ટ પાસેથી ડેટા મેળવે છે અને ઇન્ટરપ્ટ IN એન્ડપોઇન્ટનો ઉપયોગ કરીને હોસ્ટને ડેટા મોકલે છે.
Example – સિંક્રનસ HID વાંચન અને લેખન

__સંરેખિત(4) uint8_t rx_buf[2];

__સંરેખિત(4) uint8_t tx_buf[2];

uint32_t

એક્સફર_લેન;

sl_સ્ટેટસ_ટી

સ્થિતિ;

સ્થિતિ = sl_usbd_hid_read_sync(class_nbr,

(1)

(રદબાતલ *)rx_buf,

(2)

2u,

0u,

(3)

&xfer_len);

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

40/174

ઉપરview
status =sl_usbd_hid_read_sync(class_nbr,(1)(void *)rx_buf,(2)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */}
status =sl_usbd_hid_write_sync(class_nbr,(1)(void *)tx_buf,(4)2u,0u,(3)&xfer_len);if(status ! SL_STATUS_OK){/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */}
(1) sl_usbd_hid_create_instance() માંથી બનાવેલ ક્લાસ ઇન્સ્ટન્સ નંબર HID ક્લાસ માટે યોગ્ય ઇન્ટરપ્ટ OUT અથવા IN એન્ડપોઇન્ટ પર ટ્રાન્સફર રૂટ કરવા માટે આંતરિક સંદર્ભ પૂરો પાડે છે.
(2) એપ્લિકેશને ખાતરી કરવી જોઈએ કે ફંક્શનને આપવામાં આવેલ બફર બધા ડેટાને સમાવવા માટે પૂરતો મોટો છે. નહિંતર, સિંક્રનાઇઝેશન સમસ્યાઓ થઈ શકે છે. આંતરિક રીતે, રીડ ઓપરેશન કંટ્રોલ એન્ડપોઇન્ટ સાથે અથવા ઇન્ટરપ્ટ એન્ડપોઇન્ટ સાથે કરવામાં આવે છે, જે sl_usbd_hid_create_instance() ને કૉલ કરતી વખતે કંટ્રોલ રીડ ફ્લેગ સેટ પર આધાર રાખે છે.
(૩) અનંત અવરોધિત પરિસ્થિતિને ટાળવા માટે, મિલિસેકન્ડમાં દર્શાવવામાં આવેલ સમયસમાપ્તિ સ્પષ્ટ કરી શકાય છે. ૮૦૯ નું મૂલ્ય એપ્લિકેશન કાર્યને કાયમ માટે રાહ જોવે છે.
(૪) એપ્લિકેશન પ્રારંભિક ટ્રાન્સમિટ બફર પ્રદાન કરે છે.
HID સામયિક ઇનપુટ રિપોર્ટ્સ કાર્ય
બેન્ડવિડ્થ બચાવવા માટે, હોસ્ટ પાસે રિપોર્ટિંગ ફ્રીક્વન્સી મર્યાદિત કરીને ઇન્ટરપ્ટ IN એન્ડપોઇન્ટથી રિપોર્ટ્સને શાંત કરવાની ક્ષમતા છે. આમ કરવા માટે, હોસ્ટે SET_IDLE વિનંતી મોકલવી આવશ્યક છે. સિલિકોન લેબ્સ દ્વારા અમલમાં મૂકાયેલ HID વર્ગમાં એક આંતરિક કાર્ય છે જે રિપોર્ટિંગ ફ્રીક્વન્સી મર્યાદાનો આદર કરે છે જે તમે એક અથવા અનેક ઇનપુટ રિપોર્ટ્સ પર લાગુ કરી શકો છો. આકૃતિ પિરિયડિક ઇનપુટ રિપોર્ટ્સ ટાસ્ક, પિરિયડિક ઇનપુટ રિપોર્ટ્સ ટાસ્કનું કાર્ય દર્શાવે છે.
આકૃતિ - સામયિક ઇનપુટ રિપોર્ટ્સ કાર્ય

(1) ઉપકરણને SET_IDLE વિનંતી પ્રાપ્ત થાય છે. આ વિનંતી આપેલ રિપોર્ટ ID માટે નિષ્ક્રિય સમયગાળો સ્પષ્ટ કરે છે. SET_IDLE વિનંતી વિશે વધુ વિગતો માટે, જુઓ
(2) રિપોર્ટ ID માળખું (HID વર્ગ પ્રારંભિકરણ તબક્કા દરમિયાન ફાળવેલ) નિષ્ક્રિય સમયગાળા સાથે અપડેટ કરવામાં આવે છે. નિષ્ક્રિય સમયગાળા કાઉન્ટર નિષ્ક્રિય સમયગાળા મૂલ્ય સાથે પ્રારંભ કરવામાં આવે છે. રિપોર્ટ ID માળખું ઇનપુટ રિપોર્ટ્સ ID માળખાં ધરાવતી લિંક્ડ સૂચિના અંતે દાખલ કરવામાં આવે છે. નિષ્ક્રિય સમયગાળો મૂલ્ય 4-ms એકમમાં વ્યક્ત કરવામાં આવે છે જે 4 થી 1020 ms ની શ્રેણી આપે છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

41/174

ઉપરview
જો નિષ્ક્રિય સમયગાળો ઇન્ટરપ્ટ IN એન્ડપોઇન્ટના મતદાન અંતરાલ કરતા ઓછો હોય, તો રિપોર્ટ્સ મતદાન અંતરાલ પર જનરેટ થાય છે.
(૩) દર ૪ મિલીસેકન્ડે, સામયિક ઇનપુટ રિપોર્ટ ટાસ્ક ઇનપુટ રિપોર્ટ્સ ID સૂચિ બ્રાઉઝ કરે છે. દરેક ઇનપુટ રિપોર્ટ ID માટે, ટાસ્ક બે શક્ય કામગીરીમાંથી એક કરે છે. ટાસ્ક સમયગાળાનો સમયગાળો નિષ્ક્રિય સમયગાળા માટે ઉપયોગમાં લેવાતા 4-ms એકમ સાથે મેળ ખાય છે. જો હોસ્ટ દ્વારા કોઈ SET_IDLE વિનંતીઓ મોકલવામાં આવી નથી, તો ઇનપુટ રિપોર્ટ્સ ID સૂચિ ખાલી છે અને કાર્ય પાસે પ્રક્રિયા કરવા માટે કંઈ નથી. ટાસ્ક ફક્ત એવા રિપોર્ટ ID પર પ્રક્રિયા કરે છે જે 0 થી અલગ હોય અને 0 થી વધુ નિષ્ક્રિય સમયગાળા સાથે હોય.
(૪) આપેલ ઇનપુટ રિપોર્ટ ID માટે, કાર્ય ચકાસે છે કે નિષ્ક્રિય સમયગાળો પસાર થયો છે કે નહીં. જો નિષ્ક્રિય સમયગાળો પસાર થયો નથી, તો કાઉન્ટર ઘટાડવામાં આવે છે અને હોસ્ટને કોઈ ઇનપુટ રિપોર્ટ મોકલવામાં આવતો નથી.
(5) જો નિષ્ક્રિય અવધિ પસાર થઈ ગઈ હોય (એટલે ​​કે, નિષ્ક્રિય અવધિ કાઉન્ટર શૂન્ય પર પહોંચી ગયું હોય), તો ઇન્ટરપ્ટ IN એન્ડપોઇન્ટ દ્વારા sl_usbd_hid_write_sync() ફંક્શનને કૉલ કરીને હોસ્ટને ઇનપુટ રિપોર્ટ મોકલવામાં આવે છે.
(6) કાર્ય દ્વારા મોકલવામાં આવેલ ઇનપુટ રિપોર્ટ ડેટા રિપોર્ટ ડિસ્ક્રીપ્ટરમાં વર્ણવેલ દરેક ઇનપુટ રિપોર્ટ માટે ફાળવેલ આંતરિક ડેટા બફરમાંથી આવે છે. એપ્લિકેશન કાર્ય ઇનપુટ રિપોર્ટ મોકલવા માટે sl_usbd_hid_write_sync() ફંક્શનને કૉલ કરી શકે છે. ઇનપુટ રિપોર્ટ ડેટા મોકલ્યા પછી, sl_usbd_hid_write_sync() ઇનપુટ રિપોર્ટ ID સાથે સંકળાયેલ આંતરિક બફરને હમણાં જ મોકલેલા ડેટા સાથે અપડેટ કરે છે. પછી, સામયિક ઇનપુટ રિપોર્ટ ટાસ્ક હંમેશા દરેક નિષ્ક્રિય સમયગાળા પછી અને એપ્લિકેશન કાર્ય આંતરિક બફરમાં ડેટા અપડેટ ન કરે ત્યાં સુધી સમાન ઇનપુટ રિપોર્ટ ડેટા મોકલે છે. સામયિક ઇનપુટ રિપોર્ટ ટાસ્ક દ્વારા ટ્રાન્સમિશનના ચોક્કસ સમયે ફેરફાર થવાના કિસ્સામાં ઇનપુટ રિપોર્ટ ID ડેટાના ભ્રષ્ટાચારને ટાળવા માટે કેટલીક લોકીંગ મિકેનિઝમ છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

42/174

ઉપરview
ઉપરview
USB ઉપકરણ MSC વર્ગ
USB ઉપકરણ MSC વર્ગ ઓવરview USB ઉપકરણ MSC વર્ગ કોર USB ઉપકરણ MSC વર્ગ રૂપરેખાંકન USB ઉપકરણ MSC વર્ગ પ્રોગ્રામિંગ માર્ગદર્શિકા USB ઉપકરણ MSC વર્ગ સ્ટોરેજ ડ્રાઇવર્સ
આ વિભાગ સિલિકોન લેબ્સ યુએસબી ડિવાઇસ દ્વારા સપોર્ટેડ માસ સ્ટોરેજ ડિવાઇસ ક્લાસ (એમએસસી)નું વર્ણન કરે છે. એમએસસી એ એક પ્રોટોકોલ છે જે યુએસબી ડિવાઇસ અને હોસ્ટ વચ્ચે માહિતીના ટ્રાન્સફરને સક્ષમ કરે છે. ટ્રાન્સફર કરવામાં આવતી માહિતી એવી કોઈપણ વસ્તુ છે જે ઇલેક્ટ્રોનિક રીતે સંગ્રહિત કરી શકાય છે, જેમ કે એક્ઝિક્યુટેબલ પ્રોગ્રામ્સ, સોર્સ કોડ, દસ્તાવેજો, છબીઓ, રૂપરેખાંકન ડેટા, અથવા અન્ય ટેક્સ્ટ અથવા આંકડાકીય ડેટા. યુએસબી ડિવાઇસ હોસ્ટ માટે બાહ્ય સ્ટોરેજ માધ્યમ તરીકે દેખાય છે, જે ટ્રાન્સફરને સક્ષમ કરે છે fileડ્રેગ અને ડ્રોપ દ્વારા s.
A file સિસ્ટમ વ્યાખ્યાયિત કરે છે કે કેવી રીતે files સ્ટોરેજ મીડિયામાં ગોઠવાયેલા છે. USB માસ સ્ટોરેજ ક્લાસ સ્પષ્ટીકરણ માટે કોઈ ખાસ આવશ્યકતા નથી file અનુરૂપ ઉપકરણો પર ઉપયોગમાં લેવાતી સિસ્ટમ. તેના બદલે, તે સ્મોલ કમ્પ્યુટર સિસ્ટમ ઇન્ટરફેસ (SCSI) પારદર્શક આદેશ સેટનો ઉપયોગ કરીને ડેટાના ક્ષેત્રોને વાંચવા અને લખવા માટે એક સરળ ઇન્ટરફેસ પ્રદાન કરે છે. આમ, ઓપરેટિંગ સિસ્ટમ્સ USB ડ્રાઇવને હાર્ડ ડ્રાઇવની જેમ ગણી શકે છે, અને તેને કોઈપણ સાથે ફોર્મેટ કરી શકે છે file તેમને ગમતી સિસ્ટમ.
યુએસબી માસ સ્ટોરેજ ડિવાઇસ ક્લાસ બે ટ્રાન્સપોર્ટ પ્રોટોકોલને સપોર્ટ કરે છે, જે નીચે મુજબ છે:
બલ્ક-ઓન્લી ટ્રાન્સપોર્ટ (BOT) કંટ્રોલ/બલ્ક/ઇન્ટરપ્ટ (CBI) ટ્રાન્સપોર્ટ (ફક્ત ફ્લોપી ડિસ્ક ડ્રાઇવ માટે વપરાય છે)
માસ સ્ટોરેજ ડિવાઇસ ક્લાસ ફક્ત BOT પ્રોટોકોલનો ઉપયોગ કરીને SCSI પારદર્શક આદેશ સેટ લાગુ કરે છે, જે દર્શાવે છે કે ડેટા અને સ્થિતિ માહિતી ટ્રાન્સમિટ કરવા માટે ફક્ત બલ્ક એન્ડપોઇન્ટનો ઉપયોગ કરવામાં આવશે. MSC અમલીકરણ બહુવિધ લોજિકલ એકમોને સપોર્ટ કરે છે.
MSC અમલીકરણ નીચેના સ્પષ્ટીકરણોનું પાલન કરે છે:
યુનિવર્સલ સીરીયલ બસ માસ સ્ટોરેજ ક્લાસ સ્પષ્ટીકરણ સમાપ્તview, પુનરાવર્તન 1.3 સપ્ટેમ્બર 5, 2008. યુનિવર્સલ સીરીયલ બસ માસ સ્ટોરેજ ક્લાસ બલ્ક-ઓન્લી ટ્રાન્સપોર્ટ, પુનરાવર્તન 1.0 સપ્ટેમ્બર 31, 1999.
USB ઉપકરણ MSC aCl ss ઓવરview
પ્રોટોકોલ એન્ડપોઇન્ટ્સ ક્લાસ રિક્વેસ્ટ્સ સ્મોલ કમ્પ્યુટર સિસ્ટમ ઇન્ટરફેસ (SCSI)
પ્રોટોકોલ
આ વિભાગમાં, આપણે માસ સ્ટોરેજ ક્લાસના બલ્ક-ઓન્લી ટ્રાન્સપોર્ટ (BOT) પ્રોટોકોલની ચર્ચા કરીશું. બલ્ક-ઓન્લી ટ્રાન્સપોર્ટ પ્રોટોકોલમાં ત્રણ s છેtages:
કમાન્ડ ટ્રાન્સપોર્ટ ડેટા ટ્રાન્સપોર્ટ સ્ટેટસ ટ્રાન્સપોર્ટ
માસ સ્ટોરેજ કમાન્ડ્સ હોસ્ટ દ્વારા કમાન્ડ બ્લોક રેપર (CBW) નામના સ્ટ્રક્ચર દ્વારા મોકલવામાં આવે છે. ડેટા ટ્રાન્સપોર્ટની જરૂર હોય તેવા કમાન્ડ્સ માટે stage, હોસ્ટ CBW ની લંબાઈ અને ફ્લેગ ફીલ્ડ દ્વારા ઉલ્લેખિત ઉપકરણમાંથી બાઇટ્સની ચોક્કસ સંખ્યા મોકલવાનો અથવા પ્રાપ્ત કરવાનો પ્રયાસ કરશે. ડેટા ટ્રાન્સપોર્ટ પછી stage, હોસ્ટ ડિવાઇસમાંથી કમાન્ડ સ્ટેટસ રેપર (CSW) મેળવવાનો પ્રયાસ કરે છે જે કમાન્ડની સ્થિતિ તેમજ કોઈપણ ડેટા અવશેષની વિગતો આપે છે (જો

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

43/174

ઉપરview
કોઈપણ). એવા આદેશો માટે જેમાં ડેટા ટ્રાન્સપોર્ટનો સમાવેશ થતો નથીtage, CBW મોકલ્યા પછી હોસ્ટ સીધું CSW પ્રાપ્ત કરવાનો પ્રયાસ કરે છે. પ્રોટોકોલ આકૃતિ - MSC પ્રોટોકોલમાં વિગતવાર દર્શાવેલ છે.
આકૃતિ - MSC પ્રોટોકોલ

અંતિમ બિંદુઓ
ઉપકરણ બાજુએ, BOT સ્પષ્ટીકરણના પાલનમાં, MSC નીચેના અંતિમ બિંદુઓથી બનેલું છે: નિયંત્રણ IN અને OUT અંતિમ બિંદુઓની જોડી જેને ડિફોલ્ટ અંતિમ બિંદુ કહેવાય છે. બલ્ક IN અને OUT અંતિમ બિંદુઓની જોડી.
નીચે આપેલ કોષ્ટક અંતિમ બિંદુઓના વિવિધ ઉપયોગો દર્શાવે છે.
કોષ્ટક - MSC એન્ડપોઇન્ટ ઉપયોગ

અંતિમ બિંદુ
કંટ્રોલ ઇન કંટ્રોલ આઉટ બલ્ક ઇન બલ્ક આઉટ

દિશા
ડિવાઇસ ટુ હોસ્ટ હોસ્ટ ટુ ડિવાઇસ ડિવાઇસ ટુ હોસ્ટ હોસ્ટ ટુ ડિવાઇસ

ઉપયોગ
ગણતરી અને MSC વર્ગ-વિશિષ્ટ વિનંતીઓ ગણતરી અને MSC વર્ગ-વિશિષ્ટ વિનંતીઓ CSW અને ડેટા મોકલો CBW અને ડેટા પ્રાપ્ત કરો

વર્ગ વિનંતીઓ
MSC BOT પ્રોટોકોલ માટે બે વ્યાખ્યાયિત નિયંત્રણ વિનંતીઓ છે. આ વિનંતીઓ અને તેમના વર્ણનો નીચેના કોષ્ટકમાં વિગતવાર છે.

કોષ્ટક - માસ સ્ટોરેજ ક્લાસ વિનંતીઓ

વર્ગ વિનંતીઓ
બલ્ક-ઓન્લી માસ સ્ટોરેજ રીસેટ

વર્ણન
આ વિનંતીનો ઉપયોગ માસ સ્ટોરેજ ડિવાઇસ અને તેના સંકળાયેલ ઇન્ટરફેસને રીસેટ કરવા માટે થાય છે. આ વિનંતી ઉપકરણને આગામી કમાન્ડ બ્લોક પ્રાપ્ત કરવા માટે તૈયાર કરે છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

44/174

ઉપરview

વર્ગ વિનંતીઓ

વર્ણન

મહત્તમ મેળવો આ વિનંતીનો ઉપયોગ ઉપકરણ દ્વારા સપોર્ટેડ ઉચ્ચતમ લોજિકલ યુનિટ નંબર (LUN) પરત કરવા માટે થાય છે. ઉદાહરણ તરીકેampલે, એ

LUN

LUN 0 અને LUN 1 ધરાવતું ઉપકરણ 1 નું મૂલ્ય પરત કરશે. એક જ લોજિકલ યુનિટ ધરાવતું ઉપકરણ 0 પરત કરશે અથવા

વિનંતી. પરત કરી શકાય તેવું મહત્તમ મૂલ્ય ૧૫ છે.

નાના કમ્પ્યુટર સિસ્ટમ ઇન્ટરફેસ SCSI

પ્રોગ્રામિંગ ઇન્ટરફેસ સ્તરે, MSC ડિવાઇસ SCSI અને SFF-8020i (ATAPI) જેવા પ્રમાણભૂત સ્ટોરેજ-મીડિયા કોમ્યુનિકેશન પ્રોટોકોલમાંથી એકનો અમલ કરે છે. "પ્રોગ્રામિંગ ઇન્ટરફેસ" સ્પષ્ટ કરે છે કે કયો પ્રોટોકોલ અમલમાં મુકવામાં આવ્યો છે, અને હોસ્ટ ઓપરેટિંગ સિસ્ટમને USB સ્ટોરેજ ડિવાઇસ સાથે વાતચીત કરવા માટે યોગ્ય ડિવાઇસ ડ્રાઇવર લોડ કરવામાં મદદ કરે છે. SCSI એ USB MSC સ્ટોરેજ ડિવાઇસ સાથે વપરાતો સૌથી સામાન્ય પ્રોટોકોલ છે. અમે MSC SCSI સબક્લાસ માટે એક અમલીકરણ પ્રદાન કરીએ છીએ જેનો ઉપયોગ અમારા GSDK વપરાશકર્તાઓ આઉટ ઓફ ધ બોક્સ કરી શકે છે.
SCSI એ કમ્પ્યુટર્સ અને પેરિફેરલ ઉપકરણો વચ્ચેના સંદેશાવ્યવહારને નિયંત્રિત કરવા માટેના ધોરણોનો સમૂહ છે. આ ધોરણોમાં આદેશો, પ્રોટોકોલ, ઇલેક્ટ્રિકલ ઇન્ટરફેસ અને ઓપ્ટિકલ ઇન્ટરફેસનો સમાવેશ થાય છે. સ્ટોરેજ ડિવાઇસ જે અન્ય હાર્ડવેર ઇન્ટરફેસનો ઉપયોગ કરે છે, જેમ કે USB, ઉપકરણ/હોસ્ટ માહિતી મેળવવા અને ઉપકરણના સંચાલનને નિયંત્રિત કરવા અને સ્ટોરેજ મીડિયામાં ડેટાના બ્લોક્સ ટ્રાન્સફર કરવા માટે SCSI આદેશોનો ઉપયોગ કરે છે.
SCSI આદેશો ઉપકરણ પ્રકારો અને કાર્યોની વિશાળ શ્રેણીને આવરી લે છે અને તેથી, ઉપકરણોને આ આદેશોના સબસેટની જરૂર હોય છે. સામાન્ય રીતે, મૂળભૂત સંદેશાવ્યવહાર માટે નીચેના આદેશો જરૂરી છે:
પૂછપરછ વાંચન ક્ષમતા(10) વાંચો(10) વિનંતી સેન્સ ટેસ્ટ યુનિટ તૈયાર લખાણ(10)
કોરમાંથી USB ઉપકરણ MSC વર્ગ સંસાધન જરૂરિયાતો

દર વખતે જ્યારે તમે sl_usbd_msc_add_to_configuration() ફંક્શન દ્વારા USB કન્ફિગરેશનમાં MSC ક્લાસ ઇન્સ્ટન્સ ઉમેરો છો, ત્યારે નીચેના સંસાધનો કોરમાંથી ફાળવવામાં આવશે.

સંસાધન
ઇન્ટરફેસ વૈકલ્પિક ઇન્ટરફેસ એન્ડપોઇન્ટ્સ ઇન્ટરફેસ જૂથો

જથ્થો
1 1 2 0

નોંધ કરો કે તે સંખ્યાઓ દરેક રૂપરેખાંકન માટે છે. તમારા SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY અને SL_USBD_DESCRIPTOR_QUANTITY રૂપરેખાંકન મૂલ્યો સેટ કરતી વખતે, વર્ગમાં કેટલી રૂપરેખાંકનો ઉમેરવામાં આવશે તે ધ્યાનમાં લેવાનું ભૂલશો નહીં. SL_USBD_OPEN_ENDPOINTS_QUANTITY રૂપરેખાંકન મૂલ્ય માટે, કારણ કે અંતિમ બિંદુઓ ફક્ત ત્યારે જ ખુલે છે જ્યારે હોસ્ટ દ્વારા રૂપરેખાંકન સેટ કરવામાં આવે છે, તમારે ફક્ત વર્ગના ઉદાહરણ માટે જરૂરી અંતિમ બિંદુઓની સંખ્યા ધ્યાનમાં લેવાની જરૂર છે.
USB ઉપકરણ MSC વર્ગ રૂપરેખાંકન

MSC વર્ગને ગોઠવવા માટે રૂપરેખાંકન પરિમાણોના બે જૂથોનો ઉપયોગ થાય છે:
USB ઉપકરણ MSC વર્ગ એપ્લિકેશન-વિશિષ્ટ રૂપરેખાંકનો USB ઉપકરણ MSC વર્ગ લોજિકલ એકમ રૂપરેખાંકન
USB ઉપકરણ MSC વર્ગ એપ્લિકેશન-વિશિષ્ટ રૂપરેખાંકનો

ક્લાસ કમ્પાઇલ-ટાઇમ કન્ફિગરેશન્સ ક્લાસ ઇન્સ્ટન્સ ક્રિએશન

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

45/174

ઉપરview

ક્લાસ કમ્પાઇલ-ટાઇમ રૂપરેખાંકનો
સિલિકોન લેબ્સ યુએસબી ડિવાઇસ MSC ક્લાસ અને SCSI સબક્લાસ sl_usbd_core_config.h માં સ્થિત #defines દ્વારા કમ્પાઇલ સમયે ગોઠવી શકાય છે. file.
કોષ્ટક - સામાન્ય રૂપરેખાંકન સ્થિરાંકો

રૂપરેખાંકન નામ

વર્ણન

SL_USBD_MSC_CLASS_INST ફંક્શનને કૉલ કરીને ફાળવવામાં આવનારા ક્લાસ ઇન્સ્ટન્સની સંખ્યા

ANCE_QUANTITY

sl_usbd_msc_scsi_create_instance() .

SL_USBD_MSC_CONFIGURA રૂપરેખાંકનની સંખ્યા જેમાં ક્લાસ ઇન્સ્ટન્સને કોલ દ્વારા ઉમેરી શકાય છે

TION_QUANTITY

ફંક્શન sl_usbd_msc_scsi_add_to_configuration() .

SL_USBD_MSC_LUN_QUANT દરેક ક્લાસ ઇન્સ્ટન્સ માટે લોજિકલ યુનિટ્સની સંખ્યા જે તમે કોલ દ્વારા ઉમેરશો

ITY

ફંક્શન sl_usbd_msc_scsi_lun_add() .

SL_USBD_MSC_SCSI_64_BIT 64 બિટ્સના લોજિકલ બ્લોક એડ્રેસ (LBA) માટે સપોર્ટને સક્ષમ અથવા અક્ષમ કરે છે.
_એલબીએ_એન

SL_USBD_MSC_DATA_BUFF ER_SIZE બાઇટ્સમાં દરેક ક્લાસ ઇન્સ્ટન્સ દીઠ ડેટા બફરનું કદ

ડિફૉલ્ટ મૂલ્ય
2
1
2
0
512

ક્લાસ ઇન્સ્ટન્સ બનાવટ
USB ડિવાઇસ બનાવવા માટે MSC SCSI ક્લાસ ઇન્સ્ટન્સ sl_usbd_msc_scsi_create_instance() ફંક્શનને કૉલ કરવામાં આવે છે. આ ફંક્શન નીચે વર્ણવેલ એક કન્ફિગરેશન આર્ગ્યુમેન્ટ લે છે.
p_scsi_કોલબેક
p_scsi_callbacks એ sl_usbd_msc_scsi_callbacks_t પ્રકારના રૂપરેખાંકન માળખા માટેનો નિર્દેશક છે. સામાન્ય USB ઉપકરણ વર્ગ કોલબેક કનેક્ટ/ડિસ્કનેક્ટ ઉપરાંત, તે MSC વર્ગને વૈકલ્પિક કોલબેક ફંક્શનનો સમૂહ પૂરો પાડે છે જે લોજિકલ યુનિટ પર કોઈ ઘટના બને ત્યારે બોલાવવામાં આવે છે. જો કોઈ કોલબેકની જરૂર ન હોય તો આ દલીલમાં નલ પોઇન્ટર (NULL) પસાર કરી શકાય છે.
નીચે આપેલ કોષ્ટક આ રૂપરેખાંકન માળખામાં ઉપલબ્ધ દરેક રૂપરેખાંકન ક્ષેત્રનું વર્ણન કરે છે.
કોષ્ટક – sl_usbd_msc_scsi_callbacks_t રૂપરેખાંકન માળખું

ક્ષેત્રો

વર્ણન

.સક્ષમ કરો

જ્યારે USB ક્લાસ ઇન્સ્ટન્સ સફળતાપૂર્વક સક્ષમ થાય ત્યારે કૉલ કરવામાં આવે છે.

.disable જ્યારે USB ક્લાસ ઇન્સ્ટન્સ અક્ષમ હોય ત્યારે કૉલ થાય છે.

.host_eject ફંક્શન ત્યારે કહેવાય છે જ્યારે હોસ્ટમાંથી લોજિકલ યુનિટ બહાર કાઢવામાં આવે છે.

કાર્ય સહી
રદબાતલ એપ્લિકેશન_યુએસબીડી_એમએસસી_એસસીએસઆઈ_એનેબલ (યુઆઇટી 8_ટી વર્ગ_એનબીઆર);
રદબાતલ એપ્લિકેશન_યુએસબીડી_એમએસસી_એસસીએસઆઈ_ડિઝેબલ (યુઆઇટી8_ટી ક્લાસ_એનબીઆર); રદબાતલ એપ્લિકેશન_યુએસબીડી_એમએસસી_એસસીએસઆઈ_હોસ્ટ_ઇજેક્ટ (યુઆઇટી8_ટી ક્લાસ_એનબીઆર, યુઆઇટી8_ટી લુ_એનબીઆર);

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 ક્લાસ સ્ટોરેજ ડ્રાઇવરો જુઓ.

.તપાસ કરો અથવા r_id _ p tr
.ઉત્પાદન_આઈડી_પીટીઆર
.p r d uct_ re v isi on_level .is_ re ad _o nly

લોજિકલ યુનિટની વિક્રેતા ઓળખ ધરાવતી સ્ટ્રિંગનો નિર્દેશક. સ્ટ્રિંગની મહત્તમ લંબાઈ 8 અક્ષરો છે. લોજિકલ યુનિટની ઉત્પાદન ઓળખ ધરાવતી સ્ટ્રિંગનો નિર્દેશક. સ્ટ્રિંગની મહત્તમ લંબાઈ 16 અક્ષરો છે. ઉત્પાદન પુનરાવર્તન સ્તર.
ધ્વજ જે દર્શાવે છે કે લોજિકલ યુનિટને બિંદુથી ફક્ત વાંચવા માટે જોવું જોઈએ કે નહીં view યજમાન (સાચું) કે નહીં (ખોટું).

USB ઉપકરણ MSC વર્ગ પ્રોગ્રામિંગ માર્ગદર્શિકા

આ વિભાગ MSC વર્ગનો ઉપયોગ કેવી રીતે કરવો તે સમજાવે છે.
USB ઉપકરણ MSC વર્ગ શરૂ કરી રહ્યા છીએ તમારા ઉપકરણમાં USB ઉપકરણ MSC SCSI વર્ગ ઇન્સ્ટન્સ ઉમેરવું USB ઉપકરણ MSC વર્ગ લોજિકલ યુનિટ હેન્ડલિંગ
USB ઉપકરણ MSC વર્ગ શરૂ કરી રહ્યા છીએ

તમારા ઉપકરણમાં MSC SCSI ક્લાસ કાર્યક્ષમતા ઉમેરવા માટે, પહેલા sl_usbd_msc_init() અને sl_usbd_msc_scsi_init() ફંક્શનને કૉલ કરીને MSC બેઝ ક્લાસ અને SCSI સબક્લાસને ઇનિશિલાઇઝ કરો.
માજીampનીચે આપેલ માહિતી બતાવે છે કે sl_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(); જો (status ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */
}
status = sl_usbd_msc_scsi_init(); જો (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 class_nbr; sl_status_t સ્ટેટસ;
sl_usbd_msc_scsi_callbacks_t app_usbd_msc_scsi_callbacks = { .સક્ષમ કરો = નલ, .અક્ષમ કરો = નલ, .હોસ્ટ_ઇજેક્ટ = નલ };
સ્થિતિ = sl_usbd_msc_scsi_create_instance(&app_usbd_msc_scsi_callbacks,0 &class_nbr);
જો (સ્થિતિ ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */ }
તમારા ઉપકરણના રૂપરેખાંકન(ઓ)માં MSC ક્લાસ ઇન્સ્ટન્સ ઉમેરવું
MSC ક્લાસ ઇન્સ્ટન્સ બનાવ્યા પછી, તમે ફંક્શનને કૉલ કરીને તેને ગોઠવણીમાં ઉમેરી શકો છો
sl_usbd_msc_add_to_configuration() .
માજીampનીચે ડિફોલ્ટ દલીલોનો ઉપયોગ કરીને sl_usbd_msc_scsi_add_to_configuration() ને કેવી રીતે કૉલ કરવું તે બતાવો.
Example – sl_usbd_ msc_scsi_add_to_configuration() ને કૉલ કરી રહ્યું છે

sl_status_t સ્થિતિ;

સ્થિતિ = sl_usbd_msc_scsi_add_to_configuration(class_nbr,

(1)

રૂપરેખા_nbr_fs);

(2)

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

(૧) sl_usbd_msc_scsi_create_instance() દ્વારા પરત કરાયેલ રૂપરેખાંકનમાં ઉમેરવા માટેનો વર્ગ નંબર. (૩૨) રૂપરેખાંકન નંબર (અહીં તેને પૂર્ણ-સ્પીડ રૂપરેખાંકનમાં ઉમેરી રહ્યા છીએ).
USB ઉપકરણ MSC વર્ગ લોજિકલ યુનિટ હેન્ડલિંગ
લોજિકલ યુનિટ ઉમેરવું સ્ટોરેજ માધ્યમ જોડવું/અલગ કરવું
લોજિકલ યુનિટ ઉમેરી રહ્યા છીએ
તમારા MSC SCSI ક્લાસ ઇન્સ્ટન્સમાં લોજિકલ યુનિટ ઉમેરતી વખતે, તે સ્ટોરેજ માધ્યમ (RAMDisk, SD કાર્ડ, ફ્લેશ મેમરી, વગેરે) સાથે બંધાયેલ હોવું જોઈએ. MSC ક્લાસ સ્ટોરેજ મીડિયા સાથે વાતચીત કરવા માટે સ્ટોરેજ ડ્રાઇવરનો ઉપયોગ કરે છે. લોજિકલ યુનિટ ઉમેરતી વખતે આ ડ્રાઇવરને સપ્લાય કરવાની જરૂર પડશે.
માજીampનીચે આપેલ sl_usbd_msc_scsi_lun_add() દ્વારા લોજિકલ યુનિટ કેવી રીતે ઉમેરવું તે બતાવે છે.
Example – sl_usbd_msc_scsi_lun_add() દ્વારા લોજિકલ યુનિટ ઉમેરવું

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

48/174

ઉપરview

sl_usbd_msc_scsi_lun_t *lu_object_ptr = શૂન્ય;

sl_usbd_msc_scsi_lun_info_t lu_info;

sl_સ્ટેટસ_ટી

સ્થિતિ;

lu_info.sl_usbd_msc_scsi_lun_api_t = &એપ્લિકેશન_usbd_scsi_સ્ટોરેજ_બ્લોક_ડિવાઇસ_api;

lu_info.વિક્રેતા_આઈડી_પીટીઆર

= “સિલિકોન લેબ્સ”;

lu_info.product_id_ptr દ્વારા વધુ

= “બ્લોક ડિવાઇસ એક્સampલે”;

lu_info.product_revision_level = 0x1000u;

lu_info.is_read_only

= ખોટું;

સ્થિતિ = sl_usbd_msc_scsi_lun_add(class_nbr, &lu_info, &lu_object_ptr);
જો (સ્થિતિ ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */ }

સ્ટોરેજ માધ્યમ જોડવું/અલગ કરવું
લોજિકલ યુનિટ ઉમેર્યા પછી, હોસ્ટ બાજુથી ઉપલબ્ધ થવા માટે સ્ટોરેજ માધ્યમ જોડવું આવશ્યક છે. MSC ક્લાસ લોજિકલ યુનિટ સાથે સ્ટોરેજ મીડિયા એસોસિએશનને નિયંત્રિત કરવા માટે બે ફંક્શન ઓફર કરે છે: sl_usbd_msc_scsi_lun_attach() અને sl_usbd_msc_scsi_lun_detach(). આ ફંક્શન્સ તમને સ્ટોરેજ ડિવાઇસને દૂર કરવાની અનુકરણ કરવાની મંજૂરી આપે છે જેથી જો જરૂરી હોય તો એમ્બેડેડ એપ્લિકેશનમાંથી ફરીથી ઍક્સેસ મેળવી શકાય.
માજીampનીચે આપેલ માહિતી sl_usbd_msc_scsi_lun_attach() અને sl_usbd_msc_scsi_lun_detach() ફંક્શનનો ઉપયોગ કેવી રીતે કરવો તે બતાવે છે.
Example – મીડિયા એટેચ/ડિટેચ

sl_status_t સ્થિતિ;

status = sl_usbd_msc_scsi_lun_attach(lu_object_ptr); જો (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 ઉપકરણ હોસ્ટ સાથે જોડાયેલ હોય, તો મીડિયા હવે અનુપલબ્ધ દેખાશે. આ ક્ષણે, એમ્બેડેડ એપ્લિકેશનમાંથી મીડિયા પર કામગીરી કરી શકાય છે.
(૩) ફરીથી, જો MSC ઉપકરણ હોસ્ટ સાથે જોડાયેલ હોય, તો સ્ટોરેજ મીડિયા કનેક્ટેડ તરીકે દેખાશે.
USB ઉપકરણ MSC ક્લાસ સ્ટોરેજ ડ્રાઇવર્સ
USB ડિવાઇસ MSC ક્લાસને સ્ટોરેજ માધ્યમ સાથે વાતચીત કરવા માટે સ્ટોરેજ ડ્રાઇવરની જરૂર છે. હાલમાં, સિલિકોન લેબ્સ ડ્રાઇવર્સ ઓફર કરતું નથી.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

49/174

ઉપરview
TPY aa he ડ્રાઇવર AI ને typedef sl_usbd_msc_scsi_lun_api_t દ્વારા વ્યાખ્યાયિત કરવામાં આવે છે. જ્યારે તમે sl_usbd_msc_scsi_lun_add() સાથે લોજિક l યુનિટ dd કરો છો ત્યારે તમારા sl_usbd_msc_scsi_lun_info_t v rible, pssed srgument ને aaaaaaaa કરવા માટે અમારા sl_usbd_msc_scsi_lun_api_t v rible નો સમાવેશ થવો જોઈએ. સ્ટ્રક્ચર્સ પર વધુ વિગતો માટે USB ડિવાઇસ MSC SCSI API વિભાગ જુઓ. સ્ટોરેજ ડ્રાઇવર અમલીકરણ RAM માં સેક્ટરના એરે જેટલું સરળ હોઈ શકે છે. લાક્ષણિક સેક્ટર કદ (એટલે ​​કે, બ્લોક કદ) માસ સ્ટોરેજ ડિવાઇસ માટે 512 અને CD-ROM માટે 2048 છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

50/174

ઉપરview
ઉપરview
USB ઉપકરણ વિક્રેતા વર્ગ
USB ઉપકરણ વિક્રેતા વર્ગ સમાપ્તview USB ઉપકરણ વિક્રેતા વર્ગ કોરમાંથી સંસાધન જરૂરિયાતો USB ઉપકરણ વિક્રેતા વર્ગ રૂપરેખાંકન USB ઉપકરણ વિક્રેતા વર્ગ પ્રોગ્રામિંગ માર્ગદર્શિકા વિક્રેતા વર્ગ તમને વિક્રેતા-વિશિષ્ટ ઉપકરણો બનાવવાની મંજૂરી આપે છે જે માલિકીનો પ્રોટોકોલ લાગુ કરી શકે છે. તે હોસ્ટ અને ઉપકરણ વચ્ચે ડેટા ટ્રાન્સફર કરવા માટે બલ્ક એન્ડપોઇન્ટ્સની જોડી પર આધાર રાખે છે. બલ્ક ટ્રાન્સફર મોટી માત્રામાં અનસ્ટ્રક્ચર્ડ ડેટા ટ્રાન્સફર કરવા માટે અનુકૂળ છે અને ભૂલ શોધ અને પુનઃપ્રયાસ પદ્ધતિનો ઉપયોગ કરીને ડેટાનું વિશ્વસનીય વિનિમય પૂરું પાડે છે. બલ્ક એન્ડપોઇન્ટ્સ ઉપરાંત, વેન્ડર વર્ગ ઇન્ટરપ્ટ એન્ડપોઇન્ટ્સની વૈકલ્પિક જોડીનો પણ ઉપયોગ કરી શકે છે. કોઈપણ ઓપરેટિંગ સિસ્ટમ (OS) વેન્ડર વર્ગ સાથે કામ કરી શકે છે જો OS પાસે વેન્ડર વર્ગને હેન્ડલ કરવા માટે ડ્રાઇવર હોય. OS પર આધાર રાખીને, ડ્રાઇવર મૂળ અથવા વિક્રેતા-વિશિષ્ટ હોઈ શકે છે. ઉદાહરણ તરીકે, Microsoft Windows® હેઠળ, તમારી એપ્લિકેશન વિક્રેતા ઉપકરણ સાથે વાતચીત કરવા માટે Microsoft દ્વારા પ્રદાન કરાયેલ WinUSB ડ્રાઇવર સાથે ક્રિયાપ્રતિક્રિયા કરે છે.
USB ઉપકરણ વિક્રેતા વર્ગ સમાપ્તview
આકૃતિ - વિન્ડોઝ હોસ્ટ અને વેન્ડર ક્લાસ વચ્ચેનું સામાન્ય આર્કિટેક્ચર વેન્ડર ક્લાસનો ઉપયોગ કરીને હોસ્ટ અને ડિવાઇસ વચ્ચેનું સામાન્ય આર્કિટેક્ચર દર્શાવે છે. આ ઉદાહરણમાંampહા, હોસ્ટ ઓપરેટિંગ સિસ્ટમ MS Windows છે.
આકૃતિ - એમએસ વિન્ડોઝ હોસ્ટ અને વેન્ડર ક્લાસ વચ્ચે સામાન્ય સ્થાપત્ય

MS Windows બાજુ પર, એપ્લિકેશન USB લાઇબ્રેરી સાથે ક્રિયાપ્રતિક્રિયા કરીને વિક્રેતા ઉપકરણ સાથે વાતચીત કરે છે. libusb જેવી લાઇબ્રેરીઓ, ઉપકરણ અને તેની સાથે સંકળાયેલ પાઈપોનું સંચાલન કરવા અને નિયંત્રણ, બલ્ક અને ઇન્ટરપ્ટ એન્ડપોઇન્ટ્સ દ્વારા ઉપકરણ સાથે વાતચીત કરવા માટે API પ્રદાન કરે છે.
ઉપકરણ બાજુ પર, વેન્ડર વર્ગ નીચેના અંતિમ બિંદુઓથી બનેલો છે:
નિયંત્રણ IN અને OUT એન્ડપોઇન્ટ્સની જોડી જેને ડિફોલ્ટ એન્ડપોઇન્ટ કહેવાય છે. બલ્ક IN અને OUT એન્ડપોઇન્ટ્સની જોડી.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

51/174

ઉપરview

ઇન્ટરપ્ટ IN અને OUT એન્ડપોઇન્ટ્સની જોડી. આ જોડી વૈકલ્પિક છે. નીચે આપેલ કોષ્ટક વિવિધ એન્ડપોઇન્ટ્સના ઉપયોગને દર્શાવે છે:
કોષ્ટક - વેન્ડર ક્લાસ એન્ડપોઇન્ટ્સનો ઉપયોગ

અંતિમ બિંદુ દિશા

નિયંત્રણ IN
નિયંત્રણ
બહાર
બલ્ક IN

ડિવાઇસ-ટુ-હોસ્ટ
> હોસ્ટ-ટુડિવાઇસ
ડિવાઇસ-ટુ-હોસ્ટ

બલ્ક આઉટ
ઇન્ટરપ્ટ IN
વિક્ષેપ
બહાર

હોસ્ટ-ટુડિવાઇસ
ડિવાઇસ-ટુ-હોસ્ટ
હોસ્ટ-ટુડિવાઇસ

ઉપયોગ
ગણતરી અને વિક્રેતા-વિશિષ્ટ વિનંતીઓ માટે માનક વિનંતીઓ.
ગણતરી અને વિક્રેતા-વિશિષ્ટ વિનંતીઓ માટે માનક વિનંતીઓ.
કાચો ડેટા સંચાર. ડેટાને માલિકીના પ્રોટોકોલ અનુસાર સંરચિત કરી શકાય છે.
કાચો ડેટા સંચાર. ડેટાને માલિકીના પ્રોટોકોલ અનુસાર સંરચિત કરી શકાય છે.
કાચો ડેટા સંચાર અથવા સૂચના. ડેટાને માલિકીના પ્રોટોકોલ અનુસાર ગોઠવી શકાય છે. કાચો ડેટા સંચાર અથવા સૂચના. ડેટાને માલિકીના પ્રોટોકોલ અનુસાર ગોઠવી શકાય છે.

ડિવાઇસ એપ્લિકેશન હોસ્ટને અથવા તેનાથી ડેટા મોકલવા અથવા પ્રાપ્ત કરવા માટે બલ્ક અને ઇન્ટરપ્ટ એન્ડપોઇન્ટનો ઉપયોગ કરી શકે છે. તે હોસ્ટ દ્વારા મોકલવામાં આવેલી વિક્રેતા-વિશિષ્ટ વિનંતીઓને ડીકોડ કરવા માટે ફક્ત ડિફોલ્ટ એન્ડપોઇન્ટનો ઉપયોગ કરી શકે છે. માનક વિનંતીઓ સિલિકોન લેબ્સ યુએસબી ડિવાઇસના કોર લેયર દ્વારા આંતરિક રીતે સંચાલિત થાય છે.
કોર તરફથી USB ઉપકરણ વિક્રેતા વર્ગ સંસાધન જરૂરિયાતો

દર વખતે જ્યારે તમે sl_usbd_vendor_add_to_configuration() ફંક્શન દ્વારા રૂપરેખાંકનમાં વેન્ડર ક્લાસ ઇન્સ્ટન્સ ઉમેરો છો, ત્યારે નીચેના સંસાધનો કોરમાંથી ફાળવવામાં આવશે.

સંસાધન
ઇન્ટરફેસ વૈકલ્પિક ઇન્ટરફેસ એન્ડપોઇન્ટ્સ ઇન્ટરફેસ જૂથો

જથ્થો
૧ ૧ ૨ (જો તમે ઇન્ટરપ્ટ એન્ડપોઇન્ટ્સ સક્ષમ કર્યા હોય તો ૪) ૦

નોંધ કરો કે તે સંખ્યાઓ દરેક રૂપરેખાંકન માટે છે. તમારા SL_USBD_INTERFACE_QUANTITY, SL_USBD_ALT_INTERFACE_QUANTITY, SL_USBD_INTERFACE_GROUP_QUANTITY અને SL_USBD_DESCRIPTOR_QUANTITY રૂપરેખાંકન મૂલ્યો સેટ કરતી વખતે, વર્ગમાં કેટલી રૂપરેખાંકનો ઉમેરવામાં આવશે તે ધ્યાનમાં લેવાનું ભૂલશો નહીં. SL_USBD_OPEN_ENDPOINTS_QUANTITY રૂપરેખાંકન મૂલ્ય માટે, કારણ કે અંતિમ બિંદુઓ ફક્ત ત્યારે જ ખુલે છે જ્યારે હોસ્ટ દ્વારા રૂપરેખાંકન સેટ કરવામાં આવે છે, તમારે ફક્ત વર્ગના ઉદાહરણ માટે જરૂરી અંતિમ બિંદુઓની સંખ્યા ધ્યાનમાં લેવાની જરૂર છે.
USB ઉપકરણ વિક્રેતા વર્ગ રૂપરેખાંકન

વેન્ડર ક્લાસને ગોઠવવા માટે રૂપરેખાંકન પરિમાણોના બે જૂથોનો ઉપયોગ થાય છે:
USB ઉપકરણ વિક્રેતા વર્ગ એપ્લિકેશન-વિશિષ્ટ રૂપરેખાંકનો USB ઉપકરણ વિક્રેતા વર્ગ ઇન્સ્ટન્સ રૂપરેખાંકનો
USB ઉપકરણ વિક્રેતા વર્ગ એપ્લિકેશન-વિશિષ્ટ રૂપરેખાંકનો
સૌપ્રથમ, સિલિકોન લેબ્સ યુએસબી ડિવાઇસ વેન્ડર ક્લાસ મોડ્યુલનો ઉપયોગ કરવા માટે, તમારી એપ્લિકેશન જરૂરિયાતો અનુસાર વેન્ડર કમ્પાઇલ-ટાઇમ કન્ફિગરેશન વ્યાખ્યાયિત કરો. તેમને sl_usbd_core_config.h હેડરની અંદર ફરીથી જૂથબદ્ધ કરવામાં આવે છે. file વેન્ડર વિભાગ હેઠળ. જથ્થાત્મક રૂપરેખાંકનોનો હેતુ USB ઉપકરણ મોડ્યુલને કેટલા USB વેન્ડર ઑબ્જેક્ટ ફાળવવા તે વિશે જાણ કરવાનો છે.
નીચે આપેલ કોષ્ટક દરેક રૂપરેખાંકન વ્યાખ્યાયિત કરે છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

52/174

ઉપરview

કોષ્ટક - USB ઉપકરણ વિક્રેતા રૂપરેખાંકન વ્યાખ્યાયિત કરે છે

રૂપરેખાંકન નામ

વર્ણન

ડિફૉલ્ટ મૂલ્ય

SL_USBD_VENDOR_CLASS_INSTANCE_QUANTITY 2 ફંક્શન sl_usbd_vendor_create_instance() ને કૉલ કરીને તમે ફાળવશો તે ક્લાસ ઇન્સ્ટન્સની સંખ્યા.

SL_USBD_VENDOR_CONFIGURATION_QUANTITY રૂપરેખાંકનોની સંખ્યા. વેન્ડર ક્લાસ ઇન્સ્ટન્સને sl_usbd_vendor_add_to_configuration() ફંક્શન પર કૉલ દ્વારા એક અથવા વધુ રૂપરેખાંકનોમાં 1 ઉમેરી શકાય છે.

USB ઉપકરણ વેન્ડર ક્લાસ ઇન્સ્ટન્સ રૂપરેખાંકનો

આ વિભાગ વેન્ડર ક્લાસ ઇન્સ્ટન્સથી સંબંધિત રૂપરેખાંકનોને વ્યાખ્યાયિત કરે છે.
ક્લાસ ઇન્સ્ટન્સ બનાવટ intr_en અંતરાલ p_vendor_callbacks
ક્લાસ ઇન્સ્ટન્સ બનાવટ

વેન્ડર ક્લાસ ઇન્સ્ટન્સ બનાવવાનું કાર્ય sl_usbd_vendor_create_instance() ફંક્શનને કૉલ કરીને કરવામાં આવે છે, જે નીચે વર્ણવેલ ત્રણ રૂપરેખાંકન દલીલો લે છે.

ઇન્ટર_એન
બુલિયન જે દર્શાવે છે કે ઇન્ટરપ્ટ એન્ડપોઇન્ટ્સની જોડી ઉમેરવી જોઈએ કે નહીં.

મૂલ્ય
સાચું ખોટું

વર્ણન
એમ્બેડેડ એપ્લિકેશનમાં IN/OUT એન્ડપોઇન્ટની એક જોડી ઉમેરવામાં આવશે અને ઉપલબ્ધ કરાવવામાં આવશે. કોઈ ઇન્ટરપ્ટ એન્ડપોઇન્ટ ઉમેરવામાં આવશે નહીં. ફક્ત બલ્ક IN/OUT એન્ડપોઇન્ટની એક જોડી ઉપલબ્ધ રહેશે.

અંતરાલ
જો તમે intr_en ને true પર સેટ કરો છો, તો તમે ઇન્ટરપ્ટ એન્ડપોઇન્ટ્સ પોલિંગ અંતરાલ (મિલિસેકન્ડમાં) સ્પષ્ટ કરી શકો છો. જો તમે intr_en ને false પર સેટ કરો છો, તો તમે અંતરાલ 0 પર સેટ કરી શકો છો કારણ કે તે વર્ગ દ્વારા અવગણવામાં આવશે.
પી_વેન્ડર_કોલબેક્સ
p_vendor_callbacks એ કોલબેક ફંક્શન્સ સ્ટ્રક્ચર વેરીએબલનો નિર્દેશક છે. જેને તમે ક્લાસ સ્પેસિફિક કંટ્રોલ રિક્વેસ્ટ્સને હેન્ડલ કરવા માટે સ્પષ્ટ કરી શકો છો. જો તમે કોઈપણ ક્લાસ સ્પેસિફિક રિક્વેસ્ટનો ઉપયોગ કરતા નથી અથવા સૂચનાને સક્ષમ/અક્ષમ કરવાની જરૂર હોય, તો તમે તેને NULL પર સેટ કરી શકો છો.
માજીampનીચે આપેલ તમારા વર્ગ વિશિષ્ટ વિનંતીઓ હેન્ડલરની અપેક્ષિત સહી પ્રદાન કરે છે.
Example – વર્ગ-વિશિષ્ટ વિનંતી કાર્યની સહી

રદબાતલ એપ્લિકેશન_યુએસબીડી_વેન્ડર_રેક્યુ_હેન્ડલ(યુઆઇટી8_ટી

વર્ગ_એનબીઆર, (1)

કોન્સ્ટ sl_usbd_setup_req_t *p_setup_req); (2)

sl_usbd_vendor_callbacks_t એપ_usbd_vendor_callback_functions =
{
.enable = NULL, .disable = NULL, .setup_req = app_usbd_vendor_req_handle,
};

(1) વેન્ડર ક્લાસ ઇન્સ્ટન્સ નંબર.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

53/174

ઉપરview

(2) હોસ્ટ તરફથી પ્રાપ્ત સેટઅપ વિનંતીનો નિર્દેશક.
યુએસબી ડિવાઇસ વેન્ડર ક્લાસ પ્રોગ્રામિંગ માર્ગદર્શિકા
આ વિભાગ વેન્ડર ક્લાસનો ઉપયોગ કેવી રીતે કરવો તે સમજાવે છે. USB ડિવાઇસ વેન્ડર ક્લાસ શરૂ કરી રહ્યા છીએ તમારા ડિવાઇસમાં USB ડિવાઇસ વેન્ડર ક્લાસ ઇન્સ્ટન્સ ઉમેરવું USB ડિવાઇસ વેન્ડર ક્લાસનો ઉપયોગ કરીને વાતચીત કરવી
USB ઉપકરણ વિક્રેતા વર્ગ શરૂ કરી રહ્યા છીએ
તમારા ઉપકરણમાં વેન્ડર ક્લાસ કાર્યક્ષમતા ઉમેરવા માટે, પહેલા USBD_Vendor_Init() ફંક્શનને કૉલ કરીને ક્લાસને પ્રારંભ કરો. exampનીચે sl_usbd_vendor_init() ને કેવી રીતે કૉલ કરવું તે બતાવે છે.
Example – sl_usbd_vendor_init() ને કૉલ કરી રહ્યા છીએ

sl_status_t સ્થિતિ;
status = sl_usbd_vendor_init(); જો (status ! SL_STATUS_OK) { /* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */ }
તમારા ઉપકરણમાં USB ઉપકરણ વેન્ડર ક્લાસ ઇન્સ્ટન્સ ઉમેરવું
તમારા ઉપકરણમાં વેન્ડર ક્લાસ કાર્યક્ષમતા ઉમેરવા માટે, તમારે પહેલા એક ઇન્સ્ટન્સ બનાવવું પડશે, અને પછી તેને તમારા ઉપકરણના રૂપરેખાંકન(ઓ)માં ઉમેરવું પડશે.
વેન્ડર ક્લાસ ઇન્સ્ટન્સ બનાવવું તમારા ડિવાઇસના કન્ફિગરેશન(ઓ)માં વેન્ડર ક્લાસ ઇન્સ્ટન્સ ઉમેરવું
વેન્ડર ક્લાસ ઇન્સ્ટન્સ બનાવવું
sl_usbd_vendor_create_instance() ફંક્શનને કૉલ કરીને વેન્ડર ક્લાસ ઇન્સ્ટન્સ બનાવો. exampનીચે આપેલ માહિતી ડિફોલ્ટ દલીલોનો ઉપયોગ કરીને sl_usbd_vendor_create_instance() ને કેવી રીતે કૉલ કરવી તે બતાવે છે. sl_usbd_vendor_create_instance() ને પાસ કરવા માટેની રૂપરેખાંકન દલીલો વિશે વધુ માહિતી માટે, USB ઉપકરણ વેન્ડર ક્લાસ ઇન્સ્ટન્સ રૂપરેખાંકનો જુઓ.
Example – sl_usbd_vendor_create_instance() ને કૉલ કરી રહ્યું છે

uint8_t class_nbr; sl_status_t સ્ટેટસ;

સ્થિતિ = sl_usbd_vendor_create_instance(ખોટા,

(1)

0u,

(2)

app_usbd_vendor_callback_functions, (3)

&ક્લાસ_એનબીઆર);

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

(1) આ ક્લાસ ઇન્સ્ટન્સ સાથે કોઈ ઇન્ટરપ્ટ એન્ડપોઇન્ટ્સ નથી. (2) ઇન્ટરપ્ટ એન્ડપોઇન્ટ્સ અક્ષમ હોવાથી ઇન્ટરવલને અવગણવામાં આવે છે.

કૉપિરાઇટ © 2025 સિલિકોન લેબોરેટરીઝ. બધા હકો અમારી પાસે રાખેલા છે.

54/174

ઉપરview

(૩) કોલબેક ફંક્શન જે તમારી એપ્લિકેશનનો એક ભાગ છે જે વિક્રેતા-વિશિષ્ટ વર્ગ વિનંતીઓને હેન્ડલ કરે છે. વધુ માહિતી માટે 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)

રૂપરેખા_nbr_fs);

(2)

જો (સ્થિતિ ! SL_STATUS_OK) {

/* એક ભૂલ આવી. ભૂલ હેન્ડલિંગ અહીં ઉમેરવી જોઈએ. */

}

(૧) sl_usbd_vendor_create_instance() દ્વારા પરત કરાયેલ રૂપરેખાંકનમાં ઉમેરવા માટેનો વર્ગ નંબર. (૨) રૂપરેખાંકન નંબર (અહીં તેને પૂર્ણ-સ્પીડ રૂપરેખાંકનમાં ઉમેરી રહ્યા છીએ).
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_ re ad _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
()

ઓપરેશન બલ્ક OUT એન્ડપોઇન્ટ દ્વારા હોસ્ટ પાસેથી ડેટા મેળવે છે. આ ફંક્શન બ્લોક કરી રહ્યું છે. બલ્ક IN એન્ડપોઇન્ટ દ્વારા હોસ્ટને ડેટા મોકલે છે. આ ફંક્શન બ્લોક કરી રહ્યું છે. બલ્ક OUT એન્ડપોઇન્ટ દ્વારા હોસ્ટ પાસેથી ડેટા મેળવે છે. આ ફંક્શન નોન-બ્લોકીંગ છે. બલ્ક IN એન્ડપોઇન્ટ દ્વારા હોસ્ટને ડેટા મોકલે છે. આ ફંક્શન નોન-બ્લોકીંગ છે. ઇન્ટરપ્ટ OUT એન્ડપોઇન્ટ દ્વારા હોસ્ટ પાસેથી ડેટા મેળવે છે. આ ફંક્શન બ્લોક કરી રહ્યું છે. ઇન્ટરપ્ટ IN એન્ડપોઇન્ટ દ્વારા હોસ્ટને ડેટા મોકલે છે. આ ફંક્શન બ્લોક કરી રહ્યું છે. ઇન્ટરપ્ટ OUT એન્ડપોઇન્ટ દ્વારા હોસ્ટ પાસેથી ડેટા મેળવે છે. આ ફંક્શન નોન-
અવરોધિત
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 = 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.
(૪) એપ્લિકેશન પ્રારંભિક ટ્રાન્સમિટ બફર પ્રદાન કરે છે.
(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 = 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):

typedef સ્ટ્રક્ચર {

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 stage હાજર.

*/

} 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_સ્ટેટસ_ટી
sl_સ્ટેટસ_ટી
sl_સ્ટેટસ_ટી
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 [પીડીએફ] સૂચના માર્ગદર્શિકા
USB Device Stack, Device Stack, Stack

સંદર્ભો

એક ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. જરૂરી ક્ષેત્રો ચિહ્નિત થયેલ છે *