2023-01-29 19:36:00ladle

LMIC debug

10:07:04.276 ->  lmic_error 0Packet queued_otmeme

10:07:09.287 -> 5453517: setupRx1 txrxFlags 0x21   (沒有有效的port byte     (0x20)+在第一個down slot 收到    (0x01) --> 01  在第一個down slot 收到    (0x01)

10:07:09.287 -> start single rx: now-rxtime: 4  (4=now-LMIC.rxtime,

LMIC.rxtime => busy wait until exact rx time)

10:07:09.287 -> 5454149: RXMODE_SINGLE, freq=924000000, SF=7, BW=125, CR=4/5, IH=0

原代碼

 

// now instruct the radio to receive

    if (rxmode == RXMODE_SINGLE) { // single rx

        u4_t nLate = hal_waitUntil(LMIC.rxtime); // busy wait until exact rx time

        opmode(OPMODE_RX_SINGLE);

        LMICOS_logEventUint32("+Rx LoRa Single", nLate);

        rxlate(nLate);

#if LMIC_DEBUG_LEVEL > 0

        ostime_t now = os_getTime();

        LMIC_DEBUG_PRINTF("start single rx: now-rxtime: %"LMIC_PRId_ostime_t"\n", now - LMIC.rxtime);

#endif

    } else { // continous rx (scan or rssi)

        LMICOS_logEventUint32("+Rx LoRa Continuous", rxmode);

        opmode(OPMODE_RX);

    }

 

#if LMIC_DEBUG_LEVEL > 0

    if (rxmode == RXMODE_RSSI) {

        LMIC_DEBUG_PRINTF("RXMODE_RSSI\n");

    } else {

        u1_t sf = getSf(LMIC.rps) + 6; // 1 == SF7

        u1_t bw = getBw(LMIC.rps);

        u1_t cr = getCr(LMIC.rps);

        LMIC_DEBUG_PRINTF("%"LMIC_PRId_ostime_t": %s, freq=%"PRIu32", SF=%d, BW=%d, CR=4/%d, IH=%d\n",

               os_getTime(),

               rxmode == RXMODE_SINGLE ? "RXMODE_SINGLE" : (rxmode == RXMODE_SCAN ? "RXMODE_SCAN" : "UNKNOWN_RX"),

               LMIC.freq, sf,

               bw == BW125 ? 125 : (bw == BW250 ? 250 : 500),

               cr == CR_4_5 ? 5 : (cr == CR_4_6 ? 6 : (cr == CR_4_7 ? 7 : 8)),

               getIh(LMIC.rps)

       );

    }

#endif

opmode(OPMODE_RX_SINGLE) -> rxlora(rxmode) -> startrx(RXMODE_SINGLE) -> os_radio(RADIO_RX) -> radioRx()

event 是設定成 EV_RXSTART

-> setupRx2() 在windows 2  開始接收  or setupRx1()   or startRxPing()

or engineupdate_inner() -> engineupdate() > processpingrx()

,runengineupdate(),reporteventandupdate(ev_t ev), LMIC_disabletracking(void),processDnData_norx(void),

LMIC_clrTxData(), LMIC_setTxData_strict(void),LMIC_sendAlive(void),

LMIC_tryRejoin(void)

Decide what to do next for the MAC layer of a device. Inner part.

Only called from outer part.

我要回應(本篇僅限會員/好友回應,請先登入)