|
@@ -14,9 +14,12 @@ extern "C" {
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// mbrtuslv.h - Declarations:
|
|
// mbrtuslv.h - Declarations:
|
|
|
|
|
|
-typedef void *HMBRTUSLV;
|
|
|
|
|
|
+typedef void *HMBRTUSLV;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
+/////////////////////////////////////////////////////////////////////////////
|
|
|
|
+/////////////////////////////////////////////////////////////////////////////
|
|
|
|
+// Modbus Slave
|
|
|
|
|
|
typedef enum _GFA_MODBUS_RTU_SLV_STATES
|
|
typedef enum _GFA_MODBUS_RTU_SLV_STATES
|
|
{
|
|
{
|
|
@@ -34,25 +37,14 @@ typedef enum _GFA_MODBUS_RTU_SLV_STATES
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
-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 void (*PFN_PRE_READ_REGISTERS) (uint8_t, uint16_t, uint16_t);
|
|
|
|
-typedef void (*PFN_POST_READ_REGISTERS) (uint8_t, uint16_t, uint16_t);
|
|
|
|
-typedef void (*PFN_PRE_WRITE_REGISTERS) (uint8_t, uint16_t, uint16_t);
|
|
|
|
-typedef void (*PFN_POST_WRITE_REGISTERS)(uint8_t, uint16_t, uint16_t);
|
|
|
|
-typedef void (*PFN_PRE_TRANSMIT) (LPMODBUS_RTU_ADU);
|
|
|
|
-typedef void (*PFN_POST_TRANSMIT) (LPMODBUS_RTU_ADU);
|
|
|
|
-typedef uint16_t (*PFN_MAP_REG_ADDR) (uint16_t);
|
|
|
|
-typedef void (*PFN_SLAVE_STATE_CHANGED) (GFA_MODBUS_RTU_SLV_STATES newState, GFA_MODBUS_RTU_SLV_STATES oldState);
|
|
|
|
|
|
+typedef void (*PFN_PRE_READ_REGISTERS) (uint8_t, uint16_t, uint16_t);
|
|
|
|
+typedef void (*PFN_POST_READ_REGISTERS) (uint8_t, uint16_t, uint16_t);
|
|
|
|
+typedef void (*PFN_PRE_WRITE_REGISTERS) (uint8_t, uint16_t, uint16_t);
|
|
|
|
+typedef void (*PFN_POST_WRITE_REGISTERS) (uint8_t, uint16_t, uint16_t);
|
|
|
|
+typedef void (*PFN_PRE_TRANSMIT) (LPMODBUS_RTU_ADU);
|
|
|
|
+typedef void (*PFN_POST_TRANSMIT) (LPMODBUS_RTU_ADU);
|
|
|
|
+typedef uint16_t (*PFN_MAP_REG_ADDR) (uint16_t);
|
|
|
|
+typedef void (*PFN_SLAVE_STATE_CHANGED) (GFA_MODBUS_RTU_SLV_STATES newState, GFA_MODBUS_RTU_SLV_STATES oldState);
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
@@ -92,58 +84,11 @@ typedef const GFA_MODBUS_RTU_SLAVE_PARAMETERS *LPCGFA_MODBUS_RTU_SLAVE_PARAMETER
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
-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;
|
|
|
|
-
|
|
|
|
-/////////////////////////////////////////////////////////////////////////////
|
|
|
|
-
|
|
|
|
HMBRTUSLV GfaModbusRTUSlvCreate(LPCGFA_MODBUS_RTU_SLAVE_PARAMETERS pslp);
|
|
HMBRTUSLV GfaModbusRTUSlvCreate(LPCGFA_MODBUS_RTU_SLAVE_PARAMETERS pslp);
|
|
void GfaModbusRTUSlvRelease(HMBRTUSLV hMbSlv);
|
|
void GfaModbusRTUSlvRelease(HMBRTUSLV hMbSlv);
|
|
bool GfaModbusRTUSlvStateMachine(HMBRTUSLV hMbSlv);
|
|
bool GfaModbusRTUSlvStateMachine(HMBRTUSLV hMbSlv);
|
|
bool GfaModbusRTUSlvSetID(HMBRTUSLV hMbSlv, uint8_t newID);
|
|
bool GfaModbusRTUSlvSetID(HMBRTUSLV hMbSlv, uint8_t newID);
|
|
|
|
|
|
-
|
|
|
|
-/////////////////////////////////////////////////////////////////////////////
|
|
|
|
-/////////////////////////////////////////////////////////////////////////////
|
|
|
|
-/////////////////////////////////////////////////////////////////////////////
|
|
|
|
-
|
|
|
|
-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);
|
|
|
|
-bool GfaModbusRequestVerifyCRC(const void *pData, size_t nCbData, const void *pCRC);
|
|
|
|
-void GfaModbusRequestSetCRC(const void *pData, size_t nCbData, void *pCRC);
|
|
|
|
-
|
|
|
|
-/////////////////////////////////////////////////////////////////////////////
|
|
|
|
-
|
|
|
|
-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
|
|
#ifdef __cplusplus
|
|
}
|
|
}
|