5. 数据描述
5.1. 数据结构定义
5.1.1. 状态机相关结构
状态结构:
typedef struct t_status_treat {
int nStatusId; /* 状态编号 */
int (*nStatusSetup)(int nStatusMachineNo); /* 状态初始化的处理函数,返回是否直接跳转 */
struct t_status_treat *(*prStatusOver)(int nStatusMachineNo); /* 状态结束的处理函数,返回下一个状态 */
struct t_status_treat *prStatusTimeout; /* 状态超时的时候的下一个状态 */ long lStatusKeep; /* 状态最大持续时间,单位秒 */ } TStatusTreat;
状态表结构:
typedef struct t_status_info {
TStatusTreat *prCurrStatus; /* 指向当前状态的位置,NULL表示本记录为空 */ time_t tStatusStart; /* 状态开始时间 */ long lStatusKeep; /* 状态最大持续时间,单位秒;如果此项为0,则使用prCurrStatus所指向的TstatusTreat结构中的lStatusKeep作为状态最大持续时间。此项主要用于在运行过程中需要动态调整状态持续时间的控制,如在放音结束后等待用户按键的等待时间。 */
void *prDataInfo; /* 指向保存数据信息的位置 */ void *prCommandInfo; /* 保存命令信息,由状态程序控制空间申请和释放 */ } TStatusInfo;
5.1.2. 通道相关结构
typedef struct t_channel_info { /* 以下是基本不变的信息 */
int nUsed; /* 是否可用:0-未配置,1-用作电路,2-用作其他用途,如同步、信令等 */ int nCid; /* 系统内部的电路号 */
int nSigNodeId; /* 控制的信令网关的节点号 */ long lPeerSigCode; /* 对端信令点码 */ TResourceCode rResrc; int nSpan, nChan; /* 中继号、通道号,由信令模块维护和电路号的对应 */ long lDialInform; /* 通道信息标志,以位控制,参见下面的说明 */
/* 以下是每次呼叫过程中相关的信息 */
char sCaller[MaxPhoneNbrSize]; /* 主叫号码 */ char sCalled[MaxPhoneNbrSize]; /* 最终被叫号码 */ char sMiddle[MaxPhoneNbrSize]; /* 原始被叫号码 */ time_t tCallStart, /* 接续开始时间 */
tCallAnswer, /* 摘机时间,未接通,则该项为0 */ tCallStop; /* 挂机时间(用户或者CCM任何一方开始挂机的时间),0-未挂机 */ long lDialInform; /* 呼叫信息标志,以位控制,参见下面的说明 */
int nOtherCid; /* 该电路所对应的另一个电路,-1-没有,>=0-对方电路号 */ int nDialResult; /* 接续结果:呼入情况下为0,呼出情况下为具体呼出结果 */ int nRunResult; /* 普通命令运行结果 */
unsigned short int ushReqId; /* 保存CCM的申请号 */ } TChannelInfo;
表 5-1通道信息标志 31 30 29 28 27 …… 4 3 2 1 0 位 取值说明 0 0-对方主控,1-系统主控
表 5-2呼叫信息标志 31 30 29 28 27 …… 4 3 2 1 0 位 1 保留 ~ 31 取值说明 位 0 1 2 3 4 5 6 取值说明 1-已经占用 0-用户呼入,1-系统呼出 1-用户挂机 1-系统挂机 1-正在会议中 (位4为1才有意义)1-会议中发言状态;0-会议中单听状态 1-正在放音 位 7 8 9 10 11 12 ~ 31 取值说明 1-正在录音 退出会议 停止放音 停止录音 正在取键 保留 5.1.3. 路由控制相关结构
#define MacMaxRouteSpanSize 1024 typedef struct t_trunk_set_cfg {
int nSpanCnt; /* 此中继群下的中继个数,0表示本记录无效 */ int n1Span[MacMaxRouteSpanSize]; /* 此中继群下的中继编号 */ int nThisOffset; /* 本次分配的中继将在上述中继群中的位置 */ } TTrunkSetCfg;
#define MacMaxRouteValueSize 8 typedef struct t_route_cfg {
int nRouteCnt; /* 路由策略的值的个数,0表示本记录无效 */
int n1RouteValue[MacMaxRouteValueSize]; /* 路由策略的值,多个值为一个组合 */ int nTrunkSetOffset; /* 中继群编号,中继群组中的数组下标 */ } TRouteCfg;
5.2. 处理逻辑
先读入配置文件中的静态配置部分; 然后进入主循环。 主循环中:
先收取所有上层信息,进行处理;
然后收取所有Excel交换机的信息,进行处理; 然后进行状态超时判断,进行处理。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库EXCEL程序详细设计 - 图文(8)在线全文阅读。
相关推荐: