gfamininetmst.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. // gfamininetmst.h :
  2. //
  3. #if !defined(AGD_GFAMININETMST_H__FE13B563_B3D5_4AA2_81FD_B74220CF2D93__INCLUDED_)
  4. #define AGD_GFAMININETMST_H__FE13B563_B3D5_4AA2_81FD_B74220CF2D93__INCLUDED_
  5. #include <stdint.h>
  6. #include <stdbool.h>
  7. #include <sys/time.h>
  8. #include <gfamininetdev.h>
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif // __cplusplus
  12. /////////////////////////////////////////////////////////////////////////////
  13. // gfamininetmst.h - Declarations:
  14. #ifndef ANY_SIZE
  15. #define ANY_SIZE 1
  16. #endif // ANY_SIZE
  17. #define MINET_SLAVE_RESPONSE_SUCCESS 0
  18. #define MINET_SLAVE_RESPONSE_ACK 1
  19. #define MINET_SLAVE_RESPONSE_INDEX_IS_STATUS_CODE 2
  20. #define MINET_SLAVE_RESPONSE_ERROR_STX_ERROR -1
  21. #define MINET_SLAVE_RESPONSE_ERROR_INVALID_ARGUMENT -2
  22. #define MINET_SLAVE_RESPONSE_ERROR_INVALID_LENGTH -3
  23. #define MINET_SLAVE_RESPONSE_ERROR_INVALID_SLAVE_INDICATOR -4
  24. #define MINET_SLAVE_RESPONSE_ERROR_INCOMPLETE_DATA -5
  25. #define MINET_SLAVE_RESPONSE_ERROR_INVALID_NODE_ADDRESS -6
  26. #define MINET_SLAVE_RESPONSE_ERROR_INDEX_OUT_OF_RANGE -7
  27. #define MINET_SLAVE_RESPONSE_ERROR_INDEX_NO_MATCH -8
  28. #define MINET_SLAVE_RESPONSE_ERROR_INVALID_CHECKSUM -9
  29. #define MINET_SLAVE_STATUS_INDEX_RESET_DONE 0xC0
  30. #define MINET_SLAVE_STATUS_INDEX_ERROR 0xC1
  31. #define MINET_SLAVE_STATUS_INDEX_CMD_ERROR 0xC2
  32. #define MINET_SLAVE_STATUS_INDEX_INVALID_PARAM 0xC3
  33. #define MINET_SLAVE_STATUS_INDEX_UNKNOWN_CMD 0xC4
  34. #define MINET_SLAVE_STATUS_INDEX_CMD_ALREADY_EX 0xC8
  35. /////////////////////////////////////////////////////////////////////////////
  36. #define MINET_MIN_NODE_ADDRESS 0x11
  37. #define NODE_IS_BROADCAST(n) ((n) == 0)
  38. #define NODE_IS_GROUPCAST(n) ((((n) & 0xF0) != 0) && (((n) & 0x0F) == 0))
  39. #define NODE_IS_MULTICAST(n) (NODE_IS_BROADCAST(n) || NODE_IS_GROUPCAST(n))
  40. /////////////////////////////////////////////////////////////////////////////
  41. typedef struct _GFA_MININET_FRAME
  42. {
  43. uint8_t stx;
  44. uint8_t len;
  45. uint8_t node;
  46. uint8_t index;
  47. union
  48. {
  49. uint8_t by[ANY_SIZE];
  50. uint16_t wo[ANY_SIZE];
  51. uint32_t dw[ANY_SIZE];
  52. }data;
  53. }GFA_MININET_FRAME, *LPGFA_MININET_FRAME;
  54. typedef const GFA_MININET_FRAME *LPCGFA_MININET_FRAME;
  55. /////////////////////////////////////////////////////////////////////////////
  56. typedef void *HGFAMINEMST;
  57. /////////////////////////////////////////////////////////////////////////////
  58. typedef struct _GFA_MININET_MST_CFG_PARAMS
  59. {
  60. GFA_MININET_DEV_CFG_PARAMS devcfg;
  61. }GFA_MININET_MST_CFG_PARAMS, *LPGFA_MININET_MST_CFG_PARAMS;
  62. typedef const GFA_MININET_MST_CFG_PARAMS *LPCGFA_MININET_MST_CFG_PARAMS;
  63. /////////////////////////////////////////////////////////////////////////////
  64. HGFAMINEMST GfaMininetMasterOpen(LPCGFA_MININET_MST_CFG_PARAMS pmmcp);
  65. void GfaMininetMasterClose(HGFAMINEMST hMst);
  66. size_t GfaMininetMasterBuildFrame(HGFAMINEMST hMst, uint8_t nNode, uint8_t nIndex, const void *pDataPayload, size_t nCbDataPayload, void *pFrameBuffer, size_t nCbFrameBuffer);
  67. ssize_t GfaMininetMasterTransmitFrame(HGFAMINEMST hMst, const void *pData, size_t nCbData);
  68. ssize_t GfaMininetMasterReceiveFrame(HGFAMINEMST hMst, void *pBuffer, size_t nCbBuffer, bool bAckPossible);
  69. int GfaMininetMasterEvaluateSlaveResponse(HGFAMINEMST hMst, uint8_t nNode, const void *pFrame, size_t nCbFrame, bool bAckPossible, uint8_t *pbIndex);
  70. int GfaMininetMasterResetSlaveIndex(HGFAMINEMST hMst, uint8_t nNode);
  71. int GfaMininetMasterResetLocalIndex(HGFAMINEMST hMst, uint8_t nNode);
  72. int GfaMininetMasterPurgeDeviceRXBuffer(HGFAMINEMST hMst);
  73. int GfaMininetMasterPingSlave(HGFAMINEMST hMst, uint8_t nNode);
  74. bool GfaMininetMasterGetTimeouts(HGFAMINEMST hMst, struct timeval *ptvRX, struct timeval *ptvTX);
  75. bool GfaMininetMasterSetTimeouts(HGFAMINEMST hMst, const struct timeval *ptvRX, const struct timeval *ptvTX);
  76. bool GfaMininetMasterSaveTimeouts(HGFAMINEMST hMst);
  77. bool GfaMininetMasterRestoreTimeouts(HGFAMINEMST hMst);
  78. ssize_t GfaMininetMasterGetConfigParams(HGFAMINEMST hMst, void *pDevParams, size_t nSizeDevParams);
  79. int GfaMininetMasterSetConfigParams(HGFAMINEMST hMst, const void *pDevParams, size_t nSizeDevParams);
  80. bool GfaMininetMasterIsValidBaudrate(HGFAMINEMST hMst, uint32_t nBaudrate);
  81. int GfaMininetMasterGetBaudrate(HGFAMINEMST hMst, uint32_t *pnBaudrate);
  82. int GfaMininetMasterSetBaudrate(HGFAMINEMST hMst, uint32_t nBaudrate);
  83. HMINETDEV GfaMininetMasterGetDeviceHandle(HGFAMINEMST hMst);
  84. /////////////////////////////////////////////////////////////////////////////
  85. uint8_t GfaMininetMasterCalcChk(const void *pData, size_t nCbData, bool bProcessSTX);
  86. ssize_t GfaMininetMasterGetDataFromFrame(const void *pFrame, size_t nCbFrame, void *pData, size_t nCbData);
  87. ssize_t GfaMininetMasterGetDataFromSlaveFrame(const void *pFrame, size_t nCbFrame, void *pData, size_t nCbData);
  88. void GfaMininetMasterDumpFrame(HGFAMINEMST hMst, FILE *pf, LPCGFA_MININET_FRAME pFrame, bool bTX, const char *pszAnnotation);
  89. int GfaMininetMasterSetVerbosity(HGFAMINEMST hMst, int nVerbosity);
  90. const char* GfaMininetMasterStrError(int nErrorCode);
  91. /////////////////////////////////////////////////////////////////////////////
  92. #ifdef __cplusplus
  93. }
  94. #endif // __cplusplus
  95. #endif // !defined(AGD_GFAMININETMST_H__FE13B563_B3D5_4AA2_81FD_B74220CF2D93__INCLUDED_)