📄 c_trkin.c
字号:
audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = SUCCESS_DUANA;//通知聊天室中的人X号到了
audio_dtmf_resource[user_e1[user_num].dtmf].num[1] = user_e1[user_num].user_num + 1;//通知聊天室中的人X号到了
audio_dtmf_resource[user_e1[user_num].dtmf].num[2] = SUCCESS_DUANB;
audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
audio_dtmf_resource[user_e1[user_num].dtmf].length = 3;//置段长度
user_e1[user_num].user_state = ONLINE_CHAT;//转到成功处理
audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);
//放提示音
audio_dtmf_resource[user_e1[user_num].dtmf].index++;//提示音索引号加1
}
else//没有合意的聊友
{
command(5,3,user_num,user_e1[user_num].opp_sex,user_e1[user_num].opp_age,user_e1[user_num].telephone[0],user_e1[user_num].telephone[1],user_e1[user_num].telephone[2],user_e1[user_num].telephone[3],user_e1[user_num].telephone[4],user_e1[user_num].telephone[5],IDLE,IDLE,IDLE,IDLE,IDLE);
user_e1[user_num].user_state = IDLE;
}
}
}
break;
default:
break;
}
}
}
break;
case BACK_YES://找到合意的回呼资源
{
play_one(user_num,LIANXI_START_DUAN);//提示用户系统正在呼叫合意的聊友
user_e1[user_num].user_state = WAIT_CALL;//转到成功处理
audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
}
break;
case WAIT_CALL://放音乐
{
if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 0)//提示音放完了
{
play_one(user_num,MUSIC_DUAN);
user_e1[user_num].user_state = WAIT_USER;//转到等待回呼用户处理
audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
}
}
break;
case WAIT_USER://等待回呼用户
{
back_index(user_num);//呼叫用户
user_e1[user_num].delay++;
if(user_e1[user_num].delay > 50)
{
user_e1[user_num].delay = 0;
user_e1[user_num].control++;
if(user_e1[user_num].control > 200)//10分钟内没有回呼用户拨进来
{
user_e1[user_num].control = 0;
audio_stop(user_e1[user_num].dtmf);
clr_duan(user_num);
play_one(user_num,LIANXI_FAILURE_DUAN);
user_e1[user_num].user_state = WAIT_COMMON;//转到提示用户进行其他选择处理
audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
}
}
}
break;
case BACK_NO://没有回呼资源
{
audio_stop(user_e1[user_num].dtmf);
clr_duan(user_num);
if(user_e1[user_num].chat_type == PASSWORD)
{
play_one(user_num,SUCCESS_PASSWORD);
}
else
{
play_one(user_num,ONLY_ONE_DUAN);
}
user_e1[user_num].user_state = WAIT_COMMON;//转到提示用户进行其他选择处理
audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
}
break;
case INFORM_BACK://通知聊天室里等候的人回呼用户已经拨进来了
{
if(user_e1[user_num].chat_type == PRIVATE_FEELING)
{
audio_stop(user_e1[user_num].dtmf);
clr_duan(user_num);
play_one(user_num,SUCCESS_PRIVATE);
user_e1[user_num].user_state = SUCCESS_COMMON;//转到成功处理
}
else
{
audio_stop(user_e1[user_num].dtmf);
clr_duan(user_num);
audio_dtmf_resource[user_e1[user_num].dtmf].num[0] = SUCCESS_DUANA;//通知聊天室中的人X号到了
audio_dtmf_resource[user_e1[user_num].dtmf].num[1] = user_e1[user_num].user_num + 1;//通知聊天室中的人X号到了
audio_dtmf_resource[user_e1[user_num].dtmf].num[2] = SUCCESS_DUANB;
audio_dtmf_resource[user_e1[user_num].dtmf].index = 0;//清空段索引
audio_dtmf_resource[user_e1[user_num].dtmf].length = 3;//置段长度
user_e1[user_num].user_state = SUCCESS_COMMON;//转到成功处理
audio_play(user_e1[user_num].dtmf,audio_dtmf_resource[user_e1[user_num].dtmf].num[audio_dtmf_resource[user_e1[user_num].dtmf].index]);
//放提示音
audio_dtmf_resource[user_e1[user_num].dtmf].index++;//提示音索引号加1
}
}
break;
case SUCCESS_COMMON://成功处理
{
if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 0)//提示音放完了
{
user_e1[user_num].user_state = IDLE;//将用户选择状态置为空闲
user_e1[user_num].lc_state = WAIT_HANG;//转为等待用户挂机
dtmf_release(user_e1[user_num].dtmf);//释放DTMF资源
if(user_e1[user_num].chat_type < 9)//公共聊天室成功处理
{
connect(user_num,user_e1[user_num].user_mix);//连接相应时隙
connect(((user_e1[user_num].user_mix - 0xe0 + 1) % 32) + 0xe0,user_num);//连接相应时隙
}
else//私人聊天室成功处理
{
connect(user_num,user_e1[user_num].opp_num);//连接相应时隙
connect(user_e1[user_num].opp_num,user_num);//连接相应时隙
}
}
}
break;
case ONLINE_CHAT://通知在线的用户
{
if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 0)//提示音放完了
{
if(user_e1[user_num].chat_type < 9)
{
user_e1[user_num].user_state = IDLE;//将用户选择状态置为空闲
user_e1[user_num].lc_state = WAIT_HANG;//转为等待用户挂机
connect(user_num,user_e1[user_num].user_mix);//连接相应时隙
connect(((user_e1[user_num].user_mix - 0xe0 + 1) % 32) + 0xe0,user_num);//连接相应时隙
dtmf_release(user_e1[user_num].dtmf);//释放DTMF资源
}
else
{
user_e1[user_num].user_state = IDLE;//将用户选择状态置为空闲
user_e1[user_num].lc_state = WAIT_HANG;//转为等待用户挂机
connect(user_num,user_e1[user_num].opp_num);//连接相应时隙
connect(user_e1[user_num].opp_num,user_num);//连接相应时隙
dtmf_release(user_e1[user_num].dtmf);//释放DTMF资源
}
if(dtmf_req(user_e1[user_num].opp_num,IDLE) != IDLE)//在线用户申请DTMF资源
{
only_one(user_e1[user_num].opp_num);
connect(audio_dtmf_resource[user_e1[user_e1[user_num].opp_num].dtmf].slot,user_e1[user_num].opp_num);//连接对应时隙
clr_duan(user_e1[user_num].opp_num);
play_one(user_e1[user_num].opp_num,ZHUAN_USER);
}
user_e1[user_e1[user_num].opp_num].user_state = ONLINE_INFORM;//转到在线用户加入第一选择的聊天室
user_e1[user_e1[user_num].opp_num].lc_state = WAIT_DOWN;//在线用户选择
reduce_user(user_e1[user_e1[user_num].opp_num].chat_num,user_e1[user_num].opp_num);//将在线用户从目前的聊天室退出
}
}
break;
case ONLINE_INFORM://将在线找到的人加入他第一选择的聊天室
{
if(user_e1[user_num].dtmf != IDLE)
{
if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 0)//提示音放完了
{
user_e1[user_num].user_state = JUDGE_USER;//将用户选择状态置为空闲
user_e1[user_num].chat_type = user_e1[user_num].first_select;
}
}
else
{
user_e1[user_num].user_state = JUDGE_USER;//将用户选择状态置为空闲
user_e1[user_num].chat_type = user_e1[user_num].first_select;
}
}
break;
case WAIT_COMMON://聊天室中没人处理
{
if(user_select != IDLE)//用户选择进入其他聊天室
{
audio_stop(user_e1[user_num].dtmf);//停止放音
if(user_monitor_num == user_num)//往后台回应监视信息
{
command(1,0,user_num,USER_PRESS_SIGNAL,user_select,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
}
if(user_select == 1)
{
reduce_user(user_e1[user_num].chat_num,user_num);
connect(audio_dtmf_resource[user_e1[user_num].dtmf].slot,user_num);//连接提示音
connect(user_num,audio_dtmf_resource[user_e1[user_num].dtmf].slot);//连接提示音
play_one(user_num,FIRST_AUDIO);
audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
user_e1[user_num].user_state = SELECT_START;
}
else
{
error_chuli(user_num);
}
audio_dtmf_resource[user_e1[user_num].dtmf].buf = IDLE;
}
else
{
if(audio_dtmf_resource[user_e1[user_num].dtmf].count > 1)//用户选择等待
{
audio_dtmf_resource[user_e1[user_num].dtmf].count = 0;
user_e1[user_num].user_state = IDLE;//将用户选择状态置为空闲
user_e1[user_num].lc_state = WAIT_HANG;//转为等待用户挂机
dtmf_release(user_e1[user_num].dtmf);//释放DTMF资源
if(user_e1[user_num].chat_type < 9)//将该用户加入其选择的公共聊天室
{
connect(user_num,user_e1[user_num].user_mix);//连接相应时隙
connect(((user_e1[user_num].user_mix - 0xe0 + 1) % 32) + 0xe0,user_num);//连接相应时隙
}
else//将该用户加入其选择的私人聊天室
{
connect(user_num,user_e1[user_num].opp_num);//连接相应时隙
connect(user_e1[user_num].opp_num,user_num);//连接相应时隙
}
}
}
}
break;
case WAIT_PASSWORD://等待用户输入密码
{
if(user_select != IDLE)//用户按键了
{
if(user_monitor_num == user_num)//往后台回应监视信息
{
command(1,0,user_num,USER_PRESS_SIGNAL,user_select,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
}
if(user_select < 10)
{
audio_stop(user_e1[user_num].dtmf);//停止放音
audio_dtmf_resource[user_e1[user_num].dtmf].count = 1;
audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = LEISURE;//清自动放音标志
//置聊天室密码
user_e1[user_num].password[user_e1[user_num].user_index] = user_select;
user_e1[user_num].user_index++;
if(user_e1[user_num].user_index == 6)//密码收齐
{
user_e1[user_num].user_state = JUDGE_USER;//转到判断聊天室人数
}
audio_dtmf_resource[user_e1[user_num].dtmf].buf = IDLE;//清空用户拨键
}
else
{
error_chuli(user_num);//输入错误
}
}
}
break;
case REGISTER_YES://已经注册的用户选择私聊
{
clr_duan(user_num);
play_one(user_num,OLD_NEW_SELECT);
user_e1[user_num].user_state = OLD_NEW;//提示输入性别
user_e1[user_num].user_index = 0;
}
break;
case YES_REGISTER://用户选择老聊友(聊天号正确)
{
clr_duan(user_num);
play_one(user_num,LIANXI_START_DUAN);
user_e1[user_num].user_state = WAIT_CALL;//转到成功处理
audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = OCCUPY;
add_user(user_num,user_e1[user_num].password,user_e1[user_num].chat_type);
}
break;
case NO_REGISTER://用户选择老聊友(聊天号是空号)
{
clr_duan(user_num);
play_one(user_num,ERROR_NUMBER);
user_e1[user_num].user_state = INFORM_END;//转为等待提示音结束
}
break;
case USER_BUSY://通知用户要找的老聊友正忙
{
clr_duan(user_num);
play_one(user_num,LIANXI_BUSY);
user_e1[user_num].user_state = INFORM_END;//转为等待提示音结束
}
break;
case CHAT_NUMBER://等待用户输入老聊友的聊天号
{
if(user_select != IDLE)//用户按键了
{
if(user_monitor_num == user_num)//往后台回应监视信息
{
command(1,0,user_num,USER_PRESS_SIGNAL,user_select,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
}
if(user_select < 10)
{
if(user_e1[user_num].user_index == 0)
{
audio_stop(user_e1[user_num].dtmf);//停止放音
audio_dtmf_resource[user_e1[user_num].dtmf].auto_flag = LEISURE;//清自动放音标志
}
user_e1[user_num].number_chat[user_e1[user_num].user_index] = user_select;
user_e1[user_num].user_index++;
if(user_e1[user_num].user_index == 6)//聊天号收齐
{
command(5,1,user_num,(user_e1[user_num].number_chat[0] << 4) + user_e1[user_num].number_chat[1],(user_e1[user_num].number_chat[2] << 4) + user_e1[user_num].number_chat[3],(user_e1[user_num].number_chat[4] << 4) + user_e1[user_num].number_chat[5],IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
user_e1[user_num].user_state = IDLE;
}
}
else
{
error_chuli(user_num);//输入错误
}
audio_dtmf_resource[user_e1[user_num].dtmf].buf = IDLE;//清空用户拨键
}
}
break;
case OLD_NEW://提示用户选择新的聊天对象或找老聊友
{
if(user_select != IDLE)//用户按键了
{
audio_stop(user_e1[user_num].dtmf);//停止放音
if(user_monitor_num == user_num)//往后台回应监视信息
{
command(1,0,user_num,USER_PRESS_SIGNAL,user_select,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
}
switch(user_select)
{
case 1://用户选择老聊友
{
clr_duan(user_num);
play_one(user_num,CHAT_NUMBER_DUAN);
user_e1[user_num].user_state = CHAT_NUMBER;//转为接收聊天号
user_e1[user_num].user_index = 0;
}
break;
case 2://用户选择新的聊天对象
{
play_one(user_num,OPP_SEX_DUAN);
user_e1[user_num].user_state = OPP_SEX;//提示输入性别
user_e1[user_num].user_index = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -