138 lines
3.4 KiB
TypeScript
138 lines
3.4 KiB
TypeScript
import {
|
|
ProtocolRequest,
|
|
ProtocolResponse,
|
|
ProtocolEncoder,
|
|
PacketBody,
|
|
ProtocolDecoder,
|
|
ProtocolMessage,
|
|
PacketBodyValue
|
|
} from '@ucap-webmessenger/protocol';
|
|
import {
|
|
CallerType,
|
|
CallMode,
|
|
CallAlarmType,
|
|
CallForwardType
|
|
} from '@ucap-webmessenger/core';
|
|
|
|
// tslint:disable-next-line: no-empty-interface
|
|
export interface CallUpdateRequest extends ProtocolRequest {
|
|
// 0 IPPhoneYN(s)
|
|
useIpPhone: boolean;
|
|
// 1 CallerType(s)
|
|
callerType: CallerType;
|
|
// 2 CallMode(s)
|
|
callMode: CallMode;
|
|
// 3 PairingYN(s)
|
|
usePairing: boolean;
|
|
// 4 CallAlarmYN(s)
|
|
useCallAlarm: boolean;
|
|
// 5 CallAlarmType(s)
|
|
callAlarmType: CallAlarmType;
|
|
// 6 CallForwardType(s)
|
|
callForwardType: CallForwardType;
|
|
// 7 대표착신번호(s)
|
|
representativeCalledNumber: string;
|
|
// 8 착신번호(s)1
|
|
calledNumber1: string;
|
|
// 9 착신번호(s)2
|
|
calledNumber2: string;
|
|
// 10 착신번호(s)3
|
|
calledNumber3: string;
|
|
}
|
|
|
|
export interface CallUpdateResponse extends ProtocolResponse {
|
|
// 0 IPPhoneYN(s)
|
|
useIpPhone?: boolean;
|
|
// 1 CallerType(s)
|
|
callerType?: CallerType;
|
|
// 2 CallMode(s)
|
|
callMode?: CallMode;
|
|
// 3 PairingYN(s)
|
|
usePairing?: boolean;
|
|
// 4 CallAlarmYN(s)
|
|
useCallAlarm?: boolean;
|
|
// 5 CallAlarmType(s)
|
|
callAlarmType?: CallAlarmType;
|
|
// 6 CallForwardType(s)
|
|
callForwardType?: CallForwardType;
|
|
// 7 대표착신번호(s)
|
|
representativeCalledNumber?: string;
|
|
// 8 착신번호(s)1
|
|
calledNumber1?: string;
|
|
// 9 착신번호(s)2
|
|
calledNumber2?: string;
|
|
// 10 착신번호(s)3
|
|
calledNumber3?: string;
|
|
}
|
|
|
|
export const encodeCallUpdate: ProtocolEncoder<CallUpdateRequest> = (
|
|
req: CallUpdateRequest
|
|
) => {
|
|
const bodyList: PacketBody[] = [];
|
|
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.useIpPhone ? 'Y' : 'N'
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.callerType
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.callMode
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.usePairing ? 'Y' : 'N'
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.useCallAlarm ? 'Y' : 'N'
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.callAlarmType
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.callForwardType
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.representativeCalledNumber
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.calledNumber1
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.calledNumber2
|
|
});
|
|
bodyList.push({
|
|
type: PacketBodyValue.String,
|
|
value: req.calledNumber3
|
|
});
|
|
|
|
return bodyList;
|
|
};
|
|
|
|
export const decodeCallUpdate: ProtocolDecoder<CallUpdateResponse> = (
|
|
message: ProtocolMessage
|
|
) => {
|
|
return {
|
|
useIpPhone: message.bodyList[0] === 'Y' ? true : false,
|
|
callerType: message.bodyList[1] as CallerType,
|
|
callMode: message.bodyList[2] as CallMode,
|
|
usePairing: message.bodyList[3] === 'Y' ? true : false,
|
|
useCallAlarm: message.bodyList[4] === 'Y' ? true : false,
|
|
callAlarmType: message.bodyList[5] as CallAlarmType,
|
|
callForwardType: message.bodyList[6] as CallForwardType,
|
|
representativeCalledNumber: message.bodyList[7],
|
|
calledNumber1: message.bodyList[8],
|
|
calledNumber2: message.bodyList[9],
|
|
calledNumber3: message.bodyList[10]
|
|
} as CallUpdateResponse;
|
|
};
|