mirror of
https://github.com/timmbogner/Farm-Data-Relay-System
synced 2024-11-10 07:10:42 +00:00
Merge pull request #83 from aviateur17/dev_loratxpow
Add ability to adjust LoRa transmit power #66
This commit is contained in:
commit
91bcf22361
@ -132,6 +132,15 @@ enum {
|
||||
// ASSERT("NO LORA-SF defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
#endif //LORA_SF
|
||||
|
||||
// select LoRa TXPWR configuration
|
||||
#if defined(LORA_TXPWR)
|
||||
#define FDRS_TXPWR LORA_TXPWR
|
||||
#elif defined (GLOBAL_LORA_TXPWR)
|
||||
#define FDRS_TXPWR GLOBAL_LORA_TXPWR
|
||||
#else
|
||||
// ASSERT("NO LORA-TXPWR defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
#endif //LORA_TXPWR
|
||||
|
||||
#endif //USE_LORA
|
||||
|
||||
#define MAC_PREFIX 0xAA, 0xBB, 0xCC, 0xDD, 0xEE // Should only be changed if implementing multiple FDRS systems.
|
||||
@ -438,15 +447,15 @@ void getLoRa() {
|
||||
destMAC = (packet[0] << 8) | packet[1];
|
||||
sourceMAC = (packet[2] << 8) | packet[3];
|
||||
packetCRC = ((packet[packetSize - 2] << 8) | packet[packetSize - 1]);
|
||||
//DBG("Packet Address: 0x" + String(packet[0],16) + String(packet[1],16) + " Self Address: 0x" + String(selfAddress[4],16) + String(selfAddress[5],16));
|
||||
//DBG("Packet Address: 0x" + String(packet[0], HEX) + String(packet[1], HEX) + " Self Address: 0x" + String(selfAddress[4], HEX) + String(selfAddress[5], HEX));
|
||||
if (destMAC == (selfAddress[4] << 8 | selfAddress[5])) { //Check if addressed to this device (2 bytes, bytes 1 and 2)
|
||||
//printLoraPacket(packet,sizeof(packet));
|
||||
memcpy(&theData, &packet[4], packetSize - 6); //Split off data portion of packet (N - 6 bytes (6 bytes for headers and CRC))
|
||||
if(receivedLoRaMsg != 0){ // Avoid divide by 0
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBi, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC,16) + ", Total LoRa received: " + String(receivedLoRaMsg) + ", CRC Ok Pct " + String((float)ackOkLoRaMsg/receivedLoRaMsg*100) + "%");
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBm, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC, HEX) + ", Total LoRa received: " + String(receivedLoRaMsg) + ", CRC Ok Pct " + String((float)ackOkLoRaMsg/receivedLoRaMsg*100) + "%");
|
||||
}
|
||||
else {
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBi, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC,16) + ", Total LoRa received: " + String(receivedLoRaMsg));
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBm, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC, HEX) + ", Total LoRa received: " + String(receivedLoRaMsg));
|
||||
}
|
||||
receivedLoRaMsg++;
|
||||
// Evaluate CRC
|
||||
@ -456,18 +465,18 @@ void getLoRa() {
|
||||
}
|
||||
if(calcCRC == packetCRC) {
|
||||
SystemPacket ACK = { .cmd = cmd_ack, .param = CRC_OK };
|
||||
DBG("CRC Match, sending ACK packet to sensor 0x" + String(sourceMAC,16) + "(hex)");
|
||||
DBG("CRC Match, sending ACK packet to sensor 0x" + String(sourceMAC, HEX) + "(hex)");
|
||||
transmitLoRa(&sourceMAC, &ACK, 1); // Send ACK back to source
|
||||
ackOkLoRaMsg++;
|
||||
}
|
||||
else if(packetCRC == crc16_update(calcCRC,0xA1)) { // Sender does not want ACK and CRC is valid
|
||||
DBG("Sensor address 0x" + String(sourceMAC,16) + "(hex) does not want ACK");
|
||||
DBG("Sensor address 0x" + String(sourceMAC, HEX) + "(hex) does not want ACK");
|
||||
ackOkLoRaMsg++;
|
||||
}
|
||||
else {
|
||||
SystemPacket NAK = { .cmd = cmd_ack, .param = CRC_BAD };
|
||||
// Send NAK packet to sensor
|
||||
DBG("CRC Mismatch! Packet CRC is 0x" + String(packetCRC,16) + ", Calculated CRC is 0x" + String(calcCRC,16) + " Sending NAK packet to sensor 0x" + String(sourceMAC,16) + "(hex)");
|
||||
DBG("CRC Mismatch! Packet CRC is 0x" + String(packetCRC, HEX) + ", Calculated CRC is 0x" + String(calcCRC, HEX) + " Sending NAK packet to sensor 0x" + String(sourceMAC, HEX) + "(hex)");
|
||||
transmitLoRa(&sourceMAC, &NAK, 1); // CRC did not match so send NAK to source
|
||||
newData = event_clear; // do not process data as data may be corrupt
|
||||
return; // Exit function and do not update newData to send invalid data further on
|
||||
@ -484,7 +493,7 @@ void getLoRa() {
|
||||
newData = event_lorag;
|
||||
}
|
||||
else {
|
||||
DBG("Incoming LoRa packet of " + String(packetSize) + " bytes received from address 0x" + String(sourceMAC,16) + " destined for node address 0x" + String(destMAC,16));
|
||||
DBG("Incoming LoRa packet of " + String(packetSize) + " bytes received from address 0x" + String(sourceMAC, HEX) + " destined for node address 0x" + String(destMAC, HEX));
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -512,7 +521,7 @@ void transmitLoRa(uint16_t* destMac, DataReading * packet, uint8_t len) {
|
||||
}
|
||||
pkt[(len * sizeof(DataReading) + 4)] = (calcCRC >> 8); // Append calculated CRC to the last 2 bytes of the packet
|
||||
pkt[(len * sizeof(DataReading) + 5)] = (calcCRC & 0x00FF);
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to LoRa MAC 0x" + String(*destMac,16));
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to LoRa MAC 0x" + String(*destMac, HEX));
|
||||
//printLoraPacket(pkt,sizeof(pkt));
|
||||
LoRa.beginPacket();
|
||||
LoRa.write((uint8_t*)&pkt, sizeof(pkt));
|
||||
@ -878,8 +887,8 @@ void begin_lora() {
|
||||
while (1);
|
||||
}
|
||||
LoRa.setSpreadingFactor(FDRS_SF);
|
||||
DBG("LoRa Band: " + String(FDRS_BAND));
|
||||
DBG("LoRa SF : " + String(FDRS_SF));
|
||||
LoRa.setTxPower(LORA_TXPWR);
|
||||
DBG("LoRa Initialized. Band: " + String(FDRS_BAND) + " SF: " + String(FDRS_SF) + " Tx Power: " + String(LORA_TXPWR) + " dBm");
|
||||
#endif // USE_LORA
|
||||
}
|
||||
|
||||
|
@ -60,8 +60,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
|
||||
// Buffer Delays - in milliseconds - Uncomment to enable any buffer
|
||||
|
||||
|
@ -40,6 +40,15 @@
|
||||
// ASSERT("NO LORA-SF defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
#endif //LORA_SF
|
||||
|
||||
// select LoRa TXPWR configuration
|
||||
#if defined(LORA_TXPWR)
|
||||
#define FDRS_TXPWR LORA_TXPWR
|
||||
#elif defined (GLOBAL_LORA_TXPWR)
|
||||
#define FDRS_TXPWR GLOBAL_LORA_TXPWR
|
||||
#else
|
||||
// ASSERT("NO LORA-TXPWR defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
#endif //LORA_TXPWR
|
||||
|
||||
#endif //USE_LORA
|
||||
|
||||
#ifdef FDRS_DEBUG
|
||||
@ -175,10 +184,8 @@ void beginFDRS() {
|
||||
while (1);
|
||||
}
|
||||
LoRa.setSpreadingFactor(FDRS_SF);
|
||||
DBG(" LoRa Initialized.");
|
||||
|
||||
DBG("LoRa Band: " + String(FDRS_BAND));
|
||||
DBG("LoRa SF : " + String(FDRS_SF));
|
||||
LoRa.setTxPower(LORA_TXPWR);
|
||||
DBG("LoRa Initialized. Band: " + String(FDRS_BAND) + " SF: " + String(FDRS_SF) + " Tx Power: " + String(LORA_TXPWR) + " dBm");
|
||||
#endif // USE_LORA
|
||||
#ifdef DEBUG_NODE_CONFIG
|
||||
if (resetReason != ESP_RST_DEEPSLEEP) {
|
||||
@ -207,13 +214,13 @@ crcResult getLoRa() {
|
||||
destMAC = (packet[0] << 8) | packet[1];
|
||||
sourceMAC = (packet[2] << 8) | packet[3];
|
||||
packetCRC = ((packet[packetSize - 2] << 8) | packet[packetSize - 1]);
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBi, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC,16));
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBm, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC, HEX));
|
||||
if (destMAC == LoRaAddress) {
|
||||
//printLoraPacket(packet,sizeof(packet));
|
||||
memcpy(receiveData, &packet[4], packetSize - 6); //Split off data portion of packet (N bytes)
|
||||
if(ln == 1 && receiveData[0].cmd == cmd_ack) { // We have received an ACK packet
|
||||
if(packetCRC == 0xFFFF) {
|
||||
DBG("ACK Received - address 0x" + String(sourceMAC,16) + "(hex) does not want ACKs");
|
||||
DBG("ACK Received - address 0x" + String(sourceMAC, HEX) + "(hex) does not want ACKs");
|
||||
return CRC_OK;
|
||||
}
|
||||
else {
|
||||
@ -226,7 +233,7 @@ crcResult getLoRa() {
|
||||
return CRC_OK;
|
||||
}
|
||||
else {
|
||||
DBG("ACK Received CRC Mismatch! Packet CRC is 0x" + String(packetCRC,16) + ", Calculated CRC is 0x" + String(calcCRC,16));
|
||||
DBG("ACK Received CRC Mismatch! Packet CRC is 0x" + String(packetCRC, HEX) + ", Calculated CRC is 0x" + String(calcCRC, HEX));
|
||||
return CRC_BAD;
|
||||
}
|
||||
}
|
||||
@ -287,9 +294,9 @@ void transmitLoRa(uint16_t* destMAC, DataReading * packet, uint8_t len) {
|
||||
int retries = LORA_RETRIES + 1;
|
||||
while(retries != 0) {
|
||||
if(transmitLoRaMsg != 0)
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to gateway 0x" + String(*destMAC,16) + ". Retries remaining: " + String(retries - 1) + ", CRC OK " + String((float)msgOkLoRa/transmitLoRaMsg*100) + "%");
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to gateway 0x" + String(*destMAC, HEX) + ". Retries remaining: " + String(retries - 1) + ", CRC OK " + String((float)msgOkLoRa/transmitLoRaMsg*100) + "%");
|
||||
else
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to gateway 0x" + String(*destMAC,16) + ". Retries remaining: " + String(retries - 1));
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to gateway 0x" + String(*destMAC, HEX) + ". Retries remaining: " + String(retries - 1));
|
||||
//printLoraPacket(pkt,sizeof(pkt));
|
||||
LoRa.beginPacket();
|
||||
LoRa.write((uint8_t*)&pkt, sizeof(pkt));
|
||||
@ -316,7 +323,7 @@ void transmitLoRa(uint16_t* destMAC, DataReading * packet, uint8_t len) {
|
||||
}
|
||||
}
|
||||
#else // Send and do not wait for ACK reply
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to gateway 0x" + String(*destMAC,16));
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to gateway 0x" + String(*destMAC, HEX));
|
||||
//printLoraPacket(pkt,sizeof(pkt));
|
||||
LoRa.beginPacket();
|
||||
LoRa.write((uint8_t*)&pkt, sizeof(pkt));
|
||||
|
@ -23,11 +23,13 @@
|
||||
#define LORA_SS 18
|
||||
#define LORA_RST 14
|
||||
#define LORA_DIO0 26
|
||||
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -60,8 +60,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
|
||||
// Buffer Delays - in milliseconds - Uncomment to enable any buffer
|
||||
|
||||
|
@ -60,8 +60,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
|
||||
// Buffer Delays - in milliseconds - Uncomment to enable any buffer
|
||||
|
||||
|
@ -60,8 +60,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
|
||||
// Buffer Delays - in milliseconds - Uncomment to enable any buffer
|
||||
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -25,8 +25,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
//#define LORA_ACK // Uncomment to enable request for LoRa ACKs at cost of increased battery usage
|
||||
#define LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define LORA_RETRIES 2 // [0 - 3] When ACK enabled, number of sensor node tx retries when ACK not received or invalid CRC
|
||||
|
@ -57,8 +57,9 @@
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
// TODO: Needs to be commented out if FDRS_GLOBALS are assigned
|
||||
#define LORA_BAND 866E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 866E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
|
||||
//#define USE_LED //Not yet fully implemented
|
||||
#define LED_PIN 32
|
||||
|
@ -57,8 +57,9 @@
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
// TODO: Needs to be commented out if FDRS_GLOBALS are assigned
|
||||
#define LORA_BAND 915E6
|
||||
#define LORA_SF 7
|
||||
#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define LORA_SF 7 // LoRa Spreading Factor
|
||||
#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
|
||||
//#define USE_LED //Not yet fully implemented
|
||||
#define LED_PIN 32
|
||||
|
@ -43,9 +43,11 @@
|
||||
//#ifdef FDRS_GLOBAL_LORA
|
||||
#define FDRS_BAND GLOBAL_LORA_BAND
|
||||
#define FDRS_SF GLOBAL_LORA_SF
|
||||
#define FDRS_TXPWR GLOBAL_FDRS_TXPWR
|
||||
#else
|
||||
#define FDRS_BAND LORA_BAND
|
||||
#define FDRS_SF LORA_SF
|
||||
#define FDRS_TXPWR LORA_TXPWR
|
||||
#endif //FDRS_GLOBAL_LORA
|
||||
|
||||
#ifdef FDRS_DEBUG
|
||||
|
@ -40,8 +40,9 @@
|
||||
//433E6 for Asia
|
||||
//866E6 for Europe
|
||||
//915E6 for North America
|
||||
//#define LORA_BAND 915E6
|
||||
//#define LORA_SF 7
|
||||
//#define LORA_BAND 915E6 // LoRa Frequency Band
|
||||
//#define LORA_SF 7 // LoRa Spreading Factor
|
||||
//#define LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
|
||||
// MQTT Configuration -- This should be globally configured in fdrs_globals.h. If you need to specify
|
||||
// a different MQTT server for this sensor, configure below.
|
||||
|
@ -163,6 +163,16 @@ void printLoraDetails() {
|
||||
//exit(0);
|
||||
#endif //LORA-SF
|
||||
|
||||
#if defined(LORA_TXPWR)
|
||||
DBG("LoRa TXPWR used from LORA_TXPWR : " + String(FDRS_TXPWR));
|
||||
#elif defined (GLOBAL_LORA_TXPWR)
|
||||
DBG("LoRa TXPWR used from GLOBAL_LORA_TXPWR : " + String(FDRS_TXPWR));
|
||||
#else
|
||||
// ASSERT("NO LORA-TXPWR defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
DBG("NO LORA-TXPWR defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
//exit(0);
|
||||
#endif //LORA-TXPWR
|
||||
|
||||
#ifdef UNIT_MAC
|
||||
DBG("LoRa peers");
|
||||
DBG("Peer 1 address: " + String(LORA1_PEER, HEX));
|
||||
|
@ -130,6 +130,15 @@ enum {
|
||||
// ASSERT("NO LORA-SF defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
#endif //LORA_SF
|
||||
|
||||
// select LoRa TXPWR configuration
|
||||
#if defined(LORA_TXPWR)
|
||||
#define FDRS_TXPWR LORA_TXPWR
|
||||
#elif defined (GLOBAL_LORA_TXPWR)
|
||||
#define FDRS_TXPWR GLOBAL_LORA_TXPWR
|
||||
#else
|
||||
// ASSERT("NO LORA-TXPWR defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
#endif //LORA_TXPWR
|
||||
|
||||
#endif //USE_LORA
|
||||
|
||||
#define MAC_PREFIX 0xAA, 0xBB, 0xCC, 0xDD, 0xEE // Should only be changed if implementing multiple FDRS systems.
|
||||
@ -429,15 +438,15 @@ void getLoRa() {
|
||||
destMAC = (packet[0] << 8) | packet[1];
|
||||
sourceMAC = (packet[2] << 8) | packet[3];
|
||||
packetCRC = ((packet[packetSize - 2] << 8) | packet[packetSize - 1]);
|
||||
//DBG("Packet Address: 0x" + String(packet[0],16) + String(packet[1],16) + " Self Address: 0x" + String(selfAddress[4],16) + String(selfAddress[5],16));
|
||||
//DBG("Packet Address: 0x" + String(packet[0], HEX) + String(packet[1], HEX) + " Self Address: 0x" + String(selfAddress[4], HEX) + String(selfAddress[5], HEX));
|
||||
if (destMAC == (selfAddress[4] << 8 | selfAddress[5])) { //Check if addressed to this device (2 bytes, bytes 1 and 2)
|
||||
//printLoraPacket(packet,sizeof(packet));
|
||||
memcpy(&theData, &packet[4], packetSize - 6); //Split off data portion of packet (N - 6 bytes (6 bytes for headers and CRC))
|
||||
if(receivedLoRaMsg != 0){ // Avoid divide by 0
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBi, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC,16) + ", Total LoRa received: " + String(receivedLoRaMsg) + ", CRC Ok Pct " + String((float)ackOkLoRaMsg/receivedLoRaMsg*100) + "%");
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBm, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC, HEX) + ", Total LoRa received: " + String(receivedLoRaMsg) + ", CRC Ok Pct " + String((float)ackOkLoRaMsg/receivedLoRaMsg*100) + "%");
|
||||
}
|
||||
else {
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBi, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC,16) + ", Total LoRa received: " + String(receivedLoRaMsg));
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBm, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC, HEX) + ", Total LoRa received: " + String(receivedLoRaMsg));
|
||||
}
|
||||
receivedLoRaMsg++;
|
||||
// Evaluate CRC
|
||||
@ -447,18 +456,18 @@ void getLoRa() {
|
||||
}
|
||||
if(calcCRC == packetCRC) {
|
||||
SystemPacket ACK = { .cmd = cmd_ack, .param = CRC_OK };
|
||||
DBG("CRC Match, sending ACK packet to sensor 0x" + String(sourceMAC,16) + "(hex)");
|
||||
DBG("CRC Match, sending ACK packet to sensor 0x" + String(sourceMAC, HEX) + "(hex)");
|
||||
transmitLoRa(&sourceMAC, &ACK, 1); // Send ACK back to source
|
||||
ackOkLoRaMsg++;
|
||||
}
|
||||
else if(packetCRC == crc16_update(calcCRC,0xA1)) { // Sender does not want ACK and CRC is valid
|
||||
DBG("Sensor address 0x" + String(sourceMAC,16) + "(hex) does not want ACK");
|
||||
DBG("Sensor address 0x" + String(sourceMAC, HEX) + "(hex) does not want ACK");
|
||||
ackOkLoRaMsg++;
|
||||
}
|
||||
else {
|
||||
SystemPacket NAK = { .cmd = cmd_ack, .param = CRC_BAD };
|
||||
// Send NAK packet to sensor
|
||||
DBG("CRC Mismatch! Packet CRC is 0x" + String(packetCRC,16) + ", Calculated CRC is 0x" + String(calcCRC,16) + " Sending NAK packet to sensor 0x" + String(sourceMAC,16) + "(hex)");
|
||||
DBG("CRC Mismatch! Packet CRC is 0x" + String(packetCRC, HEX) + ", Calculated CRC is 0x" + String(calcCRC, HEX) + " Sending NAK packet to sensor 0x" + String(sourceMAC, HEX) + "(hex)");
|
||||
transmitLoRa(&sourceMAC, &NAK, 1); // CRC did not match so send NAK to source
|
||||
newData = event_clear; // do not process data as data may be corrupt
|
||||
return; // Exit function and do not update newData to send invalid data further on
|
||||
@ -475,7 +484,7 @@ void getLoRa() {
|
||||
newData = event_lorag;
|
||||
}
|
||||
else {
|
||||
DBG("Incoming LoRa packet of " + String(packetSize) + " bytes received from address 0x" + String(sourceMAC,16) + " destined for node address 0x" + String(destMAC,16));
|
||||
DBG("Incoming LoRa packet of " + String(packetSize) + " bytes received from address 0x" + String(sourceMAC, HEX) + " destined for node address 0x" + String(destMAC, HEX));
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -503,7 +512,7 @@ void transmitLoRa(uint16_t* destMac, DataReading * packet, uint8_t len) {
|
||||
}
|
||||
pkt[(len * sizeof(DataReading) + 4)] = (calcCRC >> 8); // Append calculated CRC to the last 2 bytes of the packet
|
||||
pkt[(len * sizeof(DataReading) + 5)] = (calcCRC & 0x00FF);
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to LoRa MAC 0x" + String(*destMac,16));
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to LoRa MAC 0x" + String(*destMac, HEX));
|
||||
//printLoraPacket(pkt,sizeof(pkt));
|
||||
LoRa.beginPacket();
|
||||
LoRa.write((uint8_t*)&pkt, sizeof(pkt));
|
||||
@ -528,7 +537,7 @@ void transmitLoRa(uint16_t* destMac, SystemPacket * packet, uint8_t len) {
|
||||
}
|
||||
pkt[(len * sizeof(SystemPacket) + 4)] = (calcCRC >> 8); // Append calculated CRC to the last 2 bytes of the packet
|
||||
pkt[(len * sizeof(SystemPacket) + 5)] = (calcCRC & 0x00FF);
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to LoRa MAC 0x" + String(*destMac,16));
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to LoRa MAC 0x" + String(*destMac, HEX));
|
||||
//printLoraPacket(pkt,sizeof(pkt));
|
||||
LoRa.beginPacket();
|
||||
LoRa.write((uint8_t*)&pkt, sizeof(pkt));
|
||||
@ -889,9 +898,8 @@ void begin_lora() {
|
||||
DBG(" Initialization failed!");
|
||||
while (1);
|
||||
}
|
||||
LoRa.setSpreadingFactor(FDRS_SF);
|
||||
DBG("LoRa Band: " + String(FDRS_BAND));
|
||||
DBG("LoRa SF : " + String(FDRS_SF));
|
||||
LoRa.setTxPower(LORA_TXPWR);
|
||||
DBG("LoRa Initialized. Band: " + String(FDRS_BAND) + " SF: " + String(FDRS_SF) + " Tx Power: " + String(LORA_TXPWR) + " dBm");
|
||||
#endif // USE_LORA
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,10 @@
|
||||
#define GLOBAL_MQTT_USER "Your MQTT Username"
|
||||
#define GLOBAL_MQTT_PASS "Your MQTT Password"
|
||||
|
||||
#define GLOBAL_LORA_BAND 915E6 //LoRa Frequency Band
|
||||
#define GLOBAL_LORA_SF 7 //LoRa Spreading Factor
|
||||
#define GLOBAL_LORA_BAND 915E6 // LoRa Frequency Band
|
||||
#define GLOBAL_LORA_SF 7 // LoRa Spreading Factor
|
||||
#define GLOBAL_LORA_TXPWR 17 // LoRa TX power in dBm (+2dBm - +20dBm), default is +17dBm. Lower power = less battery use
|
||||
#define GLOBAL_LORA_ACK_TIMEOUT 400 // ms timeout waiting for LoRa ACKs (if enabled). Wouldn't go less than 200ms
|
||||
#define GLOBAL_LORA_RETRIES 2
|
||||
|
||||
#endif //FDRS_GLOBALS
|
||||
|
@ -40,6 +40,15 @@
|
||||
// ASSERT("NO LORA-SF defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
#endif //LORA_SF
|
||||
|
||||
// select LoRa TXPWR configuration
|
||||
#if defined(LORA_TXPWR)
|
||||
#define FDRS_TXPWR LORA_TXPWR
|
||||
#elif defined (GLOBAL_LORA_TXPWR)
|
||||
#define FDRS_TXPWR GLOBAL_LORA_TXPWR
|
||||
#else
|
||||
// ASSERT("NO LORA-TXPWR defined! Please define in fdrs_globals.h (recommended) or in fdrs_sensor_config.h");
|
||||
#endif //LORA_TXPWR
|
||||
|
||||
#endif //USE_LORA
|
||||
|
||||
#ifdef FDRS_DEBUG
|
||||
@ -144,10 +153,8 @@ void beginFDRS() {
|
||||
while (1);
|
||||
}
|
||||
LoRa.setSpreadingFactor(FDRS_SF);
|
||||
DBG(" LoRa Initialized.");
|
||||
|
||||
DBG("LoRa Band: " + String(FDRS_BAND));
|
||||
DBG("LoRa SF : " + String(FDRS_SF));
|
||||
LoRa.setTxPower(LORA_TXPWR);
|
||||
DBG("LoRa Initialized. Band: " + String(FDRS_BAND) + " SF: " + String(FDRS_SF) + " Tx Power: " + String(LORA_TXPWR) + " dBm");
|
||||
#endif // USE_LORA
|
||||
#ifdef DEBUG_NODE_CONFIG
|
||||
if (resetReason != ESP_RST_DEEPSLEEP) {
|
||||
@ -176,13 +183,13 @@ crcResult getLoRa() {
|
||||
destMAC = (packet[0] << 8) | packet[1];
|
||||
sourceMAC = (packet[2] << 8) | packet[3];
|
||||
packetCRC = ((packet[packetSize - 2] << 8) | packet[packetSize - 1]);
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBi, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC,16));
|
||||
DBG("Incoming LoRa. Size: " + String(packetSize) + " Bytes, RSSI: " + String(LoRa.packetRssi()) + "dBm, SNR: " + String(LoRa.packetSnr()) + "dB, PacketCRC: 0x" + String(packetCRC, HEX));
|
||||
if (destMAC == LoRaAddress) {
|
||||
//printLoraPacket(packet,sizeof(packet));
|
||||
memcpy(receiveData, &packet[4], packetSize - 6); //Split off data portion of packet (N bytes)
|
||||
if(ln == 1 && receiveData[0].cmd == cmd_ack) { // We have received an ACK packet
|
||||
if(packetCRC == 0xFFFF) {
|
||||
DBG("ACK Received - address 0x" + String(sourceMAC,16) + "(hex) does not want ACKs");
|
||||
DBG("ACK Received - address 0x" + String(sourceMAC, HEX) + "(hex) does not want ACKs");
|
||||
return CRC_OK;
|
||||
}
|
||||
else {
|
||||
@ -195,7 +202,7 @@ crcResult getLoRa() {
|
||||
return CRC_OK;
|
||||
}
|
||||
else {
|
||||
DBG("ACK Received CRC Mismatch! Packet CRC is 0x" + String(packetCRC,16) + ", Calculated CRC is 0x" + String(calcCRC,16));
|
||||
DBG("ACK Received CRC Mismatch! Packet CRC is 0x" + String(packetCRC, HEX) + ", Calculated CRC is 0x" + String(calcCRC, HEX));
|
||||
return CRC_BAD;
|
||||
}
|
||||
}
|
||||
@ -256,9 +263,9 @@ void transmitLoRa(uint16_t* destMAC, DataReading * packet, uint8_t len) {
|
||||
int retries = LORA_RETRIES + 1;
|
||||
while(retries != 0) {
|
||||
if(transmitLoRaMsg != 0)
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to gateway 0x" + String(*destMAC,16) + ". Retries remaining: " + String(retries - 1) + ", CRC OK " + String((float)msgOkLoRa/transmitLoRaMsg*100) + "%");
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to gateway 0x" + String(*destMAC, HEX) + ". Retries remaining: " + String(retries - 1) + ", CRC OK " + String((float)msgOkLoRa/transmitLoRaMsg*100) + "%");
|
||||
else
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to gateway 0x" + String(*destMAC,16) + ". Retries remaining: " + String(retries - 1));
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to gateway 0x" + String(*destMAC, HEX) + ". Retries remaining: " + String(retries - 1));
|
||||
//printLoraPacket(pkt,sizeof(pkt));
|
||||
LoRa.beginPacket();
|
||||
LoRa.write((uint8_t*)&pkt, sizeof(pkt));
|
||||
@ -285,7 +292,7 @@ void transmitLoRa(uint16_t* destMAC, DataReading * packet, uint8_t len) {
|
||||
}
|
||||
}
|
||||
#else // Send and do not wait for ACK reply
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC,16) + " to gateway 0x" + String(*destMAC,16));
|
||||
DBG("Transmitting LoRa message of size " + String(sizeof(pkt)) + " bytes with CRC 0x" + String(calcCRC, HEX) + " to gateway 0x" + String(*destMAC, HEX));
|
||||
//printLoraPacket(pkt,sizeof(pkt));
|
||||
LoRa.beginPacket();
|
||||
LoRa.write((uint8_t*)&pkt, sizeof(pkt));
|
||||
|
53
keywords.txt
53
keywords.txt
@ -12,31 +12,46 @@
|
||||
#######################################################################
|
||||
# Datatypes and Class names (KEYWORD1)
|
||||
#######################################################################
|
||||
DataReading KEYWORD1
|
||||
FDRSBase KEYWORD1
|
||||
FDRSLoRa KEYWORD1
|
||||
FDRS_EspNow KEYWORD1
|
||||
DataReading KEYWORD1
|
||||
SystemPacket KEYWORD1
|
||||
FDRSBase KEYWORD1
|
||||
FDRSLoRa KEYWORD1
|
||||
FDRS_EspNow KEYWORD1
|
||||
|
||||
#######################################################################
|
||||
# Methods and Functions (KEYWORD2)
|
||||
#######################################################################
|
||||
FDRS_DBG KEYWORD2
|
||||
begin KEYWORD2
|
||||
beginFDRS KEYWORD2
|
||||
FDRS_DBG KEYWORD2
|
||||
begin KEYWORD2
|
||||
beginFDRS KEYWORD2
|
||||
begin_espnow KEYWORD2
|
||||
begin_FS KEYWORD2
|
||||
begin_lora KEYWORD2
|
||||
begin_SD KEYWORD2
|
||||
bufferESPNOW KEYWORD2
|
||||
bufferLoRa KEYWORD2
|
||||
bufferMQTT KEYWORD2
|
||||
bufferLoRa KEYWORD2
|
||||
bufferMQTT KEYWORD2
|
||||
bufferSerial KEYWORD2
|
||||
getLoRa KEYWORD2
|
||||
getSerial KEYWORD2
|
||||
load KEYWORD2
|
||||
loadFDRS KEYWORD2
|
||||
sendESPNOW KEYWORD2
|
||||
sendFDRS KEYWORD2
|
||||
sendMQTT KEYWORD2
|
||||
sendSerial KEYWORD2
|
||||
sleep KEYWORD2
|
||||
sleepFDRS KEYWORD2
|
||||
crc16_update KEYWORD2
|
||||
getLoRa KEYWORD2
|
||||
getSerial KEYWORD2
|
||||
handleCommands KEYWORD2
|
||||
load KEYWORD2
|
||||
loadFDRS KEYWORD2
|
||||
OnDataSent KEYWORD2
|
||||
OnDataRecv KEYWORD2
|
||||
pingFDRS KEYWORD2
|
||||
printLoraPacket KEYWORD2
|
||||
reconnect KEYWORD2
|
||||
releaseLogBuffer KEYWORD2
|
||||
releaseMQTT KEYWORD2
|
||||
sendESPNOW KEYWORD2
|
||||
sendFDRS KEYWORD2
|
||||
sendLog KEYWORD2
|
||||
sendMQTT KEYWORD2
|
||||
sendSerial KEYWORD2
|
||||
sleep KEYWORD2
|
||||
sleepFDRS KEYWORD2
|
||||
transmitLoRa KEYWORD2
|
||||
|
||||
#######################################################################
|
||||
|
Loading…
Reference in New Issue
Block a user