Skip to content

Commit f83d6e3

Browse files
small refactoring
1 parent e2dc726 commit f83d6e3

4 files changed

Lines changed: 71 additions & 65 deletions

File tree

test/at_app/main/main.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,13 @@ static int extra_at_handler_impl(sx127x *device, const char *input, char *output
189189
}
190190
reset();
191191
sx127x_reset(device);
192+
// clear any received frames
193+
for (size_t i = 0; i < at_util_vector_size(frames); i++) {
194+
sx127x_frame_t *cur_frame = NULL;
195+
at_util_vector_get(i, (void *) &cur_frame, frames);
196+
sx127x_util_frame_destroy(cur_frame);
197+
}
198+
at_util_vector_clear(frames);
192199
snprintf(output, output_len, "OK\r\n");
193200
return SX127X_OK;
194201
}
@@ -225,7 +232,6 @@ static int extra_at_handler_impl(sx127x *device, const char *input, char *output
225232
char message[(MAX_PACKET_SIZE_FSK_FIXED + 1) * 2];
226233
char formatted[(MAX_PACKET_SIZE_FSK_FIXED + 512) * 2];
227234
size_t formatted_length = (MAX_PACKET_SIZE_FSK_FIXED + 512) * 2;
228-
//FIXME lock access
229235
for (size_t i = 0; i < at_util_vector_size(frames); i++) {
230236
sx127x_frame_t *cur_frame = NULL;
231237
at_util_vector_get(i, (void *) &cur_frame, frames);

test/test_app/src/test/java/com/leosatdata/sx127x/FskTest.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,9 @@ public static void init() {
2424

2525
String freqStr = System.getProperty("freq");
2626
if (freqStr == null) {
27-
freqStr = "868200000";
27+
freqStr = "434200000";
2828
}
2929
frequency = Long.valueOf(freqStr);
30-
OpMode req = new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK);
31-
rx.sx127x_set_opmod(req);
32-
rx.sx127x_set_frequency(frequency);
33-
tx.sx127x_set_opmod(req);
34-
tx.sx127x_set_frequency(frequency);
3530
}
3631

3732
@Test
@@ -43,7 +38,6 @@ public void testBeacons() {
4338
rx.sx127x_fsk_ook_set_packet_format(new PacketFormat(sx127x_packet_format_t.SX127X_FIXED, message.length() / 2));
4439
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_FSK));
4540

46-
tx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK));
4741
tx.sx127x_fsk_ook_set_packet_format(new PacketFormat(sx127x_packet_format_t.SX127X_FIXED, message.length() / 2));
4842
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
4943
tx.sx127x_fsk_ook_tx_start_beacon(message, beaconInterval);
@@ -81,14 +75,12 @@ public void testFixed() {
8175

8276
@Test
8377
public void testMaxBaud() {
84-
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK));
8578
rx.sx127x_fsk_ook_set_bitrate(300000);
8679
rx.sx127x_fsk_set_fdev(100000);
8780
rx.sx127x_fsk_ook_rx_set_bandwidth(170000);
8881
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_FSK));
8982

9083
String message = LoraTest.createRandom(6);
91-
tx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK));
9284
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
9385
tx.sx127x_fsk_ook_set_bitrate(300000);
9486
tx.sx127x_fsk_set_fdev(100000);
@@ -104,11 +96,9 @@ public void testFiltered() {
10496
int nodeAddress = 0xbe;
10597
int broadcastAddress = 0xfe;
10698

107-
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK));
10899
rx.sx127x_fsk_ook_set_address_filtering(new AddressConfig(sx127x_address_filtering_t.SX127X_FILTER_NODE_AND_BROADCAST, nodeAddress, broadcastAddress));
109100
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_FSK));
110101

111-
tx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK));
112102
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
113103

114104
String m1 = "01CAFE";
@@ -135,7 +125,6 @@ public void testVariableLength() {
135125
rx.sx127x_fsk_ook_set_packet_format(new PacketFormat(sx127x_packet_format_t.SX127X_VARIABLE, 255));
136126
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_FSK));
137127

138-
tx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK));
139128
// it looks like some boards don't have RFO pin connected to the antenna
140129
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
141130
tx.sx127x_fsk_ook_set_packet_format(new PacketFormat(sx127x_packet_format_t.SX127X_VARIABLE, 255));
@@ -159,7 +148,6 @@ public void testVariableLength() {
159148

160149
@Test
161150
public void testReset() {
162-
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK));
163151
rx.sx127x_set_frequency(frequency);
164152
assertEquals(frequency, rx.sx127x_get_frequency());
165153
rx.reset();
@@ -250,6 +238,11 @@ public void start() {
250238
rx.resetUart();
251239
tx.reset();
252240
tx.resetUart();
241+
OpMode req = new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_FSK);
242+
rx.sx127x_set_opmod(req);
243+
rx.sx127x_set_frequency(frequency);
244+
tx.sx127x_set_opmod(req);
245+
tx.sx127x_set_frequency(frequency);
253246
}
254247

255248
@AfterClass

test/test_app/src/test/java/com/leosatdata/sx127x/LoraTest.java

Lines changed: 52 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import java.util.ArrayList;
88
import java.util.List;
9+
import java.util.Random;
910

1011
import org.junit.AfterClass;
1112
import org.junit.Before;
@@ -27,14 +28,9 @@ public static void init() {
2728

2829
String freqStr = System.getProperty("freq");
2930
if (freqStr == null) {
30-
freqStr = "868200000";
31+
freqStr = "434200000";
3132
}
3233
frequency = Long.valueOf(freqStr);
33-
OpMode req = new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA);
34-
rx.sx127x_set_opmod(req);
35-
rx.sx127x_set_frequency(frequency);
36-
tx.sx127x_set_opmod(req);
37-
tx.sx127x_set_frequency(frequency);
3834
}
3935

4036
@Test
@@ -100,7 +96,7 @@ public void testRegisters() {
10096
assertEquals(txHeader, rx.sx127x_lora_tx_get_explicit_header());
10197

10298
rx.sx127x_lora_set_ppm_offset(4000);
103-
assertEquals(3655, rx.sx127x_lora_get_ppm_offset());
99+
assertEquals(3656, rx.sx127x_lora_get_ppm_offset());
104100

105101
gain = 0;
106102
rx.sx127x_rx_set_lna_gain(gain);
@@ -113,8 +109,6 @@ public void testRegisters() {
113109

114110
@Test
115111
public void testReset() {
116-
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA));
117-
rx.sx127x_set_frequency(frequency);
118112
assertEquals(frequency, rx.sx127x_get_frequency());
119113
rx.reset();
120114
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA));
@@ -131,28 +125,38 @@ public void testReset() {
131125

132126
@Test
133127
public void testExplicitHeader() {
134-
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA));
128+
String message = createRandom(2);
135129
rx.sx127x_lora_set_implicit_header(null);
136130
rx.sx127x_lora_reset_fifo();
137131
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_LORA));
138132

139-
sendExplicitMessage();
133+
sx127x_tx_header_t txHeader = new sx127x_tx_header_t(true, sx127x_cr_t.SX127X_CR_4_5);
134+
tx.sx127x_lora_tx_set_explicit_header(txHeader);
135+
// it looks like some boards don't have RFO pin connected to the antenna
136+
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
137+
tx.sx127x_lora_reset_fifo();
138+
tx.sx127x_lora_tx_set_for_transmission(message);
139+
tx.tx(sx127x_modulation_t.SX127X_MODULATION_LORA);
140+
141+
LoraTest.assertFrames(rx, message);
140142

141-
LoraTest.assertFrames(rx, "CAFE");
143+
// set is actually set, not append
144+
tx.sx127x_lora_tx_set_for_transmission(message);
145+
tx.sx127x_lora_tx_set_for_transmission(message);
146+
tx.tx(sx127x_modulation_t.SX127X_MODULATION_LORA);
147+
148+
LoraTest.assertFrames(rx, message);
142149
}
143150

144151
@Test
145152
public void testImplicitHeader() {
146-
OpMode req = new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA);
147-
String message = "CAFE";
153+
String message = createRandom(2);
148154
sx127x_implicit_header_t header = new sx127x_implicit_header_t(message.length() / 2, true, sx127x_cr_t.SX127X_CR_4_5);
149155

150-
rx.sx127x_set_opmod(req);
151156
rx.sx127x_lora_set_implicit_header(header);
152157
rx.sx127x_lora_reset_fifo();
153158
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_LORA));
154159

155-
tx.sx127x_set_opmod(req);
156160
tx.sx127x_lora_set_implicit_header(header);
157161
// it looks like some boards don't have RFO pin connected to the antenna
158162
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
@@ -169,47 +173,56 @@ public void testFhss() {
169173
frequencies[0] = frequency + 500000;
170174
frequencies[1] = frequency + 1000000;
171175
frequencies[2] = frequency;
172-
OpMode req = new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA);
173-
174-
rx.sx127x_set_opmod(req);
175-
rx.sx127x_lora_set_implicit_header(null);
176+
String message = createRandom(2);
176177
rx.sx127x_lora_reset_fifo();
177178
rx.sx127x_lora_set_frequency_hopping(new FhssConfig(5, frequencies));
178179
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_LORA));
179180

180-
tx.sx127x_set_opmod(req);
181-
tx.sx127x_lora_set_implicit_header(null);
182181
// it looks like some boards don't have RFO pin connected to the antenna
183182
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
184183
tx.sx127x_lora_reset_fifo();
184+
sx127x_tx_header_t txHeader = new sx127x_tx_header_t(true, sx127x_cr_t.SX127X_CR_4_5);
185+
tx.sx127x_lora_tx_set_explicit_header(txHeader);
185186
tx.sx127x_lora_set_frequency_hopping(new FhssConfig(5, frequencies));
186-
tx.sx127x_lora_tx_set_for_transmission("CAFE");
187+
tx.sx127x_lora_tx_set_for_transmission(message);
187188
tx.tx(sx127x_modulation_t.SX127X_MODULATION_LORA);
188189

189-
LoraTest.assertFrames(rx, "CAFE");
190+
LoraTest.assertFrames(rx, message);
190191
}
191192

192193
@Test
193194
public void testCad() {
194-
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA));
195+
String message = createRandom(2);
195196
rx.sx127x_lora_set_implicit_header(null);
196197
rx.sx127x_lora_reset_fifo();
197198
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_CAD, sx127x_modulation_t.SX127X_MODULATION_LORA));
198199

199-
sendExplicitMessage();
200+
sx127x_tx_header_t txHeader = new sx127x_tx_header_t(true, sx127x_cr_t.SX127X_CR_4_5);
201+
tx.sx127x_lora_tx_set_explicit_header(txHeader);
202+
// it looks like some boards don't have RFO pin connected to the antenna
203+
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
204+
tx.sx127x_lora_reset_fifo();
205+
tx.sx127x_lora_tx_set_for_transmission(message);
206+
tx.tx(sx127x_modulation_t.SX127X_MODULATION_LORA);
200207

201-
LoraTest.assertFrames(rx, "CAFE");
208+
LoraTest.assertFrames(rx, message);
202209
}
203210

204211
@Test
205212
public void testDeepSleep() {
206-
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA));
213+
String message = createRandom(2);
207214
rx.sx127x_lora_set_implicit_header(null);
208215
rx.sx127x_lora_reset_fifo();
209216
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_LORA));
210217
rx.deepSleep();
211218

212-
sendExplicitMessage();
219+
sx127x_tx_header_t txHeader = new sx127x_tx_header_t(true, sx127x_cr_t.SX127X_CR_4_5);
220+
tx.sx127x_lora_tx_set_explicit_header(txHeader);
221+
// it looks like some boards don't have RFO pin connected to the antenna
222+
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
223+
tx.sx127x_lora_reset_fifo();
224+
tx.sx127x_lora_tx_set_for_transmission(message);
225+
tx.tx(sx127x_modulation_t.SX127X_MODULATION_LORA);
213226

214227
// rx need some time to wake up
215228
int attempts = 3;
@@ -228,7 +241,7 @@ public void testDeepSleep() {
228241
}
229242
}
230243

231-
LoraTest.assertFrames(rx, "CAFE");
244+
LoraTest.assertFrames(rx, message);
232245
}
233246

234247
@Before
@@ -237,6 +250,12 @@ public void start() {
237250
rx.resetUart();
238251
tx.reset();
239252
tx.resetUart();
253+
// make sure communication is happening on the configured frequency
254+
OpMode req = new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA);
255+
rx.sx127x_set_opmod(req);
256+
rx.sx127x_set_frequency(frequency);
257+
tx.sx127x_set_opmod(req);
258+
tx.sx127x_set_frequency(frequency);
240259
}
241260

242261
@AfterClass
@@ -249,17 +268,6 @@ public static void destroy() {
249268
}
250269
}
251270

252-
private static void sendExplicitMessage() {
253-
tx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_LORA));
254-
sx127x_tx_header_t txHeader = new sx127x_tx_header_t(true, sx127x_cr_t.SX127X_CR_4_5);
255-
tx.sx127x_lora_tx_set_explicit_header(txHeader);
256-
// it looks like some boards don't have RFO pin connected to the antenna
257-
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
258-
tx.sx127x_lora_reset_fifo();
259-
tx.sx127x_lora_tx_set_for_transmission("CAFE");
260-
tx.tx(sx127x_modulation_t.SX127X_MODULATION_LORA);
261-
}
262-
263271
public static void assertFrames(Sx127x device, String... framesStr) {
264272
List<sx127x_frame_t> frames = LoraTest.pullFrames(device, framesStr.length);
265273
assertEquals(framesStr.length, frames.size());
@@ -285,11 +293,12 @@ public static List<sx127x_frame_t> pullFrames(Sx127x device, int expectedCount)
285293
}
286294
return result;
287295
}
288-
296+
289297
public static String createRandom(int length) {
290298
StringBuilder result = new StringBuilder();
299+
Random r = new Random(System.currentTimeMillis());
291300
for (int i = 0; i < length; i++) {
292-
result.append(String.format("%02x", i % 255));
301+
result.append(String.format("%02x", (byte) (r.nextInt() % 255)));
293302
}
294303
return result.toString().toUpperCase();
295304
}

test/test_app/src/test/java/com/leosatdata/sx127x/OokTest.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,9 @@ public static void init() {
2222

2323
String freqStr = System.getProperty("freq");
2424
if (freqStr == null) {
25-
freqStr = "868200000";
25+
freqStr = "434200000";
2626
}
2727
frequency = Long.valueOf(freqStr);
28-
OpMode req = new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_OOK);
29-
rx.sx127x_set_opmod(req);
30-
rx.sx127x_set_frequency(frequency);
31-
tx.sx127x_set_opmod(req);
32-
tx.sx127x_set_frequency(frequency);
3328
}
3429

3530
@Test
@@ -59,7 +54,6 @@ public void testRegisters() {
5954

6055
@Test
6156
public void testReset() {
62-
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_OOK));
6357
rx.sx127x_set_frequency(frequency);
6458
assertEquals(frequency, rx.sx127x_get_frequency());
6559
rx.reset();
@@ -75,7 +69,6 @@ public void testVariableLength() {
7569
rx.sx127x_fsk_ook_set_packet_format(new PacketFormat(sx127x_packet_format_t.SX127X_VARIABLE, 255));
7670
rx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_RX_CONT, sx127x_modulation_t.SX127X_MODULATION_OOK));
7771

78-
tx.sx127x_set_opmod(new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_OOK));
7972
// it looks like some boards don't have RFO pin connected to the antenna
8073
tx.sx127x_tx_set_pa_config(new PaConfig(sx127x_pa_pin_t.SX127X_PA_PIN_BOOST, 4));
8174
tx.sx127x_fsk_ook_set_packet_format(new PacketFormat(sx127x_packet_format_t.SX127X_VARIABLE, 255));
@@ -97,6 +90,11 @@ public void start() {
9790
rx.resetUart();
9891
tx.reset();
9992
tx.resetUart();
93+
OpMode req = new OpMode(sx127x_mode_t.SX127X_MODE_SLEEP, sx127x_modulation_t.SX127X_MODULATION_OOK);
94+
rx.sx127x_set_opmod(req);
95+
rx.sx127x_set_frequency(frequency);
96+
tx.sx127x_set_opmod(req);
97+
tx.sx127x_set_frequency(frequency);
10098
}
10199

102100
@AfterClass

0 commit comments

Comments
 (0)