Skip to content

Commit 8806e51

Browse files
Lang, Samueluniversam1
Lang, Samuel
authored andcommitted
lastchanges
1 parent caa21c2 commit 8806e51

File tree

3 files changed

+23
-21
lines changed

3 files changed

+23
-21
lines changed

examples/LoRaSenderNonBlocking/LoRaSenderNonBlocking.ino

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,22 @@ void setup()
2121

2222
void loop()
2323
{
24-
if (LoRa.isTransmitting())
24+
while (LoRa.beginPacket() == 0)
2525
{
2626
delay(100);
2727
Serial.print('w');
28-
return;
2928
}
29+
3030
Serial.print("\nSending packet: ");
3131
Serial.println(counter);
3232

3333
// send packet
3434
LoRa.beginPacket();
3535
LoRa.print("hello ");
3636
LoRa.print(counter);
37-
LoRa.endPacketasync();
37+
38+
// send using async API
39+
LoRa.endPacket(true);
3840

3941
counter++;
4042
}

src/LoRa.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ int LoRaClass::begin(long frequency)
100100
writeRegister(REG_LNA, readRegister(REG_LNA) | 0x03);
101101

102102
// set auto AGC
103-
writeRegister(REG_MODEM_CONFIG_3, 0x04);
103+
writeRegister(REG_MODEM_CONFIG_3, 0x04 | 0x08);
104104

105105
// set output power to 17 dBm
106106
setTxPower(17);
@@ -122,6 +122,9 @@ void LoRaClass::end()
122122

123123
int LoRaClass::beginPacket(int implicitHeader)
124124
{
125+
if (isTransmitting)
126+
return 0;
127+
125128
// put in standby mode
126129
idle();
127130

@@ -138,26 +141,24 @@ int LoRaClass::beginPacket(int implicitHeader)
138141
return 1;
139142
}
140143

141-
int LoRaClass::endPacket()
144+
int LoRaClass::endPacket(bool async)
142145
{
143146
// put in TX mode
144147
writeRegister(REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_TX);
145148

146-
// wait for TX done
147-
while((readRegister(REG_IRQ_FLAGS) & IRQ_TX_DONE_MASK) == 0);
148-
149-
// clear IRQ's
150-
writeRegister(REG_IRQ_FLAGS, IRQ_TX_DONE_MASK);
151-
152-
return 1;
153-
}
149+
if (async)
150+
{
151+
// grace time is required for the radio
152+
delayMicroseconds(150);
153+
return 0;
154+
} else {
155+
// wait for TX done
156+
while((readRegister(REG_IRQ_FLAGS) & IRQ_TX_DONE_MASK) == 0);
154157

155-
void LoRaClass::endPacketasync()
156-
{
157-
// put in TX mode
158-
writeRegister(REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_TX);
159-
// apparently this grace time is required for the radio
160-
delayMicroseconds(150);
158+
// clear IRQ's
159+
writeRegister(REG_IRQ_FLAGS, IRQ_TX_DONE_MASK);
160+
return 1;
161+
}
161162
}
162163

163164
bool LoRaClass::isTransmitting()

src/LoRa.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ class LoRaClass : public Stream {
2222
void end();
2323

2424
int beginPacket(int implicitHeader = false);
25-
int endPacket();
26-
void endPacketasync();
25+
int endPacket(bool async = false);
2726
bool isTransmitting();
2827

2928
int parsePacket(int size = 0);

0 commit comments

Comments
 (0)