XnsDeviceInterface.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. #pragma once
  2. #include "XnsMediaInterface.h"
  3. #define STR_LEN_NAME 127
  4. #define STR_LEN_ID 63
  5. #define STR_LEN_PSWD 41
  6. #define STR_LEN_PTZ_NAME 41
  7. #define STR_LEN_IP 16
  8. #define STR_LEN_MAC 13
  9. #define STR_LEN_DOMAIN 255
  10. #define STR_LEN_URL 255
  11. #define STR_LEN_DDNSID 21
  12. #define STR_LEN_VERSION 128
  13. #define STR_LEN_DESCRIPTION 255
  14. #define STR_LEN_PHONE 63
  15. #define STR_LEN_ADDRESS 255
  16. #define STR_LEN_PATH 512
  17. #define WM_RECEIVE_DEVICEEVENT WM_USER + 101
  18. #define WM_RECEIVE_WINDOWEVENT WM_USER + 102
  19. enum
  20. {
  21. XDEVICE_STATUS_DISCONNECTED = 0,
  22. XDEVICE_STATUS_CONNECTED,
  23. };
  24. enum
  25. {
  26. XCTL_ALL = 0xFF,
  27. XCTL_DVR = 0x01,
  28. XCTL_NETCAM = 0x02,
  29. XCTL_ENCODER = 0x04,
  30. XCTL_CAMERA = 0x08,
  31. XCTL_VIDEO = 0x10,
  32. XCTL_ALARM = 0x20,
  33. XCTL_SENSOR = 0x40,
  34. XCTL_ALARM_BEEP = 0x80,
  35. };
  36. enum
  37. {
  38. XADDRESS_IP = 1,
  39. XADDRESS_URL,
  40. XADDRESS_SSDDNS,
  41. XADDRESS_S1DDNS,
  42. XADDRESS_IPOLISDDNS,
  43. };
  44. enum
  45. {
  46. XCAMERA_STATUS = 1,
  47. XRECORDING_STATUS,
  48. XLISTEN_STATUS,
  49. XTALK_STATUS,
  50. XALARM_STATUS,
  51. XLOCALREC_STATUS,
  52. };
  53. enum
  54. {
  55. XCAMERA_STATUS_MASK = 0x00000001,
  56. XRECORDING_STATUS_MASK = 0x00000002,
  57. XLISTEN_STATUS_MASK = 0x00000004,
  58. XTALK_STATUS_MASK = 0x00000008,
  59. XALARM_STATUS_MASK = 0x00000010,
  60. XLOCALREC_STATUS_MASK = 0x00000020,
  61. };
  62. enum
  63. {
  64. XCAM_STATUS_ON = 0x00000001,
  65. XCAM_STATUS_SIGNAL = 0x00000002,
  66. XCAM_STATUS_COVERT1 = 0x00000004,
  67. XCAM_STATUS_COVERT2 = 0x00000008,
  68. XCAM_STATUS_ACTIVATED = 0x00000010,
  69. };
  70. enum
  71. {
  72. XLISTEN_STATUS_LIVE = 0x00000001,
  73. XLISTEN_STATUS_PLAYBACK = 0x00000002,
  74. };
  75. // --> hh3.kim : ADD IV EVENT
  76. // IV TYPE
  77. enum
  78. {
  79. XIV_TYPE_PASSING = 0x00000001,
  80. XIV_TYPE_ENTERING = 0x00000010,
  81. XIV_TYPE_EXITING = 0x00000020,
  82. XIV_TYPE_APPEARING = 0x00000040,
  83. XIV_TYPE_DISAPPERING = 0x00000080,
  84. XIV_TYPE_SCENE_CHANGE = 0x00000100,
  85. };
  86. // <-- hh3.kim : ADD IV EVENT
  87. enum
  88. {
  89. XVCODEC_UNKNOWN = 0,
  90. XVCODEC_MJPEG,
  91. XVCODEC_MPEG4,
  92. XVCODEC_H264
  93. };
  94. // Unit Cap (For Device and Control)
  95. // Caution! MAX Cap is 100 (MAX_CAPAPBILITY Defined)
  96. enum
  97. {
  98. XCTL_CAP_NONE = 0,
  99. XCTL_CAP_SW_UPLOAD,
  100. XCTL_CAP_CFG_IMPORT,
  101. XCTL_CAP_CFG_EXPORT,
  102. XCTL_CAP_CONN_FORCED,
  103. XCTL_CAP_MEDIA_AUTHORITY,
  104. XCTL_CAP_FSPEED1,
  105. XCTL_CAP_FSPEED2,
  106. XCTL_CAP_FSPEED4,
  107. XCTL_CAP_FSPEED8,
  108. XCTL_CAP_FSPEED16, //10
  109. XCTL_CAP_FSPEED32,
  110. XCTL_CAP_FSPEED64,
  111. XCTL_CAP_BSPEED1,
  112. XCTL_CAP_BSPEED2,
  113. XCTL_CAP_BSPEED4,
  114. XCTL_CAP_BSPEED8,
  115. XCTL_CAP_BSPEED16,
  116. XCTL_CAP_BSPEED32,
  117. XCTL_CAP_BSPEED64,
  118. XCTL_CAP_FSSPEED1, //20
  119. XCTL_CAP_FSSPEED2,
  120. XCTL_CAP_FSSPEED4,
  121. XCTL_CAP_FSSPEED8,
  122. XCTL_CAP_FSSPEED16,
  123. XCTL_CAP_FSSPEED32,
  124. XCTL_CAP_FSSPEED64,
  125. XCTL_CAP_BSSPEED1,
  126. XCTL_CAP_BSSPEED2,
  127. XCTL_CAP_BSSPEED4,
  128. XCTL_CAP_BSSPEED8, //30
  129. XCTL_CAP_BSSPEED16,
  130. XCTL_CAP_BSSPEED32,
  131. XCTL_CAP_BSSPEED64,
  132. XCTL_CAP_SEEK,
  133. XCTL_CAP_FSTEP,
  134. XCTL_CAP_BSTEP,
  135. XCTL_CAP_LIVE,
  136. XCTL_CAP_PLAYBACK,
  137. XCTL_CAP_BACKUP,
  138. XCTL_CAP_SEARCH, //40
  139. XCTL_CAP_LISTEN,
  140. XCTL_CAP_TALK,
  141. XCTL_CAP_CAM_MENU,
  142. XCTL_CAP_PTZ_PAN,
  143. XCTL_CAP_PTZ_TILT,
  144. XCTL_CAP_PTZ_ZOOM,
  145. XCTL_CAP_PTZ_SPEED,
  146. XCTL_CAP_PTZ_PRESET,
  147. XCTL_CAP_PTZ_PRESET_SVR,
  148. XCTL_CAP_PTZ_AUTOPAN, //50
  149. XCTL_CAP_PTZ_SCAN,
  150. XCTL_CAP_PTZ_PATTERN,
  151. XCTL_CAP_PTZ_SWING,
  152. XCTL_CAP_PTZ_TOUR,
  153. XCTL_CAP_PTZ_POWER,
  154. XCTL_CAP_PTZ_FREE_MOVE,
  155. XCTL_CAP_PTZ_SPEED_ZOOM,
  156. XCTL_CAP_CAM_IRIS,
  157. XCTL_CAP_CAM_FOCUS,
  158. XCTL_CAP_CAM_BRIGHTNESS, //60
  159. XCTL_CAP_CAM_CONTRAST,
  160. XCTL_CAP_ALARM_ONOFF,
  161. XCTL_CAP_DVR_EVENT_RESET,
  162. XCTL_CAP_DVR_MANUAL_REC_CONTROL,
  163. XCTL_CAP_DVR_REC_STATUS,
  164. XCTL_CAP_MOTION_SEARCH, // Smart Search Added
  165. // --> hh3.kim : ADD AREA ZOOM FUNCTIONS
  166. XCTL_CAP_PTZ_AREA_ZOOM,
  167. // --> hh3.kim : ADD PTZ GET/SET FUNCTIONS
  168. XCTL_CAP_PTZ_GET_POS,
  169. XCTL_CAP_PTZ_SET_POS,
  170. XCTL_CAP_OVERLAP_TRACK_SEARCH, //70, //+ jeongguc.kang <2011.10.19> 중복구간 추가
  171. XCTL_CAP_POS_SEARCH, //+ jeongguc.kang <2011.10.20> Search Pos 추가
  172. // hh3.kim : PTZ GET/SET POS SPEED
  173. XCTL_CAP_PTZ_GET_POS_SPEED,
  174. XCTL_CAP_PTZ_SET_POS_SPEED,
  175. XCTL_CAP_POWER_RESTART,
  176. XCTL_CAP_BANDWIDTH //+ jeongguc.kang <2012.04.18> banamex 프로젝트 관련 bandwidth 커맨드 추가
  177. };
  178. // Unit Cap Mask (For Control, not Device)
  179. enum
  180. {
  181. XCTL_CAP_SW_UPLOAD_MASK = 0x00000001,
  182. XCTL_CAP_CFG_IMPORT_MASK = 0x00000002,
  183. XCTL_CAP_CFG_EXPORT_MASK = 0x00000004,
  184. XCTL_CAP_CONN_FORCED_MASK = 0x00000008,
  185. XCTL_CAP_MEDIA_AUTHORITY_MASK = 0x00000010,
  186. XCTL_CAP_PLAY_CONTROL_MASK = 0x00000020,
  187. XCTL_CAP_LIVE_MASK = 0x00000040,
  188. XCTL_CAP_PLAYBACK_MASK = 0x00000080,
  189. XCTL_CAP_BACKUP_MASK = 0x00000100,
  190. XCTL_CAP_SEARCH_MASK = 0x00000200,
  191. XCTL_CAP_LISTEN_MASK = 0x00000400,
  192. XCTL_CAP_TALK_MASK = 0x00000800,
  193. XCTL_CAP_PTZ_MASK = 0x00001000,
  194. XCTL_CAP_ALARM_ONOFF_MASK = 0x00002000,
  195. XCTL_CAP_DVR_EVENT_RESET_MASK = 0x00004000,
  196. XCTL_CAP_DVR_MANUAL_REC_CONTROL_MASK = 0x00008000,
  197. XCTL_CAP_DVR_REC_STATUS_MASK = 0x00010000,
  198. XCTL_CAP_MOTION_SEARCH_MASK = 0x00020000,
  199. XCTL_CAP_OVERLAP_TRACK_SEARCH_MASK = 0x00040000, //+ jeongguc.kang <2011.10.19> 중복 구간 추가
  200. XCTL_CAP_POS_SEARCH_MASK = 0x00080000, //+ jeongguc.kang <2011.10.20> Search Pos 추가
  201. XCTL_CAP_POWER_RESTART_MASK = 0x00100000,
  202. XCTL_CAP_BANDWIDTH_MASK = 0x00200000, //+ jeongguc.kang <2012.04.18> banamex 프로젝트 관련 Get Bandwidth 추가
  203. };
  204. // XNS Command Match
  205. enum // Query
  206. {
  207. XQRY_CONNECT = 1,
  208. XQRY_CONNECT_NONBLOCK,
  209. XQRY_DISCONNECT,
  210. XQRY_RECONNECT,
  211. XQRY_ACQUIRE_MEDIA_AUTHIRITY,
  212. XQRY_RELEASE_MEDIA_AUTHORITY,
  213. XQRY_OPEN_MEDIA,
  214. XQRY_CLOSE_MEDIA,
  215. XQRY_PLAY_MEDIA,
  216. XQRY_PAUSE_MEDIA,
  217. XQRY_SEEK_MEDIA,
  218. XQRY_FRAMEAD_MEDIA,
  219. XQRY_SEARCH_CALENDAR,
  220. XQRY_SEARCH_DAY,
  221. XQRY_TALK,
  222. XQRY_LISTEN,
  223. XQRY_SEND_AUDIO,
  224. XQRY_ALARM,
  225. XQRY_CONTROL_PTZ,
  226. XQRY_CONTROL_PTZ_FREE_MOVE,
  227. XQRY_CONTROL_PTZ_SPEED_ZOOMIN,
  228. XQRY_CONTROL_PTZ_SPEED_ZOOMOUT,
  229. XQRY_CONTROL_PPTZ,
  230. XQRY_CONTROL_MENU,
  231. XQRY_EXECUTE_HPTZ,
  232. XQRY_GET_PRESET_LIST,
  233. XQRY_SET_PRESET,
  234. XQRY_DELETE_PRESET,
  235. XQRY_DELETE_PRESET_ALL,
  236. XQRY_UPLOAD_SW,
  237. XQRY_IMPORT_CFG,
  238. XQRY_EXPORT_CFG,
  239. XQRY_LOCALREC_START,
  240. XQRY_LOCALREC_STOP,
  241. XQRY_BACKUP_START,
  242. XQRY_BACKUP_STOP,
  243. XQRY_OPEN_STREAM,
  244. XQRY_CLOSE_STREAM,
  245. XQRY_REOPEN_ALL_STREAM,
  246. XQRY_SUSPEND_ALL_STREAM,
  247. XQRY_RESUME_ALL_STREAM,
  248. XQRY_SUSPEND_STREAM,
  249. XQRY_RESUME_STREAM,
  250. XQRY_DVR_EVENT_RESET,
  251. XQRY_DVR_RECORDING,
  252. XQRY_GET_MOTION_GRID,
  253. XQRY_MOTION_SEARCH,
  254. XQRY_SEND_SERIAL_DATA,
  255. // --> hh3.kim : ADD AREA ZOOM FUNCTIONS
  256. XQRY_AREA_ZOOM,
  257. XQRY_ZOOM_1X,
  258. // <-- hh3.kim : ADD AREA ZOOM FUNCTIONS
  259. // --> hh3.kim : ADD PTZ GET/SET FUNCTIONS
  260. XQRY_GET_PTZ_POS,
  261. XQRY_SET_PTZ_POS,
  262. // --> hh3.kim : ADD PTZ GET/SET FUNCTIONS
  263. XQRY_SEARCH_OVERLAP, //+ jeongguc.kang <2011.10.19> 중복구간 추가
  264. XQRY_SEARCH_POS, //+ jeongguc.kang <2011.10.20> Search POS 추가
  265. XQRY_CANCEL_POS, //+ jeongguc.kang <2011.10.20> Cancel Pos 추가
  266. // hh3.kim : PTZ_POS+SPEED, POWER RESTART
  267. XQRY_GET_PTZ_POS_SPEED,
  268. XQRY_SET_PTZ_POS_SPEED,
  269. XQRY_POWER_RESTART,
  270. // hh3.kim : get hptz list
  271. XQRY_GET_HPTZ_LIST,
  272. //+ jeongguc.kang <2012.04.18> banamex 프로젝트 관련 bandwidth 커맨드 추가
  273. XQRY_GET_BANDWIDTH,
  274. XQRY_SET_BANDWIDTH,
  275. //+
  276. XQRY_GET_START_RECORDING_TIME, //+ jungkoo.kang <2012.11.30> banamex 프로젝트 관련 GetRecordingTime API 추가
  277. XQRY_GET_END_RECORDING_TIME, //+ jungkoo.kang <2012.11.30> banamex 프로젝트 관련 GetRecordingTime API 추가
  278. };
  279. enum // Response or Event
  280. {
  281. XEVT_DEVICE_DETECTED = 1,
  282. XEVT_CONNECT_FAILED,
  283. XEVT_SEARCH_CALENDAR,
  284. XEVT_SEARCH_DAY,
  285. XEVT_PRESET_LIST,
  286. XEVT_UPLOAD_SW_PROGRESS,
  287. XEVT_IMPORT_CFG_PROGRESS,
  288. XEVT_EXPORT_CFG_PROGRESS,
  289. XEVT_MOTION,
  290. XEVT_SENSOR,
  291. XEVT_VIDEOLOSS,
  292. XEVT_HDD_FAIL,
  293. XEVT_HDD_FULL,
  294. // hh3.kim : XEVT_PASSWORD_CNAHGED --> XEVT_PASSWORD_CHANGED
  295. XEVT_PASSWORD_CHANGED,
  296. XEVT_FAN_BROKEN,
  297. // hh3.kim : XEVT_DEVICE_STATUS_CAHGED --> XEVT_DEVICE_STATUS_CHANGED
  298. XEVT_DEVICE_STATUS_CHANGED,
  299. XEVT_CONTROL_LOCAL_NAME_CHANGED,
  300. XEVT_CONTROL_REMOTE_NAME_CHANGED,
  301. // hh3.kim : XEVT_CONTROL_STATUS_CAHGED --> XEVT_CONTROL_STATUS_CHANGED
  302. XEVT_CONTROL_STATUS_CHANGED,
  303. // hh3.kim : XEVT_CONTROL_CAPABILITY_CAHGED --> XEVT_CONTROL_CAPABILITY_CHANGED
  304. XEVT_CONTROL_CAPABILITY_CHANGED,
  305. XEVT_BACKUP_PROGRESS,
  306. XEVT_PTZ_CONTROL_FAILED,
  307. XEVT_ALARM_OUT_CONTROL_FAILED,
  308. XEVT_NEW_MEDIA,
  309. XEVT_GET_MOTION_GRID,
  310. XEVT_MOTION_SEARCH,
  311. XEVT_TALK_FAILED,
  312. XEVT_CALLBACK_EVENT,
  313. XEVT_SEND_SERIAL_DATA,
  314. // --> hh3.kim : ADD IV EVENT
  315. XEVT_IV_OCCUR,
  316. XEVT_GET_PTZ_POS,
  317. XEVT_AREA_ZOOM_MOVING, //+ jeongguc.kang <2011.09.29>
  318. XEVT_SEARCH_OVERLAP, //+ jeongguc.kang <2011.10.19> 중복 구간 추가
  319. XEVT_SEARCH_POS_LIST, //+ jeongguc.kang <2011.10.20> Search Pos 추가
  320. XEVT_END_SEARCH_POS,
  321. // hh3.kim : GET_PTZ_POS + SPEED
  322. XEVT_GET_PTZ_POS_SPEED,
  323. XEVT_POWER_RESTART,
  324. // hh3.kim : HPTZ LIST
  325. XEVT_HPTZ_LIST,
  326. XEVT_DEVICE_INSTALLED, // hh3.kim <2011-03-28> 디바이스 인스톨 이벤트
  327. XEVT_GET_BANDWIDTH, //+ jeongguc.kang <2012.04.18> banamex 프로젝트 관련 Get Bandwidth 이벤트 추가
  328. XEVT_RECORDING_ERROR, //+ jeongguc.kang <2012.04.18> banamex 프로젝트 관련 Recording Error 이벤트 추가
  329. XEVT_FAN_STATUS_CHANGED, //+ jeongguc.kang <2012.07.07> banamex 프로젝트 관련 Fan Status Changed 이벤트 추가
  330. XEVT_VIDEO_FRAME_INFO_RECEIVED, //+ hh3.kim <2012-10-24> 프레임 정보 이벤트 추가 (iPOLiS Device Manager 대응)
  331. XEVT_HDD_NUM_CHANGED, //+ jungkoo.kang <2012.11.27> OnHDDNumChanged 이벤트 추가
  332. XEVT_GET_START_RECORDING_TIME, //+ jungkoo.kang <2012.11.30> banamex 프로젝트 관련 GetRecordingTime API 추가
  333. XEVT_GET_END_RECORDING_TIME, //+ jungkoo.kang <2012.11.30> banamex 프로젝트 관련 GetRecordingTime API 추가
  334. XEVT_RECORDING_STATUS_CHANGED, //+ jungkoo.kang <2013.02.26> 저장장치의 레코딩 시작/종료 이벤트 추가
  335. XEVT_NTP_SERVER_CONN_FAILED, //+ jungkoo.kang <2013.04.11> banamex 프로젝트 관련 시간 동기화 필요 이벤트 추가
  336. XEVT_CPU_HIGH_CONSUMPTION, //+ jungkoo.kang <2013.04.11> banamex 프로젝트 관련 CPU 성능 이벤트 추가
  337. XEVT_RAM_HIGH_CONSUMPTION, //+ jungkoo.kang <2013.04.11> banamex 프로젝트 관련 RAM 성능 이벤트 추가
  338. XEVT_VIDEOLOSS_END, //+ jungkoo.kang <2013.04.11> banamex 프로젝트 관련 VideoLoss End 이벤트 추가
  339. };
  340. enum
  341. {
  342. XPTZ_UP = 1,
  343. XPTZ_DOWN,
  344. XPTZ_LEFT,
  345. XPTZ_RIGHT,
  346. XPTZ_UPLEFT,
  347. XPTZ_UPRIGHT,
  348. XPTZ_DOWNLEFT,
  349. XPTZ_DOWNRIGHT,
  350. XPTZ_ZOOMIN,
  351. XPTZ_ZOOMOUT,
  352. XPTZ_STOP,
  353. XPTZ_FOCUS_NEAR,
  354. XPTZ_FOCUS_FAR,
  355. XPTZ_FOCUS_STOP,
  356. XPTZ_IRIS_OPEN,
  357. XPTZ_IRIS_CLOSE,
  358. };
  359. enum
  360. {
  361. XMENU_UP = 1,
  362. XMENU_DOWN,
  363. XMENU_LEFT,
  364. XMENU_RIGHT,
  365. XMENU_ENTER,
  366. XMENU_ON,
  367. XMENU_OFF,
  368. XMENU_CANCEL,
  369. };
  370. enum
  371. {
  372. XHPTZ_PRESET = 1,
  373. XHPTZ_AUTOPAN,
  374. XHPTZ_SCAN,
  375. XHPTZ_PATTERN,
  376. XHPTZ_SWING, // New HPTZ Command
  377. XHPTZ_TOUR, // New HPTZ Command
  378. };
  379. enum
  380. {
  381. XMEDIA_LIVE = 1,
  382. XMEDIA_PLAYBACK,
  383. XMEDIA_BACKUP,
  384. };
  385. enum
  386. {
  387. XREC_MOTION = 0x01,
  388. XREC_SENSOR = 0x02,
  389. XREC_VIDEOLOSS = 0x04,
  390. XREC_MANUAL = 0x08,
  391. XREC_CONTINUOS = 0x10,
  392. XREC_TYPE_ALL = 0xff // hh3.kim <2012-04-24> 추가
  393. };
  394. enum
  395. {
  396. XEVENT_ALL = 0x000000ff,
  397. XEVENT_SENSOR = 0x00000001,
  398. XEVENT_MOTION = 0x00000002,
  399. XEVENT_VIDEOLOSS = 0x00000004,
  400. // --> hh3.kim : ADD IV EVENT
  401. XEVENT_IV_OCCUR = 0x00000008,
  402. };
  403. class IXnsDeviceEventHandler
  404. {
  405. public:
  406. virtual void OnXnsDeviceEvent( long nEventID , ... ) = 0;
  407. };
  408. class IXnsTimeline
  409. {
  410. public:
  411. virtual long GetCameraCount() = 0;
  412. virtual long GetTimelineCount( long nCamIndex ) = 0;
  413. virtual void GetTimeline( long nCamIndex , long nTlIndex , long nType , long* ptStart , long* ptEnd , long* pnRecType , long* pnRecID ) = 0;
  414. virtual long GetTimelineIndex() = 0;
  415. };
  416. class IXnsPresetList
  417. {
  418. public:
  419. virtual long GetPresetCount() = 0;
  420. virtual const char* GetPreset( long nPresetIndex , long* pnNumber ) = 0;
  421. };
  422. class IXnsFileReader
  423. {
  424. public:
  425. virtual const char* GetFileName() = 0;
  426. virtual IXnsMediaSource*GetMediaSource() = 0;
  427. virtual IXnsTimeline* GetTimeline() = 0;
  428. virtual long Play( double dSpeed ) = 0;
  429. virtual long Pause() = 0;
  430. virtual long Seek( long tPos ) = 0;
  431. virtual long FrameAdvance( long nDelta ) = 0;
  432. };
  433. class IXnsDevice
  434. {
  435. public:
  436. virtual long GetDeviceID() = 0;
  437. virtual long GetDeviceStatus() = 0;
  438. virtual const char* GetVendorName() = 0;
  439. virtual const char* GetModelName() = 0;
  440. virtual const char* GetDisplayName() = 0;
  441. virtual long GetSetupPageStyle() = 0;
  442. virtual const char* GetVersion() = 0;
  443. virtual long GetAddressType() = 0;
  444. virtual const char* GetIP() = 0;
  445. virtual const char* GetMac() = 0;
  446. virtual const char* GetURL() = 0;
  447. virtual const char* GetDDNSID() = 0;
  448. virtual long GetPort() = 0;
  449. virtual long GetHttpPort() = 0;
  450. virtual const char* GetUserID() = 0;
  451. virtual const char* GetPassword() = 0;
  452. 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;
  453. virtual long GetLatestUpdateTime() = 0;
  454. virtual long GetDeviceUTC() = 0;
  455. virtual long GetDeviceLocalTime() = 0;
  456. virtual BOOL IsEmptyTimeInDST( long tLocal ) = 0;
  457. virtual BOOL IsDuplicatedTimeInDST( long tLocal ) = 0;
  458. virtual long LocalTimeToDeviceUTC( long tLocal ) = 0;
  459. virtual long UTCToDeviceLocalTime( long tUTC ) = 0;
  460. virtual long GetDeviceDSTStartUTC( long nYear ) = 0;
  461. virtual long GetDeviceDSTEndUTC( long nYear ) = 0;
  462. virtual long GetControlCount( long nType ) = 0;
  463. virtual long GetParentControlID( long nControlID ) = 0;
  464. virtual long GetControlType( long nControlID ) = 0;
  465. virtual long GetControlNumber( long nControlID ) = 0;
  466. virtual long GetControlDepth( long nControlID ) = 0;
  467. virtual const char* GetControlLocalName( long nControlID ) = 0;
  468. virtual const char* GetControlRemoteName( long nControlID ) = 0;
  469. virtual long GetControlStatus( long nControlID , long nStatusID ) = 0;
  470. virtual BOOL GetControlCapability( long nControlID , long nCapabilityID ) = 0;
  471. //+ jungkoo.kang <2013.03.21> Video Resolution,FrameRate,Quality,Codec 가져오는 API 추가
  472. virtual long GetControlVideoResolution( long nControlID ) = 0;
  473. virtual long GetControlVideoFrameRate( long nControlID ) = 0;
  474. virtual long GetControlVideoQuality( long nControlID ) = 0;
  475. virtual const char* GetControlVideoCodec( long nControlID ) = 0;
  476. //+
  477. virtual void ChangeControlLocalName( long nControlID , const char* szName ) = 0;
  478. virtual void ChangeControlRemoteName( long nControlID , const char* szName ) = 0;
  479. virtual long LoadDeviceProfile() = 0;
  480. virtual long SaveDeviceProfile() = 0;
  481. virtual long DeleteDeviceProfile() = 0;
  482. virtual BOOL IsPlaying() = 0;
  483. virtual BOOL HasAuthority() = 0;
  484. virtual long SendXnsQuery( long nQueryID , ... ) = 0;
  485. virtual long SetVideoInfoReceived(long nControlID, long nMediaType, long bFlag) = 0;
  486. };