gfambrtuslv.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. // gfambrtuslv.h :
  2. //
  3. #if !defined(AGD_MBRTUSLV_H__84F27BE0_71CA_4910_8631_B0EEA21DC84A__INCLUDED_)
  4. #define AGD_MBRTUSLV_H__84F27BE0_71CA_4910_8631_B0EEA21DC84A__INCLUDED_
  5. #include <gfautils.h>
  6. #include <gfambrtucom.h>
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif // __cplusplus
  10. /////////////////////////////////////////////////////////////////////////////
  11. // mbrtuslv.h - Declarations:
  12. typedef void *HMBRTUSLV;
  13. /////////////////////////////////////////////////////////////////////////////
  14. /////////////////////////////////////////////////////////////////////////////
  15. /////////////////////////////////////////////////////////////////////////////
  16. // Modbus Slave
  17. typedef enum _GFA_MODBUS_RTU_SLV_STATES
  18. {
  19. MB_RTU_SLV_Void = -1,
  20. MB_RTU_SLV_Idle,
  21. MB_RTU_SLV_RxSlvID,
  22. MB_RTU_SLV_RxFunc,
  23. MB_RTU_SLV_RxDataInfo,
  24. MB_RTU_SLV_RxDataPayload,
  25. MB_RTU_SLV_RxCRC,
  26. MB_RTU_SLV_RxComplete,
  27. MB_RTU_SLV_TxStart,
  28. MB_RTU_SLV_TxWaitEnd
  29. }GFA_MODBUS_RTU_SLV_STATES;
  30. /////////////////////////////////////////////////////////////////////////////
  31. typedef void (*PFN_GFA_SLAVE_PRE_READ_REGISTERS) (uint8_t, uint16_t, uint16_t);
  32. typedef void (*PFN_GFA_SLAVE_POST_READ_REGISTERS) (uint8_t, uint16_t, uint16_t);
  33. typedef void (*PFN_GFA_SLAVE_PRE_WRITE_REGISTERS) (uint8_t, uint16_t, uint16_t);
  34. typedef void (*PFN_POST_WRITE_REGISTERS) (uint8_t, uint16_t, uint16_t);
  35. typedef void (*PFN_GFA_SLAVE_PRE_TRANSMIT) (LPMODBUS_RTU_ADU);
  36. typedef void (*PFN_GFA_SLAVE_POST_TRANSMIT) (LPMODBUS_RTU_ADU);
  37. typedef uint16_t (*PFN_GFA_SLAVE_MAP_REG_ADDR) (uint16_t);
  38. typedef void (*PFN_GFA_SLAVE_STATE_CHANGED) (GFA_MODBUS_RTU_SLV_STATES newState, GFA_MODBUS_RTU_SLV_STATES oldState);
  39. /////////////////////////////////////////////////////////////////////////////
  40. typedef struct _GFA_MODBUS_REGISTER
  41. {
  42. volatile uint16_t *pRegs;
  43. size_t nCountRegs;
  44. }GFA_MODBUS_REGISTER, *LPGFA_MODBUS_REGISTER;
  45. typedef const GFA_MODBUS_REGISTER *LPCGFA_MODBUS_REGISTER;
  46. /////////////////////////////////////////////////////////////////////////////
  47. typedef struct _GFA_MODBUS_SLAVE_APP_INTERFACE
  48. {
  49. PFN_GFA_SLAVE_MAP_REG_ADDR pfnMapRegAddr;
  50. PFN_GFA_SLAVE_PRE_READ_REGISTERS pfnPreRead;
  51. PFN_GFA_SLAVE_POST_READ_REGISTERS pfnPostRead;
  52. PFN_GFA_SLAVE_PRE_WRITE_REGISTERS pfnPreWrite;
  53. PFN_POST_WRITE_REGISTERS pfnPostWrite;
  54. PFN_GFA_SLAVE_PRE_TRANSMIT pfnPreTransmit;
  55. PFN_GFA_SLAVE_POST_TRANSMIT pfnPostTransmit;
  56. PFN_GFA_SLAVE_STATE_CHANGED pfnStateChanged;
  57. }GFA_MODBUS_SLAVE_APP_INTERFACE, *LPGFA_MODBUS_SLAVE_APP_INTERFACE;
  58. typedef const GFA_MODBUS_SLAVE_APP_INTERFACE *LPCGFA_MODBUS_SLAVE_APP_INTERFACE;
  59. /////////////////////////////////////////////////////////////////////////////
  60. typedef struct _GFA_MODBUS_RTU_SLAVE_PARAMETERS
  61. {
  62. uint8_t slaveID;
  63. HFIFO hFifoRX;
  64. HFIFO hFifoTX;
  65. GFA_MODBUS_REGISTER regMap;
  66. GFA_MODBUS_SLAVE_APP_INTERFACE appItf;
  67. }GFA_MODBUS_RTU_SLAVE_PARAMETERS, *LPGFA_MODBUS_RTU_SLAVE_PARAMETERS;
  68. typedef const GFA_MODBUS_RTU_SLAVE_PARAMETERS *LPCGFA_MODBUS_RTU_SLAVE_PARAMETERS;
  69. /////////////////////////////////////////////////////////////////////////////
  70. HMBRTUSLV GfaModbusRTUSlvCreate(LPCGFA_MODBUS_RTU_SLAVE_PARAMETERS pslp);
  71. void GfaModbusRTUSlvRelease(HMBRTUSLV hMbSlv);
  72. bool GfaModbusRTUSlvStateMachine(HMBRTUSLV hMbSlv);
  73. bool GfaModbusRTUSlvSetID(HMBRTUSLV hMbSlv, uint8_t newID);
  74. /////////////////////////////////////////////////////////////////////////////
  75. #ifdef __cplusplus
  76. }
  77. #endif // __cplusplus
  78. #endif // !defined(AGD_MBRTUSLV_H__84F27BE0_71CA_4910_8631_B0EEA21DC84A__INCLUDED_)