#ifndef NET5BOARDLIB_EX_H #define NET5BOARDLIB_EX_H #include "Cmn5BoardLibEx.h" #pragma pack( push, Net5BoardLibEx_H ) #pragma pack(8) extern "C" const IID IID_INet5 ; //IID for Net5 // {C12CFA42-02CB-4a50-938C-3636518D41BD} DEFINE_GUID( IID_INet5, 0xc12cfa42, 0x2cb, 0x4a50, 0x93, 0x8c, 0x36, 0x36, 0x51, 0x8d, 0x41, 0xbd ); #define NET5_MAX_ID_LENGTH 50 #define NET5_MAX_PW_LENGTH 50 #define NET5_MAX_USER_LIST 10 #define NET5_IP_ADDR_LENGTH 20 #define NET5_NUM_OF_DNS 2 #define NET5_MAX_DOMAIN_NAME_LENGTH 128 //enum UserGroup { #define NET5_UG_ADMINISTRATOR 1 #define NET5_UG_USER 2 //}; typedef struct _NET5_ADDR_INFO { char Address[NET5_IP_ADDR_LENGTH]; char SubnetMask[NET5_IP_ADDR_LENGTH]; char Gateway[NET5_IP_ADDR_LENGTH]; char DNS[NET5_NUM_OF_DNS][NET5_IP_ADDR_LENGTH]; } NET5_ADDR_INFO; //enum NetDataType { #define NET5_NDT_CONNECTION 1 #define NET5_NDT_CHANGE_PROPERTY 2 #define NET5_NDT_RECV_SERIAL_DATA 3 #define NET5_NDT_UNSTABLE_CONNECTION 4 //}; typedef struct _NET5_EVENT_DATA { ULONG uDataType; ULONG uStructSize; ULONG uErrCode; ULONG uNetDataType; } NET5_EVENT_DATA; #define NET5_MI_UPDATE_NOT_REQUIRED 1 #define NET5_MI_REQUIRE_SERVER_UPDATE 2 #define NET5_MI_REQUIRE_CLIENT_UPDATE 3 #define NET5_MAX_RESERVED_VERSION_INFO 16 typedef union { struct { ULONG uCurServerVer; // Current server version ULONG uMinRequiredClientVer; // Minimum required client version ULONG uCurClientVer; // Current client version ULONG uMinRequiredServerVer; // Minimum required server version ULONG uMatchInfo; // Version match information }; ULONG reserved[NET5_MAX_RESERVED_VERSION_INFO]; } NET5_VERSION_INFO; // enum AudioTxLock { #define NET5_ATL_LOCK 1 #define NET5_ATL_FORCED_LOCK 2 #define NET5_ATL_UNLOCK 3 #define NET5_ATL_GET_STATUS 4 //}; #define NET5_MAX_RESERVED_AUTOMATION_INFO 16 // enum EventAutomationType #define NET5_EAT_DDNS 1 //}; // enum DDNS service type { #define NET5_DDNS_SERVICE_TYPE_DYNDNS 1 //}; // enum EventAutomationCommand { #define NET5_EAC_ADD 1 #define NET5_EAC_DELETE 2 #define NET5_EAC_MODIFY 3 //}; #define _NET5_EVENT_AUTOMATION_INFO_HEADER_BODY \ union { \ ULONG allHdr[NET5_MAX_RESERVED_AUTOMATION_INFO]; \ struct { \ GUID uID; \ ULONG uAutomationType; \ ULONG uStructSize; \ ULONG uCommand; \ }; \ } \ typedef struct _NET5_EVENT_AUTOMATION_INFO_HEADER { _NET5_EVENT_AUTOMATION_INFO_HEADER_BODY; } NET5_EVENT_AUTOMATION_INFO_HEADER; typedef struct _NET5_EVENT_AUTOMATION_INFO_DDNS { _NET5_EVENT_AUTOMATION_INFO_HEADER_BODY; union { ULONG all[NET5_MAX_RESERVED_AUTOMATION_INFO*8]; struct { ULONG uDdnsServiceType; char DdnsServerAddr[NET5_MAX_DOMAIN_NAME_LENGTH]; char DdnsUserName[NET5_MAX_ID_LENGTH]; char DdnsPassword[NET5_MAX_PW_LENGTH]; char DomainName[NET5_MAX_DOMAIN_NAME_LENGTH]; ULONG uUpdateIntervalMin; }; }; } NET5_EVENT_AUTOMATION_INFO_DDNS; #define NET5_MAX_RESERVED_MULTICAST_INFO 64 typedef union { struct { char Address[NET5_MAX_DOMAIN_NAME_LENGTH]; ULONG uPort; ULONG uTTL; }; ULONG reserved[NET5_MAX_RESERVED_MULTICAST_INFO]; } NET5_MULTICAST_INFO; //enum NetCommand { // Admin Level // User Management #define NET5_NC_ADD_USER_ID 1001 // LPCSTR sUserId, LPCSTR sUserPw, ULONG *puIdInfo #define NET5_NC_DEL_USER_ID 1002 // LPCSTR sUserId #define NET5_NC_GET_USER_PW 1003 // LPCSTR sUserId, [out]LPSTR uUserPw #define NET5_NC_GET_ALL_USER_LIST 1004 // [out]LPSTR *pUserList #define NET5_NC_GET_CURRENT_USER_NUM 1005 // [out]ULONG *pCurrentUserNum #define NET5_NC_GET_CURRENT_USER_LIST 1006 // [out]LPSTR *pCurrentUserList #define NET5_NC_CHANGE_USER_ID_DATA 1008 // LPCSTR pUserId, ULONG *puIdData // System Management #define NET5_NC_SET_ADDR 1101 // NET5_ADDR_INFO DataInfo #define NET5_NC_SET_PORT 1102 // ULONG *puWebServerPort,ULONG* puStreamServerPort #define NET5_NC_SET_SYSTEM_NAME 1103 // LPCSTR sSystemName #define NET5_NC_SET_SYSTEM_TIME 1104 // SYSTEMTIME SystemTime #define NET5_NC_FIRMWARE_UPDATE 1105 // LPCSTR sFilePath #define NET5_NC_RESTART 1106 // void #define NET5_NC_SET_SNTP_ADDRESS 1107 // LPCSTR pAddress1, LPCSTR pAddress2, LPCSTR pAddress3 // User Level // ID Info #define NET5_NC_CHANGE_PW 2101 // LPCSTR sUserId, LPCSTR sNewPw #define NET5_NC_GET_ID_DATA 2102 // LPCSTR sUserId, ULONG *puIdData // System Info #define NET5_NC_GET_SERVER_ADDR 2201 // NET5_ADDR_INFO *pAddrInfo #define NET5_NC_GET_SYSTEM_NAME 2202 // LPSTR SystemName #define NET5_NC_GET_SYSTEM_TIME 2203 // SYSTEMTIME *pSystemTime #define NET5_NC_IS_CONNECTION 2204 // BOOL *pbOnOff #define NET5_NC_GET_PORT 2205 // [out]ULONG *puWebServerPort, [out]ULONG *puStreamServerPort #define NET5_NC_SEND_SERIAL_DATA 2206 // ULONG *puPortNumber, BYTE *pData, ULONG *puDataSize #define NET5_NC_RECV_SERIAL_DATA 2207 // ULONG *puPortNumber, BYTE *pData, ULONG *puMaxSize, ULONG *puDataSize #define NET5_NC_SET_COMM_STATE 2208 // ULONG *puPortNum, DCB *pDCB #define NET5_NC_GET_COMM_STATE 2209 // ULONG *puPortNum, [out]DCB *pDCB #define NET5_NC_GET_VERSION 2210 // const CMN5_BOARD_INFO_DESC *pDesc, NET5_VERSION_INFO *pInfo #define NET5_NC_GET_LOG 2211 // CMN5_ERROR_CODE_ITEM *pLogInfo #define NET5_NC_GET_SNTP_ADDRESS 2212 // LPCSTR pAddress1, LPCSTR pAddress2, LPCSTR pAddress3 // Resource Management #define NET5_NC_AUDIO_TX_LOCK 2301 // ULONG *puSubCmd, ULONG *puChannel, ULONG *puStatus // Automation #define NET5_NC_SET_EVENT_AUTOMATION 2401 // ULONG *puNumInfo, NET5_EVENT_AUTOMATION_INFO_HEADER *pInfos #define NET5_NC_QUERY_EVENT_AUTOMATION_SIZE 2402 // ULONG *puSize, ULONG *puNum #define NET5_NC_GET_ALL_EVENT_AUTOMATION 2403 // ULONG *puSize, NET5_EVENT_AUTOMATION_INFO_HEADER *pInfos // File management #define NET5_NC_WRITE_USER_FILE_DATA 2501 // LPCTSTR pFileName, VOID *pData, ULONG *puDataSize, BOOL *bAppend #define NET5_NC_GET_USER_FILE_DATA_SIZE 2502 // LPCTSTR pFileName, [out]ULONG *puDataSize #define NET5_NC_READ_USER_FILE_DATA 2503 // LPCTSTR pFileName, VOID *pData, ULONG *puDataSize // Multicast #define NET5_NC_GET_MULTICAST_INFO 2601 // MULTICAST_INFO *pInfo #define NET5_NC_SET_MULTICAST_INFO 2602 // MULTICAST_INFO *pInfo #define NET5_NC_ENABLE_MULTICAST 2603 // BOOL *pbEnable //}; //enum ServerType { #define NET5_ST_VIDEO_SERVER 1 #define NET5_ST_DIRECTORY_SERVER 2 #define NET5_ST_MULTICAST 3 //}; // metalbrain - for test // enum StreamingType { #define NET5_ST_RTP_UDP 1 #define NET5_ST_RTP_TCP 2 #define NET5_ST_HTTP_TUNNELING 3 #define NET5_ST_MULTICAST_UDP 4 //}; // Interface definition for INet5 interface INet5 : IUnknown { STDMETHOD_(BOOL, Net5Connect)(LPCSTR sAddress, LPCSTR sUserID, LPCSTR sUserPW, ULONG uServerType, ULONG *puIdData, ULONG uTimeOut) PURE; STDMETHOD_(void, Net5Disconnect)(void) PURE; STDMETHOD_(BOOL, Net5Command)(ULONG uVideoServerCmd, ULONG *puParam1, ULONG *puParam2, ULONG *puParam3, ULONG *puParam4) PURE; STDMETHOD_(BOOL, Net5SetApiTimeOut)(ULONG uTimeOut) PURE; STDMETHOD_(BOOL, Net5GetApiTimeOut)(ULONG *uTimeOut) PURE; STDMETHOD_(BOOL, Net5SetEventHandle)(ULONG uType, HANDLE hHandle) PURE; STDMETHOD_(BOOL, Net5GetEventHandle)(ULONG uType, HANDLE *pHandle) PURE; STDMETHOD_(BOOL, Net5GetEventData)(ULONG uType, void *pData) PURE; STDMETHOD_(BOOL, Net5GetLastErrorCode)(CMN5_ERROR_CODE_ITEM *pEcode) PURE; // metalbrain - for test STDMETHOD_(BOOL, Net5ConnectEx)(LPCSTR pszAddress, ULONG uStreamingType, ULONG uTimeOut) PURE; STDMETHOD_(BOOL, Net5Login)(LPCSTR pszUserID, LPCSTR pszUserPW) PURE; STDMETHOD_(BOOL, Net5Logout)() PURE; }; #pragma pack( pop, Net5BoardLibEx_H ) #endif