RTOS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рд╕рдЪреНрдЪрд╛рдИред рдЕрдиреБрдЪреНрдЫреЗрдж # 23ред рдХрддрд╛рд░: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ



рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ (# 5) рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡реЗ рдореЗрд▓рдмреЙрдХреНрд╕ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд░рд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ:
рдЕрдиреБрдЪреНрдЫреЗрдж # 22 рдореЗрд▓рдмреЙрдХреНрд╕: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 21 рдореЗрд▓рдмреЙрдХреНрд╕: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 20 рд╕реЗрдорд╛рдлреЛрд░реЗрд╕: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 19ред рд╕реЗрдорд╛рдлреЛрд░реЗрд╕: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 18ред рдЗрд╡реЗрдВрдЯ рдлрд╝реНрд▓реИрдЧ рд╕рдореВрд╣: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 17 рдЗрд╡реЗрдВрдЯ рдлрд╝реНрд▓реИрдЧ рд╕рдореВрд╣: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 16ред рд╕рдВрдХреЗрдд
рдЕрдиреБрдЪреНрдЫреЗрдж # 15 рдореЗрдореЛрд░реА рд╡рд┐рднрд╛рдЬрди: рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 14ред рд╕реНрдореГрддрд┐ рдХреА рдзрд╛рд░рд╛рдПрдВ: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 13ред рдЯрд╛рд╕реНрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЕрд╕рдорд░реНрдерд┐рдд рдПрдкреАрдЖрдИ рдХреЙрд▓
рдЕрдиреБрдЪреНрдЫреЗрдж # 12 рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 11ред рдХрд╛рд░реНрдп: рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрдп
рдЕрдиреБрдЪреНрдЫреЗрдж # 10 рд╕рдордпрдмрджреНрдзрдХ: рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рд╕рдВрджрд░реНрдн рд╕рдВрд░рдХреНрд╖рдг
рдЕрдиреБрдЪреНрдЫреЗрдж # 9 рд╕рдордпрдмрджреНрдзрдХ: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЕрдиреБрдЪреНрдЫреЗрдж # 8 рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ: рдЖрдВрддрд░рд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди
рдЕрдиреБрдЪреНрдЫреЗрдж # 7 рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ: рдкрд░рд┐рдЪрдп
рдЕрдиреБрдЪреНрдЫреЗрдж # 6 рдЕрдиреНрдп RTOS рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # рел рдХрд╛рд░реНрдп рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди
рдЕрдиреБрдЪреНрдЫреЗрдж # 4 рдХрд╛рд░реНрдп, рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ, рдФрд░ рд╡реНрдпрд╡рдзрд╛рди
рдЕрдиреБрдЪреНрдЫреЗрдж # рей рдХрд╛рд░реНрдп рдФрд░ рдпреЛрдЬрдирд╛
рдЕрдиреБрдЪреНрдЫреЗрдж # 2 рдЖрд░рдЯреАрдУрдПрд╕: рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЛрдб
рдЕрдиреБрдЪреНрдЫреЗрдж # 1ред рдЖрд░рдЯреАрдУрдПрд╕: рдкрд░рд┐рдЪрдпред

рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


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

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

рдХрддрд╛рд░реЛрдВ рдФрд░ рдбреЗрдЯрд╛ рд▓рд┐рдВрдХ


рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдбреЗрдЯрд╛ рдЪреИрдирд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ (# 5) рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред рдХрддрд╛рд░реЛрдВ рдФрд░ рдЪреИрдирд▓реЛрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╕рдВрджреЗрд╢ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред рдХрддрд╛рд░ рдореЗрдВ ADDR рдкреНрд░рдХрд╛рд░ (рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдХреЗрдд) рдХреЗ рдПрдХ рдПрдХрд▓ рдЪрд░ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рд╣реЛрддреЗ рд╣реИрдВред рдЪреИрдирд▓ рдореЗрдВ рдордирдорд╛рдиреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рджреМрд░рд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдХрддрд╛рд░ рдХреА рд╕реНрдерд╛рдкрдирд╛


рдХрддрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛


рдЕрдзрд┐рдХрд╛рдВрд╢ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде, рдХрддрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореБрдЦреНрдп рд░реВрдк рд╕реЗ #define рдирд┐рд░реНрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ nuse_config.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ NUSE_QUEUE_NUMBER рд╣реИ , рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рдХрддрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╢реВрдиреНрдп рд╣реИ (рдЕрд░реНрдерд╛рдд, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЛрдИ рдХрддрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ) рдФрд░ 16 рддрдХ рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЧрд▓рдд рдорд╛рди рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛, рдЬреЛ nuse_config_check.n рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ (рдпрд╣ nuse_config.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рд╣реИ рдЗрд╕рдХреЗ рд╕рд╛рде), рдЬреЛ # рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред

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

рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ


рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди (рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЙрд▓) рдореЗрдВ nuse_config.h рдореЗрдВ рдПрдХ рд╕рдХреНрд░рд┐рдп #define рдирд┐рд░реНрджреЗрд╢ рд╣реИред рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ:

NUSE_QUEUE_SEND NUSE_QUEUE_RECEIVE NUSE_QUEUE_JAM NUSE_QUEUE_RESET NUSE_QUEUE_INFORMATION NUSE_QUEUE_COUNT 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗ FALSE рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рднреА рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрддрд╛рд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ TRUE рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд nuse_config.h рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:

 #define NUSE_QUEUE_NUMBER 0 /* Number of queues in the system - 0-16 */ /* Service call enablers */ #define NUSE_QUEUE_SEND FALSE #define NUSE_QUEUE_RECEIVE FALSE #define NUSE_QUEUE_JAM FALSE #define NUSE_QUEUE_RESET FALSE #define NUSE_QUEUE_INFORMATION FALSE #define NUSE_QUEUE_COUNT FALSE 

рдпрджрд┐ рдХрддрд╛рд░ рдПрдкреАрдЖрдИ рдХреЗ рдХрд╛рд░реНрдп рд╕рдХреНрд░рд┐рдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЛрдИ рдХрддрд╛рд░ рдирд╣реАрдВ рд╣реИ (рдХреЗрд╡рд▓ NUSE_Queue_Count () , рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд╖рдо рд╣реИ) рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб API рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд▓реЗрдЖрдЙрдЯ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХреЙрд▓рд┐рдВрдЧ


рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рджрд╕ рдХрддрд╛рд░ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

  • рдПрдХ рд╕рдВрджреЗрд╢ рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд░рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ NUSE_Queue_Send () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдХрддрд╛рд░ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ NUSE_Queue_Receive () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
  • рдХрддрд╛рд░ рдХреЗ рдкреНрд░рдореБрдЦ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрд┐рдВрдЧред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ, NUSE_Queue_Jam () рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рд╕рднреА рдирд┐рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдпреЛрдВ (рд░реАрд╕реЗрдЯ) рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдореЗрдВ рдХрддрд╛рд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ NUSE_Queue_Reset () рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред NUSE_Queue_Information () рдореЗрдВ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ, NUSE_Queue_Count () рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдПрдХ рдирдИ рдХрддрд╛рд░ рдЬреЛрдбрд╝рдирд╛ (рдПрдХ рдХрддрд╛рд░ рдмрдирд╛рдирд╛)ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдПрдХ рдЖрд╡реЗрджрди рд╕реЗ рдПрдХ рдХрддрд╛рд░ рдХреЛ рд╣рдЯрд╛рдиреЗред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИред
  • рдЖрд╡реЗрджрди рдореЗрдВ рд╕рднреА рдХрддрд╛рд░реЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ (рдкреНрд░рд╕рд╛рд░рдг)ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрди рдУрд╡рд░рд╣реЗрдб рдХреЙрд▓ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдХрддрд╛рд░реЛрдВ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рддреА рд╣реИ


рдХрддрд╛рд░реЛрдВ рдкрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ (рдЬрд┐рд╕реЗ рдХрднреА-рдХрднреА рдкрдВрдХреНрддрд┐рдмрджреНрдз рд╕рдВрджреЗрд╢ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдкрдврд╝рдирд╛ (рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдХрддрд╛рд░ рдХреА рд╢реБрд░реБрдЖрдд (рдареЗрд▓рд╛) рд▓рд┐рдЦрдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдФрд░ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП рддреАрди рдмреБрдирд┐рдпрд╛рджреА рдПрдкреАрдЖрдИ рдХреЙрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╕реНрдкреВрд▓рди


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

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рдХреЙрд▓рд┐рдВрдЧ рдХрддрд╛рд░

рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

STATUS NU_Send_To_Queue (NU_QUEUE * рдХрддрд╛рд░, VOID * рд╕рдВрджреЗрд╢, UNSIGNED рдЖрдХрд╛рд░, UNSIGNED рд╕рд╕реНрдкреЗрдВрдб);

рд╡рд┐рдХрд▓реНрдк:

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

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NU_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NU_INVALID_QUEUE - рдЕрдорд╛рдиреНрдп рдХрддрд╛рд░ рд╕реВрдЪрдХ;
NU_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NU_INVALID_SIZE - рд╕рдВрджреЗрд╢ рдЖрдХрд╛рд░ рдХрддрд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕рдВрджреЗрд╢ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИ;
NU_INVALID_SUSPEND - рдирд┐рд▓рдВрдмрди рдПрдХ рдЧреИрд░-рдХрд╛рд░реНрдп-рд╕рдВрдмрдВрдзрд┐рдд рдереНрд░реЗрдб рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_QUEUE_FULL - рдХрддрд╛рд░ рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдирд┐рд▓рдВрдмрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_TIMEOUT - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдХрддрд╛рд░ рднрд░реА рд╣реБрдИ рд╣реИ;
NU_QUEUE_DELETED - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд╣рдЯрд╛ рджреА рдЧрдИ рдереА;
NU_QUEUE_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд░реАрд╕реЗрдЯ рдХрд░ рджреА рдЧрдИ рдереАред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд░рдирд╛
рдпрд╣ рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдПрдкреАрдЖрдИ рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

рд╕реНрдерд┐рддрд┐ NUSE_Queue_Send (NUSE_QUEUE рдХрддрд╛рд░, ADDR * рд╕рдВрджреЗрд╢, U8 рдирд┐рд▓рдВрдмрд┐рдд);

рд╡рд┐рдХрд▓реНрдк:

рдХрддрд╛рд░ - рдХрддрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ (рдЖрдИрдбреА);
рд╕рдВрджреЗрд╢ - рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ; рдпрд╣ ADDR рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рд╣реИ;
рдирд┐рд▓рдВрдмрди - рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢; рдпрд╣ NUSE_NO_SUSPEND рдпрд╛ NUSE_SUSPEND рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NUSE_INVALID_QUEUE - рдЕрдорд╛рдиреНрдп рдХрддрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ;
NUSE_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NUSE_INVALID_SUSPEND - рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрджреНрдз рдереНрд░реЗрдб рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╛ рдЬрдм рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдмреНрд▓реЙрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рд╣реЛ;
NUSE_QUEUE_FULL - рдХрддрд╛рд░ рдкреВрд░реНрдг рд╣реИ рдФрд░ рдирд┐рд▓рдВрдмрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NUSE_QUEUE_WAS_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд░реАрд╕реЗрдЯ рдХрд░ рджреА рдЧрдИ рдереАред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдХрддрд╛рд░ рд▓рдЧрд╛рдирд╛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
API рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб NUSE_Queue_Send () (рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж ) рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╣рдо рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

 if (NUSE_Queue_Items[queue] == NUSE_Queue_Size[queue]) /* queue full */ { return_value = NUSE_QUEUE_FULL; } else /* queue element available */ { NUSE_Queue_Data[queue][NUSE_Queue_Head[queue]++] = *message; if (NUSE_Queue_Head[queue] == NUSE_Queue_Size[queue]) { NUSE_Queue_Head[queue] = 0; } NUSE_Queue_Items[queue]++; return_value = NUSE_SUCCESS; } 

рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрддрд╛рд░ рдореЗрдВ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рд╣реИ, рдФрд░ рдХрддрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NUSE_Queue_Head [] рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдХреЛрдб рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

 do { if (NUSE_Queue_Items[queue] == NUSE_Queue_Size[queue]) /* queue full */ { if (suspend == NUSE_NO_SUSPEND) { return_value = NUSE_QUEUE_FULL; } else { /* block task */ NUSE_Queue_Blocking_Count[queue]++; NUSE_Suspend_Task(NUSE_Task_Active, (queue << 4) | NUSE_QUEUE_SUSPEND); return_value = NUSE_Task_Blocking_Return[NUSE_Task_Active]; if (return_value != NUSE_SUCCESS) { suspend = NUSE_NO_SUSPEND; } } } else { /* queue element available */ NUSE_Queue_Data[queue][NUSE_Queue_Head[queue]++] = *message; if (NUSE_Queue_Head[queue] == NUSE_Queue_Size[queue]) { NUSE_Queue_Head[queue] = 0; } NUSE_Queue_Items[queue]++; if (NUSE_Queue_Blocking_Count[queue] != 0) { U8 index; /* check whether a task is blocked on this queue */ NUSE_Queue_Blocking_Count[queue]--; for (index=0; index<NUSE_TASK_NUMBER; index++) { if ((LONIB(NUSE_Task_Status[index]) == NUSE_QUEUE_SUSPEND) && (HINIB(NUSE_Task_Status[index]) == queue)) { NUSE_Task_Blocking_Return[index] = NUSE_SUCCESS; NUSE_Wake_Task(index); break; } } } return_value = NUSE_SUCCESS; suspend = NUSE_NO_SUSPEND; } } while (suspend == NUSE_SUSPEND); 

рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╕рд╣рд╛рдпрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЛрдб рдПрдХ рд▓реВрдк рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИ ... рдЬрдмрдХрд┐ рд▓реВрдк рд╣реИ , рдЬреЛ рдХрд╛рд░реНрдп рдкреЙрдЬ рдкреИрд░рд╛рдореАрдЯрд░ NUSE_SUSPEND рд╣реИ, рдЬрдмрдХрд┐ рдЪрд▓рддрд╛ рд╣реИред

рдпрджрд┐ рдХрддрд╛рд░ рдкреВрд░реА рднрд░реА рд╣реБрдИ рд╣реИ рдФрд░ NUSE_NO_SUSPEND рд╣реИ , рддреЛ API рдХреЙрд▓ NUSE_QUEUE_FULL рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ ред рдпрджрд┐ рдирд┐рд▓рдВрдмрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ NUSE_SUSPEND рд╣реИ , рддреЛ рдХрд╛рд░реНрдп рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ (рдЕрд░реНрдерд╛рдд, рдЬрдм рдХрд╛рд░реНрдп рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ), рдпрджрд┐ рд░рд┐рдЯрд░реНрди рдорд╛рди NUSE_SUCCESS рд╣реИ , рдЕрд░реНрдерд╛рдд , рдХрд╛рд░реНрдп рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрджреЗрд╢ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ (рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдХрддрд╛рд░ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рдХреЛрдб рд▓реВрдк рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реМрдЯрддрд╛ рд╣реИред
рдпрджрд┐ рдХрддрд╛рд░ рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрддрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ NUSE_Queue_Head [] рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрджреЗрд╢ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрддрд╛рд░ рдореЗрдВ рдирд┐рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдп (рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдВрджреЗрд╢) рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдирд┐рд▓рдВрдмрд┐рдд рдЪрд░ NUSE_NO_SUSPEND рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдФрд░ API рдХреЙрд▓ NUSE_SUSCCESS рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ ред

рдХрддрд╛рд░ рд╕реЗ рдкрдврд╝рдирд╛


рдХрддрд╛рд░ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдПрдкреАрдЖрдИ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХреЙрд▓ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓реА рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЖрдк рдХрд╛рд░реНрдп рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдпрджрд┐ рдСрдкрд░реЗрд╢рди рддреБрд░рдВрдд рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦрд╛рд▓реА рдХрддрд╛рд░ рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп)ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯрд╛рд╕реНрдХ рдкреЙрдЬ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ рдФрд░ рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ
рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

рд╕реНрдерд┐рддрд┐ NU_Receive_From_Queue (NU_QUEUE * рдХрддрд╛рд░, VOID * рд╕рдВрджреЗрд╢, UNSIGNED рдЖрдХрд╛рд░, UNSIGNED * рд╡рд╛рд╕реНрддрд╡рд┐рдХ_ рдЖрдХрд╛рд░, UNSIGNED рдирд┐рд▓рдВрдмрд┐рдд);

рд╡рд┐рдХрд▓реНрдк:

рдХрддрд╛рд░ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрддрд╛рд░ рдирд┐рдпрдВрддреНрд░рдг рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ;
рд╕рдВрджреЗрд╢ - рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ;
рдЖрдХрд╛рд░ - рд╕рдВрджреЗрд╢ рдореЗрдВ UNSIGNED рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдХрддрд╛рд░ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реЛрдиреЗ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрджреЗрд╢ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;
рд╕рд╕реНрдкреЗрдВрдб - рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд▓рдВрдмрди рдХрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢, рдорд╛рди NU_NO_SUSPEND рдпрд╛ NU_SUSPEND рдпрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NU_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NU_INVALID_QUEUE - рдЕрдорд╛рдиреНрдп рдХрддрд╛рд░ рд╕реВрдЪрдХ;
NU_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NU_INVALID_SUSPEND - рдХрд╛рд░реНрдп рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╕реВрддреНрд░ рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕;
NU_QUEUE_EMPTY - рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реИ, рдФрд░ рдирд┐рд▓рдВрдмрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_TIMEOUT - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрддрд╛рд░ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИ, рднрд▓реЗ рд╣реА рдХрд╛рд░реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рд▓рдВрдмрд┐рдд рд╣реЛ;
NU_QUEUE_DELETED - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд╣рдЯрд╛ рджреА рдЧрдИ рдереА;
NU_QUEUE_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд░реАрд╕реЗрдЯ рдХрд░ рджреА рдЧрдИ рдереАред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ
рдпрд╣ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдПрдкреАрдЖрдИ рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

рд╕реНрдЯреЗрдЯрд╕ NUSE_Queue_Receive (NUSE_QUEUE рдХрддрд╛рд░, ADDR * рд╕рдВрджреЗрд╢, U8 рд╕рд╕реНрдкреЗрдВрдб);

рд╡рд┐рдХрд▓реНрдк:

рдХрддрд╛рд░ - рдХрддрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ (рдЖрдИрдбреА);
рд╕рдВрджреЗрд╢ - рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░ рдХрд╛ рдПрдХ рд╕реВрдЪрдХ; рдпрд╣ ADDR рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рд╣реИ;
рдирд┐рд▓рдВрдмрди - рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд▓рдВрдмрди рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛, NUSE_NO_SUSPEND рдпрд╛ NUSE_SUSPEND рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NUSE_INVALID_QUEUE - рдЕрдорд╛рдиреНрдп рдХрддрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ;
NUSE_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NUSE_INVALID_SUSPEND - рдХрд╛рд░реНрдп рд╕реЗ рдЬреБрдбрд╝реЗ рдереНрд░реЗрдб рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╛ рдХрд╛рд░реНрдп рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде;
NUSE_QUEUE_EMPTY - рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реИ, рдФрд░ рдирд┐рд▓рдВрдмрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NUSE_QUEUE_WAS_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд░реАрд╕реЗрдЯ рдХрд░ рджреА рдЧрдИ рдереАред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдХрддрд╛рд░реЛрдВ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
API рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб NUSE_Queue_Receive () (рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж ) рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдпрджрд┐ рд▓реЙрдХ рд╕рдкреЛрд░реНрдЯ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

 if (NUSE_Queue_Items[queue] == 0) /* queue empty */ { return_value = NUSE_QUEUE_EMPTY; } else { /* message available */ *message = NUSE_Queue_Data[queue][NUSE_Queue_Tail[queue]++]; if (NUSE_Queue_Tail[queue] == NUSE_Queue_Size[queue]) { NUSE_Queue_Tail[queue] = 0; } NUSE_Queue_Items[queue]--; return_value = NUSE_SUCCESS; } 

рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрддрд╛рд░ рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╢ рд╣реИ, рдФрд░ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NUSE_Queue_Tail [] рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдХреЛрдб рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

 do { if (NUSE_Queue_Items[queue] == 0) /* queue empty */ { if (suspend == NUSE_NO_SUSPEND) { return_value = NUSE_QUEUE_EMPTY; } else { /* block task */ NUSE_Queue_Blocking_Count[queue]++; NUSE_Suspend_Task(NUSE_Task_Active, (queue << 4) | NUSE_QUEUE_SUSPEND); return_value = NUSE_Task_Blocking_Return[NUSE_Task_Active]; if (return_value != NUSE_SUCCESS) { suspend = NUSE_NO_SUSPEND; } } } else { /* message available */ *message = NUSE_Queue_Data[queue][NUSE_Queue_Tail[queue]++]; if (NUSE_Queue_Tail[queue] == NUSE_Queue_Size[queue]) { NUSE_Queue_Tail[queue] = 0; } NUSE_Queue_Items[queue]--; if (NUSE_Queue_Blocking_Count[queue] != 0) { U8 index; /* check whether a task is blocked */ /* on this queue */ NUSE_Queue_Blocking_Count[queue]--; for (index=0; index<NUSE_TASK_NUMBER; index++) { if ((LONIB(NUSE_Task_Status[index]) == NUSE_QUEUE_SUSPEND) && (HINIB(NUSE_Task_Status[index]) == queue)) { NUSE_Task_Blocking_Return[index] = NUSE_SUCCESS; NUSE_Wake_Task(index); break; } } } return_value = NUSE_SUCCESS; suspend = NUSE_NO_SUSPEND; } } while (suspend == NUSE_SUSPEND); 

рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╕рд╣рд╛рдпрдХ рд╣реЛрдВрдЧреЗред

рдХреЛрдб рдПрдХ рд▓реВрдк рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИ ... рдЬрдмрдХрд┐ рд▓реВрдк рд╣реИ , рдЬреЛ рдХрд╛рд░реНрдп рдкреЙрдЬ рдкреИрд░рд╛рдореАрдЯрд░ NUSE_SUSPEND рд╣реИ, рдЬрдмрдХрд┐ рдЪрд▓рддрд╛ рд╣реИред

рдпрджрд┐ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реИ рдФрд░ рдирд┐рд▓рдВрдмрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ NUSE_NO_SUSPEND рд╣реИ , рддреЛ API рдХреЙрд▓ NUSE_QUEUE_EMPTY рдорд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд▓рдВрдмрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ NUSE_SUSPEND рд╣реИ , рддреЛ рдХрд╛рд░реНрдп рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ (рдЕрд░реНрдерд╛рдд, рдЬрдм рдХрд╛рд░реНрдп рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ), рдпрджрд┐ рд░рд┐рдЯрд░реНрди рдорд╛рди NUSE_SUCCESS рд╣реИ , рдЕрд░реНрдерд╛рдд , рдХрд╛рд░реНрдп рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ (рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдХрддрд╛рд░ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рдХреЛрдб рд▓реВрдк рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реМрдЯрддрд╛ рд╣реИред

рдпрджрд┐ рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рдВрджреЗрд╢ NUSE_Queue_Tail [] рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдХрддрд╛рд░ рдореЗрдВ рдХреЛрдИ рд░реБрдХрд╛ рд╣реБрдЖ (рд▓рдВрдмрд┐рдд) рдХрд╛рд░реНрдп рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдирд┐рд▓рдВрдмрд┐рдд рдЪрд░ NUSE_NO_SUSPEND рдкрд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ API рдХреЙрд▓ NUSE_SUCCI рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИред

рдХрддрд╛рд░ рдХреЗ рдкреНрд░рдореБрдЦ рдХреЛ рд▓рд┐рдЦреЗрдВ


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

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдХрддрд╛рд░ рдХреЗ рдкреНрд░рдореБрдЦ рдХреЛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ
рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

рд╕реНрдЯреЗрдЯрд╕ NU_Send_To_Front_Of_Queue (NU_QUEUE * рдХрддрд╛рд░, VOID * рд╕рдВрджреЗрд╢, UNSIGNED рдЖрдХрд╛рд░, UNSIGNED рд╕рд╕реНрдкреЗрдВрдб);

рд╡рд┐рдХрд▓реНрдк:

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

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NU_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NU_INVALID_QUEUE - рдЕрдорд╛рдиреНрдп рдХрддрд╛рд░ рд╕реВрдЪрдХ;
NU_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NU_INVALID_SIZE - рд╕рдВрджреЗрд╢ рдХрд╛ рдЖрдХрд╛рд░ рдХрддрд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕рдВрджреЗрд╢ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИ;
NU_INVALID_SUSPEND - рдПрдХ рдЧреИрд░-рдХрд╛рд░реНрдп рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рд░реБрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕
NU_QUEUE_FULL - рдХрддрд╛рд░ рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдирд┐рд▓рдВрдмрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NU_TIMEOUT - рдХрддрд╛рд░ рдкреВрд░реНрдг рд╣реИ, рднрд▓реЗ рд╣реА рдХрд╛рд░реНрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ;
NU_QUEUE_DELETED - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд╣рдЯрд╛ рджреА рдЧрдИ рдереА;
NU_QUEUE_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд░реАрд╕реЗрдЯ рдХрд░ рджреА рдЧрдИ рдереАред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдПрдХ рдХрддрд╛рд░ рдХреЗ рдкреНрд░рдореБрдЦ рдХреЛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓
рдпрд╣ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдЖрд░рдЯреАрдУрдПрд╕ рдПрдкреАрдЖрдИ рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк:

рд╕реНрдерд┐рддрд┐ NUSE_Queue_Jam (NUSE_QUEUE рдХрддрд╛рд░, ADDR * рд╕рдВрджреЗрд╢, U8 рдирд┐рд▓рдВрдмрд┐рдд);

рд╡рд┐рдХрд▓реНрдк:

рдХрддрд╛рд░ - рдХрддрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ (рдЖрдИрдбреА);
рд╕рдВрджреЗрд╢ - рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ, рдкреНрд░рдХрд╛рд░ рдПрдбреАрдЖрд░рдбреА рдХрд╛ рдПрдХ рдЪрд░ рд╣реИ;
рдирд┐рд▓рдВрдмрди - рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд▓рдВрдмрди рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛, NUSE_NO_SUSPEND рдпрд╛ NUSE_SUSPEND рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп:

NUSE_SUCCESS - рдХреЙрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛;
NUSE_INVALID_QUEUE - рдЕрдорд╛рдиреНрдп рдХрддрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ;
NUSE_INVALID_POINTER - рдПрдХ рд╕рдВрджреЗрд╢ ( NULL ) рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ;
NUSE_INVALID_SUSPEND - рдХрд╛рд░реНрдп рд╕реЗ рдЬреБрдбрд╝реЗ рдереНрд░реЗрдб рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╛ рдХрд╛рд░реНрдп рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде;
NUSE_QUEUE_FULL - рдХрддрд╛рд░ рдкреВрд░реНрдг рд╣реИ рдФрд░ рдирд┐рд▓рдВрдмрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
NUSE_QUEUE_WAS_RESET - рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрддрд╛рд░ рд░реАрд╕реЗрдЯ рдХрд░ рджреА рдЧрдИ рдереАред

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рдПрдХ рдХреНрдпреВ рд╢реАрд░реНрд╖ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
API рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╡реЗрд░рд┐рдПрдВрдЯ NUSE_Queue_Jam () NUSE_Queue_Send () рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ NUSE_Queue_Tail [] рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░:

 if (NUSE_Queue_Items[queue] == NUSE_Queue_Size[queue]) /* queue full */ { return_value = NUSE_QUEUE_FULL; } else /* queue element available */ { if (NUSE_Queue_Tail[queue] == 0) { NUSE_Queue_Tail[queue] = NUSE_Queue_Size[queue] - 1; } else { NUSE_Queue_Tail[queue]--; } NUSE_Queue_Data[queue][NUSE_Queue_Tail[queue]] = *message; NUSE_Queue_Items[queue]++; return_value = NUSE_SUCCESS; } 

рдЕрдЧрд▓рд╛ рд▓реЗрдЦ рдХрддрд╛рд░ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдкреАрдЖрдИ рдХреЙрд▓, рд╕рд╛рде рд╣реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдЧрд╛ред

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдХреЙрд▓рд┐рди рд╡рд╛рд▓реНрд╕ рддреАрд╕ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдЕрдм рдореЗрдВрдЯрд░ рдПрдВрдмреЗрдбреЗрдб (рдореЗрдВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдкреНрд░рднрд╛рдЧ) рдореЗрдВ рдПрдХ рдлрд░реНрдорд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИред рдХреЙрд▓рд┐рди рд╡реЙрд▓реНрд╕ рдЕрдХреНрд╕рд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рд╕реЗрдорд┐рдирд╛рд░реЛрдВ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реИрдВ, рдХрдИ рддрдХрдиреАрдХреА рд▓реЗрдЦреЛрдВ рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рджреЛ рдХрд┐рддрд╛рдмреЗрдВред рдмреНрд░рд┐рдЯреЗрди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рдХреЙрд▓рд┐рди рдХрд╛ рдкреЗрд╢реЗрд╡рд░ рдмреНрд▓реЙрдЧ , рдИ-рдореЗрд▓: colin_walls@mentor.comред

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


All Articles