// gfambrtuslv_priv.h : // #if !defined(AGD_GFAMBRTUSLV_PRIV_H__E4B2991E_8ADE_482B_94E1_530CEB7E6595__INCLUDED_) #define AGD_GFAMBRTUSLV_PRIV_H__E4B2991E_8ADE_482B_94E1_530CEB7E6595__INCLUDED_ #ifdef __cplusplus extern "C" { #endif // __cplusplus ///////////////////////////////////////////////////////////////////////////// // gfambrtuslv_priv.h - Declarations: ///////////////////////////////////////////////////////////////////////////// typedef struct _GFA_MODBUS_RTU_SLV_DIAGNOSIS { uint64_t nBusMsgCount; // Total bus message count uint64_t nSlvMsgCount; // Total slave message count uint32_t nCrcErrCount; // CRC errors uint32_t nExcErrCount; // Exception errors }GFA_MODBUS_RTU_SLV_DIAGNOSIS, *LPGFA_MODBUS_RTU_SLV_DIAGNOSIS; typedef const GFA_MODBUS_RTU_SLV_DIAGNOSIS *LPCGFA_MODBUS_RTU_SLV_DIAGNOSIS; ///////////////////////////////////////////////////////////////////////////// typedef struct _GFA_MODBUS_RTU_SLAVE { uint8_t slaveID; uint8_t newSlaveID; uint16_t nSubFunc; HFIFO hFifoRX; HFIFO hFifoTX; size_t nCbToRead; size_t nCbToWrite; size_t nDataPtr; int nMaxReEnterSTM; bool bCRCOk; GFA_MODBUS_RTU_SLV_STATES state; GFA_MODBUS_RTU_SLV_STATES oldstate; GFA_MODBUS_REGISTER regMap; GFA_MODBUS_SLAVE_APP_INTERFACE appItf; GFA_MODBUS_RTU_SLV_DIAGNOSIS diag; MODBUS_RTU_ADU adu; }GFA_MODBUS_RTU_SLAVE, *LPGFA_MODBUS_RTU_SLAVE; typedef const GFA_MODBUS_RTU_SLAVE *LPCGFA_MODBUS_RTU_SLAVE; ///////////////////////////////////////////////////////////////////////////// // Modbus request handling functions size_t GfaModbusRequestGetDataInfoLength(LPCGFA_MODBUS_RTU_SLAVE pSlv); size_t GfaModbusRequestGetDataPayloadLength(LPCGFA_MODBUS_RTU_SLAVE pSlv); bool GfaModbusRequestFunctionKnown(uint8_t func); bool GfaModbusRequestSubFunctionKnown(uint16_t subfunc); size_t GfaModbusRequestReadRegisters(uint8_t func, LPGFA_MODBUS_REGISTER pRegMap, LPGFA_MODBUS_SLAVE_APP_INTERFACE pAppItf, void *pBuf, uint8_t *pnCbWritten); size_t GfaModbusRequestWriteRegisters(uint8_t func, LPGFA_MODBUS_REGISTER pRegMap, LPGFA_MODBUS_SLAVE_APP_INTERFACE pAppItf, void *pBuf, uint8_t *pnCbWritten); size_t GfaModbusRequestWriteSingleRegister(uint8_t func, LPGFA_MODBUS_REGISTER pRegMap, LPGFA_MODBUS_SLAVE_APP_INTERFACE pAppItf, void *pBuf, uint8_t *pnCbWritten); size_t GfaModbusRequestDiagnostic(LPGFA_MODBUS_RTU_SLAVE pSlv, uint8_t *pnCbWritten); size_t GfaModbusRequestCreateExceptionResponse(LPMODBUS_RTU_PDU pPdu, uint8_t nExceptionCode); bool GfaModbusRequestHandler(LPGFA_MODBUS_RTU_SLAVE pSlv, size_t *pnCbData, bool *pbIsException); ///////////////////////////////////////////////////////////////////////////// #ifdef __cplusplus } #endif // __cplusplus #endif // !defined(AGD_GFAMBRTUSLV_PRIV_H__E4B2991E_8ADE_482B_94E1_530CEB7E6595__INCLUDED_)