Extend memory to fetch all eventlog entries

This commit is contained in:
Thomas Basler 2022-09-25 16:53:57 +02:00
parent 290932519c
commit 68fc0c2547
4 changed files with 7 additions and 6 deletions

View File

@ -6,7 +6,7 @@ AlarmDataCommand::AlarmDataCommand(uint64_t target_address, uint64_t router_addr
{ {
setTime(time); setTime(time);
setDataType(0x11); setDataType(0x11);
setTimeout(400); setTimeout(500);
} }
bool AlarmDataCommand::handleResponse(InverterAbstract* inverter, fragment_t fragment[], uint8_t max_fragment_id) bool AlarmDataCommand::handleResponse(InverterAbstract* inverter, fragment_t fragment[], uint8_t max_fragment_id)

View File

@ -18,7 +18,7 @@ enum {
FRAGMENT_OK = 0 FRAGMENT_OK = 0
}; };
#define MAX_RF_FRAGMENT_COUNT 12 #define MAX_RF_FRAGMENT_COUNT 13
#define MAX_RETRANSMIT_COUNT 5 #define MAX_RETRANSMIT_COUNT 5
class CommandAbstract; class CommandAbstract;

View File

@ -3,14 +3,14 @@
void AlarmLogParser::clearBuffer() void AlarmLogParser::clearBuffer()
{ {
memset(_payloadAlarmLog, 0, ALARM_LOG_ENTRY_COUNT * ALARM_LOG_ENTRY_SIZE); memset(_payloadAlarmLog, 0, ALARM_LOG_PAYLOAD_SIZE);
_alarmLogLength = 0; _alarmLogLength = 0;
} }
void AlarmLogParser::appendFragment(uint8_t offset, uint8_t* payload, uint8_t len) void AlarmLogParser::appendFragment(uint8_t offset, uint8_t* payload, uint8_t len)
{ {
if (offset + len > (ALARM_LOG_ENTRY_COUNT * ALARM_LOG_ENTRY_SIZE)) { if (offset + len > ALARM_LOG_PAYLOAD_SIZE) {
Serial.printf("FATAL: (%s, %d) stats packet too large for buffer\n", __FILE__, __LINE__); Serial.printf("FATAL: (%s, %d) stats packet too large for buffer (%d > %d)\n", __FILE__, __LINE__, offset + len, ALARM_LOG_PAYLOAD_SIZE);
return; return;
} }
memcpy(&_payloadAlarmLog[offset], payload, len); memcpy(&_payloadAlarmLog[offset], payload, len);

View File

@ -5,6 +5,7 @@
#define ALARM_LOG_ENTRY_COUNT 15 #define ALARM_LOG_ENTRY_COUNT 15
#define ALARM_LOG_ENTRY_SIZE 12 #define ALARM_LOG_ENTRY_SIZE 12
#define ALARM_LOG_PAYLOAD_SIZE (ALARM_LOG_ENTRY_COUNT * ALARM_LOG_ENTRY_SIZE + 4)
struct AlarmLogEntry_t { struct AlarmLogEntry_t {
uint16_t MessageId; uint16_t MessageId;
@ -24,6 +25,6 @@ public:
private: private:
static int getTimezoneOffset(); static int getTimezoneOffset();
uint8_t _payloadAlarmLog[ALARM_LOG_ENTRY_SIZE * ALARM_LOG_ENTRY_COUNT]; uint8_t _payloadAlarmLog[ALARM_LOG_PAYLOAD_SIZE];
uint8_t _alarmLogLength; uint8_t _alarmLogLength;
}; };