mbctx.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #ifndef __MBCTX_H__
  2. #define __MBCTX_H__
  3. #include <stdio.h>
  4. #include <sys/types.h>
  5. #include <sys/socket.h>
  6. #include <string.h>
  7. #include <netinet/in.h>
  8. #include <unistd.h>
  9. #include <errno.h>
  10. #include <time.h>
  11. #include "mbframe.h"
  12. #include <sys/time.h>
  13. #include <termios.h>
  14. typedef struct _fmodbus_t fmodbus_t;
  15. typedef struct _fmodbus_t
  16. {
  17. //int chanidx;
  18. int mbsidx;
  19. eMBMode eMode;
  20. eMBMode eMBCurrentMode;
  21. UCHAR ucMBAddress;
  22. UCHAR ucPort;
  23. CHAR szPort[32];
  24. ULONG ulBaudRate;
  25. eMBParity eParity;
  26. UCHAR ucDataBits;
  27. UCHAR ucStopBit;
  28. peMBFrameSend peMBFrameSendCur;
  29. pvMBFrameStart pvMBFrameStartCur;
  30. pvMBFrameStop pvMBFrameStopCur;
  31. peMBFrameReceive peMBFrameReceiveCur;
  32. pvMBFrameClose pvMBFrameCloseCur;
  33. int iSerialFd;
  34. BOOL bRxEnabled;
  35. BOOL bTxEnabled;
  36. ULONG ulTimeoutMs;
  37. UCHAR ucBuffer[256];//BUF_SIZE
  38. int uiRxBufferPos;
  39. int uiTxBufferPos;
  40. struct termios xOldTIO;
  41. ULONG ulTimeOut;
  42. BOOL bTimeoutEnable;
  43. struct timeval xTimeLast;
  44. UCHAR ucMBSlaveID[32];//MB_FUNC_OTHER_REP_SLAVEID_BUF
  45. USHORT usMBSlaveIDLen;
  46. int eMBState;
  47. UCHAR *ucMBFrame;
  48. UCHAR ucRcvAddress;
  49. UCHAR ucFunctionCode;
  50. USHORT usLength;
  51. eMBException eException;
  52. eMBEventType eQueuedEvent;
  53. BOOL xEventInQueue;
  54. volatile eMBSndState eSndState;
  55. volatile eMBRcvState eRcvState;
  56. UCHAR ucRTUBuf[256];//MB_SER_PDU_SIZE_MAX
  57. volatile UCHAR *pucSndBufferCur;
  58. volatile USHORT usSndBufferCount;
  59. volatile USHORT usRcvBufferPos;
  60. /*
  61. USHORT usRegInputStart;
  62. USHORT* usRegInputBuf;
  63. USHORT usRegHoldingStart;
  64. USHORT* usRegHoldingBuf;
  65. USHORT usRegWriteCmdStart;
  66. ULONG REG_INPUT_START;
  67. ULONG REG_INPUT_NREGS;
  68. ULONG REG_HOLDING_START;
  69. ULONG REG_HOLDING_NREGS;
  70. */
  71. BOOL( *pxMBFrameCBByteReceived ) ( fmodbus_t* );
  72. BOOL( *pxMBFrameCBTransmitterEmpty ) ( fmodbus_t* );
  73. BOOL( *pxMBPortCBTimerExpired ) ( fmodbus_t* );
  74. BOOL( *pxMBFrameCBReceiveFSMCur ) ( fmodbus_t* );
  75. BOOL( *pxMBFrameCBTransmitFSMCur ) ( fmodbus_t* );
  76. pthread_mutex_t xLock;
  77. fd_set allset;
  78. SOCKET xListenSocket;
  79. SOCKET xClientSocket;
  80. UCHAR aucTCPBuf[256 + 7];//MB_TCP_BUF_SIZE
  81. USHORT usTCPBufPos;
  82. USHORT usTCPFrameBytesLeft;
  83. }fmodbus_t;
  84. #endif