| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- // gfambrtuslv.h :
- //
- #if !defined(AGD_MBRTUSLV_H__84F27BE0_71CA_4910_8631_B0EEA21DC84A__INCLUDED_)
- #define AGD_MBRTUSLV_H__84F27BE0_71CA_4910_8631_B0EEA21DC84A__INCLUDED_
- #include <gfautils.h>
- #include <gfambrtucom.h>
- #ifdef __cplusplus
- extern "C" {
- #endif // __cplusplus
- /////////////////////////////////////////////////////////////////////////////
- // mbrtuslv.h - Declarations:
- typedef void *HMBRTUSLV;
- /////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////
- // Modbus Slave
- typedef enum _GFA_MODBUS_RTU_SLV_STATES
- {
- MB_RTU_SLV_Void = -1,
- MB_RTU_SLV_Idle,
- MB_RTU_SLV_RxSlvID,
- MB_RTU_SLV_RxFunc,
- MB_RTU_SLV_RxDataInfo,
- MB_RTU_SLV_RxDataPayload,
- MB_RTU_SLV_RxCRC,
- MB_RTU_SLV_RxComplete,
- MB_RTU_SLV_TxStart,
- MB_RTU_SLV_TxWaitEnd
- }GFA_MODBUS_RTU_SLV_STATES;
- /////////////////////////////////////////////////////////////////////////////
- typedef void (*PFN_GFA_SLAVE_PRE_READ_REGISTERS) (uint8_t, uint16_t, uint16_t);
- typedef void (*PFN_GFA_SLAVE_POST_READ_REGISTERS) (uint8_t, uint16_t, uint16_t);
- typedef void (*PFN_GFA_SLAVE_PRE_WRITE_REGISTERS) (uint8_t, uint16_t, uint16_t);
- typedef void (*PFN_POST_WRITE_REGISTERS) (uint8_t, uint16_t, uint16_t);
- typedef void (*PFN_GFA_SLAVE_PRE_TRANSMIT) (LPMODBUS_RTU_ADU);
- typedef void (*PFN_GFA_SLAVE_POST_TRANSMIT) (LPMODBUS_RTU_ADU);
- typedef uint16_t (*PFN_GFA_SLAVE_MAP_REG_ADDR) (uint16_t);
- typedef void (*PFN_GFA_SLAVE_STATE_CHANGED) (GFA_MODBUS_RTU_SLV_STATES newState, GFA_MODBUS_RTU_SLV_STATES oldState);
- /////////////////////////////////////////////////////////////////////////////
- typedef struct _GFA_MODBUS_REGISTER
- {
- volatile uint16_t *pRegs;
- size_t nCountRegs;
- }GFA_MODBUS_REGISTER, *LPGFA_MODBUS_REGISTER;
- typedef const GFA_MODBUS_REGISTER *LPCGFA_MODBUS_REGISTER;
- /////////////////////////////////////////////////////////////////////////////
- typedef struct _GFA_MODBUS_SLAVE_APP_INTERFACE
- {
- PFN_GFA_SLAVE_MAP_REG_ADDR pfnMapRegAddr;
- PFN_GFA_SLAVE_PRE_READ_REGISTERS pfnPreRead;
- PFN_GFA_SLAVE_POST_READ_REGISTERS pfnPostRead;
- PFN_GFA_SLAVE_PRE_WRITE_REGISTERS pfnPreWrite;
- PFN_POST_WRITE_REGISTERS pfnPostWrite;
- PFN_GFA_SLAVE_PRE_TRANSMIT pfnPreTransmit;
- PFN_GFA_SLAVE_POST_TRANSMIT pfnPostTransmit;
- PFN_GFA_SLAVE_STATE_CHANGED pfnStateChanged;
- }GFA_MODBUS_SLAVE_APP_INTERFACE, *LPGFA_MODBUS_SLAVE_APP_INTERFACE;
- typedef const GFA_MODBUS_SLAVE_APP_INTERFACE *LPCGFA_MODBUS_SLAVE_APP_INTERFACE;
- /////////////////////////////////////////////////////////////////////////////
- typedef struct _GFA_MODBUS_RTU_SLAVE_PARAMETERS
- {
- uint8_t slaveID;
- HFIFO hFifoRX;
- HFIFO hFifoTX;
- GFA_MODBUS_REGISTER regMap;
- GFA_MODBUS_SLAVE_APP_INTERFACE appItf;
- }GFA_MODBUS_RTU_SLAVE_PARAMETERS, *LPGFA_MODBUS_RTU_SLAVE_PARAMETERS;
- typedef const GFA_MODBUS_RTU_SLAVE_PARAMETERS *LPCGFA_MODBUS_RTU_SLAVE_PARAMETERS;
- /////////////////////////////////////////////////////////////////////////////
- HMBRTUSLV GfaModbusRTUSlvCreate(LPCGFA_MODBUS_RTU_SLAVE_PARAMETERS pslp);
- void GfaModbusRTUSlvRelease(HMBRTUSLV hMbSlv);
- bool GfaModbusRTUSlvStateMachine(HMBRTUSLV hMbSlv);
- bool GfaModbusRTUSlvSetID(HMBRTUSLV hMbSlv, uint8_t newID);
- /////////////////////////////////////////////////////////////////////////////
- #ifdef __cplusplus
- }
- #endif // __cplusplus
- #endif // !defined(AGD_MBRTUSLV_H__84F27BE0_71CA_4910_8631_B0EEA21DC84A__INCLUDED_)
|