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) {
|
if (lora_receive(pkt, 0) && pkt.protocol_version == PROTOCOL_VERSION && pkt.payload_type == PayloadType::MeterData) {
|
||||||
uint8_t decompressed[256];
|
uint8_t decompressed[256];
|
||||||
size_t decompressed_len = 0;
|
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';
|
decompressed[decompressed_len] = '\0';
|
||||||
MeterData data = {};
|
MeterData data = {};
|
||||||
if (jsonToMeterData(String(reinterpret_cast<const char *>(decompressed)), data)) {
|
if (jsonToMeterData(String(reinterpret_cast<const char *>(decompressed)), data)) {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ void power_sender_init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void power_receiver_init() {
|
void power_receiver_init() {
|
||||||
|
btStop();
|
||||||
analogReadResolution(12);
|
analogReadResolution(12);
|
||||||
pinMode(PIN_BAT_ADC, INPUT);
|
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];
|
uint8_t decompressed[160];
|
||||||
size_t decompressed_len = 0;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
decompressed[decompressed_len] = '\0';
|
decompressed[decompressed_len] = '\0';
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#include "wifi_manager.h"
|
#include "wifi_manager.h"
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#include <esp_wifi.h>
|
||||||
|
|
||||||
static Preferences prefs;
|
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) {
|
while (WiFi.status() != WL_CONNECTED && millis() - start < timeout_ms) {
|
||||||
delay(200);
|
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) {
|
void wifi_start_ap(const char *ap_ssid, const char *ap_pass) {
|
||||||
|
|||||||
Reference in New Issue
Block a user