#pragma once #include "XnsMediaInterface.h" #define STR_LEN_NAME 127 #define STR_LEN_ID 63 #define STR_LEN_PSWD 41 #define STR_LEN_PTZ_NAME 41 #define STR_LEN_IP 16 #define STR_LEN_MAC 13 #define STR_LEN_DOMAIN 255 #define STR_LEN_URL 255 #define STR_LEN_DDNSID 21 #define STR_LEN_VERSION 128 #define STR_LEN_DESCRIPTION 255 #define STR_LEN_PHONE 63 #define STR_LEN_ADDRESS 255 #define STR_LEN_PATH 512 #define WM_RECEIVE_DEVICEEVENT WM_USER + 101 #define WM_RECEIVE_WINDOWEVENT WM_USER + 102 enum { XDEVICE_STATUS_DISCONNECTED = 0, XDEVICE_STATUS_CONNECTED, }; enum { XCTL_ALL = 0xFF, XCTL_DVR = 0x01, XCTL_NETCAM = 0x02, XCTL_ENCODER = 0x04, XCTL_CAMERA = 0x08, XCTL_VIDEO = 0x10, XCTL_ALARM = 0x20, XCTL_SENSOR = 0x40, XCTL_ALARM_BEEP = 0x80, }; enum { XADDRESS_IP = 1, XADDRESS_URL, XADDRESS_SSDDNS, XADDRESS_S1DDNS, XADDRESS_IPOLISDDNS, }; enum { XCAMERA_STATUS = 1, XRECORDING_STATUS, XLISTEN_STATUS, XTALK_STATUS, XALARM_STATUS, XLOCALREC_STATUS, }; enum { XCAMERA_STATUS_MASK = 0x00000001, XRECORDING_STATUS_MASK = 0x00000002, XLISTEN_STATUS_MASK = 0x00000004, XTALK_STATUS_MASK = 0x00000008, XALARM_STATUS_MASK = 0x00000010, XLOCALREC_STATUS_MASK = 0x00000020, }; enum { XCAM_STATUS_ON = 0x00000001, XCAM_STATUS_SIGNAL = 0x00000002, XCAM_STATUS_COVERT1 = 0x00000004, XCAM_STATUS_COVERT2 = 0x00000008, XCAM_STATUS_ACTIVATED = 0x00000010, }; enum { XLISTEN_STATUS_LIVE = 0x00000001, XLISTEN_STATUS_PLAYBACK = 0x00000002, }; // --> hh3.kim : ADD IV EVENT // IV TYPE enum { XIV_TYPE_PASSING = 0x00000001, XIV_TYPE_ENTERING = 0x00000010, XIV_TYPE_EXITING = 0x00000020, XIV_TYPE_APPEARING = 0x00000040, XIV_TYPE_DISAPPERING = 0x00000080, XIV_TYPE_SCENE_CHANGE = 0x00000100, }; // <-- hh3.kim : ADD IV EVENT enum { XVCODEC_UNKNOWN = 0, XVCODEC_MJPEG, XVCODEC_MPEG4, XVCODEC_H264 }; // Unit Cap (For Device and Control) // Caution! MAX Cap is 100 (MAX_CAPAPBILITY Defined) enum { XCTL_CAP_NONE = 0, XCTL_CAP_SW_UPLOAD, XCTL_CAP_CFG_IMPORT, XCTL_CAP_CFG_EXPORT, XCTL_CAP_CONN_FORCED, XCTL_CAP_MEDIA_AUTHORITY, XCTL_CAP_FSPEED1, XCTL_CAP_FSPEED2, XCTL_CAP_FSPEED4, XCTL_CAP_FSPEED8, XCTL_CAP_FSPEED16, //10 XCTL_CAP_FSPEED32, XCTL_CAP_FSPEED64, XCTL_CAP_BSPEED1, XCTL_CAP_BSPEED2, XCTL_CAP_BSPEED4, XCTL_CAP_BSPEED8, XCTL_CAP_BSPEED16, XCTL_CAP_BSPEED32, XCTL_CAP_BSPEED64, XCTL_CAP_FSSPEED1, //20 XCTL_CAP_FSSPEED2, XCTL_CAP_FSSPEED4, XCTL_CAP_FSSPEED8, XCTL_CAP_FSSPEED16, XCTL_CAP_FSSPEED32, XCTL_CAP_FSSPEED64, XCTL_CAP_BSSPEED1, XCTL_CAP_BSSPEED2, XCTL_CAP_BSSPEED4, XCTL_CAP_BSSPEED8, //30 XCTL_CAP_BSSPEED16, XCTL_CAP_BSSPEED32, XCTL_CAP_BSSPEED64, XCTL_CAP_SEEK, XCTL_CAP_FSTEP, XCTL_CAP_BSTEP, XCTL_CAP_LIVE, XCTL_CAP_PLAYBACK, XCTL_CAP_BACKUP, XCTL_CAP_SEARCH, //40 XCTL_CAP_LISTEN, XCTL_CAP_TALK, XCTL_CAP_CAM_MENU, XCTL_CAP_PTZ_PAN, XCTL_CAP_PTZ_TILT, XCTL_CAP_PTZ_ZOOM, XCTL_CAP_PTZ_SPEED, XCTL_CAP_PTZ_PRESET, XCTL_CAP_PTZ_PRESET_SVR, XCTL_CAP_PTZ_AUTOPAN, //50 XCTL_CAP_PTZ_SCAN, XCTL_CAP_PTZ_PATTERN, XCTL_CAP_PTZ_SWING, XCTL_CAP_PTZ_TOUR, XCTL_CAP_PTZ_POWER, XCTL_CAP_PTZ_FREE_MOVE, XCTL_CAP_PTZ_SPEED_ZOOM, XCTL_CAP_CAM_IRIS, XCTL_CAP_CAM_FOCUS, XCTL_CAP_CAM_BRIGHTNESS, //60 XCTL_CAP_CAM_CONTRAST, XCTL_CAP_ALARM_ONOFF, XCTL_CAP_DVR_EVENT_RESET, XCTL_CAP_DVR_MANUAL_REC_CONTROL, XCTL_CAP_DVR_REC_STATUS, XCTL_CAP_MOTION_SEARCH, // Smart Search Added // --> hh3.kim : ADD AREA ZOOM FUNCTIONS XCTL_CAP_PTZ_AREA_ZOOM, // --> hh3.kim : ADD PTZ GET/SET FUNCTIONS XCTL_CAP_PTZ_GET_POS, XCTL_CAP_PTZ_SET_POS, XCTL_CAP_OVERLAP_TRACK_SEARCH, //70, //+ jeongguc.kang <2011.10.19> Áߺ¹±¸°£ Ãß°¡ XCTL_CAP_POS_SEARCH, //+ jeongguc.kang <2011.10.20> Search Pos Ãß°¡ // hh3.kim : PTZ GET/SET POS SPEED XCTL_CAP_PTZ_GET_POS_SPEED, XCTL_CAP_PTZ_SET_POS_SPEED, XCTL_CAP_POWER_RESTART, XCTL_CAP_BANDWIDTH //+ jeongguc.kang <2012.04.18> banamex ÇÁ·ÎÁ§Æ® °ü·Ã bandwidth Ä¿¸Çµå Ãß°¡ }; // Unit Cap Mask (For Control, not Device) enum { XCTL_CAP_SW_UPLOAD_MASK = 0x00000001, XCTL_CAP_CFG_IMPORT_MASK = 0x00000002, XCTL_CAP_CFG_EXPORT_MASK = 0x00000004, XCTL_CAP_CONN_FORCED_MASK = 0x00000008, XCTL_CAP_MEDIA_AUTHORITY_MASK = 0x00000010, XCTL_CAP_PLAY_CONTROL_MASK = 0x00000020, XCTL_CAP_LIVE_MASK = 0x00000040, XCTL_CAP_PLAYBACK_MASK = 0x00000080, XCTL_CAP_BACKUP_MASK = 0x00000100, XCTL_CAP_SEARCH_MASK = 0x00000200, XCTL_CAP_LISTEN_MASK = 0x00000400, XCTL_CAP_TALK_MASK = 0x00000800, XCTL_CAP_PTZ_MASK = 0x00001000, XCTL_CAP_ALARM_ONOFF_MASK = 0x00002000, XCTL_CAP_DVR_EVENT_RESET_MASK = 0x00004000, XCTL_CAP_DVR_MANUAL_REC_CONTROL_MASK = 0x00008000, XCTL_CAP_DVR_REC_STATUS_MASK = 0x00010000, XCTL_CAP_MOTION_SEARCH_MASK = 0x00020000, XCTL_CAP_OVERLAP_TRACK_SEARCH_MASK = 0x00040000, //+ jeongguc.kang <2011.10.19> Áߺ¹ ±¸°£ Ãß°¡ XCTL_CAP_POS_SEARCH_MASK = 0x00080000, //+ jeongguc.kang <2011.10.20> Search Pos Ãß°¡ XCTL_CAP_POWER_RESTART_MASK = 0x00100000, XCTL_CAP_BANDWIDTH_MASK = 0x00200000, //+ jeongguc.kang <2012.04.18> banamex ÇÁ·ÎÁ§Æ® °ü·Ã Get Bandwidth Ãß°¡ }; // XNS Command Match enum // Query { XQRY_CONNECT = 1, XQRY_CONNECT_NONBLOCK, XQRY_DISCONNECT, XQRY_RECONNECT, XQRY_ACQUIRE_MEDIA_AUTHIRITY, XQRY_RELEASE_MEDIA_AUTHORITY, XQRY_OPEN_MEDIA, XQRY_CLOSE_MEDIA, XQRY_PLAY_MEDIA, XQRY_PAUSE_MEDIA, XQRY_SEEK_MEDIA, XQRY_FRAMEAD_MEDIA, XQRY_SEARCH_CALENDAR, XQRY_SEARCH_DAY, XQRY_TALK, XQRY_LISTEN, XQRY_SEND_AUDIO, XQRY_ALARM, XQRY_CONTROL_PTZ, XQRY_CONTROL_PTZ_FREE_MOVE, XQRY_CONTROL_PTZ_SPEED_ZOOMIN, XQRY_CONTROL_PTZ_SPEED_ZOOMOUT, XQRY_CONTROL_PPTZ, XQRY_CONTROL_MENU, XQRY_EXECUTE_HPTZ, XQRY_GET_PRESET_LIST, XQRY_SET_PRESET, XQRY_DELETE_PRESET, XQRY_DELETE_PRESET_ALL, XQRY_UPLOAD_SW, XQRY_IMPORT_CFG, XQRY_EXPORT_CFG, XQRY_LOCALREC_START, XQRY_LOCALREC_STOP, XQRY_BACKUP_START, XQRY_BACKUP_STOP, XQRY_OPEN_STREAM, XQRY_CLOSE_STREAM, XQRY_REOPEN_ALL_STREAM, XQRY_SUSPEND_ALL_STREAM, XQRY_RESUME_ALL_STREAM, XQRY_SUSPEND_STREAM, XQRY_RESUME_STREAM, XQRY_DVR_EVENT_RESET, XQRY_DVR_RECORDING, XQRY_GET_MOTION_GRID, XQRY_MOTION_SEARCH, XQRY_SEND_SERIAL_DATA, // --> hh3.kim : ADD AREA ZOOM FUNCTIONS XQRY_AREA_ZOOM, XQRY_ZOOM_1X, // <-- hh3.kim : ADD AREA ZOOM FUNCTIONS // --> hh3.kim : ADD PTZ GET/SET FUNCTIONS XQRY_GET_PTZ_POS, XQRY_SET_PTZ_POS, // --> hh3.kim : ADD PTZ GET/SET FUNCTIONS XQRY_SEARCH_OVERLAP, //+ jeongguc.kang <2011.10.19> Áߺ¹±¸°£ Ãß°¡ XQRY_SEARCH_POS, //+ jeongguc.kang <2011.10.20> Search POS Ãß°¡ XQRY_CANCEL_POS, //+ jeongguc.kang <2011.10.20> Cancel Pos Ãß°¡ // hh3.kim : PTZ_POS+SPEED, POWER RESTART XQRY_GET_PTZ_POS_SPEED, XQRY_SET_PTZ_POS_SPEED, XQRY_POWER_RESTART, // hh3.kim : get hptz list XQRY_GET_HPTZ_LIST, //+ jeongguc.kang <2012.04.18> banamex ÇÁ·ÎÁ§Æ® °ü·Ã bandwidth Ä¿¸Çµå Ãß°¡ XQRY_GET_BANDWIDTH, XQRY_SET_BANDWIDTH, //+ XQRY_GET_START_RECORDING_TIME, //+ jungkoo.kang <2012.11.30> banamex ÇÁ·ÎÁ§Æ® °ü·Ã GetRecordingTime API Ãß°¡ XQRY_GET_END_RECORDING_TIME, //+ jungkoo.kang <2012.11.30> banamex ÇÁ·ÎÁ§Æ® °ü·Ã GetRecordingTime API Ãß°¡ }; enum // Response or Event { XEVT_DEVICE_DETECTED = 1, XEVT_CONNECT_FAILED, XEVT_SEARCH_CALENDAR, XEVT_SEARCH_DAY, XEVT_PRESET_LIST, XEVT_UPLOAD_SW_PROGRESS, XEVT_IMPORT_CFG_PROGRESS, XEVT_EXPORT_CFG_PROGRESS, XEVT_MOTION, XEVT_SENSOR, XEVT_VIDEOLOSS, XEVT_HDD_FAIL, XEVT_HDD_FULL, // hh3.kim : XEVT_PASSWORD_CNAHGED --> XEVT_PASSWORD_CHANGED XEVT_PASSWORD_CHANGED, XEVT_FAN_BROKEN, // hh3.kim : XEVT_DEVICE_STATUS_CAHGED --> XEVT_DEVICE_STATUS_CHANGED XEVT_DEVICE_STATUS_CHANGED, XEVT_CONTROL_LOCAL_NAME_CHANGED, XEVT_CONTROL_REMOTE_NAME_CHANGED, // hh3.kim : XEVT_CONTROL_STATUS_CAHGED --> XEVT_CONTROL_STATUS_CHANGED XEVT_CONTROL_STATUS_CHANGED, // hh3.kim : XEVT_CONTROL_CAPABILITY_CAHGED --> XEVT_CONTROL_CAPABILITY_CHANGED XEVT_CONTROL_CAPABILITY_CHANGED, XEVT_BACKUP_PROGRESS, XEVT_PTZ_CONTROL_FAILED, XEVT_ALARM_OUT_CONTROL_FAILED, XEVT_NEW_MEDIA, XEVT_GET_MOTION_GRID, XEVT_MOTION_SEARCH, XEVT_TALK_FAILED, XEVT_CALLBACK_EVENT, XEVT_SEND_SERIAL_DATA, // --> hh3.kim : ADD IV EVENT XEVT_IV_OCCUR, XEVT_GET_PTZ_POS, XEVT_AREA_ZOOM_MOVING, //+ jeongguc.kang <2011.09.29> XEVT_SEARCH_OVERLAP, //+ jeongguc.kang <2011.10.19> Áߺ¹ ±¸°£ Ãß°¡ XEVT_SEARCH_POS_LIST, //+ jeongguc.kang <2011.10.20> Search Pos Ãß°¡ XEVT_END_SEARCH_POS, // hh3.kim : GET_PTZ_POS + SPEED XEVT_GET_PTZ_POS_SPEED, XEVT_POWER_RESTART, // hh3.kim : HPTZ LIST XEVT_HPTZ_LIST, XEVT_DEVICE_INSTALLED, // hh3.kim <2011-03-28> µð¹ÙÀ̽º ÀνºÅç À̺¥Æ® XEVT_GET_BANDWIDTH, //+ jeongguc.kang <2012.04.18> banamex ÇÁ·ÎÁ§Æ® °ü·Ã Get Bandwidth À̺¥Æ® Ãß°¡ XEVT_RECORDING_ERROR, //+ jeongguc.kang <2012.04.18> banamex ÇÁ·ÎÁ§Æ® °ü·Ã Recording Error À̺¥Æ® Ãß°¡ XEVT_FAN_STATUS_CHANGED, //+ jeongguc.kang <2012.07.07> banamex ÇÁ·ÎÁ§Æ® °ü·Ã Fan Status Changed À̺¥Æ® Ãß°¡ XEVT_VIDEO_FRAME_INFO_RECEIVED, //+ hh3.kim <2012-10-24> ÇÁ·¹ÀÓ Á¤º¸ À̺¥Æ® Ãß°¡ (iPOLiS Device Manager ´ëÀÀ) XEVT_HDD_NUM_CHANGED, //+ jungkoo.kang <2012.11.27> OnHDDNumChanged À̺¥Æ® Ãß°¡ XEVT_GET_START_RECORDING_TIME, //+ jungkoo.kang <2012.11.30> banamex ÇÁ·ÎÁ§Æ® °ü·Ã GetRecordingTime API Ãß°¡ XEVT_GET_END_RECORDING_TIME, //+ jungkoo.kang <2012.11.30> banamex ÇÁ·ÎÁ§Æ® °ü·Ã GetRecordingTime API Ãß°¡ XEVT_RECORDING_STATUS_CHANGED, //+ jungkoo.kang <2013.02.26> ÀúÀåÀåÄ¡ÀÇ ·¹ÄÚµù ½ÃÀÛ/Á¾·á À̺¥Æ® Ãß°¡ XEVT_NTP_SERVER_CONN_FAILED, //+ jungkoo.kang <2013.04.11> banamex ÇÁ·ÎÁ§Æ® °ü·Ã ½Ã°£ µ¿±âÈ­ ÇÊ¿ä À̺¥Æ® Ãß°¡ XEVT_CPU_HIGH_CONSUMPTION, //+ jungkoo.kang <2013.04.11> banamex ÇÁ·ÎÁ§Æ® °ü·Ã CPU ¼º´É À̺¥Æ® Ãß°¡ XEVT_RAM_HIGH_CONSUMPTION, //+ jungkoo.kang <2013.04.11> banamex ÇÁ·ÎÁ§Æ® °ü·Ã RAM ¼º´É À̺¥Æ® Ãß°¡ XEVT_VIDEOLOSS_END, //+ jungkoo.kang <2013.04.11> banamex ÇÁ·ÎÁ§Æ® °ü·Ã VideoLoss End À̺¥Æ® Ãß°¡ }; enum { XPTZ_UP = 1, XPTZ_DOWN, XPTZ_LEFT, XPTZ_RIGHT, XPTZ_UPLEFT, XPTZ_UPRIGHT, XPTZ_DOWNLEFT, XPTZ_DOWNRIGHT, XPTZ_ZOOMIN, XPTZ_ZOOMOUT, XPTZ_STOP, XPTZ_FOCUS_NEAR, XPTZ_FOCUS_FAR, XPTZ_FOCUS_STOP, XPTZ_IRIS_OPEN, XPTZ_IRIS_CLOSE, }; enum { XMENU_UP = 1, XMENU_DOWN, XMENU_LEFT, XMENU_RIGHT, XMENU_ENTER, XMENU_ON, XMENU_OFF, XMENU_CANCEL, }; enum { XHPTZ_PRESET = 1, XHPTZ_AUTOPAN, XHPTZ_SCAN, XHPTZ_PATTERN, XHPTZ_SWING, // New HPTZ Command XHPTZ_TOUR, // New HPTZ Command }; enum { XMEDIA_LIVE = 1, XMEDIA_PLAYBACK, XMEDIA_BACKUP, }; enum { XREC_MOTION = 0x01, XREC_SENSOR = 0x02, XREC_VIDEOLOSS = 0x04, XREC_MANUAL = 0x08, XREC_CONTINUOS = 0x10, XREC_TYPE_ALL = 0xff // hh3.kim <2012-04-24> Ãß°¡ }; enum { XEVENT_ALL = 0x000000ff, XEVENT_SENSOR = 0x00000001, XEVENT_MOTION = 0x00000002, XEVENT_VIDEOLOSS = 0x00000004, // --> hh3.kim : ADD IV EVENT XEVENT_IV_OCCUR = 0x00000008, }; class IXnsDeviceEventHandler { public: virtual void OnXnsDeviceEvent( long nEventID , ... ) = 0; }; class IXnsTimeline { public: virtual long GetCameraCount() = 0; virtual long GetTimelineCount( long nCamIndex ) = 0; virtual void GetTimeline( long nCamIndex , long nTlIndex , long nType , long* ptStart , long* ptEnd , long* pnRecType , long* pnRecID ) = 0; virtual long GetTimelineIndex() = 0; }; class IXnsPresetList { public: virtual long GetPresetCount() = 0; virtual const char* GetPreset( long nPresetIndex , long* pnNumber ) = 0; }; class IXnsFileReader { public: virtual const char* GetFileName() = 0; virtual IXnsMediaSource*GetMediaSource() = 0; virtual IXnsTimeline* GetTimeline() = 0; virtual long Play( double dSpeed ) = 0; virtual long Pause() = 0; virtual long Seek( long tPos ) = 0; virtual long FrameAdvance( long nDelta ) = 0; }; class IXnsDevice { public: virtual long GetDeviceID() = 0; virtual long GetDeviceStatus() = 0; virtual const char* GetVendorName() = 0; virtual const char* GetModelName() = 0; virtual const char* GetDisplayName() = 0; virtual long GetSetupPageStyle() = 0; virtual const char* GetVersion() = 0; virtual long GetAddressType() = 0; virtual const char* GetIP() = 0; virtual const char* GetMac() = 0; virtual const char* GetURL() = 0; virtual const char* GetDDNSID() = 0; virtual long GetPort() = 0; virtual long GetHttpPort() = 0; virtual const char* GetUserID() = 0; virtual const char* GetPassword() = 0; virtual void SetConnectionInfo( const char* szVendorName , const char* szModelName , long nAddressType , const char* szAddress , long nPort , long nHttpPort , const char* szUserID , const char* szPassword ) = 0; virtual long GetLatestUpdateTime() = 0; virtual long GetDeviceUTC() = 0; virtual long GetDeviceLocalTime() = 0; virtual BOOL IsEmptyTimeInDST( long tLocal ) = 0; virtual BOOL IsDuplicatedTimeInDST( long tLocal ) = 0; virtual long LocalTimeToDeviceUTC( long tLocal ) = 0; virtual long UTCToDeviceLocalTime( long tUTC ) = 0; virtual long GetDeviceDSTStartUTC( long nYear ) = 0; virtual long GetDeviceDSTEndUTC( long nYear ) = 0; virtual long GetControlCount( long nType ) = 0; virtual long GetParentControlID( long nControlID ) = 0; virtual long GetControlType( long nControlID ) = 0; virtual long GetControlNumber( long nControlID ) = 0; virtual long GetControlDepth( long nControlID ) = 0; virtual const char* GetControlLocalName( long nControlID ) = 0; virtual const char* GetControlRemoteName( long nControlID ) = 0; virtual long GetControlStatus( long nControlID , long nStatusID ) = 0; virtual BOOL GetControlCapability( long nControlID , long nCapabilityID ) = 0; //+ jungkoo.kang <2013.03.21> Video Resolution,FrameRate,Quality,Codec °¡Á®¿À´Â API Ãß°¡ virtual long GetControlVideoResolution( long nControlID ) = 0; virtual long GetControlVideoFrameRate( long nControlID ) = 0; virtual long GetControlVideoQuality( long nControlID ) = 0; virtual const char* GetControlVideoCodec( long nControlID ) = 0; //+ virtual void ChangeControlLocalName( long nControlID , const char* szName ) = 0; virtual void ChangeControlRemoteName( long nControlID , const char* szName ) = 0; virtual long LoadDeviceProfile() = 0; virtual long SaveDeviceProfile() = 0; virtual long DeleteDeviceProfile() = 0; virtual BOOL IsPlaying() = 0; virtual BOOL HasAuthority() = 0; virtual long SendXnsQuery( long nQueryID , ... ) = 0; virtual long SetVideoInfoReceived(long nControlID, long nMediaType, long bFlag) = 0; };