UNPKG

bc-sdk

Version:
705 lines 32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ffi_1 = require("ffi"); const ref = require("ref"); const native_1 = require("./native"); const T = require("../types"); const _cast_1 = require("./_cast"); const _T = require("./_struct"); const _callback_1 = require("./_callback"); const config_1 = require("./config"); const live_1 = require("./live"); const playback_1 = require("./playback"); const talk_1 = require("./talk"); const download_1 = require("./download"); const deviceCallback = ffi_1.Callback('void', ['int', _T.BC_CMD_DATA, _T.pointer('void')], function (handle, cmdData, userData) { if (!cmdData /*_T.BC_CMD_DATA*/ || 'undefined' === typeof cmdData.bcCmd || 'undefined' === typeof cmdData.cmdIdx || 'undefined' === typeof cmdData.pRspData || 'undefined' === typeof cmdData.bcRspCode || 'undefined' === typeof cmdData.dataLen || 'undefined' === typeof cmdData.handleId) { return; } // const callbackStr = "------- handle this callback {" // + "\n handle: " + handle // + "\n channel: " + cmdData.handleId // + "\n cmd: " + T.BC_CMD_E[cmdData.bcCmd] // + "\n cmd index: " + cmdData.cmdIdx // + "\n}" // console.log(callbackStr); switch (cmdData.bcCmd) { // device about case T.BC_CMD_E.E_BC_CMD_LOGIN: case T.BC_CMD_E.E_BC_CMD_LOGOUT: case T.BC_CMD_E.E_BC_CMD_PUSH_ADD: case T.BC_CMD_E.E_BC_CMD_PUSH_DEL: case T.BC_CMD_E.E_BC_CMD_CONNECTION_TEST: case T.BC_CMD_E.E_BC_CMD_RECONNECT: case T.BC_CMD_E.E_BC_CMD_SET_ABILITY: case T.BC_CMD_E.E_BC_CMD_GET_ABILITY: case T.BC_CMD_E.E_BC_CMD_CAMERA_STATE: case T.BC_CMD_E.E_BC_CMD_CONNECTION_STATE_CHANGE: case T.BC_CMD_E.E_BC_CMD_LOGIN_INFO_CHANGE: case T.BC_CMD_E.E_BC_CMD_ALARM_REPORT: case T.BC_CMD_E.E_BC_CMD_WITHOUT_INTERATION_REPORT: case T.BC_CMD_E.E_BC_CMD_REPORT_DEVICE_EXCEPTION: case T.BC_CMD_E.E_BC_CMD_REPORT_BATTERY_INFO_LIST: case T.BC_CMD_E.E_BC_CMD_REPORT_3G_4G_INFO: case T.BC_CMD_E.E_BC_CMD_REPORT_FLOODLIGHT_STAT: { exports.device.handleSDKCallback(handle, cmdData); break; } // live about case T.BC_CMD_E.E_BC_CMD_REALPLAY: case T.BC_CMD_E.E_BC_CMD_STOPREALPLAY: { live_1.live.handleSDKCallback(handle, cmdData); break; } // playback about case T.BC_CMD_E.E_BC_CMD_SEARCH_ALARM_VIDEOS: case T.BC_CMD_E.E_BC_CMD_SEARCH_RECFILES: case T.BC_CMD_E.E_BC_CMD_PLAYBACKBYNAME: case T.BC_CMD_E.E_BC_CMD_STOPPLAYBACKBYNAME: case T.BC_CMD_E.E_BC_CMD_PLAYBACKBYTIME: case T.BC_CMD_E.E_BC_CMD_STOPPLAYBACKBYTIME: { playback_1.playback.handleSDKCallback(handle, cmdData); break; } // case T.BC_CMD_E.E_BC_CMD_TALK_OPEN: case T.BC_CMD_E.E_BC_CMD_TALK_CLOSE: case T.BC_CMD_E.E_BC_CMD_GET_TALK_ABILITY: case T.BC_CMD_E.E_BC_CMD_TALK_FDX_STREAM: { talk_1.talk.handleSDKCallback(handle, cmdData); break; } // remote config about case T.BC_CMD_E.E_BC_CMD_GET_OSD: case T.BC_CMD_E.E_BC_CMD_SET_OSD: case T.BC_CMD_E.E_BC_CMD_GET_COLOR: case T.BC_CMD_E.E_BC_CMD_SET_COLOR: case T.BC_CMD_E.E_BC_CMD_GET_VILOST: case T.BC_CMD_E.E_BC_CMD_SET_VILOST: case T.BC_CMD_E.E_BC_CMD_GET_MOTION: case T.BC_CMD_E.E_BC_CMD_SET_MOTION: case T.BC_CMD_E.E_BC_CMD_GET_BLIND: case T.BC_CMD_E.E_BC_CMD_SET_BLIND: case T.BC_CMD_E.E_BC_CMD_GET_COVER: case T.BC_CMD_E.E_BC_CMD_SET_COVER: case T.BC_CMD_E.E_BC_CMD_GET_CAMERA: case T.BC_CMD_E.E_BC_CMD_SET_CAMERA: case T.BC_CMD_E.E_BC_CMD_GET_DST: case T.BC_CMD_E.E_BC_CMD_SET_DST: case T.BC_CMD_E.E_BC_CMD_GET_EMAIL: case T.BC_CMD_E.E_BC_CMD_SET_EMAIL: case T.BC_CMD_E.E_BC_CMD_GET_COMPRESS: case T.BC_CMD_E.E_BC_CMD_SET_COMPRESS: case T.BC_CMD_E.E_BC_CMD_GET_SYS: case T.BC_CMD_E.E_BC_CMD_SET_SYS: case T.BC_CMD_E.E_BC_CMD_GET_VERSION: case T.BC_CMD_E.E_BC_CMD_GET_CHN_VERSION: case T.BC_CMD_E.E_BC_CMD_GET_ENC_PROFILE: case T.BC_CMD_E.E_BC_CMD_GET_OUTPUT: case T.BC_CMD_E.E_BC_CMD_SET_OUTPUT: case T.BC_CMD_E.E_BC_CMD_GET_ADVRECORD: case T.BC_CMD_E.E_BC_CMD_SET_ADVRECORD: case T.BC_CMD_E.E_BC_CMD_GET_RECORDSCHED: case T.BC_CMD_E.E_BC_CMD_SET_RECORDSCHED: case T.BC_CMD_E.E_BC_CMD_GET_LINKTYPE: case T.BC_CMD_E.E_BC_CMD_SET_LINKTYPE: case T.BC_CMD_E.E_BC_CMD_GET_PPPOECFG: case T.BC_CMD_E.E_BC_CMD_SET_PPPOECFG: case T.BC_CMD_E.E_BC_CMD_GET_LOCAL: case T.BC_CMD_E.E_BC_CMD_SET_LOCAL: case T.BC_CMD_E.E_BC_CMD_GET_UPNPSTATE: case T.BC_CMD_E.E_BC_CMD_SET_UPNPSTATE: case T.BC_CMD_E.E_BC_CMD_GET_NORMAL_PORT: case T.BC_CMD_E.E_BC_CMD_SET_NORMAL_PORT: case T.BC_CMD_E.E_BC_CMD_GET_NTPCFG: case T.BC_CMD_E.E_BC_CMD_SET_NTPCFG: case T.BC_CMD_E.E_BC_CMD_GET_DDNSCFG: case T.BC_CMD_E.E_BC_CMD_SET_DDNSCFG: case T.BC_CMD_E.E_BC_CMD_GET_IPFILTER: case T.BC_CMD_E.E_BC_CMD_SET_IPFILTER: case T.BC_CMD_E.E_BC_CMD_GET_HDDFULL_EXPCFG: case T.BC_CMD_E.E_BC_CMD_SET_HDDFULL_EXPCFG: case T.BC_CMD_E.E_BC_CMD_GET_HDDERR_EXPCFG: case T.BC_CMD_E.E_BC_CMD_SET_HDDERR_EXPCFG: case T.BC_CMD_E.E_BC_CMD_GET_NETDISCONNECT_EXPCFG: case T.BC_CMD_E.E_BC_CMD_SET_NETDISCONNECT_EXPCFG: case T.BC_CMD_E.E_BC_CMD_GET_IPCONFLICT_EXPCFG: case T.BC_CMD_E.E_BC_CMD_SET_IPCONFLICT_EXPCFG: case T.BC_CMD_E.E_BC_CMD_GET_PTZCFG: case T.BC_CMD_E.E_BC_CMD_SET_PTZCFG: case T.BC_CMD_E.E_BC_CMD_INIT_HDD: case T.BC_CMD_E.E_BC_CMD_GET_HDD_CFG: case T.BC_CMD_E.E_BC_CMD_GET_AUTOREBOOT_CFG: case T.BC_CMD_E.E_BC_CMD_SET_AUTOREBOOT_CFG: case T.BC_CMD_E.E_BC_CMD_GET_PERFORMANCE: case T.BC_CMD_E.E_BC_CMD_GET_FTPCFG: case T.BC_CMD_E.E_BC_CMD_SET_FTPCFG: case T.BC_CMD_E.E_BC_CMD_GET_FTPTASK: case T.BC_CMD_E.E_BC_CMD_SET_FTPTASK: case T.BC_CMD_E.E_BC_CMD_GET_USERCFG: case T.BC_CMD_E.E_BC_CMD_SET_USERCFG: case T.BC_CMD_E.E_BC_CMD_GET_USER_ONLINE: case T.BC_CMD_E.E_BC_CMD_SET_USER_ONLINE: case T.BC_CMD_E.E_BC_CMD_REPLAY_SEEK_TIME: case T.BC_CMD_E.E_BC_CMD_GET_WIFI_INFO: case T.BC_CMD_E.E_BC_CMD_SET_WIFI_INFO: case T.BC_CMD_E.E_BC_CMD_GET_ALARMINCFG: case T.BC_CMD_E.E_BC_CMD_SET_ALARMINCFG: case T.BC_CMD_E.E_BC_CMD_GET_ALARMOUTCFG: case T.BC_CMD_E.E_BC_CMD_SET_ALARMOUTCFG: case T.BC_CMD_E.E_BC_CMD_GET_BOOTPWD_STATE: case T.BC_CMD_E.E_BC_CMD_SET_BOOTPWD_STATE: case T.BC_CMD_E.E_BC_CMD_GET_VTALARMIN: case T.BC_CMD_E.E_BC_CMD_SET_VTALARMIN: case T.BC_CMD_E.E_BC_CMD_GET_FDALARMIN: case T.BC_CMD_E.E_BC_CMD_SET_FDALARMIN: case T.BC_CMD_E.E_BC_CMD_GET_IDALARMIN: case T.BC_CMD_E.E_BC_CMD_SET_IDALARMIN: case T.BC_CMD_E.E_BC_CMD_UPGRADE: case T.BC_CMD_E.E_BC_CMD_GETLOG: case T.BC_CMD_E.E_BC_CMD_EXPORT: case T.BC_CMD_E.E_BC_CMD_IMPORT: case T.BC_CMD_E.E_BC_CMD_REBOOT: case T.BC_CMD_E.E_BC_CMD_GET_RECFILEDATE: case T.BC_CMD_E.E_BC_CMD_RESTORE: case T.BC_CMD_E.E_BC_CMD_EMAILTEST: case T.BC_CMD_E.E_BC_CMD_SHUTDOWN: case T.BC_CMD_E.E_BC_CMD_GET_MANALARM: case T.BC_CMD_E.E_BC_CMD_SET_MANALARM: case T.BC_CMD_E.E_BC_CMD_PTZ_CONTROL: case T.BC_CMD_E.E_BC_CMD_GET_RFSENSOR: case T.BC_CMD_E.E_BC_CMD_SET_RFSENSOR: case T.BC_CMD_E.E_BC_CMD_IFRAME_PREVIEW: case T.BC_CMD_E.E_BC_CMD_IFRAME_REPLAY: case T.BC_CMD_E.E_BC_CMD_GET_ADVANCED_PORTS: case T.BC_CMD_E.E_BC_CMD_SET_ADVANCED_PORTS: case T.BC_CMD_E.E_BC_CMD_GET_UID: case T.BC_CMD_E.E_BC_CMD_ONLINE_UPDATE: case T.BC_CMD_E.E_BC_CMD_FORCE_PASSWORD: case T.BC_CMD_E.E_BC_CMD_GET_PRESET: case T.BC_CMD_E.E_BC_CMD_SET_PRESET: case T.BC_CMD_E.E_BC_CMD_GET_CRUISE: case T.BC_CMD_E.E_BC_CMD_SET_CRUISE: case T.BC_CMD_E.E_BC_CMD_GET_DEFAULT_CAMERA: case T.BC_CMD_E.E_BC_CMD_UPGRADE_PROGRESS: case T.BC_CMD_E.E_BC_CMD_WIFI_TEST: case T.BC_CMD_E.E_BC_CMD_FTP_TEST: case T.BC_CMD_E.E_BC_CMD_GET_SCAN_AP: case T.BC_CMD_E.E_BC_CMD_EXPORT_PROGRESS: case T.BC_CMD_E.E_BC_CMD_IMPORT_PROGRESS: case T.BC_CMD_E.E_BC_CMD_LOCAL_RECORD: case T.BC_CMD_E.E_BC_CMD_STOP_LOCAL_RECORD: case T.BC_CMD_E.E_BC_CMD_CONFIG_LIVE: case T.BC_CMD_E.E_BC_CMD_STOP_CONFIG_LIVE: case T.BC_CMD_E.E_BC_CMD_START_ALARM_REPORT: case T.BC_CMD_E.E_BC_CMD_STOP_ALARM_REPORT: case T.BC_CMD_E.E_BC_CMD_GET_CAMERA_CFG: case T.BC_CMD_E.E_BC_CMD_SET_CAMERA_CFG: case T.BC_CMD_E.E_BC_CMD_GET_LED_STATE: case T.BC_CMD_E.E_BC_CMD_SET_LED_STATE: case T.BC_CMD_E.E_BC_CMD_GET_PTOP_CFG: case T.BC_CMD_E.E_BC_CMD_SET_PTOP_CFG: case T.BC_CMD_E.E_BC_CMD_SNAP: case T.BC_CMD_E.E_BC_CMD_GOTO_PRESET: case T.BC_CMD_E.E_BC_CMD_SET_USER_ALL_ABILITY: case T.BC_CMD_E.E_BC_CMD_GET_WIFI_SIGNAL: case T.BC_CMD_E.E_BC_CMD_GET_AUTO_UPDATE: case T.BC_CMD_E.E_BC_CMD_SET_AUTO_UPDATE: case T.BC_CMD_E.E_BC_CMD_GET_ONLINE_NEW_FIRMWARE: case T.BC_CMD_E.E_BC_CMD_RTMP_START: case T.BC_CMD_E.E_BC_CMD_RTMP_STOP: case T.BC_CMD_E.E_BC_CMD_GET_EMAIL_TASK: case T.BC_CMD_E.E_BC_CMD_SET_EMAIL_TASK: case T.BC_CMD_E.E_BC_CMD_GET_PUSH_TASK: case T.BC_CMD_E.E_BC_CMD_SET_PUSH_TASK: case T.BC_CMD_E.E_BC_CMD_GET_RF_CFG: case T.BC_CMD_E.E_BC_CMD_SET_RF_CFG: case T.BC_CMD_E.E_BC_CMD_GET_BATTERY_ELECTRICITY: case T.BC_CMD_E.E_BC_CMD_SET_RF_ALARM_STATUS: case T.BC_CMD_E.E_BC_CMD_GET_ONLINE_UPDATE_STATUS: case T.BC_CMD_E.E_BC_CMD_GET_AUTO_FOCUS: case T.BC_CMD_E.E_BC_CMD_SET_AUTO_FOCUS: case T.BC_CMD_E.E_BC_CMD_GET_CROP_CFG: case T.BC_CMD_E.E_BC_CMD_SET_CROP_CFG: case T.BC_CMD_E.E_BC_CMD_CROP_SNAP: case T.BC_CMD_E.E_BC_CMD_DEVICE_SLEEP: case T.BC_CMD_E.E_BC_CMD_GET_AUDIO_TASK: case T.BC_CMD_E.E_BC_CMD_SET_AUDIO_TASK: case T.BC_CMD_E.E_BC_CMD_GET_BUZZER_TASK: case T.BC_CMD_E.E_BC_CMD_SET_BUZZER_TASK: case T.BC_CMD_E.E_BC_CMD_BATTERY_HEARTBEAT_RSP: case T.BC_CMD_E.E_BC_CMD_GET_AP_MODE_INFO: case T.BC_CMD_E.E_BC_CMD_BASE_REPORT_ONLINE_DEVICE: case T.BC_CMD_E.E_BC_CMD_BASE_DELETE_ONLINE_DEVICE: case T.BC_CMD_E.E_BC_CMD_BASE_GET_RF_CFG: case T.BC_CMD_E.E_BC_CMD_BASE_SET_RF_CFG: case T.BC_CMD_E.E_BC_CMD_BASE_GET_WIFI_QRCODE: case T.BC_CMD_E.E_BC_CMD_BASE_RESPONSE_LIVE_TIME: case T.BC_CMD_E.E_BC_CMD_BASE_SET_RF_ALARM_STATUS: case T.BC_CMD_E.E_BC_CMD_GET_BATTERY_INFO: case T.BC_CMD_E.E_BC_CMD_SET_DEVICE_NAME: case T.BC_CMD_E.E_BC_CMD_SET_ISP_DAY_NIGHT_MODE: case T.BC_CMD_E.E_BC_CMD_BASE_SET_WIFI_QRCODE: case T.BC_CMD_E.E_BC_CMD_GET_3G_4G_INFO: case T.BC_CMD_E.E_BC_CMD_GET_SIM_MODULE_INFO: case T.BC_CMD_E.E_BC_CMD_SET_SIM_MODULE_INFO: case T.BC_CMD_E.E_BC_CMD_GET_BATTERY_ANALYSIS: case T.BC_CMD_E.E_BC_CMD_GET_CLOUD_INFO: case T.BC_CMD_E.E_BC_CMD_BIND_CLOUD: case T.BC_CMD_E.E_BC_CMD_GET_CLOUD_CFG: case T.BC_CMD_E.E_BC_CMD_SET_CLOUD_CFG: case T.BC_CMD_E.E_BC_CMD_GET_SIGNATURE_LOGIN_CFG: case T.BC_CMD_E.E_BC_CMD_SET_SIGNATURE_LOGIN_CFG: case T.BC_CMD_E.E_BC_CMD_GET_RINGTONE_FILE_INFO: case T.BC_CMD_E.E_BC_CMD_IMPORT_RINGTONE: case T.BC_CMD_E.E_BC_CMD_IMPORT_RINGTONE_PROGRESS: case T.BC_CMD_E.E_BC_CMD_SAVE_RINGTONE: case T.BC_CMD_E.E_BC_CMD_MANUAL_RING_DOWN: case T.BC_CMD_E.E_BC_CMD_GET_RINGTONE_CFG: case T.BC_CMD_E.E_BC_CMD_SET_RINGTONE_CFG: case T.BC_CMD_E.E_BC_CMD_MUTE_ALARM_AUDIO: case T.BC_CMD_E.E_BC_CMD_GET_RINGTONE_ABILITY: case T.BC_CMD_E.E_BC_CMD_SYNC_UTC_TIME: case T.BC_CMD_E.E_BC_CMD_FLOODLIGHT_MANUAL: case T.BC_CMD_E.E_BC_CMD_GET_FLOODLIGHT_TASK: case T.BC_CMD_E.E_BC_CMD_SET_FLOODLIGHT_TASK: case T.BC_CMD_E.E_BC_CMD_RF_TEST_START: case T.BC_CMD_E.E_BC_CMD_RF_TEST_STOP: case T.BC_CMD_E.E_BC_CMD_GET_ZOOM_FOCUS_INFO: case T.BC_CMD_E.E_BC_CMD_START_ZOOM_FOCUS: case T.BC_CMD_E.E_BC_CMD_GET_DAY_NIGHT_THRESHOLD: case T.BC_CMD_E.E_BC_CMD_SET_DAY_NIGHT_THRESHOLD: case T.BC_CMD_E.E_BC_CMD_REC_FILE_DEL: case T.BC_CMD_E.E_BC_CMD_GET_RECORD_ENABLE: case T.BC_CMD_E.E_BC_CMD_SET_RECORD_ENABLE: case T.BC_CMD_E.E_BC_CMD_GET_FTP_ENABLE: case T.BC_CMD_E.E_BC_CMD_SET_FTP_ENABLE: case T.BC_CMD_E.E_BC_CMD_GET_EMAIL_ENABLE: case T.BC_CMD_E.E_BC_CMD_SET_EMAIL_ENABLE: case T.BC_CMD_E.E_BC_CMD_GET_PUSH_ENABLE: case T.BC_CMD_E.E_BC_CMD_SET_PUSH_ENABLE: case T.BC_CMD_E.E_BC_CMD_GET_BUZZER_ENABLE: case T.BC_CMD_E.E_BC_CMD_SET_BUZZER_ENABLE: case T.BC_CMD_E.E_BC_CMD_GET_AI_DETECT_CFG: case T.BC_CMD_E.E_BC_CMD_GET_DEF_AI_DETECT_CFG: case T.BC_CMD_E.E_BC_CMD_SET_AI_DETECT_CFG: case T.BC_CMD_E.E_BC_CMD_SET_ALARM_ARAES_CFG: case T.BC_CMD_E.E_BC_CMD_SET_GUARD: case T.BC_CMD_E.E_BC_CMD_SET_GUARD: case T.BC_CMD_E.E_BC_CMD_GET_AI_CFG: case T.BC_CMD_E.E_BC_CMD_SET_AI_CFG: { config_1.config.handleSDKCallback(handle, cmdData); break; } // download about case T.BC_CMD_E.E_BC_CMD_DOWNLOAD: case T.BC_CMD_E.E_BC_CMD_DOWNLOAD_STOP: case T.BC_CMD_E.E_BC_CMD_DOWNLOAD_CUT: case T.BC_CMD_E.E_BC_CMD_DOWNLOAD_CUT_STOP: case T.BC_CMD_E.E_BC_CMD_DOWNLOAD_PROGRESS: case T.BC_CMD_E.E_BC_CMD_DOWNLOAD_CUT_PROGRESS: { // console.log('sdk callback --- ' + T.BC_CMD_E[cmdData.bcCmd]); download_1.download.handleSDKCallback(handle, cmdData); break; } default: const errStr = "------- no one handle this callback !!!!!!!!! {" + "\n handle: " + handle + "\n channel: " + cmdData.handleId + "\n cmd: " + T.BC_CMD_E[cmdData.bcCmd] + "\n cmd index: " + cmdData.cmdIdx + "\n}"; console.log(errStr); break; } ; }); // ----------------------------------------------------------------------------- // DEVICE // ----------------------------------------------------------------------------- class DEVICE { constructor() { // } static instance() { return DEVICE.singleton; } handleSDKCallback(handle, cmdData) { const bcCmd = cmdData.bcCmd; const cmdIdx = cmdData.cmdIdx; const bcRspCode = cmdData.bcRspCode; const pRspData = cmdData.pRspData; const dataLen = cmdData.dataLen; const channel = (cmdData.handleId & 0x000000ff) % T.DEFINDE.BC_MAX_CHANNEL; switch (bcCmd) { case T.BC_CMD_E.E_BC_CMD_CONNECTION_STATE_CHANGE: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); if (_T.DEVICE_STATE_CHANGE_DESC.size == dataLen) { let buf = ref.reinterpret(pRspData, dataLen); let des = ref.get(buf, 0, _T.DEVICE_STATE_CHANGE_DESC); let from = des.eStateFrom; let to = des.eStateTo; setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.stateCallback(handle, from, to); } }); } break; } case T.BC_CMD_E.E_BC_CMD_RECONNECT: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.disconnectCallback(handle); } }); break; } case T.BC_CMD_E.E_BC_CMD_GET_ABILITY: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); if (T.BC_RSP_CODE_E.E_BC_RSP_OK == bcRspCode) { setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.abilityChangeCallback(handle); } }); } break; } case T.BC_CMD_E.E_BC_CMD_ALARM_REPORT: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); if (_T.BC_ALARM_STATUS_REPORT.size == dataLen) { let buf = ref.reinterpret(pRspData, dataLen); let data = ref.get(buf, 0, _T.BC_ALARM_STATUS_REPORT); let param = _cast_1.derefCast(data, _T.BC_ALARM_STATUS_REPORT); setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.alarmReportCallback(handle, param); } }); } break; } case T.BC_CMD_E.E_BC_CMD_CAMERA_STATE: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.cameraStateCallback(handle); } }); break; } case T.BC_CMD_E.E_BC_CMD_WITHOUT_INTERATION_REPORT: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); if (_T.BC_TIME_WITHOUT_INTERACTION.size === dataLen) { let buf = ref.reinterpret(pRspData, dataLen); let data = ref.get(buf, 0, _T.BC_TIME_WITHOUT_INTERACTION); let param = _cast_1.derefCast(data, _T.BC_TIME_WITHOUT_INTERACTION); setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.noInteractionCallback(handle, param); } }); } break; } case T.BC_CMD_E.E_BC_CMD_REPORT_DEVICE_EXCEPTION: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); if (_T.BC_DEVICE_EXCEPTION.size === dataLen) { let buf = ref.reinterpret(pRspData, dataLen); let data = ref.get(buf, 0, _T.BC_DEVICE_EXCEPTION); let param = _cast_1.derefCast(data, _T.BC_DEVICE_EXCEPTION); setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.batteryExceptionCallback(handle, param.iExceptionCode !== 0); } }); } break; } case T.BC_CMD_E.E_BC_CMD_REPORT_BATTERY_INFO_LIST: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); if (_T.BC_BATTERY_INFO_LIST.size === dataLen) { let buf = ref.reinterpret(pRspData, dataLen); let data = ref.get(buf, 0, _T.BC_BATTERY_INFO_LIST); let param = _cast_1.derefCast(data, _T.BC_BATTERY_INFO_LIST); setImmediate(() => { if (param.size > 0 && callback && callback.sdkCallback) { callback.sdkCallback.batteryInfoCallback(handle, param.infoList[0]); } }); } break; } case T.BC_CMD_E.E_BC_CMD_REPORT_3G_4G_INFO: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); if (_T.BC_3G_4G_INFO.size === dataLen) { let buf = ref.reinterpret(pRspData, dataLen); let data = ref.get(buf, 0, _T.BC_3G_4G_INFO); let param = _cast_1.derefCast(data, _T.BC_3G_4G_INFO); setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.info3G4GCallback(handle, param); } }); } break; } case T.BC_CMD_E.E_BC_CMD_REPORT_FLOODLIGHT_STAT: { let callback = _callback_1.COMMON_CBS.getCallback(handle, 0, bcCmd, cmdIdx); if (_T.BC_FLOODLIGHT_STAT.size === dataLen) { let buf = ref.reinterpret(pRspData, dataLen); let data = ref.get(buf, 0, _T.BC_FLOODLIGHT_STAT); let param = _cast_1.derefCast(data, _T.BC_FLOODLIGHT_STAT); setImmediate(() => { if (callback && callback.sdkCallback) { callback.sdkCallback.floodLightStateCallback(handle, param); } }); } break; } default: { setImmediate(() => { _callback_1.PROMISE_CBS.handleCallback(handle, channel, bcCmd, cmdIdx, callback => { if (T.BC_RSP_CODE_E.E_BC_RSP_OK == bcRspCode) { if (callback.sdkResolve) { callback.sdkResolve(bcRspCode); } } else { if (callback.sdkReject) { callback.sdkReject({ code: bcRspCode, description: "device sdk callback ... " + T.BC_CMD_E[bcCmd] }); } } }); }); break; } } } sdkOpen(group, bexcept_server_cn, bexcept_server_ru) { native_1.native.BCSDK_Open(group, bexcept_server_cn ? 1 : 0, bexcept_server_ru ? 1 : 0); } add(loginDes, callback) { return new Promise((resolve, reject) => { let castParam = _cast_1.refCast(loginDes); let tloginDes = new _T.DEVICE_LOGIN_DESC(castParam); let callbackDes = new _T.DEVICE_CALLBACK_DESC({ func: deviceCallback, userData: null }); let perror = ref.alloc(ref.types.int, 0); let handle = native_1.native.BCSDK_AddDevice(tloginDes.ref(), callbackDes.ref(), perror); if (handle >= 0 && 0 == perror.deref()) { _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_CONNECTION_STATE_CHANGE, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_GET_ABILITY, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_RECONNECT, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_ALARM_REPORT, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_CAMERA_STATE, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_WITHOUT_INTERATION_REPORT, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_REPORT_DEVICE_EXCEPTION, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_REPORT_BATTERY_INFO_LIST, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_REPORT_3G_4G_INFO, 0, { sdkCallback: callback }); _callback_1.COMMON_CBS.setCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_REPORT_FLOODLIGHT_STAT, 0, { sdkCallback: callback }); resolve(handle); } else { reject({ code: perror.deref() }); } }); } remove(handle) { return new Promise((resolve, reject) => { _callback_1.COMMON_CBS.clearCallbackForHandle(handle); let ret = native_1.native.BCSDK_RemoveDevice(handle); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'device remove' }); return; } _callback_1.PROMISE_CBS.clearCallbackForHandle(handle); resolve(); }); } removeAll() { return new Promise((resolve, reject) => { let ret = native_1.native.BCSDK_RemoveAllDevices(); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'device remove all' }); return; } _callback_1.PROMISE_CBS.clearAll(); _callback_1.COMMON_CBS.clearAll(); resolve(); }); } modify(handle, loginDes) { return new Promise((resolve, reject) => { let castParam = _cast_1.refCast(loginDes); let tloginDes = new _T.DEVICE_LOGIN_DESC(castParam); let callbackDes = new _T.DEVICE_CALLBACK_DESC({ func: deviceCallback, userData: null }); let perror = ref.alloc(ref.types.int, 0); let thandle = native_1.native.BCSDK_ModifyDevice(handle, tloginDes.ref(), callbackDes.ref(), perror); if (thandle >= 0 && 0 == perror.deref()) { if (handle != thandle) { _callback_1.COMMON_CBS.modifyCallbackHandle(handle, thandle); _callback_1.PROMISE_CBS.modifyCallbackHandle(handle, thandle); } resolve(thandle); } else { reject({ code: perror.deref() }); } }); } getDevicesCount() { return new Promise((resolve, reject) => { let count = native_1.native.BCSDK_GetDeviceCount(); resolve(count); }); } getDeviceAtIndex(index) { return new Promise((resolve, reject) => { let handle = native_1.native.BCSDK_GetDevice(index); if (handle < 0) { reject({ code: handle }); return; } resolve(handle); }); } open(handle) { return new Promise((resolve, reject) => { this.getDeviceState(handle) .then(state => { if (T.BCSDK_DEVICE_STATE_E.BCSDK_DEVICE_STATE_OPENSUCCESS == state) { resolve(T.ERROR.E_NONE); return; } let tcallback = { sdkResolve: resolve, sdkReject: reject, timeout: 30 }; let ret = native_1.native.BCSDK_DeviceForceOpen(handle, true); if (T.ERROR.E_NONE == ret) { _callback_1.PROMISE_CBS.addCallback(handle, 0, T.BC_CMD_E.E_BC_CMD_LOGIN, 0, tcallback); } else { reject({ code: ret, description: 'device open' }); } }) .catch(reason => { reject(reason); }); }); } close(handle) { return new Promise((resolve, reject) => { let ret = native_1.native.BCSDK_DeviceForceClose(handle, true); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'device close' }); return; } resolve(); }); } setAccountCenter(accountCenterApiUrl, token, pemFilePath) { return new Promise((resolve, reject) => { let ret = native_1.native.BCSDK_SetAccountCenter(accountCenterApiUrl, token, pemFilePath); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'set account center failed' }); return; } resolve(); }); } setShouldLoginWithSignature(handle, should) { return new Promise((resolve, reject) => { let ret = native_1.native.BCSDK_SetShouldLoginWithSignature(handle, should); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'set should login with signature' }); return; } resolve(); }); } setNeedAutoOpen(handle, need) { return new Promise((resolve, reject) => { let ret = native_1.native.BCSDK_SetDeviceNeedAutoOpen(handle, need); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'set need auto open' }); return; } resolve(); }); } setDeviceMaxReconnectCount(handle, count) { return new Promise((resolve, reject) => { let ret = native_1.native.BCSDK_SetDeviceMaxReconnectCount(handle, count); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'set max reconnect count' }); return; } resolve(); }); } getLoginDescription(handle) { return new Promise((resolve, reject) => { let des = new _T.DEVICE_LOGIN_DESC(); let ret = native_1.native.BCSDK_GetDeviceLoginMessage(handle, des.ref()); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'get login description' }); return; } let param = _cast_1.derefCast(des, _T.DEVICE_LOGIN_DESC); resolve(param); }); } getChannelCount(handle) { return new Promise((resolve, reject) => { let buf = ref.alloc(ref.types.int, 0); let ret = native_1.native.BCSDK_GetDeviceChannelCount(handle, buf); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'get channel count' }); return; } let value = ref.deref(buf); resolve(value); }); } getDeviceState(handle) { return new Promise((resolve, reject) => { let buf = ref.alloc(ref.types.int, T.BCSDK_DEVICE_STATE_E.BCSDK_DEVICE_STATE_NOTREADY); let ret = native_1.native.BCSDK_GetDeviceState(handle, buf); if (ret != T.ERROR.E_NONE) { reject({ code: ret, description: 'get device status' }); return; } let value = ref.deref(buf); resolve(value); }); } } DEVICE.singleton = new DEVICE(); exports.device = DEVICE.instance(); //# sourceMappingURL=device.js.map