Improve power saving and payload safety
This commit is contained in:
@@ -134,7 +134,10 @@ static void receiver_loop() {
|
||||
if (lora_receive(pkt, 0) && pkt.protocol_version == PROTOCOL_VERSION && pkt.payload_type == PayloadType::MeterData) {
|
||||
uint8_t decompressed[256];
|
||||
size_t decompressed_len = 0;
|
||||
if (decompressBuffer(pkt.payload, pkt.payload_len, decompressed, sizeof(decompressed), decompressed_len)) {
|
||||
if (decompressBuffer(pkt.payload, pkt.payload_len, decompressed, sizeof(decompressed) - 1, decompressed_len)) {
|
||||
if (decompressed_len >= sizeof(decompressed)) {
|
||||
return;
|
||||
}
|
||||
decompressed[decompressed_len] = '\0';
|
||||
MeterData data = {};
|
||||
if (jsonToMeterData(String(reinterpret_cast<const char *>(decompressed)), data)) {
|
||||
|
||||
@@ -17,6 +17,7 @@ void power_sender_init() {
|
||||
}
|
||||
|
||||
void power_receiver_init() {
|
||||
btStop();
|
||||
analogReadResolution(12);
|
||||
pinMode(PIN_BAT_ADC, INPUT);
|
||||
}
|
||||
|
||||
@@ -95,7 +95,10 @@ void test_receiver_loop(SenderStatus *statuses, uint8_t count, uint16_t self_sho
|
||||
|
||||
uint8_t decompressed[160];
|
||||
size_t decompressed_len = 0;
|
||||
if (!decompressBuffer(pkt.payload, pkt.payload_len, decompressed, sizeof(decompressed), decompressed_len)) {
|
||||
if (!decompressBuffer(pkt.payload, pkt.payload_len, decompressed, sizeof(decompressed) - 1, decompressed_len)) {
|
||||
return;
|
||||
}
|
||||
if (decompressed_len >= sizeof(decompressed)) {
|
||||
return;
|
||||
}
|
||||
decompressed[decompressed_len] = '\0';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "wifi_manager.h"
|
||||
#include <WiFi.h>
|
||||
#include <esp_wifi.h>
|
||||
|
||||
static Preferences prefs;
|
||||
|
||||
@@ -43,7 +44,11 @@ bool wifi_connect_sta(const WifiMqttConfig &config, uint32_t timeout_ms) {
|
||||
while (WiFi.status() != WL_CONNECTED && millis() - start < timeout_ms) {
|
||||
delay(200);
|
||||
}
|
||||
return WiFi.status() == WL_CONNECTED;
|
||||
bool connected = WiFi.status() == WL_CONNECTED;
|
||||
if (connected) {
|
||||
esp_wifi_set_ps(WIFI_PS_MIN_MODEM);
|
||||
}
|
||||
return connected;
|
||||
}
|
||||
|
||||
void wifi_start_ap(const char *ap_ssid, const char *ap_pass) {
|
||||
|
||||
Reference in New Issue
Block a user