// gfamininetmst.h : // #if !defined(AGD_GFAMININETMST_H__FE13B563_B3D5_4AA2_81FD_B74220CF2D93__INCLUDED_) #define AGD_GFAMININETMST_H__FE13B563_B3D5_4AA2_81FD_B74220CF2D93__INCLUDED_ #include #include #include #include #ifdef __cplusplus extern "C" { #endif // __cplusplus ///////////////////////////////////////////////////////////////////////////// // gfamininetmst.h - Declarations: #ifndef ANY_SIZE #define ANY_SIZE 1 #endif // ANY_SIZE #define MINET_SLAVE_RESPONSE_SUCCESS 0 #define MINET_SLAVE_RESPONSE_ACK 1 #define MINET_SLAVE_RESPONSE_INDEX_IS_STATUS_CODE 2 #define MINET_SLAVE_RESPONSE_ERROR_STX_ERROR -1 #define MINET_SLAVE_RESPONSE_ERROR_INVALID_ARGUMENT -2 #define MINET_SLAVE_RESPONSE_ERROR_INVALID_LENGTH -3 #define MINET_SLAVE_RESPONSE_ERROR_INVALID_SLAVE_INDICATOR -4 #define MINET_SLAVE_RESPONSE_ERROR_INCOMPLETE_DATA -5 #define MINET_SLAVE_RESPONSE_ERROR_INVALID_NODE_ADDRESS -6 #define MINET_SLAVE_RESPONSE_ERROR_INDEX_OUT_OF_RANGE -7 #define MINET_SLAVE_RESPONSE_ERROR_INDEX_NO_MATCH -8 #define MINET_SLAVE_RESPONSE_ERROR_INVALID_CHECKSUM -9 #define MINET_SLAVE_STATUS_INDEX_RESET_DONE 0xC0 #define MINET_SLAVE_STATUS_INDEX_ERROR 0xC1 #define MINET_SLAVE_STATUS_INDEX_CMD_ERROR 0xC2 #define MINET_SLAVE_STATUS_INDEX_INVALID_PARAM 0xC3 #define MINET_SLAVE_STATUS_INDEX_UNKNOWN_CMD 0xC4 #define MINET_SLAVE_STATUS_INDEX_CMD_ALREADY_EX 0xC8 ///////////////////////////////////////////////////////////////////////////// #define MINET_MIN_NODE_ADDRESS 0x11 #define NODE_IS_BROADCAST(n) ((n) == 0) #define NODE_IS_GROUPCAST(n) ((((n) & 0xF0) != 0) && (((n) & 0x0F) == 0)) #define NODE_IS_MULTICAST(n) (NODE_IS_BROADCAST(n) || NODE_IS_GROUPCAST(n)) ///////////////////////////////////////////////////////////////////////////// typedef struct _GFA_MININET_FRAME { uint8_t stx; uint8_t len; uint8_t node; uint8_t index; union { uint8_t by[ANY_SIZE]; uint16_t wo[ANY_SIZE]; uint32_t dw[ANY_SIZE]; }data; }GFA_MININET_FRAME, *LPGFA_MININET_FRAME; typedef const GFA_MININET_FRAME *LPCGFA_MININET_FRAME; ///////////////////////////////////////////////////////////////////////////// typedef void *HGFAMINEMST; ///////////////////////////////////////////////////////////////////////////// typedef struct _GFA_MININET_MST_CFG_PARAMS { GFA_MININET_DEV_CFG_PARAMS devcfg; }GFA_MININET_MST_CFG_PARAMS, *LPGFA_MININET_MST_CFG_PARAMS; typedef const GFA_MININET_MST_CFG_PARAMS *LPCGFA_MININET_MST_CFG_PARAMS; ///////////////////////////////////////////////////////////////////////////// HGFAMINEMST GfaMininetMasterOpen(LPCGFA_MININET_MST_CFG_PARAMS pmmcp); void GfaMininetMasterClose(HGFAMINEMST hMst); size_t GfaMininetMasterBuildFrame(HGFAMINEMST hMst, uint8_t nNode, uint8_t nIndex, const void *pDataPayload, size_t nCbDataPayload, void *pFrameBuffer, size_t nCbFrameBuffer); ssize_t GfaMininetMasterTransmitFrame(HGFAMINEMST hMst, const void *pData, size_t nCbData); ssize_t GfaMininetMasterReceiveFrame(HGFAMINEMST hMst, void *pBuffer, size_t nCbBuffer, bool bAckPossible); int GfaMininetMasterEvaluateSlaveResponse(HGFAMINEMST hMst, uint8_t nNode, const void *pFrame, size_t nCbFrame, bool bAckPossible, uint8_t *pbIndex); int GfaMininetMasterResetSlaveIndex(HGFAMINEMST hMst, uint8_t nNode); int GfaMininetMasterResetLocalIndex(HGFAMINEMST hMst, uint8_t nNode); int GfaMininetMasterPurgeDeviceRXBuffer(HGFAMINEMST hMst); int GfaMininetMasterPingSlave(HGFAMINEMST hMst, uint8_t nNode); bool GfaMininetMasterGetTimeouts(HGFAMINEMST hMst, struct timeval *ptvRX, struct timeval *ptvTX); bool GfaMininetMasterSetTimeouts(HGFAMINEMST hMst, const struct timeval *ptvRX, const struct timeval *ptvTX); bool GfaMininetMasterSaveTimeouts(HGFAMINEMST hMst); bool GfaMininetMasterRestoreTimeouts(HGFAMINEMST hMst); ssize_t GfaMininetMasterGetConfigParams(HGFAMINEMST hMst, void *pDevParams, size_t nSizeDevParams); int GfaMininetMasterSetConfigParams(HGFAMINEMST hMst, const void *pDevParams, size_t nSizeDevParams); bool GfaMininetMasterIsValidBaudrate(HGFAMINEMST hMst, uint32_t nBaudrate); int GfaMininetMasterGetBaudrate(HGFAMINEMST hMst, uint32_t *pnBaudrate); int GfaMininetMasterSetBaudrate(HGFAMINEMST hMst, uint32_t nBaudrate); HMINETDEV GfaMininetMasterGetDeviceHandle(HGFAMINEMST hMst); ///////////////////////////////////////////////////////////////////////////// uint8_t GfaMininetMasterCalcChk(const void *pData, size_t nCbData, bool bProcessSTX); ssize_t GfaMininetMasterGetDataFromFrame(const void *pFrame, size_t nCbFrame, void *pData, size_t nCbData); ssize_t GfaMininetMasterGetDataFromSlaveFrame(const void *pFrame, size_t nCbFrame, void *pData, size_t nCbData); void GfaMininetMasterDumpFrame(HGFAMINEMST hMst, FILE *pf, LPCGFA_MININET_FRAME pFrame, bool bTX, const char *pszAnnotation); int GfaMininetMasterSetVerbosity(HGFAMINEMST hMst, int nVerbosity); const char* GfaMininetMasterStrError(int nErrorCode); ///////////////////////////////////////////////////////////////////////////// #ifdef __cplusplus } #endif // __cplusplus #endif // !defined(AGD_GFAMININETMST_H__FE13B563_B3D5_4AA2_81FD_B74220CF2D93__INCLUDED_)