gfamininetmst.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 NODE_IS_BROADCAST(n) ((n) == 0)
  37. #define NODE_IS_GROUPCAST(n) ((((n) & 0xF0) != 0) && (((n) & 0x0F) == 0))
  38. #define NODE_IS_MULTICAST(n) (NODE_IS_BROADCAST(n) || NODE_IS_GROUPCAST(n))
  39. /////////////////////////////////////////////////////////////////////////////
  40. typedef struct _GFA_MININET_FRAME
  41. {
  42. uint8_t stx;
  43. uint8_t len;
  44. uint8_t node;
  45. uint8_t index;
  46. union
  47. {
  48. uint8_t by[ANY_SIZE];
  49. uint16_t wo[ANY_SIZE];
  50. uint32_t dw[ANY_SIZE];
  51. }data;
  52. }GFA_MININET_FRAME, *LPGFA_MININET_FRAME;
  53. typedef const GFA_MININET_FRAME *LPCGFA_MININET_FRAME;
  54. /////////////////////////////////////////////////////////////////////////////
  55. typedef void *HGFAMINEMST;
  56. /////////////////////////////////////////////////////////////////////////////
  57. typedef struct _GFA_MININET_MST_CFG_PARAMS
  58. {
  59. GFA_MININET_DEV_CFG_PARAMS devcfg;
  60. }GFA_MININET_MST_CFG_PARAMS, *LPGFA_MININET_MST_CFG_PARAMS;
  61. typedef const GFA_MININET_MST_CFG_PARAMS *LPCGFA_MININET_MST_CFG_PARAMS;
  62. /////////////////////////////////////////////////////////////////////////////
  63. HGFAMINEMST GfaMininetMasterOpen(LPCGFA_MININET_MST_CFG_PARAMS pmmcp);
  64. void GfaMininetMasterClose(HGFAMINEMST hMst);
  65. size_t GfaMininetMasterBuildFrame(HGFAMINEMST hMst, uint8_t nNode, uint8_t nIndex, const void *pDataPayload, size_t nCbDataPayload, void *pFrameBuffer, size_t nCbFrameBuffer);
  66. ssize_t GfaMininetMasterTransmitFrame(HGFAMINEMST hMst, const void *pData, size_t nCbData);
  67. ssize_t GfaMininetMasterReceiveFrame(HGFAMINEMST hMst, void *pBuffer, size_t nCbBuffer, bool bAckPossible);
  68. int GfaMininetMasterEvaluateSlaveResponse(HGFAMINEMST hMst, uint8_t nNode, const void *pFrame, size_t nCbFrame, bool bAckPossible, uint8_t *pbIndex);
  69. int GfaMininetMasterResetSlaveIndex(HGFAMINEMST hMst, uint8_t nNode);
  70. int GfaMininetMasterResetLocalIndex(HGFAMINEMST hMst, uint8_t nNode);
  71. int GfaMininetMasterPurgeDeviceRXBuffer(HGFAMINEMST hMst);
  72. bool GfaMininetMasterGetTimeouts(HGFAMINEMST hMst, struct timeval *ptvRX, struct timeval *ptvTX);
  73. bool GfaMininetMasterSetTimeouts(HGFAMINEMST hMst, const struct timeval *ptvRX, const struct timeval *ptvTX);
  74. bool GfaMininetMasterSaveTimeouts(HGFAMINEMST hMst);
  75. bool GfaMininetMasterRestoreTimeouts(HGFAMINEMST hMst);
  76. ssize_t GfaMininetMasterGetConfigParams(HGFAMINEMST hMst, void *pDevParams, size_t nSizeDevParams);
  77. int GfaMininetMasterSetConfigParams(HGFAMINEMST hMst, const void *pDevParams, size_t nSizeDevParams);
  78. bool GfaMininetMasterIsValidBaudrate(HGFAMINEMST hMst, uint32_t nBaudrate);
  79. int GfaMininetMasterSetBaudrate(HGFAMINEMST hMst, uint32_t nBaudrate);
  80. HMINETDEV GfaMininetMasterGetDeviceHandle(HGFAMINEMST hMst);
  81. /////////////////////////////////////////////////////////////////////////////
  82. uint8_t GfaMininetMasterCalcChk(const void *pData, size_t nCbData, bool bProcessSTX);
  83. ssize_t GfaMininetMasterGetDataFromFrame(const void *pFrame, size_t nCbFrame, void *pData, size_t nCbData);
  84. ssize_t GfaMininetMasterGetDataFromSlaveFrame(const void *pFrame, size_t nCbFrame, void *pData, size_t nCbData);
  85. void GfaMininetMasterDumpFrame(HGFAMINEMST hMst, FILE *pf, LPCGFA_MININET_FRAME pFrame, bool bTX, const char *pszAnnotation);
  86. int GfaMininetMasterSetVerbosity(HGFAMINEMST hMst, int nVerbosity);
  87. const char* GfaMininetMasterStrError(int nErrorCode);
  88. /////////////////////////////////////////////////////////////////////////////
  89. #ifdef __cplusplus
  90. }
  91. #endif // __cplusplus
  92. #endif // !defined(AGD_GFAMININETMST_H__FE13B563_B3D5_4AA2_81FD_B74220CF2D93__INCLUDED_)