Skip to content

Commit 4205430

Browse files
committed
Update rak example
1 parent ecc0bd3 commit 4205430

3 files changed

Lines changed: 24 additions & 5 deletions

File tree

examples/rak811_gps/.vscode/extensions.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,8 @@
33
// for the documentation about the extensions.json format
44
"recommendations": [
55
"platformio.platformio-ide"
6+
],
7+
"unwantedRecommendations": [
8+
"ms-vscode.cpptools-extension-pack"
69
]
710
}

examples/rak811_gps/platformio.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ debug_tool = stlink
2222

2323
monitor_port = COM3
2424
monitor_speed = 115200
25+
monitor_filters = time
2526

2627
build_flags = -O3 -Wall -Wextra -DENABLE_SAVE_RESTORE
2728

examples/rak811_gps/src/main.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ constexpr uint32_t TX_INTERVAL = 140;
2323

2424
constexpr unsigned int BAUDRATE = 115200;
2525

26-
constexpr uint32_t magic_constant = 0x5157;
27-
uint32_t pauseBatt = 345; // centiVolt
26+
constexpr uint32_t magic_constant = 0x5117;
27+
uint32_t pauseBatt = 340; // centiVolt
2828

2929
class EEPromStore : public StoringAbtract {
3030
private:
@@ -86,6 +86,8 @@ void saveState() {
8686
digitalWrite(LED2, HIGH);
8787
}
8888

89+
uint nbPacketSent = 0;
90+
8991
void onEvent(EventType ev) {
9092
switch (ev) {
9193
case EventType::JOINING:
@@ -114,6 +116,10 @@ void onEvent(EventType ev) {
114116
}
115117
}
116118
}
119+
nbPacketSent++;
120+
if (nbPacketSent % 32 == 0) {
121+
saveState();
122+
}
117123
break;
118124
default:
119125
PRINT_DEBUG(2, F("Other"));
@@ -159,6 +165,7 @@ void emptyGpsBuffer() {
159165

160166
int32_t old_latitude = 0;
161167
int32_t old_longitude = 0;
168+
int32_t nb_ignored = 0;
162169

163170
void do_send(OsDeltaTime to_wait) {
164171
if (LMIC.getTxRxFlags().test(TxRxStatus::NEED_BATTERY_LEVEL)) {
@@ -193,10 +200,16 @@ void do_send(OsDeltaTime to_wait) {
193200
if (std::abs(latitude - old_latitude) < 1000 &&
194201
std::abs(longitude - old_longitude) < 1000) {
195202
PRINT_DEBUG(1, F("GPS position not changed"));
196-
nextSendEpoch = rtc.getEpoch() + TX_INTERVAL;
197-
return;
203+
nb_ignored++;
204+
if (nb_ignored < 10) {
205+
PRINT_DEBUG(1, F("GPS position not changed skip"));
206+
nextSendEpoch = rtc.getEpoch() + TX_INTERVAL;
207+
return;
208+
}
198209
}
199210

211+
nb_ignored = 0;
212+
200213
old_latitude = latitude;
201214
old_longitude = longitude;
202215
constexpr int64_t coorfactor = 10000000;
@@ -306,6 +319,7 @@ void setup() {
306319
LMIC.loadStateWithoutTimeData(store);
307320
digitalWrite(LED2, HIGH);
308321
LMIC.setDrTx(5);
322+
LMIC.clrTxData();
309323
}
310324

311325
// first send
@@ -315,6 +329,7 @@ void setup() {
315329
PRINT_DEBUG(1, F("Starting ."));
316330
delay(1000);
317331
}
332+
318333
}
319334

320335
void goToSleep(uint32_t nb_sec_to_sleep) {
@@ -356,7 +371,6 @@ void sleep_if_battery_too_low() {
356371
}
357372

358373
void loop() {
359-
360374
sleep_if_battery_too_low();
361375

362376
OsDeltaTime to_wait = LMIC.run();
@@ -373,6 +387,7 @@ void loop() {
373387
}
374388

375389
if (LMIC.getOpMode().test(OpState::TXDATA)) {
390+
PRINT_DEBUG(1, F("Refresh data ."));
376391
// refresh data
377392
do_send(to_wait);
378393
return;

0 commit comments

Comments
 (0)