TEST update

This commit is contained in:
Kyle Gabriel 2019-08-28 19:49:13 -04:00
parent 6334c93b38
commit ce145d8751
2 changed files with 53 additions and 14 deletions

View File

@ -47,6 +47,9 @@ void ttn_register(void (*callback)(uint8_t message));
#define PAYLOAD_USE_FULL #define PAYLOAD_USE_FULL
// #define PAYLOAD_USE_CAYENNE // #define PAYLOAD_USE_CAYENNE
// If using a single-channel gateway, uncomment this next option and set to your gateway's channel
//#define SINGLE_CHANNEL_GATEWAY 0
#define DEBUG_PORT Serial // Serial debug port #define DEBUG_PORT Serial // Serial debug port
#define SERIAL_BAUD 115200 // Serial debug baud rate #define SERIAL_BAUD 115200 // Serial debug baud rate
#define SLEEP_BETWEEN_MESSAGES 0 // Do sleep between messages #define SLEEP_BETWEEN_MESSAGES 0 // Do sleep between messages

View File

@ -69,18 +69,43 @@ void _ttn_callback(uint8_t message) {
} }
} }
void forceTxSingleChannelDr() {
// Disables all channels, except for the one defined by SINGLE_CHANNEL_GATEWAY
// This only affects uplinks; for downlinks the default
// channels or the configuration from the OTAA Join Accept are used.
for(int i=0; i<9; i++) { // For EU; for US use i<71
if(i != SINGLE_CHANNEL_GATEWAY) {
LMIC_disableChannel(i);
}
}
// Set data rate (SF) and transmit power for uplink
LMIC_setDrTxpow(LORAWAN_SF, 14);
}
// LMIC library will call this method when an event is fired // LMIC library will call this method when an event is fired
void onEvent(ev_t event) { void onEvent(ev_t event) {
if (EV_TXCOMPLETE == event) { switch(event) {
case EV_JOINED:
#ifdef SINGLE_CHANNEL_GATEWAY
forceTxSingleChannelDr();
#endif
break;
case EV_TXCOMPLETE:
Serial.println(F("EV_TXCOMPLETE (inc. RX win. wait)"));
if (LMIC.txrxFlags & TXRX_ACK) { if (LMIC.txrxFlags & TXRX_ACK) {
Serial.println(F("Received ack"));
_ttn_callback(EV_ACK); _ttn_callback(EV_ACK);
} }
if (LMIC.dataLen) { if (LMIC.dataLen) {
Serial.print(F("Data Received: "));
Serial.write(LMIC.frame+LMIC.dataBeg, LMIC.dataLen);
Serial.println();
_ttn_callback(EV_RESPONSE); _ttn_callback(EV_RESPONSE);
} }
break;
default:
break;
} }
// Send message callbacks // Send message callbacks
@ -118,7 +143,7 @@ void ttn_join() {
LMIC_reset(); LMIC_reset();
LMIC_setClockError(MAX_CLOCK_ERROR * 5 / 100); LMIC_setClockError(MAX_CLOCK_ERROR * 5 / 100);
#ifdef USE_ABP #if defined(USE_ABP)
// Set static session parameters. Instead of dynamically establishing a session // Set static session parameters. Instead of dynamically establishing a session
// by joining the network, precomputed session parameters are be provided. // by joining the network, precomputed session parameters are be provided.
@ -156,14 +181,6 @@ void ttn_join() {
// https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json // https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
LMIC_selectSubBand(1); LMIC_selectSubBand(1);
#elif defined(CFG_au915)
Serial.println("AU_915");
// NA-US channels 0-71 are configured automatically
// but only one group of 8 should (a subband) should be active
// TTN recommends the second sub band, 1 in a zero based count.
// https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
LMIC_selectSubBand(1);
#endif #endif
// If using a mono-channel gateway disable all channels // If using a mono-channel gateway disable all channels
@ -189,13 +206,32 @@ void ttn_join() {
// TTN uses SF9 for its RX2 window. // TTN uses SF9 for its RX2 window.
LMIC.dn2Dr = DR_SF9; LMIC.dn2Dr = DR_SF9;
#ifdef SINGLE_CHANNEL_GATEWAY
forceTxSingleChannelDr();
#else
// Set default rate and transmit power for uplink (note: txpow seems to be ignored by the library) // Set default rate and transmit power for uplink (note: txpow seems to be ignored by the library)
LMIC_setDrTxpow(DR_SF7, 14); LMIC_setDrTxpow(DR_SF7, 14);
#endif
// Trigger a false joined // Trigger a false joined
_ttn_callback(EV_JOINED); _ttn_callback(EV_JOINED);
#endif // USE_ABP #elif defined(USE_OTAA)
#ifdef SINGLE_CHANNEL_GATEWAY
// Make LMiC initialize the default channels, choose a channel, and
// schedule the OTAA join
LMIC_startJoining();
// LMiC will already have decided to send on one of the 3 default
// channels; ensure it uses the one we want
LMIC.txChnl = SINGLE_CHANNEL_GATEWAY;
// ...and make sure we see the EV_JOINING event being logged
os_runloop_once();
#endif
#endif
} }
void ttn_sf(unsigned char sf) { void ttn_sf(unsigned char sf) {