/************************************************************************* 【文件名】 AvayaLinkGw.h 【功能模块和目的】 AVAYA链接网关类头文件 【开发者及日期】 郑石诺 2016/04/01 【版本】 V1.0.0 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once /************************************************************************* 【类名】 CAvayaLinkGw 【功能】 负责解析AVAYA链路消息 【接口说明】 AVAYA链接网关类 【开发者及日期】 郑石诺 2016/04/01 【版本】 V1.0.0 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CAvayaLinkGw { public: CAvayaLinkGw(void); ~CAvayaLinkGw(void); // 消息解析 void parse(char* Info); // 根据DevLink事件内容分发Tapi事件 void dispatchTapiEvent(void); private: void __init(void); // 成员变量初始化 int __getFieldPosition(int Field, char* Info); // 取得指定消息域的位置 int __getIntFromField(int Pos, char* Info); // 取得指定位置的整数 void __getStrFromField(int Pos, char* Result, char* Info); // 取得指定位置的字符串 void __parseEventType(char* Info); // 解析事件类型 void __parseEventA(char* Info); // 解析A事件 void __parseEventD(char* Info); // 解析D事件 void __parseEventS(char* Info); // 解析S事件 // 线路ID相关 bool __isTrunk(const CString& Name); // 判定设备名称是否为外线 void __getTrunkId(CHAR* TrunkId, const CString& Name, LPCTSTR Slot); // 根据名称和Slot号获取中继编号 DEV_RES_TYPE __getDevInfoA(CHAR* DevId); // 读取A端设备信息 DEV_RES_TYPE __getDevInfoB(CHAR* DevId); // 读取B端设备信息 // S事件逻辑处理相关 void __procEventS(void); void __procEventS_LocalDial(void); // S事件A端 Local Dial 状态处理 void __procEventS_Dialling(void); // S事件A端 Dialling 状态处理 void __procEventS_Dialled(void); // S事件A端 Dialled 状态处理 void __procEventS_Ringing(void); // S事件A端 Ringing 状态处理 void __procEventS_Idle(void); // S事件A端 Idle 状态处理 void __procEventS_Connected(void); // S事件A端 Connected 状态处理 void __procEventS_DisConnected(void); // S事件A端 DisConnected 状态处理 private: DEV_LINK_EVENT_TYPE m_EventType; // 事件类型 DEV_LINK_CALL_STATE m_AState; // AState DEV_LINK_CALL_STATE m_BState; // BState int m_CallId; // CallID int m_AConnected; // AConnected int m_BConnected; // BConnected char m_ASlot[MAX_FIELD_LEN]; // ASlot char m_BSlot[MAX_FIELD_LEN]; // BSlot int m_IsInternalCall; // IsInternalCall char m_AName[MAX_FIELD_LEN]; // AName char m_BName[MAX_FIELD_LEN]; // BName char m_BList[MAX_FIELD_LEN]; // BList char m_TargetUserName[MAX_FIELD_LEN]; // TargetUserName char m_ParkSlotNum[MAX_FIELD_LEN]; // ParkSlotNum char m_Tag[MAX_FIELD_LEN]; // Tag char m_AccountCode[MAX_FIELD_LEN]; // AccountCode char m_CallerNum[MAX_FIELD_LEN]; // Caller party number char m_CalleeNum[MAX_FIELD_LEN]; // Called party number };