KolibriOS рдореЗрдВ USB рд╕рдорд░реНрдерди: рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ? рднрд╛рдЧ 6: рд╣рдм рдбреНрд░рд╛рдЗрд╡рд░

USB рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╣рдм рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдм рдЕрд▓рдЧ-рдЕрд▓рдЧ USB рдбрд┐рд╡рд╛рдЗрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдм рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореБрдЦреНрдп USB рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рдФрд░ рд╕рдорд░реНрдерди рдХреЛрдб рдмрд╕ / usb / hub.inc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдХрд░реНрдиреЗрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛред

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


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

рдХрдХреНрд╖рд╛ 9 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рддрд╛рд░реНрдХрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░рдд usb_hub_callbacks рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ usb_hub_init рдФрд░ usb_hub_disconnect рдбреНрд░рд╛рдЗрд╡рд░ рдлрд╝рдВрдХреНрд╢рди usb_hub_disconnect рд╣реИрдВред рдбреНрд░рд╛рдЗрд╡рд░ рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрд╛рд░реНрдХрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрддрд░ usb_hub_init рдХреЙрд▓ usb_hub_init , рдФрд░ рддрдм рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЪреИрдирд▓ рд╕рдорд░реНрдерди рд╕реНрддрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ usb_hub_disconnect рдХреЛ рдХреЙрд▓ usb_hub_disconnect рд╣реИред

рдкреНрд░рд╛рд░рдВрдн


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

рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рдм рдХреЗ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдбрдВрдк рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ: рджреЛ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рд╣рдм, 6 рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдФрд░ 8 рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдЖрд░рдПрдордПрдЪред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣рдм рд╡рд╛рд▓рд╛ рдХреАрдмреЛрд░реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рдм рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рдкреЛрд░реНрдЯ рдЧреИрд░-рд╣рдЯрд╛рдиреЗ рдпреЛрдЧреНрдп рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ - рдХреАрдмреЛрд░реНрдб рд╣реАред
рд╣рдм рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:рд╣реИрдВрдбрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИред рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ 255 рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ 40 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред usb_hub_init рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкреИрдХреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ - рдЗрд╕реЗ рдЖрдЧреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдФрд░ рд╣рдм рд╡рд┐рд╡рд░рдгрдХ рдХреЗ 40 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рдЫреЛрдЯреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдм рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, usb_hub_got_config рд░реЛрдЪрдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рджреЛ рдЪрд░: рдХрдиреЗрдХреНрдЯреЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╕рдордпред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рд╣рдм рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ, рдЖрдкрдХреЛ SET_FEATURE(PORT_POWER) рд╕рд╛рде рдЙрдирдХреА рд╢рдХреНрддрд┐ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрдорд╛рдВрдб рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рдкреЛрд░реНрдЯ рдирдВрдмрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред 1. рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдм рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдкрд╛рд╡рд░ рдСрди рдФрд░ рдСрдл рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: "рд╕рднреА рдкреЛрд░реНрдЯ рдкрд░ рдХреЛрдИ рдкрд╛рд╡рд░ рдирд╣реАрдВ рд╣реИ" рдФрд░ "рдкрд╛рд╡рд░ рд╕рднреА рдкреЛрд░реНрдЯ рдкрд░ рд╣реИ" - рд╕рдВрдЧрдарди рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рд╕реЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рд╣рдм, 00 рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, 01 рд╕реЗ рдЕрд▓рдЧ рдПрдХ, 10 рдФрд░ 11 рдЖрд░рдХреНрд╖рд┐рдд рд╣реИрдВред рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдм рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рддрд╛рд░реНрдХрд┐рдХ рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреА рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдмрд┐рдЬрд▓реА рдмрдВрдж рдХрд░рдиреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рднреМрддрд┐рдХ рд╕рдВрдЧрдарди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд░реНрдЯ рдкрд░ рдкрд╛рд╡рд░ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред usb_hub_got_config рдФрд░ usb_hub_port_powered рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрд╡рд░-рдСрди рдХрдорд╛рдВрдб usb_hub_port_powered рдХрд░рддрд╛ рд╣реИред

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

рдХрд╛рдо


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдм рдкреЛрд▓рд┐рдВрдЧ рд╕реНрдХреАрдо рдХреЛ рдирд┐рдореНрди рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, USB рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

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

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

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

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

рдЬрдм рдХреЛрдИ рдЙрдкрдХрд░рдг рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ usb_hub_changed рдХрдиреЗрдХреНрд╢рди рд╕рдордп рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж usb_hub_process_deferred 100 рдорд┐рд▓реАрд╕реЗрдХреЗрдВрдб рдХреЗ рдмрд╛рдж рдЬрд╛рдЧрдиреЗ рдХреА рдпреЛрдЬрдирд╛ usb_hub_process_deferred ред рдпрджрд┐ 100 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдЙрд╕реА рдкреЛрд░реНрдЯ рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рддреЛ рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд░рджреНрдж рдХрд░ рджреА рдЬрд╛рддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд┐рдЧреНрдирд▓ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдЗрди рд╕рднреА 100 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ - рд╢рд╛рдпрдж рдорддрджрд╛рди рдЕрдВрддрд░рд╛рд▓ рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реИ, рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдЕрднреА рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛ рд╣реИред рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, 100-рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд╛рдж, usb_hub_process_deferred рдПрдХ рд╕реНрдкрд╖реНрдЯ GET_STATUS рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛, рддреЛ рдЖрдЧреЗ рдХреА рдЖрд░рдВрднреАрдХрд░рдг рд╕рдХреНрд╖рдо рд╣реИред рдЖрдк рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдПрдХ рд╣реА рдмрд╕ рдореЗрдВ рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдЕрдЧрд░ рдПрдХ рд╣реА рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдЬреБрдбрд╝реЗ рдХреБрдЫ рдЕрдиреНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдПрдХ рд░реАрд╕реЗрдЯ рд╣реИ - рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рд╣реА рд╣рдм рдХреЗ рд▓рд┐рдП - рддреЛ рдкрд╣рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдмрд╛рд░реА рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд░реАрд╕реЗрдЯ рдХреЛ SET_FEATURE(PORT_RESET) рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдм рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ 10 рдПрдордПрд╕ рдХреЗ рдЧреБрдЬрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд░реАрд╕реЗрдЯ рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдПрдХ рдмрд┐рдЯ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп рдпрд╛ рд╕рдордп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдорддрджрд╛рди рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рдХрд╛рд░рдг, usb_hub_process_deferred рд╕реЗрдЯ рд╕рдордп рдФрд░ CLEAR_FEATURE рдмрд╛рдж рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ usb_hub_process_deferred рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдб, рдпрджрд┐ рдпрд╣ рд░реАрд╕реЗрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рд╛рде рд╣рдм рдореЗрдВ рд░реАрд╕реЗрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдпрд╛рддрд╛рдпрд╛рдд рдХрд╛ рд╕рдВрдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рдПрдХ рд░реАрд╕реЗрдЯ рдХреЗ рдмрд╛рдж, usb_hub_process_deferred рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, usb_hub_process_deferred рдПрдХ рдФрд░ 10 рдорд┐рд▓реА рд╕реЗрдХреЗрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдбрд┐рд╡рд╛рдЗрд╕ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ usb_hardware_func.NewDevice рдХреЙрд▓ рдХрд░рдХреЗ рд╣реЛрд╕реНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕рдкреЛрд░реНрдЯ рдХреЛрдб рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ ред рд╣рдм рдиреЗ рд░реАрд╕реЗрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди usb_hardware_func.NewDevice рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЧрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдФрд░ GET_STATUS рдЬрд╡рд╛рдм рдореЗрдВ рдЕрдиреНрдп рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ред usb_hardware_func.NewDevice рд╕реЗ рд▓реМрдЯреЗ рдХрдиреЗрдХреНрдЯреЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣рдм рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

рдЬрдм рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ usb_hub_changed usb_device_disconnected рд╕рдорд░реНрдерди рд╕реНрддрд░ рдХреЗ usb_device_disconnected рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ , рдЗрд╕реЗ NewDevice рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╕реВрдЪрдХ рдХреЛ NewDevice ред рдпрджрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд░рдВрднреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдерд╛, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╡рд┐рдпреЛрдЧ


usb_hub_disconnected рд╣реИрдВрдбрд▓рд░, рдЬрд┐рд╕реЗ рд╣рдм рдХреЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ usb_device_disconnected , рд╕рднреА рдЬреБрдбрд╝реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП usb_device_disconnected рдХреЛ рдХреЙрд▓ usb_device_disconnected рд╣реИ, рд░реАрд╕реЗрдЯ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдХрддрд╛рд░ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ - рдпрджрд┐ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд░реАрд╕реЗрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдм рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рд╣рдм рдбреНрд░рд╛рдЗрд╡рд░ USB рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЕрдВрддрд┐рдо рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд╣рд▓реЗ 6 рднрд╛рдЧреЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рд▓рд┐рдЦрд╛ рдерд╛ рдЙрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж - рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд - рд╣рдо USB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдЕрдм рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред


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

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


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

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


All Articles