東進D647數字中繼卡電話銀行的DEMO--註釋

 分析了DEMO中的核心函數的代碼,並添加了註釋。詳情如下:

 

  1. void TrunkWork(int trunkID) 
  2.     int VoiceID; 
  3.     int result; 
  4.     char FileName[200]; 
  5.  
  6.     result = DJNo7_GetChnState( trunkID/30,trunkID%30);     //檢查中繼通道狀態 
  7.     if( result == CH_WAIT_RELEASE )     // 
  8.     {  
  9.         ResetTrunk(trunkID);    //復位中繼通道 
  10.         DJNo7_SetChnState(trunkID/30,trunkID%30, CH_SET_FREE ); //wait app release resource  
  11.         return ; //process the next channel 
  12.     } 
  13.     switch(Trunk[trunkID].State) 
  14.     { 
  15.     case TRK_FREE: 
  16.         if(result==CALLEE_RECV_IAM) //呼叫到達 接收全地址 
  17.         { 
  18.             DJNo7_GetCalleeNum( trunkID/30,trunkID%30, Trunk[trunkID].CalleeCode);  //獲取被叫 
  19.             DJNo7_GetCallerNum( trunkID/30,trunkID%30, Trunk[trunkID].CallerCode);  //獲取主叫 
  20.             DJNo7_SetChnStateA( trunkID/30,trunkID%30, CALLEE_SET_ACM, ACM_ADDR_CHARGE | ACM_CALLEE_IDLE | ACM_ALL_NO7_PATH );//send ack signal 
  21.             DJNo7_SetChnStateA( trunkID/30,trunkID%30, CALLEE_SET_ANC, CSM_CHARGE );//send offhook signal 
  22.  
  23.             DJTrk_InitDtmfBuf(trunkID); // new add by HJN 
  24.              
  25.             strcpy ( FileName, DJSys_GetInstallDir () ); 
  26.             strcat ( FileName, "voc\\bank.001"); 
  27.             DJVoc_PlayFile(trunkID,FileName);   //開始播放歡迎語音 
  28.             Trunk[trunkID].State = TRK_WELCOME; 
  29.         } 
  30.         break
  31.          
  32.     case TRK_WELCOME: 
  33.         VoiceID = DJTrk_GetTrunkPlayID(trunkID);    //取得給本通道放音的語音通道號 
  34.         if(VoiceID<0)  
  35.         { 
  36.             MessageBox(NULL,"Get Voice ID Error!","Error",MB_OK); 
  37.             ResetTrunk(trunkID); 
  38.         } 
  39.         else 
  40.         { 
  41.             //DJVoc_CheckVoiceEnd--檢查該語音通道的語音操作是否結束,即錄放音是否到達指定的大小 
  42.             //DJTrk_GetReciveDtmfNum--讀取DTMF撥號的位數,用戶按一次鍵該數將遞增,如果在系統DTMF緩衝區中沒有收到DTMF,本函數返回0 
  43.             if(DJVoc_CheckVoiceEnd(VoiceID)||(DJTrk_GetReciveDtmfNum(trunkID)>0)) 
  44.             { 
  45.                 DJVoc_StopPlayFile(trunkID);    //停止放音 
  46.                 strcpy(FileName,DJSys_GetInstallDir()); 
  47.                 strcat(FileName,"voc\\bank.002"); 
  48.                 DJVoc_PlayFile(trunkID,FileName); 
  49.                 Trunk[trunkID].State=TRK_ACCOUNT; 
  50.             } 
  51.         } 
  52.         break
  53.     case TRK_ACCOUNT: 
  54.  
  55.         VoiceID=DJTrk_GetTrunkPlayID(trunkID); 
  56.         if(VoiceID>=0) 
  57.         { 
  58.             if(DJVoc_CheckVoiceEnd(VoiceID)) 
  59.             { 
  60.                 DJVoc_StopPlayFile(trunkID); 
  61.                 Trunk[trunkID].State = TRK_GETACCOUNT; 
  62.             } 
  63.         } 
  64.         if(DJTrk_GetReciveDtmfNum(trunkID)>=1) 
  65.         { 
  66.             if(VoiceID>0) DJVoc_StopPlayFile(trunkID); 
  67.             Trunk[trunkID].State = TRK_GETACCOUNT; 
  68.         } 
  69.         break
  70.     case TRK_GETACCOUNT: 
  71.         if(DJTrk_GetReciveDtmfNum(trunkID)>=8) 
  72.         { 
  73.             DJTrk_InitDtmfBuf(trunkID); 
  74.             strcpy ( FileName, DJSys_GetInstallDir () ); 
  75.             strcat ( FileName, "voc\\bank.003"); 
  76.             DJVoc_PlayFile(trunkID,FileName); 
  77.             Trunk[trunkID].State = TRK_PASSWORD; 
  78.         } 
  79.         break
  80.     case TRK_PASSWORD: 
  81.         VoiceID=DJTrk_GetTrunkPlayID(trunkID); 
  82.         if(VoiceID>=0) 
  83.         { 
  84.             if(DJVoc_CheckVoiceEnd(VoiceID)) 
  85.             { 
  86.                 DJVoc_StopPlayFile(trunkID); 
  87.                 Trunk[trunkID].State=TRK_GETPASSWORD; 
  88.             } 
  89.         } 
  90.         if(DJTrk_GetReciveDtmfNum(trunkID)>=1) 
  91.         { 
  92.             if(VoiceID>0) DJVoc_StopPlayFile(trunkID); 
  93.             Trunk[trunkID].State=TRK_GETPASSWORD; 
  94.         } 
  95.         break
  96.     case TRK_GETPASSWORD: 
  97.         if(DJTrk_GetReciveDtmfNum(trunkID)>=6) 
  98.         { 
  99.             DJTrk_InitDtmfBuf(trunkID); 
  100.             strcpy ( FileName, DJSys_GetInstallDir () ); 
  101.             strcat ( FileName, "voc\\bank.004"); 
  102.             DJVoc_PlayFile(trunkID,FileName); 
  103.             Trunk[trunkID].State = TRK_SELECT; 
  104.         } 
  105.         break
  106.     case TRK_SELECT: 
  107.         VoiceID=DJTrk_GetTrunkPlayID(trunkID); 
  108.         if(VoiceID>=0) 
  109.         { 
  110.             if(DJVoc_CheckVoiceEnd(VoiceID)) 
  111.             { 
  112.                 DJVoc_StopPlayFile(trunkID);                     
  113.             } 
  114.             VoiceID=-1; 
  115.         } 
  116.         if(DJTrk_GetReciveDtmfNum(trunkID)>0) 
  117.         { 
  118.             char Code = DJTrk_GetLastDtmfCode(trunkID); 
  119.             DJTrk_InitDtmfBuf(trunkID); 
  120.             switch(Code) 
  121.             { 
  122.             case '1'
  123.                 if(VoiceID>0) DJVoc_StopPlayFile(trunkID); 
  124.                 DJVoc_InitIndexPlayFile(trunkID);   //對某一箇中繼通道初始化文件索引放音 
  125.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  126.                 strcat ( FileName, "voc\\bank.005"); 
  127.                 DJVoc_AddIndexPlayFile(trunkID,FileName);   //增加索引放音文件 
  128.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  129.                 strcat ( FileName, "voc\\d5"); 
  130.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  131.  
  132.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  133.                 strcat ( FileName, "voc\\d8"); 
  134.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  135.  
  136.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  137.                 strcat ( FileName, "voc\\d9"); 
  138.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  139.  
  140.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  141.                 strcat ( FileName, "voc\\d6"); 
  142.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  143.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  144.                 strcat ( FileName, "voc\\d15"); 
  145.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  146.  
  147.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  148.                 strcat ( FileName, "voc\\d8"); 
  149.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  150.  
  151.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  152.                 strcat ( FileName, "voc\\bank.008"); 
  153.                 DJVoc_AddIndexPlayFile(trunkID,FileName);    
  154.                 DJVoc_StartIndexPlayFile(trunkID);      //開始一次文件索引放音 
  155.                 Trunk[trunkID].State = TRK_PLAYRESULT; 
  156.                 break
  157.             case '2'
  158.                 if(VoiceID>0) DJVoc_StopPlayFile(trunkID); 
  159.                 DJVoc_InitIndexPlayFile(trunkID); 
  160.                 strcpy(FileName,DJSys_GetInstallDir()); 
  161.                 strcat(FileName,"voc\\bank.006"); 
  162.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  163.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  164.                 strcat ( FileName, "voc\\d0"); 
  165.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  166.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  167.                 strcat ( FileName, "voc\\d15"); 
  168.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  169.  
  170.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  171.                 strcat ( FileName, "voc\\d4"); 
  172.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  173.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  174.                 strcat ( FileName, "voc\\d8"); 
  175.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  176.  
  177.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  178.                 strcat ( FileName, "voc\\bank.008"); 
  179.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  180.                 DJVoc_StartIndexPlayFile(trunkID); 
  181.                 Trunk[trunkID].State = TRK_PLAYRESULT; 
  182.                 break
  183.             case '3'
  184.                 if(VoiceID>0) DJVoc_StopPlayFile(trunkID); 
  185.                 DJVoc_InitIndexPlayFile(trunkID); 
  186.                 strcpy(FileName,DJSys_GetInstallDir()); 
  187.                 strcat(FileName,"voc\\bank.007"); 
  188.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  189.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  190.                 strcat ( FileName, "voc\\d3"); 
  191.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  192.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  193.                 strcat ( FileName, "voc\\d7"); 
  194.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  195.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  196.                 strcat ( FileName, "voc\\d0"); 
  197.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  198.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  199.                 strcat ( FileName, "voc\\d0"); 
  200.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  201.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  202.                 strcat ( FileName, "voc\\d0"); 
  203.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  204.  
  205.                 strcpy ( FileName, DJSys_GetInstallDir () ); 
  206.                 strcat ( FileName, "voc\\bank.008"); 
  207.                 DJVoc_AddIndexPlayFile(trunkID,FileName); 
  208.                 DJVoc_StartIndexPlayFile(trunkID); 
  209.                 Trunk[trunkID].State = TRK_PLAYRESULT; 
  210.                 break
  211.         default
  212.                 break
  213.             } 
  214.         } 
  215.         break
  216.     case TRK_PLAYRESULT: 
  217.         if(DJVoc_CheckIndexPlayEnd(trunkID)) 
  218.         { 
  219.             DJVoc_StopIndexPlayFile(trunkID); 
  220.             Trunk[trunkID].State = TRK_HANGUP; 
  221.         } 
  222.         break
  223.     case TRK_RECORDFILE: 
  224.         VoiceID = DJTrk_GetTrunkPlayID(trunkID); 
  225.         if(DJVoc_CheckVoiceEnd(VoiceID)) 
  226.         { 
  227.             DJVoc_StopRecordFile(trunkID); 
  228.             Trunk[trunkID].State = TRK_HANGUP; 
  229.             break
  230.         } 
  231.         if(DJTrk_GetReciveDtmfNum(trunkID) >= 1) 
  232.         {    
  233.             if(DJTrk_GetLastDtmfCode(trunkID) == '5'
  234.             { 
  235.                 DJVoc_StopRecordFile(trunkID); 
  236.                 Trunk[trunkID].State = TRK_HANGUP; 
  237.             } 
  238.         } 
  239.         break
  240.     case TRK_PLAYRECORD: 
  241.         VoiceID=DJTrk_GetTrunkPlayID(trunkID); 
  242.         if(VoiceID<0) 
  243.         { 
  244.             MessageBox(NULL,"Get Voice ID Error!","Error",MB_OK); 
  245.             Trunk[trunkID].State = TRK_HANGUP; 
  246.         } 
  247.         else 
  248.         { 
  249.             if(DJVoc_CheckVoiceEnd(VoiceID)) 
  250.             { 
  251.                 DJVoc_StopPlayFile(trunkID);                     
  252.                 Trunk[trunkID].State = TRK_HANGUP; 
  253.             } 
  254.         } 
  255.         break
  256.     case TRK_HANGUP: 
  257.         DJNo7_SetChnState(trunkID/30,trunkID%30, CALLEE_SET_CBK ); 
  258.         Trunk[trunkID].State = TRK_WAITFREE; 
  259.         break
  260.     case TRK_WAITFREE: 
  261.         break
  262.  
  263.     }//end switch 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章