рдирдорд╕реНрддреЗ, рдореИрдВ рдПрдХ arduino-рджреЗрдп рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде xbee рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
xbee рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдбреНрд░рд╛рдЗрд╡рд░ рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдбреНрд░рд╛рдЗрд╡рд░ xbee.c рдХреА рд▓рд╛рдЗрди 126 рдкрд░ рд░реБрдХрддрд╛ рд╣реИ:
while (dev->resp_limit != dev->resp_count) {
mutex_lock(&(dev->resp_lock));
}
рджрдВрдЧрд╛ рд░рд┐рд▓реАрдЬ 2015.09 рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдмреЛрд░реНрдб рдХрд╛ рдХрд╛рдоред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ uart рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рд╣реЛ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ xbee рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рджрдВрдЧрд╛ рдмрдВрдж рд╣реИ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рд▓реЙрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
Created PR #4734.
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд┐рдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд┐рдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
https://github.com/Yonezawa-T2/RIOT/commit/0b437f440d114a28bbc63c3c6a7ff9dc4ded4bfd
https://github.com/Yonezawa-T2/RIOT/commit/c16cd9281821aaec8c9dd8260a3a98db659e8ef5
ENABLE_DEBUG
рдФрд░ XBEE_ENABLE_DETAILED_DEBUG
рдХреЛ 1 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ #4445 рдореЗрдВ рднреА рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдореИрдВрдиреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ arduino-рджреЗрдп рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╡рд┐рдлрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ uart рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди xbee рдбреНрд░рд╛рдЗрд╡рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
xbee_init рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ _api_at_cmd рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ _get_addr_long рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ <0 xbee_init рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
if(_get_addr_long(dev, dev->addr_long.uint8, 8) < 0) {
DEBUG("xbee: Initialization failed\n");
return -1;
}
рдЕрдВрдд рдореЗрдВ, рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА "xbee: response timeout"
рдХреЛ isr_resp_timeout рдореЗрдВ рд▓реЙрдЧ рди рдХрд░реЗрдВ рдмрд▓реНрдХрд┐ рдЗрд╕реЗ _api_at_cmd рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рджреВрд╕рд░реЗ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдбреАрдмрдЧ рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Created PR #4749.
рдЕрдЪреНрдЫрд╛, рдореИрдВрдиреЗ рдирдП рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ xbee рдбреНрд░рд╛рдЗрд╡рд░ рдкрд░ рд╕реЗрдВрдб рдлрдВрдХреНрд╢рди рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ:
dev->tx_buf[0] = API_START_DELIMITER; dev->tx_buf[4] = 0; /* set to zero to disable response frame */ /* set size, API id and address field depending on dst address length */ if (_is_broadcast(hdr)) { dev->tx_buf[1] = (uint8_t)((size + 5) >> 8); dev->tx_buf[2] = (uint8_t)(size + 5); dev->tx_buf[3] = API_ID_TX_SHORT_ADDR; dev->tx_buf[4] = 0xff; dev->tx_buf[5] = 0xff; } if (hdr->dst_l2addr_len == 2) { dev->tx_buf[1] = (uint8_t)((size + 5) >> 8); dev->tx_buf[2] = (uint8_t)(size + 5); dev->tx_buf[3] = API_ID_TX_SHORT_ADDR; memcpy(dev->tx_buf + 5, gnrc_netif_hdr_get_dst_addr(hdr), 2); pos = 7; } else { dev->tx_buf[1] = (uint8_t)((size + 11) >> 8); dev->tx_buf[2] = (uint8_t)(size + 11); dev->tx_buf[3] = API_ID_TX_LONG_ADDR; memcpy(dev->tx_buf + 5, gnrc_netif_hdr_get_dst_addr(hdr), 8); pos = 13; }
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЕрдЧрд░: tx_buf[4] рдУрд╡рд░рд░рд╛рдЗрдЯ рд╣реИ, рдЧрдВрддрд╡реНрдп рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрддрд╛ рдЗрдВрдбреЗрдХреНрд╕ 5 рдФрд░ 6 рдкрд░ рд╣реИ
- рджреВрд╕рд░рд╛ рдЕрдЧрд░ рд╢рд╛рдпрдж рдпрд╣
else if (hdr->dst_l2addr_len == 2)
рдЕрдВрддрд┐рдо рдкреНрд░рд╢реНрди: рдЧрдВрддрд╡реНрдп рд▓рдВрдмрд╛ рдкрддрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ xbee рдХреЗ рд╕рд╛рде рдпрд╣ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ред
@l3nko
рдореИрдВрдиреЗ xbee рдбреНрд░рд╛рдЗрд╡рд░ рдкрд░ рд╕реЗрдВрдб рдлрдВрдХреНрд╢рди рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реИ:
рд╣рд╛рдБред #4445 рджреЗрдЦреЗрдВредрдЕрдВрддрд┐рдо рдкреНрд░рд╢реНрди: рдЧрдВрддрд╡реНрдп рд▓рдВрдмрд╛ рдкрддрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ xbee рдХреЗ рд╕рд╛рде рдпрд╣ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВред XBee рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрддрд╛ 0xFFFF
рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рднреА #4445 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ #4445 рдХреЛ рдорд░реНрдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ #4445 рдХреЛ рдорд░реНрдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред