File tree 3 files changed +24
-21
lines changed
examples/LoRaSenderNonBlocking 3 files changed +24
-21
lines changed Original file line number Diff line number Diff line change @@ -21,20 +21,22 @@ void setup()
21
21
22
22
void loop ()
23
23
{
24
- if (LoRa.isTransmitting () )
24
+ while (LoRa.beginPacket () == 0 )
25
25
{
26
26
delay (100 );
27
27
Serial.print (' w' );
28
- return ;
29
28
}
29
+
30
30
Serial.print (" \n Sending packet: " );
31
31
Serial.println (counter);
32
32
33
33
// send packet
34
34
LoRa.beginPacket ();
35
35
LoRa.print (" hello " );
36
36
LoRa.print (counter);
37
- LoRa.endPacketasync ();
37
+
38
+ // send using async API
39
+ LoRa.endPacket (true );
38
40
39
41
counter++;
40
42
}
Original file line number Diff line number Diff line change @@ -122,6 +122,9 @@ void LoRaClass::end()
122
122
123
123
int LoRaClass::beginPacket (int implicitHeader)
124
124
{
125
+ if (isTransmitting)
126
+ return 0 ;
127
+
125
128
// put in standby mode
126
129
idle ();
127
130
@@ -138,26 +141,25 @@ int LoRaClass::beginPacket(int implicitHeader)
138
141
return 1 ;
139
142
}
140
143
141
- int LoRaClass::endPacket ()
144
+ int LoRaClass::endPacket (bool async )
142
145
{
143
146
// put in TX mode
144
147
writeRegister (REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_TX);
145
148
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
- }
154
-
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 );
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 ) {
157
+ yield ();
158
+ }
159
+ // clear IRQ's
160
+ writeRegister (REG_IRQ_FLAGS, IRQ_TX_DONE_MASK);
161
+ return 1 ;
162
+ }
161
163
}
162
164
163
165
bool LoRaClass::isTransmitting ()
Original file line number Diff line number Diff line change @@ -22,8 +22,7 @@ class LoRaClass : public Stream {
22
22
void end ();
23
23
24
24
int beginPacket (int implicitHeader = false );
25
- int endPacket ();
26
- void endPacketasync ();
25
+ int endPacket (bool async = false );
27
26
bool isTransmitting ();
28
27
29
28
int parsePacket (int size = 0 );
You can’t perform that action at this time.
0 commit comments