void onEvent (ev_t ev) { debug_event(ev); switch(ev) { // network joined, session established case EV_JOINED: debug_val("\r\nnetid = ", LMIC.netid); // immediately prepare next transmission debug_str("\r\nSending"); LMIC.frame[0] = LMIC.snr; LMIC_setTxData2(1, LMIC.frame, 1, 0); // schedule transmission (port 1, datalen 1, no ack requested) break; // scheduled data sent (optionally data received) case EV_TXCOMPLETE: if(LMIC.dataLen) { // data received in rx slot after tx debug_str("\r\nReceived:"); debug_buf(LMIC.frame+LMIC.dataBeg, LMIC.dataLen); } // immediately prepare next transmission LMIC.frame[0] = LMIC.snr; debug_val("\r\nSending:", LMIC.frame[0]); // schedule transmission (port 1, datalen 1, no ack requested) LMIC_setTxData2(1, LMIC.frame, 1, 0); break; } }
void onEvent (ev_t ev) { debug_event(ev); switch(ev) { // network joined, session established case EV_JOINED: debug_val("netid = ", LMIC.netid); goto tx; // scheduled data sent (optionally data received) case EV_TXCOMPLETE: if(LMIC.dataLen) { // data received in rx slot after tx debug_buf(LMIC.frame+LMIC.dataBeg, LMIC.dataLen); } tx: // immediately prepare next transmission LMIC.frame[0] = LMIC.snr; // schedule transmission (port 1, datalen 1, no ack requested) LMIC_setTxData2(1, LMIC.frame, 1, 0); // (will be sent as soon as duty cycle permits) break; default: break; } }
void onEvent (ev_t ev) { debug_event(ev); switch(ev) { // network joined, session established case EV_JOINED: // enable tracking mode, start scanning... LMIC_enableTracking(0); debug_str("SCANNING...\r\n"); break; // beacon found by scanning case EV_BEACON_FOUND: // switch LEN on debug_led(1); break; // beacon tracked at expected time case EV_BEACON_TRACKED: debug_val("GPS time = ", LMIC.bcninfo.time); // switch LEN on debug_led(1); break; // beacon missed at expected time case EV_BEACON_MISSED: // switch LEN off debug_led(0); break; } }
// report sensor value when change was detected static void sensorfunc (osjob_t* j) { // read sensor u2_t val = readsensor(); debug_val("val = ", val); // prepare and schedule data for transmission LMIC.frame[0] = val << 8; LMIC.frame[1] = val; LMIC_setTxData2(1, LMIC.frame, 2, 0); // (port 1, 2 bytes, unconfirmed) }