gfambrtuslv_priv.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // gfambrtuslv_priv.h :
  2. //
  3. #if !defined(AGD_GFAMBRTUSLV_PRIV_H__E4B2991E_8ADE_482B_94E1_530CEB7E6595__INCLUDED_)
  4. #define AGD_GFAMBRTUSLV_PRIV_H__E4B2991E_8ADE_482B_94E1_530CEB7E6595__INCLUDED_
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif // __cplusplus
  8. /////////////////////////////////////////////////////////////////////////////
  9. // gfambrtuslv_priv.h - Declarations:
  10. /////////////////////////////////////////////////////////////////////////////
  11. typedef struct _GFA_MODBUS_RTU_SLV_DIAGNOSIS
  12. {
  13. uint64_t nBusMsgCount; // Total bus message count
  14. uint64_t nSlvMsgCount; // Total slave message count
  15. uint32_t nCrcErrCount; // CRC errors
  16. uint32_t nExcErrCount; // Exception errors
  17. }GFA_MODBUS_RTU_SLV_DIAGNOSIS, *LPGFA_MODBUS_RTU_SLV_DIAGNOSIS;
  18. typedef const GFA_MODBUS_RTU_SLV_DIAGNOSIS *LPCGFA_MODBUS_RTU_SLV_DIAGNOSIS;
  19. /////////////////////////////////////////////////////////////////////////////
  20. typedef struct _GFA_MODBUS_RTU_SLAVE
  21. {
  22. uint8_t slaveID;
  23. uint8_t newSlaveID;
  24. uint16_t nSubFunc;
  25. HFIFO hFifoRX;
  26. HFIFO hFifoTX;
  27. size_t nCbToRead;
  28. size_t nCbToWrite;
  29. size_t nDataPtr;
  30. int nMaxReEnterSTM;
  31. bool bCRCOk;
  32. GFA_MODBUS_RTU_SLV_STATES state;
  33. GFA_MODBUS_RTU_SLV_STATES oldstate;
  34. GFA_MODBUS_REGISTER regMap;
  35. GFA_MODBUS_SLAVE_APP_INTERFACE appItf;
  36. GFA_MODBUS_RTU_SLV_DIAGNOSIS diag;
  37. MODBUS_RTU_ADU adu;
  38. }GFA_MODBUS_RTU_SLAVE, *LPGFA_MODBUS_RTU_SLAVE;
  39. typedef const GFA_MODBUS_RTU_SLAVE *LPCGFA_MODBUS_RTU_SLAVE;
  40. /////////////////////////////////////////////////////////////////////////////
  41. // Modbus request handling functions
  42. size_t GfaModbusRequestGetDataInfoLength(LPCGFA_MODBUS_RTU_SLAVE pSlv);
  43. size_t GfaModbusRequestGetDataPayloadLength(LPCGFA_MODBUS_RTU_SLAVE pSlv);
  44. bool GfaModbusRequestFunctionKnown(uint8_t func);
  45. bool GfaModbusRequestSubFunctionKnown(uint16_t subfunc);
  46. size_t GfaModbusRequestReadRegisters(uint8_t func, LPGFA_MODBUS_REGISTER pRegMap, LPGFA_MODBUS_SLAVE_APP_INTERFACE pAppItf, void *pBuf, uint8_t *pnCbWritten);
  47. size_t GfaModbusRequestWriteRegisters(uint8_t func, LPGFA_MODBUS_REGISTER pRegMap, LPGFA_MODBUS_SLAVE_APP_INTERFACE pAppItf, void *pBuf, uint8_t *pnCbWritten);
  48. size_t GfaModbusRequestWriteSingleRegister(uint8_t func, LPGFA_MODBUS_REGISTER pRegMap, LPGFA_MODBUS_SLAVE_APP_INTERFACE pAppItf, void *pBuf, uint8_t *pnCbWritten);
  49. size_t GfaModbusRequestDiagnostic(LPGFA_MODBUS_RTU_SLAVE pSlv, uint8_t *pnCbWritten);
  50. size_t GfaModbusRequestCreateExceptionResponse(LPMODBUS_RTU_PDU pPdu, uint8_t nExceptionCode);
  51. bool GfaModbusRequestHandler(LPGFA_MODBUS_RTU_SLAVE pSlv, size_t *pnCbData, bool *pbIsException);
  52. /////////////////////////////////////////////////////////////////////////////
  53. #ifdef __cplusplus
  54. }
  55. #endif // __cplusplus
  56. #endif // !defined(AGD_GFAMBRTUSLV_PRIV_H__E4B2991E_8ADE_482B_94E1_530CEB7E6595__INCLUDED_)