start refactoring transmitting
This commit is contained in:
parent
e1640be4c0
commit
8fe627e6b0
@ -28,6 +28,7 @@ typedef enum {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t mbusRequestCnt;
|
uint32_t mbusRequestCnt;
|
||||||
uint32_t mbusErrorCnt;
|
uint32_t mbusErrorCnt;
|
||||||
|
uint32_t uartOctetCnt;
|
||||||
uint32_t uartOverrunCnt;
|
uint32_t uartOverrunCnt;
|
||||||
uint32_t uartFramingErrCnt;
|
uint32_t uartFramingErrCnt;
|
||||||
uint32_t uartParityErrCnt;
|
uint32_t uartParityErrCnt;
|
||||||
|
@ -44,7 +44,7 @@ typedef struct {
|
|||||||
|
|
||||||
// clear statistics
|
// clear statistics
|
||||||
bool clearCmd(uint8_t argc, char **args) {
|
bool clearCmd(uint8_t argc, char **args) {
|
||||||
t_mbusCommStats zeroedStats = { .mbusRequestCnt = 0, .mbusErrorCnt = 0, .uartOverrunCnt = 0, .uartFramingErrCnt = 0, .uartParityErrCnt = 0 };
|
t_mbusCommStats zeroedStats = { .mbusRequestCnt = 0, .mbusErrorCnt = 0, .uartOctetCnt = 0, .uartOverrunCnt = 0, .uartFramingErrCnt = 0, .uartParityErrCnt = 0 };
|
||||||
mbusCommSetStats(zeroedStats);
|
mbusCommSetStats(zeroedStats);
|
||||||
coloredMsg(LOG_YELLOW, true, "ch cc global statistics cleared");
|
coloredMsg(LOG_YELLOW, true, "ch cc global statistics cleared");
|
||||||
return true;
|
return true;
|
||||||
@ -57,11 +57,12 @@ bool globalStatsCmd(uint8_t argc, char **args) {
|
|||||||
"Global statistics\n\r" \
|
"Global statistics\n\r" \
|
||||||
" Meterbus Requests: %ld\n\r" \
|
" Meterbus Requests: %ld\n\r" \
|
||||||
" Meterbus Errors: %ld\n\r" \
|
" Meterbus Errors: %ld\n\r" \
|
||||||
|
" UART Octets: %ld\n\r" \
|
||||||
" UART Overruns: %ld\n\r" \
|
" UART Overruns: %ld\n\r" \
|
||||||
" UART Framing Errs: %ld\n\r" \
|
" UART Framing Errs: %ld\n\r" \
|
||||||
" UART Parity Errs: %ld\n\r",
|
" UART Parity Errs: %ld\n\r",
|
||||||
stats->mbusRequestCnt, stats->mbusErrorCnt,
|
stats->mbusRequestCnt, stats->mbusErrorCnt,
|
||||||
stats->uartOverrunCnt, stats->uartFramingErrCnt, stats->uartParityErrCnt
|
stats->uartOctetCnt, stats->uartOverrunCnt, stats->uartFramingErrCnt, stats->uartParityErrCnt
|
||||||
);
|
);
|
||||||
send(CMD_SOCK, (uint8_t*)buf, strlen(buf));
|
send(CMD_SOCK, (uint8_t*)buf, strlen(buf));
|
||||||
return true;
|
return true;
|
||||||
|
@ -105,7 +105,7 @@ typedef struct {
|
|||||||
|
|
||||||
static t_mbusCommHandle mbusCommHandle = { .requestId = 0, .state = MBCS_IDLE, .retryCnt = 0, .cmd = 0, .addr = 0, .startTime = 0, .receiveCnt = 0, .waitForOctet = false };
|
static t_mbusCommHandle mbusCommHandle = { .requestId = 0, .state = MBCS_IDLE, .retryCnt = 0, .cmd = 0, .addr = 0, .startTime = 0, .receiveCnt = 0, .waitForOctet = false };
|
||||||
|
|
||||||
static t_mbusCommStats mbusCommStats = { .mbusRequestCnt = 0, .mbusErrorCnt = 0, .uartOverrunCnt = 0, .uartFramingErrCnt = 0, .uartParityErrCnt = 0 };
|
static t_mbusCommStats mbusCommStats = { .mbusRequestCnt = 0, .mbusErrorCnt = 0, .uartOctetCnt = 0, .uartOverrunCnt = 0, .uartFramingErrCnt = 0, .uartParityErrCnt = 0 };
|
||||||
|
|
||||||
static bool mbusCommEnabled = true;
|
static bool mbusCommEnabled = true;
|
||||||
|
|
||||||
@ -275,6 +275,7 @@ void mbusCommISR() {
|
|||||||
if ((isrflags & USART_SR_PE) != RESET) {
|
if ((isrflags & USART_SR_PE) != RESET) {
|
||||||
mbusCommStats.uartParityErrCnt += 1;
|
mbusCommStats.uartParityErrCnt += 1;
|
||||||
}
|
}
|
||||||
|
mbusCommStats.uartOctetCnt += 1;
|
||||||
// it is required to read the DR in any case here, not only when the buffer has space
|
// it is required to read the DR in any case here, not only when the buffer has space
|
||||||
// otherwise the interrupt flag won't be disabled, particularly important in case of
|
// otherwise the interrupt flag won't be disabled, particularly important in case of
|
||||||
// ORE
|
// ORE
|
||||||
|
@ -58,9 +58,9 @@ static void mqttStatusPublisher(void *handle) {
|
|||||||
|
|
||||||
char buf[256];
|
char buf[256];
|
||||||
uint32_t uptime = HAL_GetTick() / 1000;
|
uint32_t uptime = HAL_GetTick() / 1000;
|
||||||
snprintf(buf, sizeof(buf), "{\"uptime\":\"%ld\", \"runningHours\":\"%ld\", \"powerCycles\":\"%ld\", \"tasks\":\"%d\", \"requests\":\"%ld\", \"errors\":\"%ld\", \"overrun\":\"%ld\", \"framing\":\"%ld\", \"parity\":\"%ld\"}",
|
snprintf(buf, sizeof(buf), "{\"uptime\":\"%ld\", \"runningHours\":\"%ld\", \"powerCycles\":\"%ld\", \"tasks\":\"%d\", \"requests\":\"%ld\", \"errors\":\"%ld\", \"octets\":\"%ld\", \"overrun\":\"%ld\", \"framing\":\"%ld\", \"parity\":\"%ld\"}",
|
||||||
uptime, globalDeviceStats->totalRunningHours, globalDeviceStats->totalPowercycles, schTaskCnt(), mbusCommStats->mbusRequestCnt, mbusCommStats->mbusErrorCnt,
|
uptime, globalDeviceStats->totalRunningHours, globalDeviceStats->totalPowercycles, schTaskCnt(), mbusCommStats->mbusRequestCnt, mbusCommStats->mbusErrorCnt,
|
||||||
mbusCommStats->uartOverrunCnt, mbusCommStats->uartFramingErrCnt, mbusCommStats->uartParityErrCnt);
|
mbusCommStats->uartOctetCnt, mbusCommStats->uartOverrunCnt, mbusCommStats->uartFramingErrCnt, mbusCommStats->uartParityErrCnt);
|
||||||
bool res = publish(&mqttClient, StatusTopic, (const uint8_t*)buf, strlen(buf), false);
|
bool res = publish(&mqttClient, StatusTopic, (const uint8_t*)buf, strlen(buf), false);
|
||||||
coloredMsg(LOG_GREEN, false, "mqch, publish returned %d", res);
|
coloredMsg(LOG_GREEN, false, "mqch, publish returned %d", res);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user