Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions Firmware/LoRaSerial_Firmware/Commands.ino
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,25 @@ bool commandAT(const char * commandString)
systemPrint(" lastModemStatus: ");
systemPrint(lastModemStatus, HEX);
systemPrintln();
systemPrint(" irqFlags: 0x");
systemPrint(irqFlags, HEX);
systemPrintln();
if (irqFlags & 0x80)
systemPrintln(" RX Timeout");
if (irqFlags & 0x40)
systemPrintln(" RX Done");
if (irqFlags & 0x20)
systemPrintln(" Payload CRC Error");
if (irqFlags & 0x10)
systemPrintln(" Valid Header");
if (irqFlags & 8)
systemPrintln(" TX Done");
if (irqFlags & 4)
systemPrintln(" CAD Done");
if (irqFlags & 2)
systemPrintln(" FHSS Change Channel");
if (irqFlags & 1)
systemPrintln(" CAD Detected");
systemPrint(" receiveInProcess: ");
systemPrintln(receiveInProcess() ? "True" : "False");
outputSerialData(true);
Expand Down
1 change: 1 addition & 0 deletions Firmware/LoRaSerial_Firmware/LoRaSerial_Firmware.ino
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,7 @@ uint8_t frameSentCount = 0; //Increases each time a frame is sent
unsigned long lastPacketReceived = 0; //Controls link LED in broadcast mode
unsigned long lastLinkBlink = 0; //Controls link LED in broadcast mode

volatile uint16_t irqFlags; //IRQ Flags register value
volatile bool transactionComplete = false; //Used in dio0ISR
uint8_t sf6ExpectedSize = MAX_PACKET_SIZE; //Used during SF6 operation to reduce packet size when needed

Expand Down
3 changes: 3 additions & 0 deletions Firmware/LoRaSerial_Firmware/Radio.ino
Original file line number Diff line number Diff line change
Expand Up @@ -1662,6 +1662,9 @@ PacketType rcvDatagram()
//Save the receive time
rcvTimeMillis = millis();

//Get the IRQ flags
irqFlags = radio.getIRQFlags();

//Get the received datagram
framesReceived++;
int state = radio.readData(incomingBuffer, MAX_PACKET_SIZE);
Expand Down
10 changes: 10 additions & 0 deletions Firmware/LoRaSerial_Firmware/States.ino
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,7 @@ void updateRadioState()
COMPUTE_TX_TIME();
triggerEvent(TRIGGER_TX_DONE);
transactionComplete = false; //Reset ISR flag
irqFlags = radio.getIRQFlags();
startChannelTimerPending = true; //Starts at RX of SYNC_CLOCKS frame
returnToReceiving();
changeState(RADIO_P2P_WAIT_SYNC_CLOCKS);
Expand Down Expand Up @@ -529,6 +530,7 @@ void updateRadioState()
COMPUTE_TX_TIME();
triggerEvent(TRIGGER_TX_DONE);
transactionComplete = false; //Reset ISR flag
irqFlags = radio.getIRQFlags();

//Hop to the next channel
hopChannel();
Expand Down Expand Up @@ -617,6 +619,7 @@ void updateRadioState()
{
transactionComplete = false; //Reset ISR flag
COMPUTE_TX_TIME();
irqFlags = radio.getIRQFlags();

setHeartbeatShort(); //We sent the last ack so be responsible for sending the next heartbeat

Expand Down Expand Up @@ -727,6 +730,7 @@ void updateRadioState()
COMPUTE_TX_TIME();
}
triggerEvent(TRIGGER_TX_DONE);
irqFlags = radio.getIRQFlags();

//Determine the next packet size for SF6
if (ackTimer)
Expand Down Expand Up @@ -1267,6 +1271,7 @@ void updateRadioState()
if (transactionComplete)
{
transactionComplete = false; //Reset ISR flag
irqFlags = radio.getIRQFlags();
returnToReceiving();
changeState(RADIO_DISCOVER_SCANNING);
}
Expand Down Expand Up @@ -1447,6 +1452,7 @@ void updateRadioState()
if (transactionComplete == true)
{
transactionComplete = false; //Reset ISR flag
irqFlags = radio.getIRQFlags();
returnToReceiving();
changeState(RADIO_MP_STANDBY);
}
Expand Down Expand Up @@ -1498,6 +1504,7 @@ void updateRadioState()

//Indicate that the receive is complete
triggerEvent(TRIGGER_TRAINING_CLIENT_TX_FIND_PARTNER_DONE);
irqFlags = radio.getIRQFlags();

//Start the receive operation
returnToReceiving();
Expand Down Expand Up @@ -1592,6 +1599,7 @@ void updateRadioState()
if (transactionComplete == true)
{
transactionComplete = false;
irqFlags = radio.getIRQFlags();
endClientServerTraining(TRIGGER_TRAINING_CLIENT_TX_ACK_DONE);
}
break;
Expand Down Expand Up @@ -1712,6 +1720,7 @@ void updateRadioState()

//Indicate that the receive is complete
triggerEvent(TRIGGER_TRAINING_SERVER_TX_PARAMS_DONE);
irqFlags = radio.getIRQFlags();

//Start the receive operation
returnToReceiving();
Expand Down Expand Up @@ -1857,6 +1866,7 @@ void updateRadioState()
//Indicate that the transmission is complete
transactionComplete = false;
triggerEvent(TRIGGER_TX_DONE);
irqFlags = radio.getIRQFlags();

//Start the receive operation
returnToReceiving();
Expand Down