[Stream] Cleaned up transmit example
This commit is contained in:
parent
8b8c6614aa
commit
395844922c
1 changed files with 25 additions and 22 deletions
|
@ -80,19 +80,20 @@ void setup() {
|
||||||
transmissionState = radio.startTransmit(longPacket);
|
transmissionState = radio.startTransmit(longPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
// flag to indicate that a packet was sent
|
|
||||||
volatile bool transmittedFlag = false;
|
|
||||||
|
|
||||||
// disable interrupt when it's not needed
|
// disable interrupt when it's not needed
|
||||||
volatile bool enableInterrupt = true;
|
volatile bool enableInterrupt = true;
|
||||||
|
|
||||||
bool isFifoEmpty = false;
|
// flag to indicate we can keep adding more bytes to FIFO
|
||||||
|
volatile bool fifoEmpty = false;
|
||||||
|
|
||||||
|
// flag to indicate that a packet was sent
|
||||||
|
bool transmittedFlag = false;
|
||||||
|
|
||||||
// how many bytes are there in total
|
// how many bytes are there in total
|
||||||
volatile int totalLength = longPacket.length();
|
int totalLength = longPacket.length();
|
||||||
|
|
||||||
// counter to keep track of how many bytes still need to be sent
|
// counter to keep track of how many bytes still need to be sent
|
||||||
volatile int remLength = totalLength;
|
int remLength = totalLength;
|
||||||
|
|
||||||
// this function is called when the radio transmit buffer
|
// this function is called when the radio transmit buffer
|
||||||
// is empty and ready to be refilled
|
// is empty and ready to be refilled
|
||||||
|
@ -106,25 +107,31 @@ void fifoAdd(void) {
|
||||||
if(!enableInterrupt) {
|
if(!enableInterrupt) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
isFifoEmpty = true;
|
|
||||||
|
// we can send more bytes
|
||||||
|
fifoEmpty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
if (isFifoEmpty) {
|
if(fifoEmpty) {
|
||||||
enableInterrupt = false;
|
|
||||||
// add more bytes to the transmit buffer
|
|
||||||
uint8_t* txBuffPtr = (uint8_t*)longPacket.c_str();
|
|
||||||
transmittedFlag = radio.fifoAdd(txBuffPtr, totalLength, &remLength);
|
|
||||||
enableInterrupt = true;
|
|
||||||
isFifoEmpty = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if the previous transmission finished
|
|
||||||
if(transmittedFlag) {
|
|
||||||
// disable the interrupt service routine while
|
// disable the interrupt service routine while
|
||||||
// processing the data
|
// processing the data
|
||||||
enableInterrupt = false;
|
enableInterrupt = false;
|
||||||
|
|
||||||
|
// reset flag
|
||||||
|
fifoEmpty = false;
|
||||||
|
|
||||||
|
// add more bytes to the transmit buffer
|
||||||
|
uint8_t* txBuffPtr = (uint8_t*)longPacket.c_str();
|
||||||
|
transmittedFlag = radio.fifoAdd(txBuffPtr, totalLength, &remLength);
|
||||||
|
|
||||||
|
// we're ready to send more packets,
|
||||||
|
// enable interrupt service routine
|
||||||
|
enableInterrupt = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if the previous transmission finished
|
||||||
|
if(transmittedFlag) {
|
||||||
// reset flag
|
// reset flag
|
||||||
transmittedFlag = false;
|
transmittedFlag = false;
|
||||||
|
|
||||||
|
@ -156,9 +163,5 @@ void loop() {
|
||||||
// send another one
|
// send another one
|
||||||
Serial.print(F("[SX1278] Sending another long packet ... "));
|
Serial.print(F("[SX1278] Sending another long packet ... "));
|
||||||
transmissionState = radio.startTransmit(longPacket);
|
transmissionState = radio.startTransmit(longPacket);
|
||||||
|
|
||||||
// we're ready to send more packets,
|
|
||||||
// enable interrupt service routine
|
|
||||||
enableInterrupt = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue