/************************************************************************* 【文件名】 PBX.h 【功能模块和目的】 毅航PBX封装类头文件 【开发者及日期】 郑石诺 2015/04/07 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once class CMC; class CDevDsp; class CDevVoip; class CDevIpm; class CDevSpan; class CIpmChannel; class CVoipChannel; class CDspChannel; class CSpanChannel; class COneLeg; class CChannelResource; /************************************************************************* 【类名】 CPBX 【功能】 【接口说明】 毅航PBX封装类 【开发者及日期】 郑石诺 2015/04/07 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CPBX { public: CPBX(CMC* pParent, int IsxNo); ~CPBX(void); int pbxNo(void) const { return m_IsxNo; } bool isOk(void) const; // 控制接口 ULONG getVoipNetId(int BoardNo); CVoipChannel* allocVoipCh4Exten(void); CIpmChannel* allocIpmCh(ULONG NetId); CSpanChannel* allocSpanCh(int BoardNo, int SpanNo); CVoipChannel* allocVoipCh(int BoardNo); CDspChannel* allocDspCh(int BoardNo); COneLeg* allocFreeTrunk(int BoardNo, int SpanNo); COneLeg* findLeg(CRDRID Id); CIpmChannel* findIpmCh(CRDRID ResId); CDspChannel* findDspCh(CRDRID ResId); CVoipChannel* findVoipCh(CRDRID ResId); CSpanChannel* findSpanCh(CRDRID ResId); bool meetingCreate(int BoardNo, MeetingInfo& MeetingId); void meetingDelete(MeetingInfo& MeetingId); bool meetingJoin(int BoardNo, COneLeg* pLeg, MeetingInfo& MeetingId, bool IsOneWay); bool meetingRemove(int BoardNo, COneLeg* pLeg, MeetingInfo& MeetingId); bool meetingRecord(int BoardNo, COneLeg* pLeg, MeetingInfo& MeetingId, RecordContent* pContent, bool IsStop); bool meetingMute(int BoardNo, COneLeg* pLeg, MeetingInfo& MeetingId, bool IsOff); // 系统事件处理 void onResourceStateUpdated(INT EvtType, SYS_EVT_DATA* pEvtData); void onResourceAlarm(INT EvtType, SYS_EVT_DATA* pEvtData); void onResourceCapacity(INT EvtType, SYS_EVT_DATA* pEvtData); void onSipRegSent(SEND_SIPREG_RET* pSent); void onSipRegAck(SIP_REGISTER_ACK* pAck); void onSipTransaction(SIP_TRANSACTION_IND* pTransaction); private: void __free(void); CDevSpan* __getSpan(int BoardNo, bool NewWhenNull = false); CDevDsp* __getDsp(int BoardNo, bool NewWhenNull = false); CDevVoip* __getVoip(int BoardNo, bool NewWhenNull = false); CDevIpm* __getIpm(int BoardNo, bool NewWhenNull = false); bool __isSpanOk(void) const; bool __isDspOk(void) const; bool __isVoipOk(void) const; bool __isIpmOk(void) const; private: CMC* m_pParent; int m_IsxNo; // 毅航设备节点号 // PBX属性相关 UINT m_state; // 设备资源相关 CArray m_SpanList; CArray m_DspList; CArray m_VoipList; CArray m_IpmList; };