| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- /*************************************************************************
- 【文件名】 MC.h
- 【功能模块和目的】 毅航MC封装类头文件
- 【开发者及日期】 郑石诺 2015/04/07
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- #pragma once
- #include "PrdVirtualDevice.h"
- #include "FaxVirtualDevice.h"
- #include "CConfigLocal.h"
- class CPBX;
- class CIpmChannel;
- class CVoipChannel;
- class CDspChannel;
- class CSpanChannel;
- class COneLeg;
- class CChannelResource;
- /*************************************************************************
- 【类名】 CMC
- 【功能】
- 【接口说明】 毅航MC封装类
- 【开发者及日期】 郑石诺 2015/04/07
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- class CMC
- {
- SINGLETON_DECLARE(CMC)
- public:
- ~CMC(void);
- bool open(void);
- void close(void);
- // 业务逻辑接口
- LPCTSTR transState(INT Status);
- CVoipChannel* allocVoipCh4Exten(int IsxNo);
- CIpmChannel* allocIpmCh4SipCh(int IsxNo, int BoardNo);
- CDspChannel* allocDspCh(int IsxNo, int BoardNo);
- COneLeg* allocFreeTrunk(int IsxNo, int BoardNo, int SpanNo);
- COneLeg* getCallLeg(CRDRID ResId);
- bool isPbxOK(int IsxNo);
- CPrdVirtualDevice& allocPrd(int IsxNo) { return m_PrdDev; }
- void onPbxResValid(int IsxNo);
- void onPbxResInvalid(int IsxNo, int BoardNo, DEV_RES_TYPE ResType);
- CIpmChannel* findIpmCh(CRDRID ResId);
- CDspChannel* findDspCh(CRDRID ResId);
- CVoipChannel* findVoipCh(CRDRID ResId);
- CSpanChannel* findSpanCh(CRDRID ResId);
- // 设备资源事件响应函数
- void onDevResCreate(CRDRID ResId);
- void onDevResDestroy(CRDRID ResId);
- void onDevResState(CRDRID ResId);
- bool bridgeDevice(CRDRID SrcId, CRDRID DstId, bool IsLink); // 双向连接/断开设备
- bool bridgeDevice(CChannelResource* pChanSrc, CChannelResource* pChanDst, bool IsLink, bool IsOneWay);
- // 操作
- bool channelListen(CRDRID SrcId, CRDRID PeerId, CRDRID DstId, bool IsLink); // 监听指定线路
- bool meetingListen(CRDRID DstId, MeetingInfo& MeetingId, bool IsLink); // 监听指定会议
- bool meetingMute(CRDRID DstId, MeetingInfo& MeetingId, bool IsOff); // 静音会议中线路
- bool meetingRemove(COneLeg* pLeg, MeetingInfo& MeetingId); // 线路离开会议
- bool meetingRecord(COneLeg* pLeg, MeetingInfo& MeetingId, RecordContent* pContent, bool IsStop);
- // 线路操作接口
- void setSessionInfo2Line(CRDRID LineId, long SessionCode); // 设定当前线路关联的会话
- bool startRecord(CRDRID LineId, RecordContent* pContent); // 线路录音启动
- bool stopRecord(CRDRID LineId); // 线路录音结束
- bool move2Meeting(CRDRID LineId, MeetingInfo& MeetId, bool IsOneWay); // 线路加入会议
- bool removeFromMeeting(CRDRID LineId, MeetingInfo& MeetId); // 线路离开会议
- bool playSound(CRDRID LineId, PlayVoiceContent* pContent); // 线路放音收号
- bool playStop(CRDRID LineId); // 线路停止放音
- bool dropCall(CRDRID LineId, bool IsPassive); // 线路挂机操作处理
- bool dial(CRDRID LineId, LPCTSTR Callee, LPCTSTR Caller, int AccountId); // 线路拨号启动
- bool answer(CRDRID LineId); // 应答呼叫
- bool offHook(CRDRID LineId, bool IgnoreSession, LPCTSTR CallerNum = NULL); // 通知内线摘机(只对内线有效)
- bool fax(CRDRID LineId, LPCTSTR lpFileName, bool IsRecv); // 传真启动(只对外线有效)
- bool selfCheck(CRDRID LineId); // 线路自检(只对模拟外线有效)
- bool playTone(CRDRID LineId, int Type); // 线路播放信号音
- bool createMeeting(CRDRID LineId, MeetingInfo& MeetInfo); // 创建会议
- void deleteMeeting(MeetingInfo& MeetInfo); // 删除会议
- void freeChanResource(CRDRID LineId); // 释放通道绑定资源
- private:
- CMC(void);
-
- LPCTSTR __translateResType(DEV_RES_TYPE ResType) const;
- CPBX* __getPbx(int IsxNo);
- CPBX* __newPbx(int IsxNo);
- void __freePbx(void);
- void __regExten2Dev(void);
- // 系统事件处理函数
- void __onSipUserNew(void);
- void __onSipUserDel(void);
- void __procResourceStateUpdate(INT EvtType, SYS_EVT_DATA* pEvtData);
- void __procResourceAlarm(INT EvtType, SYS_EVT_DATA* pEvtData);
- void __procResourceCapacity(INT EvtType, SYS_EVT_DATA* pEvtData);
- void __procVoiceEvent(METAEVENT* pMetaEvent);
- void __procIpmEvent(METAEVENT* pMetaEvent);
- void __procFaxEvent(METAEVENT* pMetaEvent);
- void __procSipRegSent(void);
- void __procSipRegAck(void);
- void __procSipTransaction(void);
- void __onGcEvent(METAEVENT* pMetaEvent);
- void __onSysEvent(METAEVENT* pMetaEvent);
- static UINT __pbxEvtThread(LPVOID pParam); // 处理消息事件线程函数
- private:
- //Dsp节点号
- int m_DspIsxNo;
- // 类对象实现相关
- volatile bool m_Stop;
- CWinThread* m_pThreadObj;
- // 属性相关
- UINT m_state;
- // 设备成员
- CArray<CPBX*, CPBX*> m_PbxList;
- CPrdVirtualDevice m_PrdDev;
- CFaxVirtualDevice m_FaxDev;
- };
|