#ifndef _MBUSCOMM_H_ #define _MBUSCOMM_H_ #include #include #include #define MBUSFRAMEFIELD_LABELLENGTH 16 typedef struct { char label[MBUSFRAMEFIELD_LABELLENGTH]; uint8_t index; } t_mbusFrameField; #define MBUSDEVICE_NAMELENGTH 24 #define MBUSDEVICE_NUM_OF_CONSIDEREDFIELDS 4 typedef struct { char deviceName[MBUSDEVICE_NAMELENGTH]; uint8_t address; t_mbusFrameField consideredField[MBUSDEVICE_NUM_OF_CONSIDEREDFIELDS]; uint32_t requests; uint32_t failures; int32_t period; int32_t delay; bool waiting; } t_mbusDevice; typedef enum { MBCRR_TRIGGERED = 0, MBCRR_BUSY = 1, MBCRR_DISABLED = 2 } e_mbusCommRequestResult; typedef struct { uint32_t requestCnt; uint32_t errorCnt; } t_mbusCommStats; e_mbusCommRequestResult mbusCommRequest(t_mbusDevice *mbusDevice); void mbusCommEnable(bool enable); void mbusCommTxCpltCallback(UART_HandleTypeDef *huart); void mbusCommRxCpltCallback(UART_HandleTypeDef *huart); void mbusCommSetStats(t_mbusCommStats stats); t_mbusCommStats *mbusCommGetStats(); #endif // _MBUSCOMM_H_