while( 1 )
semStatus = bosSemTake( &vrgDispSem ); //获取信号量等待
//从事件队列中获取事件
status = VrgQueueGet(vrgEventQ, &evt, sizeof(evt));
if ( status == EPSTATUS_SUCCESS )
VrgEventProcess( &evt );
switch ( vrgEvt->type )
case ( VRG_EVT_TYPE_CAS ) :
//SLIC、DAA相关事件处理,详见文档《CasEventProcess》中介绍
CasEventProcess( &vrgEvt->evt.cas ); break;
case ( VRG_EVT_TYPE_HAPI_RM ) :
//这个是在vrgEndptInit执行函数中执行hdspInit初始化DSP模块时
//设置的资源管理回调函数,HapiRmEventPostProcess中仅只有各事
//件的打印信息,没有实际功能处理,这个就不单独介绍了。
HapiRmEventPostProcess( &vrgEvt->evt.hapi ); break;
case ( VRG_EVT_TYPE_HAPI_ENDPT ) :
//endpt类型的VHD对象(DSP针对话机侧)相关事件处理,详见
//文档《HapiEndptEventProcess》中介绍
HapiEndptEventProcess( &vrgEvt->evt.hapi ); break;
case ( VRG_EVT_TYPE_HAPI_CNX ) :
//gateway或conference类型VHD对象(DSP针对媒体资源侧)相关事
//件处理,详见《HapiCnxEventProcess》中介绍
HapiCnxEventProcess(&vrgEvt->evt.hapi ); break;
case ( VRG_EVT_TYPE_NTE ) :
//上面没有NTE事件会放在队列,这个就不单独介绍了
NteEventProcess( &vrgEvt->evt.nte ); break;
case ( VRG_EVT_TYPE_PSTN ) :
//FXO口事件处理,详见《ENDPT_410_PstnEventProcess》
PstnEventProcess( &vrgEvt->evt.pstn ); break;
case ( VRG_EVT_TYPE_MLT ) :
//线路测试结果事件处理,详见《ENDPT_410_MltEventProcess》
MltEventProcess( &vrgEvt->evt.mlt); break;
continue;
//从用户接口中获取操作命令
status = VrgQueueGet(vrgEptCmdQ, (void*)&cmd, sizeof(VRG_EPT_CMD*));
if ( status == EPSTATUS_SUCCESS )
VrgEptCmdProcess( cmd );
switch ( vrgEptCmd->command )
case ( VRG_EPT_CREATE ):
//ENDPT创建命令处理,详见《ProcessVrgEndptCreate》
ProcessVrgEndptCreate
case ( VRG_EPT_DESTROY ):
//ENDPT销毁命令处理,详见《ProcessVrgEndptDestroy》
ProcessVrgEndptDestroy
case ( VRG_EPT_CREATE_CNX ):
//创建连接命令处理,详见《ProcessVrgEndptCreateConnection》
ProcessVrgEndptCreateConnection
case ( VRG_EPT_DELETE_CNX )
//连接删除命令处理,详见《ProcessVrgEndptDeleteConnection》
ProcessVrgEndptDeleteConnection
case ( VRG_EPT_MODIFY_CNX )
//连接参数修改命令处理,详见《ProcessVrgEndptModifyConnection》
ProcessVrgEndptModifyConnection
case ( VRG_EPT_MUTE_CNX )
//连接静音命令处理,详见《ProcessVrgEndptMuteConnection》
ProcessVrgEndptMuteConnection
case ( VRG_EPT_LINK_INT )
//控制两个ENDPT连接或断开命令处理,
//详见《ProcessVrgEndptLinkInternal》
ProcessVrgEndptLinkInternal
case ( VRG_EPT_CAPABILITIES )
//获取DSP能力命令处理,详见《ProcessVrgEndptCapabilities》
ProcessVrgEndptCapabilities
case ( VRG_EPT_SIGNAL ):
//放信令音等命令相关处理,详见《ProcessVrgEndptSignal》
ProcessVrgEndptSignal
case ( VRG_EPT_GET_RTP_STATS ):
//获取语音RTP及RTCP统计信息,详见《ProcessVrgEndptGetRtpStats》
ProcessVrgEndptGetRtpStats
case ( VRG_EPT_GET_T38_STATS ):
//获取T38统计信息,详见《ProcessVrgEndptGetT38Stats》
ProcessVrgEndptGetT38Stats
case ( VRG_EPT_CONSOLE_CMD ):
//控制命令处理,详见《ProcessVrgEndptConsoleCmd》
ProcessVrgEndptConsoleCmd
//应答
bosSemGive( ( vrgEptCmd->command == VRG_EPT_CONSOLE_CMD ) ? &vrgEptConsoleCmdSem : &vrgEptCmdSem );
ENDPT_410_VrgDispatcherTaskMain
最新推荐文章于 2024-05-28 09:00:00 发布