<div dir="ltr">Hi<div><br></div><div>I'm trying to communicate two devices (samr21-xpro) one of them with emcute (mqtt-sn) example and the gnrc_border_route example, but the con command of emcute example return TimeOut error. </div><div><br></div><div>I've added the ip of the gnrc_border_route example to emcute example</div><div><br></div><div><img src="cid:ii_15ba1cff8b0c740f" alt="Imágenes integradas 1" width="268" height="184" style="margin-right: 0px;"> <img src="cid:ii_15ba1d1680ff1adb" alt="Imágenes integradas 2" width="412" height="171"></div><div>(gnrc_border_route)                                              (emcute with the ip added)</div><div><br></div><div><br></div><div>if its executed ping6 command it can receive a response of gnrc example</div><div><img src="cid:ii_15ba1d2d56a7b875" alt="Imágenes integradas 3" width="412" height="171"><br></div><div><br></div><div>But when the con command is executed it return a TimeOut error (res= -4) (it say successfully connected but it must be a bug)</div><div><img src="cid:ii_15ba1d4c42d62c93" alt="Imágenes integradas 4" width="412" height="171"><br></div><div><br></div><div>After fill the code with debug lines i saw that the line that fail is </div><div><b>thread_t *me = (thread_t*) sched_active_thread;</b></div><div><br></div><div>this code segment for example </div><div><br></div><div>emcute.c</div><div><div> static int syncsend(uint8_t resp, size_t len, bool unlock)</div><div>{</div><div>    int res = EMCUTE_TIMEOUT;</div><div>    waiton = resp;</div><div>    timer.arg = (void *)sched_active_thread;</div><div>    /* clear flags, in case the timer was triggered last time right before the</div><div>     * remove was called */</div><div>    thread_flags_clear(TFLAGS_ANY);</div><div>    for (unsigned retries = 0; retries < EMCUTE_N_RETRY; retries++) {</div><div>        sock_udp_send(&sock, tbuf, len, &gateway);</div><div>        xtimer_set(&timer, (EMCUTE_T_RETRY * US_PER_SEC));</div><div>      <b style="background-color:rgb(255,0,0)">  t</b><b><span style="background-color:rgb(255,0,0)">hread_flags_t flags = thread_flags_wait_any(TFLAGS_ANY);</span></b></div><div>        if (flags & TFLAGS_RESP) {</div><div>            xtimer_remove(&timer);</div><div>            res = result;</div><div>            retries = EMCUTE_N_RETRY;</div><div>        }</div><div><br></div><div>    }</div><div>     <br></div><div>    /* cleanup sync state */</div><div>    waiton = 0xff;</div><div>    if (unlock) {</div><div>        mutex_unlock(&txlock);</div><div>    }</div><div>    DEBUG("The final result = %d\n", res);</div><div>    return res;</div><div>}</div></div><div><br></div><div>--------------------------------------------------------------------------------------------------</div><div><br></div><div>thread_flag.c</div><div><div>thread_flags_t thread_flags_wait_any(thread_flags_t mask)</div><div>{</div><div> <b style="background-color:rgb(255,0,0)">   thread_t *me = (thread_t*) sched_active_thread;</b></div><div>    _thread_flags_wait_any(mask);</div><div>    thread_flags_t result = _thread_flags_clear_atomic(me, mask);</div><div>    return result;</div><div>}</div></div><div><br></div><div>because it try to inittialize the thread pointer but the flag is always different</div><div> if (flags & TFLAGS_RESP)<br></div><div><br></div><div>The values are:</div><div><div>The flag = 0x00000002 (This mean TIMEOUT) and TFLAGS_RESP = 0x00000001</div></div><div><br></div><div>Please is somebody know what do I need to do, I will appreciate a lot an advice.</div><div><br></div></div>