📄 mybase.h
字号:
//////////////////////////////////////////////////////////////////////
//
// TCB_SingleInput
// SingleInput线程控制块
//
//////////////////////////////////////////////////////////////////////
typedef struct TCB_SingleInput_st{
STATE cur_st; // 当前状态
type_SGIPT_IO io; // IO参数
}TCB_SingleInput;
//////////////////////////////////////////////////////////////////////
// TCB_MonthInput
// MonthInput线程控制块
//
//////////////////////////////////////////////////////////////////////
typedef struct TCB_monthInput_st{
STATE cur_st; // 当前状态。
int month; // 用户输入的有效月份
int error_input_times; // 错误输入次数(包括无数据月,
// 和错误的数字)
STATE nst_valid; // 用户输入有效时的下一步状态
THREAD nth_valid; // 输入有效的下一线程
}TCB_monthInput;
//////////////////////////////////////////////////////////////////////
//
// TCB_MultiPlay
// MultiPlay线程控制块
//
//////////////////////////////////////////////////////////////////////
typedef struct TCB_MultiPlay_st{
STATE cur_st; //线程状态
int cur_voice_chain;
int voice_chain_get; //返回的语音链状况
//0 没有语音数据
//1 取到一条语音
//2 没有剩余语音数据(全部播报完毕 AllOver)
//-1 取数据失败
type_VoiceChainNode copy_vc[MaxVoiceChainNode];
DX_IOTT iott[MaxVoiceChainNode*2];
DV_TPT play_tpt;
}TCB_MultiPlay;
//////////////////////////////////////////////////////////////////////
//
// TCB_TimeOut
// 超时线程控制块
//
//////////////////////////////////////////////////////////////////////
typedef struct TCB_TimeOut_st{
STATE cur_st; //TimeOut当前状态。
CEvent BeginWork; //开始工作事件
}TCB_TimeOut;
//////////////////////////////////////////////////////////////////////
//
// TCB_Main
// 主线程控制块
//
//////////////////////////////////////////////////////////////////////
typedef struct TCB_Main_st{
STATE cur_st; // 当前状态
bool play_sysbusy_over;
bool query_data_ok;
char UserOp[40]; // 用户操作状态
}TCB_Main;
//////////////////////////////////////////////////////////////////////
//
// TimeTrigger_st
// 超时控制器
//
//////////////////////////////////////////////////////////////////////
typedef struct TimeTrigger_st{
int TriggerID; //计时器ID
CEvent BeginCount; //开始计时事件
bool IsCounting; //正在计时
int msecond; //计数器(毫秒)
STATE st_timeout; //超时后进入的状态
int chn_timeout; //超时事件触发的通道
EVT event; //时间条件满足后,触发的通道事件
//THREAD th_timeout; //超时事件接受线程。
}TimeTrigger;
//////////////////////////////////////////////////////////////////////
//
// Server Log Struct
// 日志块
//
//////////////////////////////////////////////////////////////////////
typedef struct ServerLog_st{
bool WriteLog; // 是否可以写日志
char ani[20]; // 主叫号码
char start_time[64]; // 开始时间(包含日期和时间)
char end_time[64]; // 通话时长(以秒为单位)
char last_demand[64]; // 用户最后提交的请求
char result[64]; // 受理结果(用户超时、系统超时、受理成功)
}TServerLog;
//////////////////////////////////////////////////////////////////////
//
// Channel_Control_Block
// 通道控制块
//
//////////////////////////////////////////////////////////////////////
typedef struct CCB_st {
bool SeizedByThisApp; // 通道是否被本程序占用
int no; // 通道号
int voc; // Voice端口handle
int dti; // DTI端口handle
int number; // 得到的主叫号码位数
char voxname[20]; // Voice端口名
char dtiname[20]; // DTI端口名
char dnis[20]; // 被叫号码
char ani[20]; // 主叫号码
long evt_handle; //通道事件句柄
long dev_handle; //通道设备句柄
int wait_result; //通道 sr_waitevtex()结果
CEvent startwork; //线程启动事件
DV_TPT play_tpt[10]; // 播放终止参数表
DV_TPT dig_tpt[10]; // 读键终止参数表
DX_IOTT iott; // 数据传输表
DX_XPB xpb; // I/O transfer parameter block
DV_DIGIT digp; // 用户输入键
char keybuffer[32]; // 用户输入缓冲区
int keynumber; // 总共读入键的个数
char lastkey; // 最后一个读入的键
THREAD thread_id; // 当前控制线程
STATE curr_st;
TCB_Main Main;
TCB_SingleInput SingleInput;
TCB_monthInput MonthInput;
TCB_MultiPlay MultiPlay;
TCB_TimeOut TimeOut;
TimeTrigger TimeTrigger;
TServerLog ServerLog;
} type_CHANNEL;
//////////////////////////////////////////////////////////////////////
//
// 程序线程指示块
//
//////////////////////////////////////////////////////////////////////
typedef struct SysThread_st{
THREAD id; // 线程ID
char ThreadName[30]; // 线程名
bool thread_exist; // 线程是否存在
bool keep_running; // 是否继续运行
CWinThread * pThread; // 线程指针
}type_SYSTHREAD;
//////////////////////////////////////////////////////////////////////
//
// System_Info_Block
// 系统信息块
//
//////////////////////////////////////////////////////////////////////
typedef struct System_Info_Block_st {
int ChannelNumber; // 语音卡通道数
int VFITNumber; // VFIT 数量
char voxpath[128]; // 语音文件位置
int VocNumber; // 打开的语音文件数
int SysThreadNumber; // 系统工作线程数
int QueryMonthStart; // 查询开始月份
int QueryMonthEnd; // 查询结束月份
int CurQfTable; // 当前欠费表(1,2)
CEvent AllThreadClosed; // 所有线程关闭事件
char RefuseCall[MaxRefuseCall][15]; //禁止呼入的主叫号码表,与GCA.RefuseCall对应
QSSA lQSSA[MaxQueryDemand]; //程序查询语法区(与共享文件中的QSSA对应)
clock_t start;
clock_t finish;
double duration;
} type_SYSINFO;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -