Init
This commit is contained in:
388
build/p2p/interfaces.d.ts
vendored
Normal file
388
build/p2p/interfaces.d.ts
vendored
Normal file
@ -0,0 +1,388 @@
|
||||
import * as NodeRSA from "node-rsa";
|
||||
import { Readable } from "stream";
|
||||
import { SortedMap } from "sweet-collections";
|
||||
import { AlarmMode, DeviceType, MicStatus, ParamType, TriggerType, VideoType } from "../http/types";
|
||||
import { Address, CmdCameraInfoResponse, CommandResult, CustomData, StorageInfoBodyHB3 } from "./models";
|
||||
import { TalkbackStream } from "./talkback";
|
||||
import { AlarmEvent, AudioCodec, CommandType, DatabaseReturnCode, IndoorSoloSmartdropCommandType, P2PDataType, SmartSafeAlarm911Event, SmartSafeShakeAlarmEvent, P2PStorageType, TFCardStatus, VideoCodec, InternalP2PCommandType } from "./types";
|
||||
export interface P2PClientProtocolEvents {
|
||||
"alarm mode": (mode: AlarmMode) => void;
|
||||
"camera info": (cameraInfo: CmdCameraInfoResponse) => void;
|
||||
"connect": (address: Address) => void;
|
||||
"close": () => void;
|
||||
"command": (result: CommandResult) => void;
|
||||
"download started": (channel: number, metadata: StreamMetadata, videoStream: Readable, audioStream: Readable) => void;
|
||||
"download finished": (channel: number) => void;
|
||||
"livestream started": (channel: number, metadata: StreamMetadata, videoStream: Readable, audioStream: Readable) => void;
|
||||
"livestream stopped": (channel: number) => void;
|
||||
"livestream error": (channel: number, error: Error) => void;
|
||||
"wifi rssi": (channel: number, rssi: number) => void;
|
||||
"rtsp url": (channel: number, rtspUrl: string) => void;
|
||||
"parameter": (channel: number, param: number, value: string) => void;
|
||||
"timeout": () => void;
|
||||
"runtime state": (channel: number, batteryLevel: number, temperature: number) => void;
|
||||
"charging state": (channel: number, chargeType: number, batteryLevel: number) => void;
|
||||
"rtsp livestream started": (channel: number) => void;
|
||||
"rtsp livestream stopped": (channel: number) => void;
|
||||
"floodlight manual switch": (channel: number, enabled: boolean) => void;
|
||||
"alarm delay": (alarmDelayEvent: AlarmEvent, alarmDelay: number) => void;
|
||||
"alarm armed": () => void;
|
||||
"alarm event": (alarmEvent: AlarmEvent) => void;
|
||||
"talkback started": (channel: number, talkbackStream: TalkbackStream) => void;
|
||||
"talkback stopped": (channel: number) => void;
|
||||
"talkback error": (channel: number, error: Error) => void;
|
||||
"secondary command": (result: CommandResult) => void;
|
||||
"jammed": (channel: number) => void;
|
||||
"low battery": (channel: number) => void;
|
||||
"shake alarm": (channel: number, detail: SmartSafeShakeAlarmEvent) => void;
|
||||
"911 alarm": (channel: number, detail: SmartSafeAlarm911Event) => void;
|
||||
"wrong try-protect alarm": (channel: number) => void;
|
||||
"sd info ex": (sdStatus: TFCardStatus, sdCapacity: number, sdCapacityAvailable: number) => void;
|
||||
"image download": (file: string, image: Buffer) => void;
|
||||
"tfcard status": (channel: number, status: TFCardStatus) => void;
|
||||
"database query latest": (returnCode: DatabaseReturnCode, data: Array<DatabaseQueryLatestInfo>) => void;
|
||||
"database query local": (returnCode: DatabaseReturnCode, data: Array<DatabaseQueryLocal>) => void;
|
||||
"database count by date": (returnCode: DatabaseReturnCode, data: Array<DatabaseCountByDate>) => void;
|
||||
"database delete": (returnCode: DatabaseReturnCode, failedIds: Array<unknown>) => void;
|
||||
"sensor status": (channel: number, status: number) => void;
|
||||
"garage door status": (channel: number, doorId: number, status: number) => void;
|
||||
"storage info hb3": (channel: number, storageInfo: StorageInfoBodyHB3) => void;
|
||||
"sequence error": (channel: number, command: number, sequence: number, serialnumber: string) => void;
|
||||
}
|
||||
export interface P2PQueueMessage {
|
||||
p2pCommandType: InternalP2PCommandType;
|
||||
p2pCommand: P2PCommand;
|
||||
nestedCommandType?: CommandType;
|
||||
nestedCommandType2?: number;
|
||||
timestamp: number;
|
||||
customData?: CustomData;
|
||||
}
|
||||
export interface P2PMessageState {
|
||||
sequence: number;
|
||||
commandType: CommandType;
|
||||
nestedCommandType?: CommandType | IndoorSoloSmartdropCommandType | ParamType;
|
||||
nestedCommandType2?: number;
|
||||
channel: number;
|
||||
data: Buffer;
|
||||
retries: number;
|
||||
acknowledged: boolean;
|
||||
returnCode?: number;
|
||||
retryTimeout?: NodeJS.Timeout;
|
||||
timeout?: NodeJS.Timeout;
|
||||
customData?: CustomData;
|
||||
}
|
||||
export interface P2PMessageParts {
|
||||
[index: number]: Buffer;
|
||||
}
|
||||
export interface P2PMessage {
|
||||
bytesToRead: number;
|
||||
type: P2PDataType;
|
||||
seqNo: number;
|
||||
data: Buffer;
|
||||
}
|
||||
export interface P2PDataHeader {
|
||||
commandId: number;
|
||||
bytesToRead: number;
|
||||
channel: number;
|
||||
signCode: number;
|
||||
type: number;
|
||||
}
|
||||
export interface P2PDataMessage extends P2PDataHeader {
|
||||
seqNo: number;
|
||||
dataType: P2PDataType;
|
||||
data: Buffer;
|
||||
}
|
||||
export interface P2PDataMessageBuilder {
|
||||
header: P2PDataHeader;
|
||||
bytesRead: number;
|
||||
messages: P2PMessageParts;
|
||||
}
|
||||
export interface P2PDataMessageState {
|
||||
leftoverData: Buffer;
|
||||
queuedData: SortedMap<number, P2PMessage>;
|
||||
rsaKey: NodeRSA | null;
|
||||
videoStream: Readable | null;
|
||||
audioStream: Readable | null;
|
||||
invalidStream: boolean;
|
||||
p2pStreaming: boolean;
|
||||
p2pStreamNotStarted: boolean;
|
||||
p2pStreamChannel: number;
|
||||
p2pStreamFirstAudioDataReceived: boolean;
|
||||
p2pStreamFirstVideoDataReceived: boolean;
|
||||
p2pStreamMetadata: StreamMetadata;
|
||||
p2pStreamingTimeout?: NodeJS.Timeout;
|
||||
rtspStream: {
|
||||
[index: number]: boolean;
|
||||
};
|
||||
rtspStreaming: {
|
||||
[index: number]: boolean;
|
||||
};
|
||||
waitForSeqNoTimeout?: NodeJS.Timeout;
|
||||
waitForAudioData?: NodeJS.Timeout;
|
||||
receivedFirstIFrame: boolean;
|
||||
preFrameVideoData: Buffer;
|
||||
p2pTalkback: boolean;
|
||||
p2pTalkbackChannel: number;
|
||||
}
|
||||
export interface P2PDataMessageVideo {
|
||||
streamType: number;
|
||||
videoSeqNo: number;
|
||||
videoFPS: number;
|
||||
videoWidth: number;
|
||||
videoHeight: number;
|
||||
videoTimestamp: number;
|
||||
videoDataLength: number;
|
||||
aesKey: string;
|
||||
}
|
||||
export interface P2PDataMessageAudio {
|
||||
audioType: number;
|
||||
audioSeqNo: number;
|
||||
audioTimestamp: number;
|
||||
audioDataLength: number;
|
||||
}
|
||||
export interface StreamMetadata {
|
||||
videoCodec: VideoCodec;
|
||||
videoFPS: number;
|
||||
videoWidth: number;
|
||||
videoHeight: number;
|
||||
audioCodec: AudioCodec;
|
||||
}
|
||||
export interface DeviceSerial {
|
||||
[index: number]: {
|
||||
sn: string;
|
||||
adminUserId: string;
|
||||
};
|
||||
}
|
||||
export interface P2PCommand {
|
||||
commandType: CommandType;
|
||||
value?: number | string;
|
||||
valueSub?: number;
|
||||
strValue?: string;
|
||||
strValueSub?: string;
|
||||
channel?: number;
|
||||
}
|
||||
export interface P2PVideoMessageState {
|
||||
sequence: number;
|
||||
channel: number;
|
||||
data: Buffer;
|
||||
retries: number;
|
||||
timeout?: NodeJS.Timeout;
|
||||
}
|
||||
export interface P2PDatabaseQueryLatestInfoResponse {
|
||||
device_sn: string;
|
||||
payload: {
|
||||
event_count: number;
|
||||
crop_hb3_path: string;
|
||||
crop_cloud_path: string;
|
||||
};
|
||||
}
|
||||
export interface P2PDatabaseCountByDateResponse {
|
||||
days: string;
|
||||
count: number;
|
||||
}
|
||||
export interface P2PDatabaseQueryLocalHistoryRecordInfo {
|
||||
record_id: number;
|
||||
account: string;
|
||||
station_sn: string;
|
||||
device_sn: string;
|
||||
device_type: DeviceType;
|
||||
start_time: string;
|
||||
end_time: string;
|
||||
frame_num: number;
|
||||
storage_type: P2PStorageType;
|
||||
storage_cloud: boolean;
|
||||
cipher_id: number;
|
||||
vision: number;
|
||||
video_type: VideoType;
|
||||
has_lock: boolean;
|
||||
automation_id: number;
|
||||
trigger_type: TriggerType;
|
||||
push_mode: number;
|
||||
mic_status: MicStatus;
|
||||
res_change: number;
|
||||
res_best_width: number;
|
||||
res_best_height: number;
|
||||
self_learning: number;
|
||||
int_reserve: number;
|
||||
int_extra: number;
|
||||
storage_path: string;
|
||||
thumb_path: string;
|
||||
write_status: number;
|
||||
str_extra: string;
|
||||
cloud_path: string;
|
||||
folder_size: number;
|
||||
storage_status: number;
|
||||
storage_label: string;
|
||||
time_zone: string;
|
||||
mp4_cloud: string;
|
||||
snapshot_cloud: string;
|
||||
table_version: string;
|
||||
update_time: string;
|
||||
}
|
||||
export interface P2PDatabaseQueryLocalRecordCropPictureInfo {
|
||||
picture_id: number;
|
||||
record_id: number;
|
||||
station_sn: string;
|
||||
device_sn: string;
|
||||
detection_type: number;
|
||||
person_id: number;
|
||||
crop_path: string;
|
||||
event_time: string;
|
||||
str_reserve: string;
|
||||
person_recog_flag: boolean;
|
||||
crop_pic_quality: number;
|
||||
pic_marking_flag: boolean;
|
||||
group_id: number;
|
||||
int_reserve: number;
|
||||
crop_id: number;
|
||||
start_time: string;
|
||||
reserve2_int: number;
|
||||
reserve2_date: string;
|
||||
reserve2_string: string;
|
||||
storage_type: P2PStorageType;
|
||||
storage_status: number;
|
||||
storage_label: string;
|
||||
table_version: string;
|
||||
update_time: string;
|
||||
}
|
||||
export interface P2PDatabaseQueryLocalResponse {
|
||||
payload: Array<P2PDatabaseQueryLocalHistoryRecordInfo> | Array<P2PDatabaseQueryLocalRecordCropPictureInfo>;
|
||||
table_name: string;
|
||||
}
|
||||
export interface P2PDatabaseDeleteResponse {
|
||||
failed_delete: Array<unknown>;
|
||||
}
|
||||
export interface P2PDatabaseResponse {
|
||||
data: Array<P2PDatabaseQueryLatestInfoResponse> | Array<P2PDatabaseCountByDateResponse> | Array<P2PDatabaseQueryLocalResponse> | P2PDatabaseDeleteResponse;
|
||||
start_id?: number;
|
||||
end_id?: number;
|
||||
count?: number;
|
||||
transaction: string;
|
||||
table: string;
|
||||
cmd: number;
|
||||
mIntRet: DatabaseReturnCode;
|
||||
version: string;
|
||||
msg: string;
|
||||
}
|
||||
export interface DatabaseQueryLatestInfoBase {
|
||||
device_sn: string;
|
||||
event_count: number;
|
||||
}
|
||||
export interface DatabaseQueryLatestInfoCloud extends DatabaseQueryLatestInfoBase {
|
||||
crop_cloud_path: string;
|
||||
}
|
||||
export interface DatabaseQueryLatestInfoLocal extends DatabaseQueryLatestInfoBase {
|
||||
crop_local_path: string;
|
||||
}
|
||||
export type DatabaseQueryLatestInfo = DatabaseQueryLatestInfoCloud | DatabaseQueryLatestInfoLocal;
|
||||
export interface DatabaseCountByDate {
|
||||
day: Date;
|
||||
count: number;
|
||||
}
|
||||
export interface HistoryRecordInfo {
|
||||
device_type: DeviceType;
|
||||
account: string;
|
||||
start_time: Date;
|
||||
end_time: Date;
|
||||
frame_num: number;
|
||||
storage_type: P2PStorageType;
|
||||
storage_cloud: boolean;
|
||||
cipher_id: number;
|
||||
vision: number;
|
||||
video_type: VideoType;
|
||||
has_lock: boolean;
|
||||
automation_id: number;
|
||||
trigger_type: TriggerType;
|
||||
push_mode: number;
|
||||
mic_status: MicStatus;
|
||||
res_change: number;
|
||||
res_best_width: number;
|
||||
res_best_height: number;
|
||||
self_learning: number;
|
||||
storage_path: string;
|
||||
thumb_path: string;
|
||||
write_status: number;
|
||||
cloud_path: string;
|
||||
folder_size: number;
|
||||
storage_status: number;
|
||||
storage_label: string;
|
||||
time_zone: string;
|
||||
mp4_cloud: string;
|
||||
snapshot_cloud: string;
|
||||
table_version: string;
|
||||
}
|
||||
export interface CropPictureInfo {
|
||||
picture_id: number;
|
||||
detection_type: number;
|
||||
person_id: number;
|
||||
crop_path: string;
|
||||
event_time: Date | null;
|
||||
person_recog_flag: boolean;
|
||||
crop_pic_quality: number;
|
||||
pic_marking_flag: boolean;
|
||||
group_id: number;
|
||||
crop_id: number;
|
||||
start_time: Date;
|
||||
storage_type: P2PStorageType;
|
||||
storage_status: number;
|
||||
storage_label: string;
|
||||
table_version: string;
|
||||
update_time: string;
|
||||
}
|
||||
export interface DatabaseQueryLocal {
|
||||
record_id: number;
|
||||
station_sn: string;
|
||||
device_sn?: string;
|
||||
history: HistoryRecordInfo;
|
||||
picture: Array<CropPictureInfo>;
|
||||
}
|
||||
export interface RGBColor {
|
||||
red: number;
|
||||
green: number;
|
||||
blue: number;
|
||||
}
|
||||
export interface InternalColoredLighting {
|
||||
color: number;
|
||||
}
|
||||
export interface DynamicLighting {
|
||||
name: string;
|
||||
mode: number;
|
||||
speed: number;
|
||||
colors: Array<RGBColor>;
|
||||
}
|
||||
export interface InternalDynamicLighting {
|
||||
name: string;
|
||||
mode: number;
|
||||
id: number;
|
||||
speed: number;
|
||||
colors: Array<number>;
|
||||
}
|
||||
export interface MotionZonePoint {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
export interface MotionZonePoints {
|
||||
points: Array<MotionZonePoint>;
|
||||
}
|
||||
export interface MotionZone {
|
||||
polygens: Array<MotionZonePoints>;
|
||||
}
|
||||
export interface VideoStreamingRecordingQuality {
|
||||
mode_0: {
|
||||
quality: number;
|
||||
};
|
||||
mode_1: {
|
||||
quality: number;
|
||||
};
|
||||
cur_mode: number;
|
||||
}
|
||||
export interface CrossTrackingGroupEntry {
|
||||
value: Array<string>;
|
||||
}
|
||||
export interface CustomDataType {
|
||||
[index: number]: {
|
||||
channel: number;
|
||||
customData: CustomData;
|
||||
timestamp: number;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user