bc-sdk
Version:
sdk for baichuan shenzhen, version 1677
1,320 lines (1,314 loc) • 65.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ffi_1 = require("ffi");
const ref = require("ref");
const refStruct = require("ref-struct");
const refArray = require("ref-array");
const types_1 = require("../types");
exports.pointer = ref.refType;
exports.cString = ref.types.CString;
exports.DEVICE_STATE_CHANGE_DESC = refStruct({
eStateFrom: ref.types.int,
eStateTo: ref.types.int
});
exports.P_DEVICE_STATE_CHANGE_DESC = exports.pointer(exports.DEVICE_STATE_CHANGE_DESC);
exports.BC_CMD_DATA = refStruct({
bcCmd: ref.types.int,
cmdIdx: ref.types.int,
bcRspCode: ref.types.int,
handleId: ref.types.int,
pRspData: exports.pointer('uint8'),
dataLen: ref.types.ulong
});
exports.P_BC_CMD_DATA = exports.pointer(exports.BC_CMD_DATA);
exports.DEVICE_LOGIN_DESC = refStruct({
name: refArray('byte', types_1.DEFINDE.SDK_MAX_NORMAL_STR_LEN),
port: ref.types.int,
uidPort: ref.types.int,
host: refArray('byte', types_1.DEFINDE.SDK_MAX_HOSTNAME_LEN),
uid: refArray('byte', types_1.DEFINDE.SDK_MAX_UID_STR_LEN),
username: refArray('byte', types_1.DEFINDE.SDK_MAX_NAME_LEN),
password: refArray('byte', types_1.DEFINDE.SDK_MAX_PASSWD_LEN)
});
exports.P_DEVICE_LOGIN_DESC = exports.pointer(exports.DEVICE_LOGIN_DESC);
exports.DEVICE_CALLBACK_DESC = refStruct({
func: ffi_1.Function('int', ['int', exports.BC_CMD_DATA, exports.pointer('void')]),
userData: exports.pointer('void')
});
exports.P_DEVICE_CALLBACK_DESC = exports.pointer(exports.DEVICE_CALLBACK_DESC);
exports.DEVICE_ABILITY_ABOUT = refStruct({
isBattery: ref.types.bool,
qrCode: ref.types.bool,
type: ref.types.int
});
exports.P_DEVICE_ABILITY_ABOUT = exports.pointer(exports.DEVICE_ABILITY_ABOUT);
// callback frame data
exports.BC_AI_AREA = refStruct({
x: ref.types.uint16,
y: ref.types.uint16,
w: ref.types.uint16,
h: ref.types.uint16,
score: ref.types.uint8
});
exports.BC_AI_AREA.alignment = 1;
exports.P_BC_AI_AREA = exports.pointer(exports.BC_AI_AREA);
exports.BC_AI_DATA = refStruct({
length: ref.types.uint16,
areas: refArray(exports.BC_AI_AREA, types_1.DEFINDE.BC_MAX_AI_AREA_LEN)
});
exports.P_BC_AI_DATA = exports.pointer(exports.BC_AI_DATA);
exports.RENDER_VIDEO_PLANE_DESC = refStruct({
address: exports.pointer(ref.types.uint8) // plane base address of the picture
,
width: ref.types.uint32 // The plane width of pixel
,
height: ref.types.uint32 // The plane height of pixel
,
stride: ref.types.uint32 // The plane stride of pixel
});
exports.P_RENDER_VIDEO_PLANE_DESC = exports.pointer(exports.RENDER_VIDEO_PLANE_DESC);
exports.RENDER_VIDEO_FRAME_DESC = refStruct({
format: ref.types.int,
width: ref.types.uint32 // The width of output picture in pixel
,
height: ref.types.uint32 // The height of output picture in pixel
,
frameRate: ref.types.uint32 // Render frameRate
,
plane: refArray(exports.RENDER_VIDEO_PLANE_DESC, 3) // YUV plane of the picture
});
exports.P_RENDER_VIDEO_FRAME_DESC = exports.pointer(exports.RENDER_VIDEO_FRAME_DESC);
exports.RENDER_AUDIO_FRAME_DESC = refStruct({
media: exports.pointer(ref.types.uint8),
length: ref.types.uint32,
hasAAC: ref.types.uint8,
sampleRate: ref.types.uint32,
profile: ref.types.uint8,
channels: ref.types.uint8
});
exports.P_RENDER_AUDIO_FRAME_DESC = exports.pointer(exports.RENDER_AUDIO_FRAME_DESC);
exports.RENDER_FRAME_DESC = refStruct({
version: ref.types.int,
type: ref.types.uint32,
pts: ref.types.uint64,
delay: ref.types.uint64 /*ms*/,
video: exports.RENDER_VIDEO_FRAME_DESC,
audio: exports.RENDER_AUDIO_FRAME_DESC,
faceSet: exports.BC_AI_DATA,
peopleSet: exports.BC_AI_DATA
});
exports.P_RENDER_FRAME_DESC = exports.pointer(exports.RENDER_FRAME_DESC);
exports.DATA_VIDEO_FRAME_DESC = refStruct({
width: ref.types.uint32,
height: ref.types.uint32,
frameRate: ref.types.uint32
});
exports.P_DATA_VIDEO_FRAME_DESC = exports.pointer(exports.DATA_VIDEO_FRAME_DESC);
exports.DATA_AUDIO_FRAME_DESC = refStruct({
hasAAC: ref.types.uint8,
sampleRate: ref.types.uint32,
profile: ref.types.uint8,
channels: ref.types.uint8
});
exports.P_DATA_AUDIO_FRAME_DESC = exports.pointer(exports.DATA_AUDIO_FRAME_DESC);
exports.DATA_FRAME_DESC = refStruct({
version: ref.types.int,
type: ref.types.uint32,
length: ref.types.uint32,
media: exports.pointer(ref.types.uint8),
pts: ref.types.uint64,
videoInfo: exports.DATA_VIDEO_FRAME_DESC,
audioInfo: exports.DATA_AUDIO_FRAME_DESC
});
exports.P_DATA_FRAME_DESC = exports.pointer(exports.DATA_FRAME_DESC);
exports.BC_DAY_NIGHT_THRESHOLD_CFG = refStruct({
eMode: ref.types.int,
eCurStat: ref.types.int
});
exports.P_BC_DAY_NIGHT_THRESHOLD_CFG = exports.pointer(exports.BC_DAY_NIGHT_THRESHOLD_CFG);
exports.BC_RESO_PROFILE = refStruct({
eResolution: ref.types.int,
iWidth: ref.types.int,
iHigh: ref.types.int,
cResolutionName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
lDefFrameRate: ref.types.long,
lDefBitRate: ref.types.long,
lFrameRate: refArray(ref.types.long, types_1.DEFINDE.BC_MAX_FRAME_RATE_NUM),
lBitRate: refArray(ref.types.long, types_1.DEFINDE.BC_MAX_BIT_RATE_NUM)
});
exports.P_BC_RESO_PROFILE = exports.pointer(exports.BC_RESO_PROFILE);
exports.BC_ENC_PROFILE = refStruct({
iChnBits: ref.types.int,
mainstream: exports.BC_RESO_PROFILE,
substream: exports.BC_RESO_PROFILE,
extendstream: exports.BC_RESO_PROFILE
});
exports.P_BC_ENC_PROFILE = exports.pointer(exports.BC_ENC_PROFILE);
exports.BC_ENC_PROFILE_TABLE = refStruct({
profileNum: ref.types.int,
profile: refArray(exports.BC_ENC_PROFILE, types_1.DEFINDE.BC_MAX_ENC_PROFILE_NUM)
});
exports.P_BC_ENC_PROFILE_TABLE = exports.pointer(exports.BC_ENC_PROFILE_TABLE);
exports.BC_TIME = refStruct({
iYear: ref.types.int,
iMonth: ref.types.int,
iDay: ref.types.int,
iHour: ref.types.int,
iMinute: ref.types.int,
iSecond: ref.types.int
});
exports.P_BC_TIME = exports.pointer(exports.BC_TIME);
exports.BC_FIND_REC_FILE = refStruct({
iChannel: ref.types.int,
cIdentity: refArray('byte', types_1.DEFINDE.BC_MAX_REC_FILE_ID),
cFileName: refArray('byte', types_1.DEFINDE.BC_MAX_REC_FILE_NAME),
struStartTime: exports.BC_TIME,
struStopTime: exports.BC_TIME,
iFileSize: ref.types.uint32,
iFileSizeH: ref.types.uint32,
cCardNum: refArray('byte', 32),
cLocked: ref.types.uint8,
cSupportNum: ref.types.uint8,
cRes: refArray('byte', 2),
recordType: ref.types.int,
eStreamType: ref.types.int,
eFileType: ref.types.int,
iContainsAudio: ref.types.int
});
exports.P_BC_FIND_REC_FILE = exports.pointer(exports.BC_FIND_REC_FILE);
exports.BC_FIND_REC_FILES = refStruct({
seq: ref.types.int,
fileNum: ref.types.int,
recFile: refArray(exports.BC_FIND_REC_FILE, 40)
});
exports.P_BC_FIND_REC_FILES = exports.pointer(exports.BC_FIND_REC_FILES);
exports.BC_DEL_REC_FILE = refStruct({
cIdentity: refArray('byte', types_1.DEFINDE.BC_MAX_REC_FILE_ID)
});
exports.P_BC_DEL_REC_FILE = exports.pointer(exports.BC_DEL_REC_FILE);
exports.BC_DEL_REC_FILES = refStruct({
iSize: ref.types.int,
items: refArray(exports.BC_DEL_REC_FILE, 40)
});
exports.P_BC_DEL_REC_FILES = exports.pointer(exports.BC_DEL_REC_FILES);
exports.BC_ALARM_VIDEO_ITEM = refStruct({
cIdentity: refArray('byte', types_1.DEFINDE.BC_MAX_REC_FILE_ID),
cFileName: refArray('byte', types_1.DEFINDE.BC_MAX_REC_FILE_NAME),
alarmType: ref.types.int,
startTime: exports.BC_TIME,
endTime: exports.BC_TIME
});
exports.P_BC_ALARM_VIDEO_ITEM = exports.pointer(exports.BC_ALARM_VIDEO_ITEM);
exports.BC_ALARM_VIDEOS_INFO = refStruct({
seq: ref.types.int // the times of this alarm video find
,
iFinished: ref.types.int,
iItemSize: ref.types.int,
alarmItems: refArray(exports.BC_ALARM_VIDEO_ITEM, 60)
});
exports.P_BC_ALARM_VIDEOS_INFO = exports.pointer(exports.BC_ALARM_VIDEOS_INFO);
exports.BC_SYS_GENERAL_CFG = refStruct({
/* validField, used for only set some params.
* "iYear, iMonth, iDay, iHour, iMin, iSecond" is independent.
*/
validField: refArray('byte', 128),
eTS: ref.types.int,
iTimeZone: ref.types.int // Example: For GMT +8:00, lTimeZone = -8*3600
,
eDateFormat: ref.types.int,
eTimeFormat: ref.types.int,
iYear: ref.types.int,
iMonth: ref.types.int,
iDay: ref.types.int,
iHour: ref.types.int,
iMin: ref.types.int,
iSecond: ref.types.int,
iDeviceId: ref.types.int,
iLanguage: ref.types.int,
cDeviceName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN)
});
exports.P_BC_SYS_GENERAL_CFG = exports.pointer(exports.BC_SYS_GENERAL_CFG);
exports.BC_DEVICE_NAME_CFG = refStruct({
cDeviceName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN)
});
exports.P_BC_DEVICE_NAME_CFG = exports.pointer(exports.BC_DEVICE_NAME_CFG);
exports.BC_AUTOREBOOT_CFG = refStruct({
bEnable: ref.types.bool,
eDay: ref.types.int,
iHour: ref.types.int,
iMin: ref.types.int,
iSecond: ref.types.int
});
exports.P_BC_AUTOREBOOT_CFG = exports.pointer(exports.BC_AUTOREBOOT_CFG);
exports.BC_RESTORE_CFG = refStruct({
bDisplay: ref.types.bool,
bRecording: ref.types.bool,
bNetwork: ref.types.bool,
bAlarm: ref.types.bool,
bDevice: ref.types.bool,
bSystem: ref.types.bool,
bIPC: ref.types.bool,
bWifi: ref.types.bool
});
exports.P_BC_RESTORE_CFG = exports.pointer(exports.BC_RESTORE_CFG);
exports.BC_RECORD_TIME_LIST = refStruct({
iSize: ref.types.int,
durationTime: refArray(ref.types.int, 32)
});
exports.P_BC_RECORD_TIME_LIST = exports.pointer(exports.BC_RECORD_TIME_LIST);
exports.BC_RECORD_GENERAL_CFG = refStruct({
/* validField, used for only set some params.
* for example, validField = "<iOverWrite><iPackageTime>", only set bOverWrite, iPackageTime"
*/
validField: refArray('byte', 128),
iOverWrite: ref.types.int,
iPackageTime: ref.types.int // 30 45 60 MIN
,
iPostRecordTime: ref.types.int // 60 120 300 600 Second
,
bPreRecord: ref.types.bool,
timeList: exports.BC_RECORD_TIME_LIST,
overWriteList: exports.BC_RECORD_TIME_LIST
});
exports.P_BC_RECORD_GENERAL_CFG = exports.pointer(exports.BC_RECORD_GENERAL_CFG);
exports.BC_EMAIL_SENDER = refStruct({
byAccount: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN),
iSenderMaxLen: ref.types.int // readonly, max len of byAccount
,
byPassword: refArray('byte', types_1.DEFINDE.BC_MAX_PWD_LEN_128),
iPwdMaxLen: ref.types.int
});
exports.P_BC_EMAIL_SENDER = exports.pointer(exports.BC_EMAIL_SENDER);
exports.BC_EMAIL_RECEIVER = refStruct({
byAddress: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN)
});
exports.P_BC_EMAIL_RECEIVER = exports.pointer(exports.BC_EMAIL_RECEIVER);
exports.BC_EMAIL_CFG = refStruct({
sender: exports.BC_EMAIL_SENDER,
receiver: refArray(exports.BC_EMAIL_RECEIVER, 3),
bySmtpServer: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN),
bSSL: ref.types.bool,
iSmtpPort: ref.types.int,
iAttachment: ref.types.int // 0:disable; 1:Attach Picture; 2:Attach Video
,
bSupportVideo: ref.types.bool,
bSupportTextType: ref.types.bool,
iWithText: ref.types.int // 0:without text, 1:with text
,
iMailInterval: ref.types.int // 3: 30S, 6: 60S, 30: 300S, 60: 600S
,
cSendNickname: refArray('byte', types_1.DEFINDE.BC_MAX_NICKNAME_LEN)
});
exports.P_BC_EMAIL_CFG = exports.pointer(exports.BC_EMAIL_CFG);
exports.BC_RESOLUTION_INFO = refStruct({
reso: ref.types.int // BC_RESOLUTION_E
,
cName: refArray('byte', 32) //name of resolution
,
width: ref.types.int,
height: ref.types.int
});
exports.BC_RESOLUTION_LIST = refStruct({
lValidNum: ref.types.long,
cur: exports.BC_RESOLUTION_INFO,
list: refArray(exports.BC_RESOLUTION_INFO, types_1.DEFINDE.BC_MAX_RESOLUTION_NUM)
});
exports.BC_UI_TRANS = refStruct({
lMax: ref.types.long,
lMin: ref.types.long,
lCur: ref.types.long
});
exports.P_BC_UI_TRANS = exports.pointer(exports.BC_UI_TRANS);
exports.BC_MOUSE_SENSE = refStruct({
lMax: ref.types.long,
lMin: ref.types.long,
lCur: ref.types.long
});
exports.P_BC_MOUSE_SENSE = exports.pointer(exports.BC_MOUSE_SENSE);
exports.BC_DWELL_TABLE = refStruct({
lValidNum: ref.types.long,
lCurrentValue: ref.types.long,
lList: refArray(ref.types.long, types_1.DEFINDE.BC_MAX_DWELL_NUM)
});
exports.P_BC_DWELL_TABLE = exports.pointer(exports.BC_DWELL_TABLE);
exports.BC_OUTPUT_CFG = refStruct({
reso: exports.BC_RESOLUTION_LIST,
trans: exports.BC_UI_TRANS,
mouseSense: exports.BC_MOUSE_SENSE,
dwell: exports.BC_DWELL_TABLE,
bAudio: ref.types.bool
});
exports.P_BC_OUTPUT_CFG = exports.pointer(exports.BC_OUTPUT_CFG);
exports.BC_HDD = refStruct({
iNumber: ref.types.int // iNumber > 100 ? eSATA : iNumber;
,
iCapacityG: ref.types.int // Unit:GB
,
iCapacityM: ref.types.int // Unit:GB -1: no support
,
bFormat: ref.types.bool,
bMount: ref.types.bool,
iRemainSizeG: ref.types.int // Unit:GB
,
iRemainSizeM: ref.types.int,
eStorageType: ref.types.int // BC_STORAGE_TYPE_E
,
bIsInUse: ref.types.bool
});
exports.P_BC_HDD = exports.pointer(exports.BC_HDD);
exports.BC_HDD_CFG = refStruct({
iTotal: ref.types.int,
hdd: refArray(exports.BC_HDD, types_1.DEFINDE.BC_MAX_DISKNUM)
});
exports.P_BC_HDD_CFG = exports.pointer(exports.BC_HDD_CFG);
exports.BC_HDD_INIT_CFG = refStruct({
iTotal: ref.types.int,
iInitId: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DISKNUM),
eStorageType: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DISKNUM) // BC_STORAGE_TYPE_E
});
exports.P_BC_HDD_INIT_CFG = exports.pointer(exports.BC_HDD_INIT_CFG);
exports.BC_ALARM_OUT = refStruct({
iType: ref.types.int // BC_ALARM_OUT_NONE ~ BC_ALARM_OUT_SCREEN
,
bAlarmout: refArray(ref.types.bool, types_1.DEFINDE.BC_MAX_ALARMOUT) // alarmout channel, 0: disable, 1: enable
});
exports.P_BC_ALARM_OUT = exports.pointer(exports.BC_ALARM_OUT);
exports.BC_EXCEPTION_CFG = refStruct({
alarmOut: exports.BC_ALARM_OUT
});
exports.P_BC_EXCEPTION_CFG = exports.pointer(exports.BC_EXCEPTION_CFG);
exports.BC_LOCAL_CFG = refStruct({
eIpObtain: ref.types.int // dhcp or static
,
eAutodns: ref.types.int // get dns automaticaly or static configure
,
cIp: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN) //ip configure
,
cMask: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN),
cGateway: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN),
cMac: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN),
cDns1: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN) //dns1 configure
,
cDns2: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN) //dns2 configure
});
exports.P_BC_LOCAL_CFG = exports.pointer(exports.BC_LOCAL_CFG);
exports.BC_NET_NORMAL_PORT = refStruct({
iSurvPort: ref.types.int,
iHttpPort: ref.types.int,
iHttpsPort: ref.types.int // -1: no support
});
exports.P_BC_NET_NORMAL_PORT = exports.pointer(exports.BC_NET_NORMAL_PORT);
exports.BC_NET_ADVANCED_PORT = refStruct({
iOnvifPort: ref.types.int,
iRtspPort: ref.types.int,
iRtmpPort: ref.types.int
});
exports.P_BC_NET_ADVANCED_PORT = exports.pointer(exports.BC_NET_ADVANCED_PORT);
exports.BC_UPNP_CFG = refStruct({
iEnable: ref.types.int
});
exports.P_BC_UPNP_CFG = exports.pointer(exports.BC_UPNP_CFG);
exports.BC_UID_INFO = refStruct({
cUid: refArray('byte', types_1.DEFINDE.BC_MAX_UID_LEN)
});
exports.P_BC_UID_INFO = exports.pointer(exports.BC_UID_INFO);
exports.BC_P2P_CFG = refStruct({
iEnable: ref.types.int,
iPort: ref.types.int,
serverDomainName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN)
});
exports.P_BC_P2P_CFG = exports.pointer(exports.BC_P2P_CFG);
exports.BC_HANDLEEXCEPTION = refStruct({
iHandleType: ref.types.int,
byRelAlarmOut: refArray('byte', 96)
});
exports.P_BC_HANDLEEXCEPTION = exports.pointer(exports.BC_HANDLEEXCEPTION);
exports.BC_ALARM_IN_CFG = refStruct({
iInputId: ref.types.int,
bCopyTo: ref.types.bool,
sAlarmInName: refArray('byte', 32),
byAlarmType: ref.types.uint8,
byAlarmInHandle: ref.types.uint8,
struAlarmHandleType: exports.BC_HANDLEEXCEPTION,
iInvalid: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT),
byRelRecordChannel: refArray(ref.types.uint8, types_1.DEFINDE.BC_MAX_CHANNEL) // 0: not set, 1:set
,
byEnablePreset: refArray(ref.types.uint8, 64),
byPresetNo: refArray(ref.types.uint8, 64),
byEnableCruise: refArray(ref.types.uint8, 16),
byCruiseNo: refArray(ref.types.uint8, 16),
byEnablePtzTrack: refArray(ref.types.uint8, 16),
byPTZTrack: refArray(ref.types.uint8, 16)
});
exports.P_BC_ALARM_IN_CFG = exports.pointer(exports.BC_ALARM_IN_CFG);
exports.BC_ALARM_OUT_CFG = refStruct({
iOutputId: ref.types.int,
cAlarmOutName: refArray('byte', 32),
iAlarmOutDelay: ref.types.int,
iInvalid: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT)
});
exports.P_BC_ALARM_OUT_CFG = exports.pointer(exports.BC_ALARM_OUT_CFG);
exports.BC_RF_ALARM_CFG = refStruct({
/* validField, used for only set some params.
* for example, validField = "<bEnable><eSensitivity>", only set bEnable, eSensitivity"
* iRfId is required. "iInvalid, iTimeTable" and "channelNum, triggeredHandleType" are independent.
*/
validField: refArray('byte', 128),
isCopyTo: ref.types.bool,
iRfId: ref.types.int,
bEnable: ref.types.bool,
iSupportSensitivity: ref.types.bool,
eSensitivity: ref.types.int,
iSensitivityValue: ref.types.int // 1 ~ 100
,
iReduceFalseAlarm: ref.types.int // 0:disable 1:enable
,
iInvalid: ref.types.int,
channelNum: ref.types.int,
triggeredHandleType: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_CHANNEL),
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT)
});
exports.P_BC_RF_ALARM_CFG = exports.pointer(exports.BC_RF_ALARM_CFG);
exports.BC_RF_ALARM_STATUS = refStruct({
iRfId: ref.types.int,
bEnable: ref.types.bool
});
exports.P_BC_RF_ALARM_STATUS = exports.pointer(exports.BC_RF_ALARM_STATUS);
exports.BC_RF_TEST_START = refStruct({
iRfId: ref.types.int // request
,
iSensitivityValue: ref.types.int // request, rf sensitivity: 0-100
,
iReduceErr: ref.types.int // request, 0: not reduce 1: reduce
});
exports.P_BC_RF_TEST_START = exports.pointer(exports.BC_RF_TEST_START);
exports.BC_RF_TEST_STOP = refStruct({
iRfId: ref.types.int // request
,
iFalseCnt: ref.types.int // response, return rf false count when test stop
});
exports.P_BC_RF_TEST_STOP = exports.pointer(exports.BC_RF_TEST_STOP);
exports.BC_DST_CFG = refStruct({
/* validField, used for only set some params.
* "iStartMonth, iStartIndex, iStartWeekday, iStartHour, iStartMinute, iStartSecond" is independent.
* "iEndMonth, iEndIndex, iEndWeekday, iEndHour, iEndMinute, iEndSecond" is independent.
*/
validField: refArray('byte', 128),
bEnable: ref.types.bool,
iOffset: ref.types.int // hours offset of timezone
,
iStartMonth: ref.types.int // 1~12
,
iStartIndex: ref.types.int // 1~5, 5: last week
,
iStartWeekday: ref.types.int // 0: sunday
,
iStartHour: ref.types.int,
iStartMinute: ref.types.int,
iStartSecond: ref.types.int,
iEndMonth: ref.types.int,
iEndIndex: ref.types.int,
iEndWeekday: ref.types.int,
iEndHour: ref.types.int,
iEndMinute: ref.types.int,
iEndSecond: ref.types.int,
iVersion: ref.types.int // bit0: 1 support weekday cfg
});
exports.P_BC_DST_CFG = exports.pointer(exports.BC_DST_CFG);
exports.BC_DDNS_CFG = refStruct({
bEnable: ref.types.bool,
eType: ref.types.int,
cDomainName: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN),
cUserName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
cPassword: refArray('byte', types_1.DEFINDE.BC_MAX_PWD_LEN_128)
});
exports.P_BC_DDNS_CFG = exports.pointer(exports.BC_DDNS_CFG);
exports.BC_NTP_CFG = refStruct({
bEnable: ref.types.bool,
cServer: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN),
iInterval: ref.types.int // 60 ~65535 MIN,0 for synchronize
,
iPort: ref.types.int
});
exports.P_BC_NTP_CFG = exports.pointer(exports.BC_NTP_CFG);
exports.BC_PPPOE_CFG = refStruct({
cName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
cPassword: refArray('byte', types_1.DEFINDE.BC_MAX_PWD_LEN)
});
exports.P_BC_PPPOE_CFG = exports.pointer(exports.BC_PPPOE_CFG);
exports.BC_UDID = refStruct({
udid: refArray('byte', 128),
iSignal: ref.types.int,
iSupportEncrypt: ref.types.int,
iEncrypt: ref.types.int,
eType: ref.types.int
});
exports.P_BC_UDID = exports.pointer(exports.BC_UDID);
exports.BC_UDID_LIST = refStruct({
size: ref.types.int,
udids: refArray(exports.BC_UDID, types_1.DEFINDE.BC_WIFI_UDID_MAX_NUM)
});
exports.P_BC_UDID_LIST = exports.pointer(exports.BC_UDID_LIST);
exports.BC_WIFI_CFG = refStruct({
mode: ref.types.int,
essid: refArray('byte', 128) /* ssid */,
channel: ref.types.int /* 1~13 */,
authmod: ref.types.int,
enccrypttype: ref.types.int,
key: refArray('byte', 128),
udidList: exports.BC_UDID_LIST
});
exports.P_BC_WIFI_CFG = exports.pointer(exports.BC_WIFI_CFG);
exports.BC_SIM_MODULE_INFO = refStruct({
cIMEI: refArray('byte', 128) // International Mobile Equipment Identity
,
cICCID: refArray('byte', 128) // Integrate circuit card identity
,
cPhoneNum: refArray('byte', 128) // phone number
});
exports.P_BC_SIM_MODULE_INFO = exports.pointer(exports.BC_SIM_MODULE_INFO);
exports.BC_BIND_CLOUD = refStruct({
cAuthToken: refArray('byte', types_1.DEFINDE.BC_MAX_AUTH_TOKEN_LEN),
iForceAutoUpload: ref.types.int
});
exports.P_BC_BIND_CLOUD = exports.pointer(exports.BC_BIND_CLOUD);
exports.BC_CLOUD_INFO = refStruct({
isBinded: ref.types.bool
});
exports.P_BC_CLOUD_INFO = exports.pointer(exports.BC_CLOUD_INFO);
exports.BC_CLOUD_STREAM_TYPE_LIST = refStruct({
iSize: ref.types.int,
streamType: refArray(ref.types.int, 8) // -1:invalid 0:main 1:extend 2:sub
});
exports.P_BC_CLOUD_STREAM_TYPE_LIST = exports.pointer(exports.BC_CLOUD_STREAM_TYPE_LIST);
exports.BC_CLOUD_CFG = refStruct({
/* validField, used for only set some params.
* for example, validField = "<iAutoUpload><streamCfg>", only set iAutoUpload and streamCfg"
*/
validField: refArray('byte', 128),
iAutoUpload: ref.types.int,
iSupportMultiStream: ref.types.int,
streamAbility: exports.BC_CLOUD_STREAM_TYPE_LIST,
streamCfg: exports.BC_CLOUD_STREAM_TYPE_LIST
});
exports.P_BC_CLOUD_CFG = exports.pointer(exports.BC_CLOUD_CFG);
exports.BC_RECORD_FILE_DAYS = refStruct({
iUsed: ref.types.int,
cUID: refArray('byte', types_1.DEFINDE.BC_MAX_UID_LEN) // for NAS
,
iRecType: refArray(ref.types.int, 32) // 0:none, 1:normal, 2:alarm
});
exports.P_BC_RECORD_FILE_DAYS = exports.pointer(exports.BC_RECORD_FILE_DAYS);
exports.BC_RECORD_FILE_DAYS_BY_CHN = refStruct({
startTime: exports.BC_TIME,
endTime: exports.BC_TIME,
items: refArray(exports.BC_RECORD_FILE_DAYS, types_1.DEFINDE.BC_MAX_CHANNEL)
});
exports.P_BC_RECORD_FILE_DAYS_BY_CHN = exports.pointer(exports.BC_RECORD_FILE_DAYS_BY_CHN);
exports.BC_USER = refStruct({
cUserName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
cPassword: refArray('byte', types_1.DEFINDE.BC_MAX_PWD_LEN),
cLocalRight: refArray('byte', 32),
cOldIpcRight: refArray('byte', 32),
magicNum: ref.types.int,
cUserIP: refArray('byte', 128),
cMACAddr: refArray('byte', 6),
iUserLevel: ref.types.int // 0:normal user; 1:admin
,
iLoginState: ref.types.int,
iUserSetState: ref.types.int //0:none, 1:add, 2:delete, 3:modify
,
iBootPwd: ref.types.int
});
exports.P_BC_USER = exports.pointer(exports.BC_USER);
exports.BC_USER_CFG = refStruct({
cUserName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
usernum: ref.types.int,
user: refArray(exports.BC_USER, types_1.DEFINDE.BC_USER_NUM)
});
exports.P_BC_USER_CFG = exports.pointer(exports.BC_USER_CFG);
exports.BC_USER_FOR_ABILITY = refStruct({
cMyUserName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
cUserNameForSet: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN)
});
exports.P_BC_USER_FOR_ABILITY = exports.pointer(exports.BC_USER_FOR_ABILITY);
exports.BC_USER_ONLINE_INFO = refStruct({
iSessionId: ref.types.int,
iUserId: ref.types.int,
cUserName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN) // Login User Name
,
cPassword: refArray('byte', types_1.DEFINDE.BC_MAX_PWD_LEN) // User password, the default is an empty string
,
userIP: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN) // User IP
,
iUserLevel: ref.types.int // 0:normal user; 1:admin
,
bCanForceOffline: ref.types.bool // Is can be force offline
,
bOnlineState: ref.types.bool // Online State
});
exports.P_BC_USER_ONLINE_INFO = exports.pointer(exports.BC_USER_ONLINE_INFO);
exports.BC_USER_ONLINE_CFG = refStruct({
iOnlineUserNum: ref.types.int,
user: refArray(exports.BC_USER_ONLINE_INFO, types_1.DEFINDE.BC_USER_NUM)
});
exports.P_BC_USER_ONLINE_CFG = exports.pointer(exports.BC_USER_ONLINE_CFG);
exports.BC_FORCE_PWD = refStruct({
cUserName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
cPassword: refArray('byte', types_1.DEFINDE.BC_MAX_PWD_LEN)
});
exports.P_BC_FORCE_PWD = exports.pointer(exports.BC_FORCE_PWD);
exports.BC_BOOT_PWD_STATE = refStruct({
bPwdState: ref.types.bool
});
exports.P_BC_BOOT_PWD_STATE = exports.pointer(exports.BC_BOOT_PWD_STATE);
exports.BC_UPGRADE_FILE_INFO = refStruct({
cSourceFileName: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
iUpgradeConfig: ref.types.int,
uFileSize: ref.types.uint32,
uCurSize: ref.types.uint32
});
exports.P_BC_UPGRADE_FILE_INFO = exports.pointer(exports.BC_UPGRADE_FILE_INFO);
exports.BC_FTP_INTERVAL_LIST = refStruct({
iSize: ref.types.int,
iInterval: refArray(ref.types.int, types_1.DEFINDE.BC_FTP_INTERVAL_TABLE_MAX_SIZE)
});
exports.P_BC_FTP_INTERVAL_LIST = exports.pointer(exports.BC_FTP_INTERVAL_LIST);
exports.BC_FTP_CFG = refStruct({
cServer: refArray('byte', types_1.DEFINDE.BC_MAX_ADDR_LEN),
cUsername: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
cPassword: refArray('byte', types_1.DEFINDE.BC_MAX_PWD_LEN_128),
iPwdMaxLen: ref.types.int,
cRemotedir: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
bAnonymous: ref.types.bool,
iPort: ref.types.int,
iwFilelen: ref.types.int // Unit:MB
,
bSupportTest: ref.types.bool // 1:support ftp test
,
iSupportStreamType: ref.types.int
// 0:pic and mainStream video, 1:pic and subStream video, 2:pic and extension stream video, 3:only picture
,
iStreamType: ref.types.int,
iSupportInterval: ref.types.int,
iInterval: ref.types.int // seconds
,
intervalList: exports.BC_FTP_INTERVAL_LIST,
iSupportTransportMode: ref.types.int,
eTransportMode: ref.types.int,
iAutoDir: ref.types.int
});
exports.P_BC_FTP_CFG = exports.pointer(exports.BC_FTP_CFG);
exports.BC_CONFIG_FILE_INFO = refStruct({
cSourceFileName: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
cSaveFileName: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
uFileSize: ref.types.uint32,
uCurSize: ref.types.uint32
});
exports.P_BC_CONFIG_FILE_INFO = exports.pointer(exports.BC_CONFIG_FILE_INFO);
exports.BC_PUSH_INFO = refStruct({
cToken: refArray('byte', 512),
cPhoneType: refArray('byte', 128),
cClientid: refArray('byte', 128),
cRes: refArray('byte', 128)
});
exports.P_BC_PUSH_INFO = exports.pointer(exports.BC_PUSH_INFO);
exports.BC_RTMP_OPT_ITEM = refStruct({
channelId: ref.types.int,
streamType: ref.types.int
});
exports.P_BC_RTMP_OPT_ITEM = exports.pointer(exports.BC_RTMP_OPT_ITEM);
exports.BC_RTMP_OPT = refStruct({
size: ref.types.int,
items: refArray(exports.BC_RTMP_OPT_ITEM, types_1.DEFINDE.BC_MAX_CHANNEL)
});
exports.P_BC_RTMP_OPT = exports.pointer(exports.BC_RTMP_OPT);
exports.BC_ENC_CFG = refStruct({
bAudio: ref.types.int,
eResolution: ref.types.int,
iWidth: ref.types.int,
iHeight: ref.types.int,
eEncType: ref.types.int,
lFrameRate: ref.types.long,
lBitRate: ref.types.long,
eEncProfile: ref.types.int
});
exports.P_BC_ENC_CFG = exports.pointer(exports.BC_ENC_CFG);
exports.BC_ENC_INFO = refStruct({
eResolution: ref.types.int,
iWidth: ref.types.int,
iHigh: ref.types.int
});
exports.P_BC_ENC_INFO = exports.pointer(exports.BC_ENC_INFO);
exports.BC_CHN_ENC_INFO = refStruct({
bNoTrans: ref.types.bool,
bRestartWhenResChanged: ref.types.bool,
lStreamTypes: ref.types.long // valid stream types
,
mainstream: exports.BC_ENC_CFG,
substream: exports.BC_ENC_CFG,
extendstream: exports.BC_ENC_CFG
});
exports.P_BC_CHN_ENC_INFO = exports.pointer(exports.BC_CHN_ENC_INFO);
/*
image_w
|--------------------------|
| h1 |
| |----------| |
|<-w1-> | osd |<-w2-> | image_h
| |----------| |
| h2 |
|--------------------------|
w1: the distance from osd to the left
w2: the distance from osd to the right
h1: the distance from osd to the top
h2: the distance from osd to the bottom
dwX = ((w1<<16)&0xffff0000)|(w2&0xffff)
dwY = ((h1<<16)&0xffff0000)|(h2&0xffff)
*/
exports.BC_OSD = refStruct({
bShow: ref.types.bool // FALSE:disable, TRUE:enable
,
iX: ref.types.int,
iY: ref.types.int
});
exports.P_BC_OSD = exports.pointer(exports.BC_OSD);
exports.BC_OSD_CFG = refStruct({
/* validField, used for only set some params.
* for example, validField = "<byChannelName><channelName>", only set byChannelName, channelName.
*/
validField: refArray('byte', 128),
isCopyTo: ref.types.bool,
byChannelName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN),
channelName: exports.BC_OSD,
time: exports.BC_OSD,
eSize: ref.types.int,
elanguage: ref.types.int,
iBgColor: ref.types.int // 1:use bg color
,
iWaterMark: ref.types.int // 1:use water mark
,
iWaterMarkXPos: ref.types.int // readonly water mark Topleft pos X default:0x10000
,
iWaterMarkYPos: ref.types.int // readonly water mark Topleft pos Y default:0x10000
});
exports.P_BC_OSD_CFG = exports.pointer(exports.BC_OSD_CFG);
exports.BC_CAMERA_CFG = refStruct({
eCameraMode: ref.types.int
});
exports.P_BC_CAMERA_CFG = exports.pointer(exports.BC_CAMERA_CFG);
/*
image_w
|---------------------------|
| (x,y) cover_w |
| |----------| |
| | cover |cover_h | image_h
| |----------| |
| |
|---------------------------|
x: cover left_top coordinate x
y: cover left_top coordinate y
dwX = ((x<<16)&0xffff0000)|(image_w&0xffff);
dwY = ((y<<16)&0xffff0000)|(image_h&0xffff);
dwWidth = ((cover_w<<16)&0xffff0000)|(image_w&0xffff);
dwHeight = ((cover_h<<16)&0xffff0000)|(image_h&0xffff);
*/
exports.BC_COVER_AREA = refStruct({
iX: ref.types.int,
iY: ref.types.int,
iWidth: ref.types.int,
iHeight: ref.types.int
});
exports.P_BC_COVER_AREA = exports.pointer(exports.BC_COVER_AREA);
exports.BC_COVER_CFG = refStruct({
bEnable: ref.types.bool // FALSE: disable, TRUE:enable
,
area: refArray(exports.BC_COVER_AREA, types_1.DEFINDE.BC_MAX_COVER_AREA_NUM),
byRes: refArray('byte', 64)
});
exports.P_BC_COVER_CFG = exports.pointer(exports.BC_COVER_CFG);
exports.BC_RECORD_SCHEDULE_CFG = refStruct({
/* max: 128
* validField, used for only set some params.
* validField only suppport for setting <bEnable>,
* validField = "" or "<bEnable>".
*/
validField: refArray('byte', 128),
bEnable: ref.types.bool
/*
* 0: old timetable, timing must be stand alone,
* 1: new timetable, timing is a bitmap value
*/
,
iProtocolVer: ref.types.int
/* bitmap
* BC_ALARM_IN_MD, BC_ALARM_IN_VL ...
*/
,
iAlarmInTypes: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT)
});
exports.P_BC_RECORD_SCHEDULE_CFG = exports.pointer(exports.BC_RECORD_SCHEDULE_CFG);
exports.BC_PTZ_DECODER = refStruct({
iDataBit: ref.types.int // 0:CS8 1:CS7 2:CS6 3:CS5
,
iStopBit: ref.types.int // 0:1bit 1:2bit
,
iDecoderAddress: ref.types.int // 0~255 default:channel+1
,
iBaudRate: ref.types.int // 0:1200 1:2400 2:4800 3:9600
,
eParity: ref.types.int,
eFlowcontrol: ref.types.int,
eDecoderType: ref.types.int,
iSupportPELCO_C: ref.types.int // 0-PTZ_PELCO_D,1-PTZ_PELCO_P,2-PTZ_PELCO
,
cPreset: refArray(ref.types.uint8, 256) /*preset point status*/,
cCruise: refArray(ref.types.uint8, 256) /*cruise point status*/,
cTrack: refArray(ref.types.uint8, 256) /*unknown use??? track point status */
});
exports.P_BC_PTZ_DECODER = exports.pointer(exports.BC_PTZ_DECODER);
exports.BC_SENSITIVITY_INFO = refStruct({
byBeginHour: ref.types.uint8 // begin time: hour
,
byBeginMinute: ref.types.uint8 // begin time: minute
,
byEndHour: ref.types.uint8 // endtime: hour
,
byEndMinute: ref.types.uint8 // endtime: minute
,
iSensitivity: ref.types.int // 1 ~ 50
});
exports.P_BC_SENSITIVITY_INFO = exports.pointer(exports.BC_SENSITIVITY_INFO);
exports.BC_NEW_SENS_ITEM = refStruct({
iEnable: ref.types.int,
iPriority: ref.types.int // 0:lowest
,
iBeginHour: ref.types.int,
iBeginMinute: ref.types.int,
iEndHour: ref.types.int,
iEndMinute: ref.types.int,
iSensitivity: ref.types.int
});
exports.P_BC_NEW_SENS_ITEM = exports.pointer(exports.BC_NEW_SENS_ITEM);
exports.BC_NEW_SENS_INFO = refStruct({
iDefSensitivity: ref.types.int // 1~50 default:9
,
sensItems: refArray(exports.BC_NEW_SENS_ITEM, types_1.DEFINDE.BC_MAX_MOTION_SENS_NUM)
});
exports.BC_MOTION_CFG = refStruct({
validField: refArray('byte', 128),
isCopyTo: ref.types.bool,
bEnable: ref.types.bool // FALSE: disable, TRUE:enable
,
iWidth: ref.types.int // video image width, max:120
,
iHeight: ref.types.int // video image hight, max:68
,
bMotionScope: refArray(ref.types.bool, types_1.DEFINDE.BC_MD_AREA_MAX_HEIGHT * types_1.DEFINDE.BC_MD_AREA_MAX_WIDTH) // 1: set to motion, 0: not set
,
iSensVerion: ref.types.int /* 0:use sensitivityInfo, 1:use newSensInfo */,
sensitivityInfo: refArray(exports.BC_SENSITIVITY_INFO, types_1.DEFINDE.BC_MAX_MOTION_SENS_NUM),
newSensInfo: exports.BC_NEW_SENS_INFO,
alarmOut: exports.BC_ALARM_OUT,
byRelRecordChannel: refArray(ref.types.uint8, types_1.DEFINDE.BC_MAX_CHANNEL) // 0: not set, 1:set
,
iInvalid: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT),
iUsePir: ref.types.int
});
exports.P_BC_MOTION_CFG = exports.pointer(exports.BC_MOTION_CFG);
exports.BC_VILOST_CFG = refStruct({
bEnable: ref.types.bool // 0:disable, 1:enable
,
alarmOut: exports.BC_ALARM_OUT,
iInvalid: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT)
});
exports.P_BC_VILOST_CFG = exports.pointer(exports.BC_VILOST_CFG);
//ptz preset
exports.BC_PRESET = refStruct({
iPtzCmd: ref.types.int // if set ptz name only, pls set cmd to -1
,
iPresetId: ref.types.int,
name: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN) // if no use "invalid" should be set
});
exports.P_BC_PRESET = exports.pointer(exports.BC_PRESET);
exports.BC_PTZ_PRESETS = refStruct({
iChannelId: ref.types.int,
iSize: ref.types.int,
preset: refArray(exports.BC_PRESET, types_1.DEFINDE.BC_MAX_POS_NUM)
});
exports.P_BC_PTZ_PRESETS = exports.pointer(exports.BC_PTZ_PRESETS);
//ptz cruise
exports.BC_CRUISE = refStruct({
iValid: ref.types.int,
iStarting: ref.types.int,
iPatrolId: ref.types.int,
iPresetId: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_KEY_POS),
iTime: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_KEY_POS),
iSpeed: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_KEY_POS),
name: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN)
});
exports.P_BC_CRUISE = exports.pointer(exports.BC_CRUISE);
exports.BC_PTZ_CRUISES = refStruct({
iChannel: ref.types.int,
iSize: ref.types.int,
cruise: refArray(exports.BC_CRUISE, types_1.DEFINDE.BC_MAX_CRUISE_NUM)
});
exports.P_BC_PTZ_CRUISES = exports.pointer(exports.BC_PTZ_CRUISES);
exports.BC_AREA_CTRL_VALUE = refStruct({
lDefMin: ref.types.long,
lDefMax: ref.types.long,
lCurMin: ref.types.long,
lCurMax: ref.types.long
});
exports.P_BC_AREA_CTRL_VALUE = exports.pointer(exports.BC_AREA_CTRL_VALUE);
exports.BC_LINE_CTRL_VALUE = refStruct({
lMin: ref.types.long,
lMax: ref.types.long,
lCur: ref.types.long
});
exports.PBC_LINE_CTRL_VALUE = exports.pointer(exports.BC_LINE_CTRL_VALUE);
/*
lDefault: It works in the setting command
0: Normal set all the member of BC_ISP_CFG
1: Set Brightness, Contrast, Saturation, Hue, Sharpen, Mirror
and Flip to the default value
2: Set other members to the default value
*/
exports.BC_ISP_BD_CTRL = refStruct({
eMode: ref.types.int,
bright: exports.BC_LINE_CTRL_VALUE,
dark: exports.BC_LINE_CTRL_VALUE,
});
exports.P_BC_ISP_BD_CTRL = exports.pointer(exports.BC_ISP_BD_CTRL);
exports.BC_ISP_CFG = refStruct({
/* validField, used for only set some params.
* for example, validField = "<lBright><lContrast><eAntiflick><eDayNightMode>", only set lBright, lContrast, eAntiflick, eDayNightMode.
*/
validField: refArray('byte', 128),
lChannel: ref.types.long // 0~BC_MAX_CHANNEL
,
lBright: ref.types.long // 0~0xff, default 0x80
,
lContrast: ref.types.long // 0~0xff, default 0x80
,
lSaturation: ref.types.long // 0~0xff, default 0x80
,
lHue: ref.types.long // 0~0xff, default 0x80
,
lSharpen: ref.types.long // 0~0xff, default 0x80
,
bSupportAdvanced: ref.types.bool // FALSE means the following member is invalid
,
eAntiflick: ref.types.int // Anti flash - BC_ANTIFLICK_TYPE_E
,
eExpType: ref.types.int // exposure type - BC_EXPOSURE_TYPE_E
,
gainCtl: exports.BC_AREA_CTRL_VALUE // gain control, 1~100, default 1~20
,
shutterCtl: exports.BC_AREA_CTRL_VALUE // Electronic shutter control, 2~40, default 2~40
,
eShutterAjust: ref.types.int // shutter adjust - BC_SHUTTER_AJUST_E
,
eScencMode: ref.types.int // contextual model - BC_AWB_SCENC_MODE_E
,
lSizeOfScencModes: ref.types.bool,
scencModeList: refArray(ref.types.int, 8) // BC_AWB_SCENC_MODE_E
,
redGain: exports.BC_LINE_CTRL_VALUE // red gain, 0~100, default 50
,
blueGain: exports.BC_LINE_CTRL_VALUE // blue gain, 0~100, default 50
,
eDayNightMode: ref.types.int // day/night mode - BC_DAY_NIGHT_MODE_E
,
eIRCut: ref.types.int // ir-cut-filter - BC_IR_CUT_TYPE_E
,
lExposureLevel: ref.types.long,
eBLCType: ref.types.int // Backlight compensation mode - BC_BLC_MODE_E
,
DRCTarget: exports.BC_LINE_CTRL_VALUE // Wide dynamic range, 0~0xff,default:0x80
,
BLCTarget: exports.BC_LINE_CTRL_VALUE // Backlight intensity,0~0xff,default:0x80
,
bMirror: ref.types.bool // FALSE:diable, TRUE:enable
,
bFlip: ref.types.bool // FALSE:diable, TRUE:enable
,
lDefault: ref.types.long // See the comment of this structure
,
lGainAjust: ref.types.long // 0~100, default 10
,
lAutoIrisState: ref.types.long,
AutoirisValue: exports.BC_LINE_CTRL_VALUE,
lFocusAutoiris: ref.types.long,
lSupportAutoiris: ref.types.long,
eNR3D: ref.types.int // BC_ISP_NR3D_E
,
lSupportNR3D: ref.types.long,
lIspVersion: ref.types.long // 0:old, 1:new_1
,
bdDayCtrl: exports.BC_ISP_BD_CTRL,
bdNightCtrl: exports.BC_ISP_BD_CTRL,
bdColorNightCtrl: exports.BC_ISP_BD_CTRL,
iFirstFrameStrategy: ref.types.int
});
exports.P_BC_ISP_CFG = exports.pointer(exports.BC_ISP_CFG);
exports.BC_DAY_NIGHT_MODE_CFG = refStruct({
eMode: ref.types.int // BC_DAY_NIGHT_MODE_E
});
exports.P_BC_DAY_NIGHT_MODE_CFG = exports.pointer(exports.BC_DAY_NIGHT_MODE_CFG);
exports.BC_LED_LIGHT_STATE = refStruct({
/* validField, used for only set some params.
* for example, validField = "<eLEDState>", only set eLEDState
*/
validField: refArray('byte', 128),
eLEDState: ref.types.int // BC_LED_STATE_E
,
iVersion: ref.types.int // 1:auto,close,open. 2:auto,close
,
eIndicatorLight: ref.types.int // BC_LIGHT_STATE_E
});
exports.P_BC_LED_LIGHT_STATE = exports.pointer(exports.BC_LED_LIGHT_STATE);
exports.BC_FLOODLIGHT_MANUAL = refStruct({
eOper: ref.types.int
});
exports.P_BC_FLOODLIGHT_MANUAL = exports.pointer(exports.BC_FLOODLIGHT_MANUAL);
exports.BC_FLOODLIGHT_STAT_ITEM = refStruct({
iChannel: ref.types.int,
iLit: ref.types.int
});
exports.P_BC_FLOODLIGHT_STAT_ITEM = exports.pointer(exports.BC_FLOODLIGHT_STAT_ITEM);
exports.BC_FLOODLIGHT_STAT = refStruct({
num: ref.types.int,
items: refArray(exports.BC_FLOODLIGHT_STAT_ITEM, types_1.DEFINDE.BC_MAX_CHANNEL)
});
exports.P_BC_FLOODLIGHT_STAT = exports.pointer(exports.BC_FLOODLIGHT_STAT);
exports.BC_FLOODLIGHT_BRIGHT = refStruct({
iCur: ref.types.int,
iMin: ref.types.int,
iMax: ref.types.int
});
exports.P_BC_FLOODLIGHT_BRIGHT = exports.pointer(exports.BC_FLOODLIGHT_BRIGHT);
exports.BC_FLOODLIGHT_TASK = refStruct({
iBvalid: ref.types.int,
bright: exports.BC_FLOODLIGHT_BRIGHT,
iAutoByPreview: ref.types.int,
iDuration: ref.types.int
});
exports.P_BC_FLOODLIGHT_TASK = exports.pointer(exports.BC_FLOODLIGHT_TASK);
exports.BC_FTP_TASK = refStruct({
/* validField, used for only set some params.
* validField only suppport for setting <bEnable>,
* validField = "" or "<bEnable>".
*/
validField: refArray('byte', 128),
bEnable: ref.types.bool
/*
* 0: old timetable, timing must be stand alone,
* 1: new timetable, timing is a bitmap value
*/
,
iProtocolVer: ref.types.int
/* bitmap
* BC_ALARM_IN_MD, BC_ALARM_IN_VL ...
*/
,
iAlarmInTypes: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT)
});
exports.P_BC_FTP_TASK = exports.pointer(exports.BC_FTP_TASK);
exports.BC_EMAIL_TASK = refStruct({
/* validField, used for only set some params.
* validField only suppport for setting <bEnable>,
* validField = "" or "<bEnable>".
*/
validField: refArray('byte', 128),
bEnable: ref.types.bool
/*
* 0: old timetable, timing must be stand alone,
* 1: new timetable, timing is a bitmap value
*/
,
iProtocolVer: ref.types.int
/* bitmap
* BC_ALARM_IN_MD, BC_ALARM_IN_VL ...
*/
,
iAlarmInTypes: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT)
});
exports.P_BC_EMAIL_TASK = exports.pointer(exports.BC_EMAIL_TASK);
exports.BC_PUSH_TASK = refStruct({
bEnable: ref.types.bool
/*
* 0: old timetable, timing must be stand alone,
* 1: new timetable, timing is a bitmap value
*/
,
iProtocolVer: ref.types.int
/* bitmap
* BC_ALARM_IN_MD, BC_ALARM_IN_VL ...
*/
,
iAlarmInTypes: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT),
iPushVersion: ref.types.int // 0:old 1:new
});
exports.P_BC_PUSH_TASK = exports.pointer(exports.BC_PUSH_TASK);
exports.BC_AUDIO_TASK = refStruct({
/* validField, used for only set some params.
* validField only suppport for setting <bEnable>,
* validField = "" or "<bEnable>".
*/
validField: refArray('byte', 128),
bEnable: ref.types.bool
/*
* 0: old timetable, timing must be stand alone,
* 1: new timetable, timing is a bitmap value
*/
,
iProtocolVer: ref.types.int
/* bitmap
* BC_ALARM_IN_MD, BC_ALARM_IN_VL ...
*/
,
iAlarmInTypes: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT)
});
exports.P_BC_AUDIO_TASK = exports.pointer(exports.BC_AUDIO_TASK);
exports.BC_BUZZER_TASK = refStruct({
/* validField, used for only set some params.
* validField only suppport for setting <bEnable>,
* validField = "" or "<bEnable>".
*/
validField: refArray('byte', 128),
bEnable: ref.types.bool
/* bitmap
* BC_ALARM_IN_MD, BC_ALARM_IN_VL ...
*/
,
iAlarmInTypes: ref.types.int,
iTimeTable: refArray(ref.types.int, types_1.DEFINDE.BC_MAX_DAYS * types_1.DEFINDE.BC_MAX_TIMESEGMENT)
});
exports.P_BC_BUZZER_TASK = exports.pointer(exports.BC_BUZZER_TASK);
exports.BC_SNAP_INFO = refStruct({
cSaveFileName: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
uFileSize: ref.types.uint32,
uCurSize: ref.types.uint32
});
exports.P_BC_SNAP_INFO = exports.pointer(exports.BC_SNAP_INFO);
exports.BC_PTZ_AUTO_FOCUS = refStruct({
iDisable: ref.types.int
});
exports.P_BC_PTZ_AUTO_FOCUS = exports.pointer(exports.BC_PTZ_AUTO_FOCUS);
exports.BC_ZOOM_FOCUS_INFO = refStruct({
iZoomMaxPos: ref.types.int,
iZoomMinPos: ref.types.int,
iZoomCurPos: ref.types.int,
iFocusMaxPos: ref.types.int,
iFocusMinPos: ref.types.int,
iFocusCurPos: ref.types.int
});
exports.P_BC_ZOOM_FOCUS_INFO = exports.pointer(exports.BC_ZOOM_FOCUS_INFO);
exports.BC_START_ZOOM_FOCUS = refStruct({
cmd: ref.types.int,
iPos: ref.types.int
});
exports.P_BC_START_ZOOM_FOCUS = exports.pointer(exports.BC_START_ZOOM_FOCUS);
exports.BC_CROP_CFG = refStruct({
iTopLeftX: ref.types.int,
iTopLeftY: ref.types.int,
iCropWidth: ref.types.int,
iCropHeight: ref.types.int,
iMainStreamWidth: ref.types.int,
iMainStreamHeight: ref.types.int,
iSubStreamWidth: ref.types.int,
iSubStreamHeight: ref.types.int,
iVersion: ref.types.int // bit0: 1 crop width and height cfg
});
exports.P_BC_CROP_CFG = exports.pointer(exports.BC_CROP_CFG);
exports.BC_CROP_SNAP_INFO = refStruct({
iWidth: ref.types.int // width for snap
,
iHeight: ref.types.int // height for snap
,
cSaveFileName: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
uFileSize: ref.types.uint32,
uCurSize: ref.types.uint32
});
exports.P_BC_CROP_SNAP_INFO = exports.pointer(exports.BC_CROP_SNAP_INFO);
exports.BC_RINGTONE_CFG = refStruct({
iChannel: ref.types.int,
iTimeout: ref.types.int // default duration of ring down
,
iRingtoneSelect: ref.types.int // 0:use default ringtone, 1:use custom ringtone
});
exports.P_BC_RINGTONE_CFG = exports.pointer(exports.BC_RINGTONE_CFG);
/*
* iDuration: valid when continuous mode.
* -1: use default
* 0: ring down one time
* >0: ring down <iDuration> seconds
* others: do nothing
* iTimes: valid when times mode
* >0: ring down <iTimes> times cycles
* others: do nothing
* iOnOff: valid when switch mode
* 0: turn off Ring Down
* 1: turn on Ring Down
*/
exports.BC_MANUAL_RING_DOWN = refStruct({
iChannel: ref.types.int,
eRingMode: ref.types.int // BC_RING_DOWN_MODE_E
,
iDuration: ref.types.int,
iTimes: ref.types.int,
iOnOff: ref.types.int
});
exports.P_BC_MANUAL_RING_DOWN = exports.pointer(exports.BC_MANUAL_RING_DOWN);
// ringtone
exports.BC_MUTE_ALARM_AUDIO = refStruct({
iChannel: ref.types.int,
iMute: ref.types.int // 0:enable alarm audio 1:mute alarm audio
});
exports.P_BC_MUTE_ALARM_AUDIO = exports.pointer(exports.BC_MUTE_ALARM_AUDIO);
exports.BC_RINGTONE_FILE_INFO = refStruct({
iChannel: ref.types.int,
cSourceFileName: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
cAdpcmFileName: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
iFileSize: ref.types.int,
iCurSize: ref.types.int
});
exports.P_BC_RINGTONE_FILE_INFO = exports.pointer(exports.BC_RINGTONE_FILE_INFO);
exports.BC_VERSION_INFO = refStruct({
cName: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN) // device name
,
cType: refArray('byte', types_1.DEFINDE.BC_MAX_NAME_LEN) // model
,
cSerialNo: refArray('byte', types_1.DEFINDE.BC_SERIALNO_LEN),
cBuildDay: refArray('byte', types_1.DEFINDE.BC_BUILD_INFO_LEN),
cHardwareVer: refArray('byte', types_1.DEFINDE.BC_VERSION_INFO_LEN),
cCfgVer: refArray('byte', types_1.DEFINDE.BC_VERSION_INFO_LEN),
cFirmwareVer: refArray('byte', types_1.DEFINDE.BC_VERSION_INFO_LEN),
cPakSuffix: refArray('byte', types_1.DEFINDE.BC_MAX_FILE_LEN),
cDetail: refArray('byte', types_1.DEFINDE.BC_DETAIL_INFO_LEN),
cCC3200Ver: refArray('byte', types_1.DEFINDE.BC_VERSION_INFO_LEN) // cc3200 version
,
cSpVer: refArray('byte', types_1.DEFINDE.BC_VERSION_INFO_LEN) //sp version
});
exports.P_BC_VERSION_INFO = exports.pointer(exports.BC_VERSION_INFO);
exports.BC_RFSENSOR_ALARM_INFO = refStruct({
iEnable: ref.types.int,
eRfType: ref.types.int // BC_RF_ALARM_TYPE_E
});
exports.P_BC_RFSENSOR_ALARM_INFO = exports.pointer(exports.BC_RFSENSOR_ALARM_INFO);
exports.BC_MULTI_UPDATE_STATUS = refStruct({
iPacketSize: ref.types.int // packet size (KB)
,
iDownloadSize: ref.types.int // download size (KB)
,
eState: re