?? 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 + -