在呼叫合成实现中,最主要有两个方法:

(1)设定CDR缓存的方法void SetCdrBuffer(CAPCDR BUF*pBuf):其中CAP CDR BUF是包含CCapCDR的CDR缓存模板类,此函数指定了CDR记录缓存的位置。

(2)CDR处理函数:void Handle(const CallInfoCap&CapInfo,const NgnPktInfo& PktInfo)。他是进行呼叫合成的核心,也是设计的关键。他有两个参数,分别是该协议呼叫信息和数据帧信息。其基本流程如图4所示。

其中,判断某CDR是否已缓存,通知CDR缓存该CDR已结束和向缓存中添加新的CDR都需要调用CDR缓存模板类的方法,对于CAP协议的CDR子类:CCapCDR,声明一个CAP CDR缓存类型方法如下:ty-pedef CCallBufCAP CDR BUF。

在缓存操作中的具体实现如下:

(1)查询某CDR是否已缓存,利用CDR缓存的Search方法:

newCdr.nLinkID=nLinkld:

//设定关联属性(根据协议类型增加)

_tcscpy(newCdr.Call ID,Caplnfo.Call ID);

CCapCDR*pFind=m pCdrBuf=-》Search(newCdr);

//查询该CDR是否已存在

(2)向缓存中添加新的CDR:使用InsertNewCDR方法:

CCapCDR*pFind=m pCdrBuf-》InsertNewCDR(newCdr);

(3)通知缓存某CDR已结束:

bool bReturn=m pCdrlBuf-》CallCompleted(*pFind);CDR呼叫其他相关分析在此不再赘述。

4、 软件运行实现结果

在模块的整个开发流程中,每一步都要进行软件的测试工作,以保证整个模块开发工作的正确性。下面是软件实测后进行CDR合成的结果,可以从图5中看到,软件实现了CAP的CDR功能,点击单条消息名称可以看到消息的关键数据,在此不再进行演示。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查