KolibriOS рдореЗрдВ USB рд╕рдорд░реНрдерди: рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ? рднрд╛рдЧ 5: рддрд╛рд░реНрдХрд┐рдХ рдЙрдкрдХрд░рдг рд╕реНрддрд░

рд╣реЛрд╕реНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕рдкреЛрд░реНрдЯ рд▓реЗрд╡рд▓ рдкрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЬреАрд░реЛ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЪреИрдирд▓реЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕реНрддрд░ рдиреЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдПред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЪрд╛рд▓реВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рдмрд╕ / usb / рдкреНрд░реЛрдЯреЛрдХреЙрд▓ . usb_new_device рд╕реЗ usb_new_device рдлрд╝рдВрдХреНрд╢рди usb_new_device рд╣реИред

рдЕрдм рдбрд┐рд╡рд╛рдЗрд╕ рдереЛрдбрд╝рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ рдЕрднреА рддрдХ рдмрд╕ рдкрд░ рдПрдХ рдкрддрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЕрднреА рддрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд╕ рд╕реЗ рдХреЗрд╡рд▓ 100 рдПрдордП рдмрд┐рдЬрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рднреА рдЙрдкрдХрд░рдг рдЬреЛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХрд╣рд╛рдиреА рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИред рдПрдХ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рд╢реНрди рд╣реИ GET_DESCRIPTOR рдХрдорд╛рдВрдб рдХреЛ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛; рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдЯрд╛рдЗрдк рдХреЛ рдХрдорд╛рдВрдб рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ , рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓рдВрдмрд╛рдИ рдХреЗ рдмреАрдЪ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдВрдЯреНрд░реЛрд▓ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдореЗрдВ 8 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдХреБрдЫ рдХрдорд╛рдВрдбреНрд╕ рдореЗрдВ рдХреБрдЫ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдпреВрдПрд╕рдмреА рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдзреНрдпрд╛рдп 9 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ, рдпрд╣рд╛рдВ рдореИрдВ рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

рддрд╛рд░реНрдХрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрддрд░ рдХреЗ рджреЛ рдХрд╛рд░реНрдп рд╣реИрдВ: рдкрд╣рд▓рд╛, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ; рджреВрд╕рд░реЗ, рдЙрд╕рд╕реЗ рдкреВрдЫреЗрдВ, рдЙрдкрдпреБрдХреНрдд рдбреНрд░рд╛рдЗрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ - рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ - рдФрд░ рдирдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВред


рдкрд╣рд▓рд╛ рдХрджрдо


usb_new_device рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╢реВрдиреНрдп рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдЪреИрдирд▓ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред usb_new_device рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрд╕реНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛрдб рдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рднрд░ рджрд┐рдпрд╛, рдпрд╣ рдХреЗрд╡рд▓ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ: рд╕рдВрдЦреНрдпрд╛ - рд╢реВрдиреНрдп - рдФрд░ рдЕрдзрд┐рдХрддрдо рдкреИрдХреЗрдЯ рдЖрдХрд╛рд░ред рдирд┐рдпрдВрддреНрд░рдг рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдкреИрдХреЗрдЯ рдХрд╛ рдЖрдХрд╛рд░ 8 рд╕реЗ 64 рдмрд╛рдЗрдЯреНрд╕ рддрдХ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ 8 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмреАрдЪ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдУрдкрди рдЪреИрдирд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдк рдирд┐рд░реНрднрд░рддрд╛ рдЪрдХреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдкреИрдХреЗрдЯ рдХреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдкреИрдХреЗрдЯ рдЖрдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ; рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдкреИрдХреЗрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рд╕реЗ рдХрдо 8 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ; рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ 8 рдмрд╛рдЗрдЯреНрд╕ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХрддрдо рдкреИрдХреЗрдЯ рдЖрдХрд╛рд░ рдХрд╛ рд╕рд╣реА рдореВрд▓реНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреИрдХреЗрдЯ рдХреЗ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, 8 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдХрдо рдирд╣реАрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рдИрдПрдЪрд╕реАрдЖрдИ рдЕрдиреБрдХрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рд╛рдИрд╕реНрдкреАрдб рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 64 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЪреВрдВрдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╢реВрдиреНрдп рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓ 64 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрдзрд┐рдХрддрдо рдкреИрдХреЗрдЯ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИред

рдЬрдм рддрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмрд╕ рдкрд░ рдПрдХ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рддрдХ рдпрд╣ рд╢реВрдиреНрдп рдкрддреЗ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд░реАрд╕реЗрдЯ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ - рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдЕрднреА рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджреЛрдиреЛрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдПрдХ рд╢реВрдиреНрдп рдкрддреЗ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЯ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рдмрд╕ рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЬрд╛рдПрдЧреАред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдЪреИрдирд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж usb_new_device рдХрд░рддреА рд╣реИ, рд╡рд╣ рдкрд╣рд▓реЗ usb_new_device рдкрддреЗ рдХреЗ рдкрддреЗ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдФрд░ SET_ADDRESS рдХрдорд╛рдВрдб рднреЗрдЬрдирд╛ рд╣реИред рдЗрдирдкреБрдЯ рдкрд░, SET_ADDRESS рдХрдорд╛рдВрдб SET_ADDRESS рдПрдХ рдкрддрд╛ рд╣реИ; рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИред

SET_ADDRESS рдХрдорд╛рдВрдб рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, SET_ADDRESS рдкреНрд░рдХреНрд░рд┐рдпрд╛ usb_set_address_callback ред рдпрджрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдиреЗ рдХрдорд╛рдВрдб рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛ рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджрд┐рдпрд╛, рддреЛ рд╣рдм рд╕реНрддрд░ рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмрд╕ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрджрд┐ рдХрдорд╛рдВрдб рд╕рдлрд▓ рд╣реИ, рддреЛ usb_set_address_callback рд╣реЛрд╕реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рд╕рдорд░реНрдерди рд╕реНрддрд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрддрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ; рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЬрд┐рди рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЙрдирдореЗрдВ рдмрджрд▓рд╛рд╡ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдмрд╕ рдкрд░ рд╢реВрдиреНрдп рдкрддрд╛ рд╡реНрдпрд╕реНрдд рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдмрд╛рдж рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ; рдЗрд╕рдХреЗ рд▓рд┐рдП usb_test_pending_port рдХреЙрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

рдЬрдм рд╣реЛрд╕реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрддреЗ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдорд░реНрдерди рдХреЛрдб usb_after_set_address рдХреЙрд▓ usb_after_set_address ред рдЕрдм рдмрд╕ рдкрд░ рдкрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕рд╛рдордВрдЬрд╕реНрдп рд╣реИ, рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде, usb_after_set_address рдХреЛ рдкреНрд░рд╢реНрди рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рдкрд╣рд▓реЗ 8 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкреВрдЫ рд░рд╣рд╛ рд╣реИ - рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдЯрд╛рдЗрдк 1, рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдирдВрдмрд░ 0. рдЗрди 8 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рдкреИрдХреЗрдЯ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рд╢реВрдиреНрдп рд╕реЗрдЯрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ - рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рдкреВрд░реНрдг рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИрдВрдбрд▓рд░ usb_get_descr8_callback рдЕрдзрд┐рдХрддрдо рдкреИрдХреЗрдЯ рдЖрдХрд╛рд░ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╣реЛрд╕реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдкреБрд╖реНрдЯрд┐ рдХреЗ рдмрд╛рдж, usb_after_set_endpoint_size рд▓рд┐рдП рдПрдХ рдХреЙрд▓ usb_after_set_endpoint_size , рдЬрд╣рд╛рдВ рдбрд┐рд╡рд╛рдЗрд╕ рд╡рд┐рд╡рд░рдгрдХ рдХреЗ рд▓рд┐рдП GET_DESCRIPTOR рдкреНрд░рд╢реНрди рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдм рдбреЗрдЯрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред

рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░



рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдбрдВрдк рджрд┐рдЦрд╛рддрд╛ рд╣реИ: рд╢реАрд░реНрд╖ рдкрд░ - рдЖрднрд╛рд╕реА рд╣рдм рдЖрд░рдПрдордПрдЪ, рдиреАрдЪреЗ - рдХреБрдЫ рдорд╛рдЙрд╕ред рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рдЫреЛрдЯреЗ-рдПрдВрдбрд┐рдпрди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВ:рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдирдиреНрдп рдореЛрдб рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмреАрдЪ рдХреБрдЫ рднреА рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рдпреВрдПрд╕рдмреА рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмреАрдЪ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдПред USB рд╡рд┐рдирд┐рд░реНрджреЗрд╢, рдХреБрдЫ рд╣рдж рддрдХ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдореЙрдбреЗрдо рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ 128 рдХреЗрдмреАрдкреАрдПрд╕ рдореЗрдВ рдПрдХ рдЪреИрдирд▓ рдпрд╛ 64 рдХреЗрдмреАрдкреАрдПрд╕ рдкрд░ рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рдЪреИрдирд▓ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрднреА рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдЧреИрд░-рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░рд╣реЗрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ рд╡рд┐рд╡рд░рдг рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

KolibriOS рд╣рдореЗрд╢рд╛ рдкрд╣рд▓рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪреБрдирддрд╛ рд╣реИред usb_get_descr_callback рдлрд╝рдВрдХреНрд╢рди, рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, GET_DESCRIPTOR рдХрдорд╛рдВрдб рдХреЛ рдкрд╣рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ - рдЯрд╛рдЗрдк 2, рдирдВрдмрд░ 0ред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░, рдбрд┐рд╡рд╛рдЗрд╕ рдХрдИ рдЕрдиреНрдп рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рд╡рд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреА рдХреБрд▓ рд░рд╛рд╢рд┐ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рд╣реА рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ: рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, usb_get_descr_callback рдлрд╝рдВрдХреНрд╢рди 8 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, usb_know_length_callback рдлрд╝рдВрдХреНрд╢рди рд░реАрдб рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдХреБрд▓ рдЖрдХрд╛рд░ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рд╡рд░рдгрдХ



рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рд╣рдм рдЖрд░рдПрдордПрдЪ рд╣реИ, рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рд╕рд╛рде, рдбрд┐рд╡рд╛рдЗрд╕ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ; рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╕рднреА рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ред рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдмрджреНрдз рдбреЗрдЯрд╛ рдореЗрдВ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд┐рдб рдбрд┐рд╡рд╛рдЗрд╕ рдЬреИрд╕реЗ рдЪреВрд╣реЛрдВ рдФрд░ рдХреАрдмреЛрд░реНрдб рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдФрд░ рдПрдХ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рдмреАрдЪ рдПрдХ рдПрдЪрдЖрдИрдбреА рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ; рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рдирд┐рдореНрди рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВ:
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд╡рд░рдгрдХ:
рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдЪреИрдирд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ:

usb_set_config_callback рдлрд╝рдВрдХреНрд╢рди, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рдкреВрд░рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реЗ рд▓рд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде SET_CONFIGURATION рдХрдорд╛рдВрдб SET_CONFIGURATION ; рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИред рдХрдорд╛рдВрдб рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреЗ рдмрд╛рдж, рдбрд┐рд╡рд╛рдЗрд╕ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрддрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдВрддрд┐рдо, usb_got_config_callback , рдкреНрд░рд╛рдкреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ GET_DESCRIPTOR рдХрдорд╛рдВрдб рдХреЗ рдмреАрдЪ рдХреБрд▓ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓рдХрд░ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рд╡рд┐рд╡рд░рдгрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ; рд╢реВрдиреНрдп рдореЛрдб рд╡рд╛рд▓реЗ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП, рдбрд┐рд╡рд╛рдЗрд╕ рдХреНрд▓рд╛рд╕ рджреНрд╡рд╛рд░рд╛ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ AddDevice рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдФрд░ рдЙрдирдХреЗ рдЕрдВрджрд░ рд╡рд╛рдВрдЫрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреНрд░рд╛рдЗрд╡рд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдореИрдВ рдмрд╛рдж рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдореМрдЬреВрджрд╛ KolibriOS рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рд▓реЗрдЦ


рднрд╛рдЧ 1: рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрд░реЗрдЦрд╛
рднрд╛рдЧ 2: рдореЗрдЬрдмрд╛рди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ
рднрд╛рдЧ 3: рд╣реЛрд╕реНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕рдкреЛрд░реНрдЯ рдХреЛрдб
рднрд╛рдЧ 4: рдЪреИрдирд▓ рд╕рдорд░реНрдерди рд╕реНрддрд░
рднрд╛рдЧ 5: рддрд╛рд░реНрдХрд┐рдХ рдЙрдкрдХрд░рдг рд╕реНрддрд░
рднрд╛рдЧ 6: рд╣рдм рдбреНрд░рд╛рдЗрд╡рд░

Source: https://habr.com/ru/post/In200172/


All Articles