⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvmcon.cpp

📁 SITEL的2.4G无线分机CVM的客户端PP参考程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
              break;

            case 'I': // intercom service call hook off
              BUSM_SendMailP1(0, USER_TASK, API_PP_SETUP_REQ, 2/*callclass=SERVICE*/);
              MmiCallClass = 2;/*callclass=SERVICE*/ // store callclass for later switching
              MmiState = MMI_WAIT_SETUP;
              printf("<-MMI_WAIT_SETUP(SERVICE)\nMmiState = MMI_WAIT_SETUP\n");
              break;

            case 'H':
              MmiCallClass = 5;/*callclass=EXT_DATA*/ // store callclass for later switching
              BUSM_SendMailP2(0, USER_TASK, API_PP_SETUP_REQ, MmiCallClass, 0);
              MmiState = MMI_WAIT_SETUP;
              printf("<-MMI_WAIT_SETUP(CALLCLASS_EXT_DATA)\nMmiState = MMI_WAIT_SETUP\n");
              break;

            case '.': // start PP local un-subscription
            {
              BUSM_SendMailP1(0, USER_TASK, API_PP_DELETE_SUBS_REQ, 0x01/*PpNo1*/);
              printf("<-API_PP_DELETE_SUBS_REQ (PpNo#1)\n");
            }
            break;

          }
          break;    

        case API_PP_ALERT_BROADCAST_IND:
          /********************************************************
          * uint8 bRingPattern:
          *          CBI__ALERTING_ON__PATTERN_0            = 0x00, // INT
          *          CBI__ALERTING_ON__PATTERN_1            = 0x01, // EXT
          *          CBI__ALERTING_ON__PATTERN_2            = 0x02,
          *          CBI__ALERTING_ON__PATTERN_3            = 0x03,
          *          CBI__ALERTING_ON__PATTERN_4            = 0x04,
          *          CBI__ALERTING_ON__PATTERN_5            = 0x05,
          *          CBI__ALERTING_ON__PATTERN_6            = 0x06, // BASEPAGE
          *          CBI__ALERTING_ON__PATTERN_7            = 0x07,
          *          CBI__ALERTING_ON__CONTINUOUS           = 0x08,
          *          CBI__INCOMMING_CALL_RELEASED_BY_THE_FP = 0x0A,
          *          CBI__INCOMMING_CALL_HAS_BEEN_ANSWERED  = 0x0B,
          *          CBI__ALERTING_OFF                      = 0x0F
          *********************************************************/
          switch(((recDataType*) MailPtr)->bData[0])
          {
            // alert off
            case 0x0A: //CBI__INCOMMING_CALL_RELEASED_BY_THE_FP:
            case 0x0B: //CBI__INCOMMING_CALL_HAS_BEEN_ANSWERED: 
            case 0x0F: //CBI__ALERTING_OFF:                     
              printf("->ALERT_BROADCAST: API_PP_ALERT_ON_IND (OFF): %x\n", ((recDataType*) MailPtr)->bData[0]);
              break;
                      
            // alert on
            default:
              printf("->ALERT_BROADCAST: API_PP_ALERT_ON_IND (ON): %x\n", ((recDataType*) MailPtr)->bData[0]);
              BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_KEY_BEEP_REQ, 9); // use keybeep tone for page-beep
              break;
          }
          break;    

        case API_PP_SETUP_IND:
          MmiCallClass = (((ApiPpSetupIndType*) MailPtr)->bCallClass); // store callclass for later switching
          BUSM_SendMailP0(0, USER_TASK, API_PP_ALERT_REQ);
          MmiState = MMI_ALERTING;
          
          if(MmiCallClass != 2/*callclass=SERVICE*/ && MmiCallClass != 5/*callclass=EXT_DATA*/)
          {
            BUSM_SendMailP3(0, USER_TASK, CVM_PP_AUDIO_START_MELODY_REQ, 1, 9, 0);
          }  
          printf("->API_PP_SETUP_IND: %x, %x\nMmiState = MMI_ALERTING\n", 
                  (((ApiPpSetupIndType*) MailPtr)->bCallClass),
                  (((ApiPpSetupIndType*) MailPtr)->bSignal) );
          break;      
      }     
      break;        

   /**************************************************************
   *                       MMI_WAIT_SETUP
   **************************************************************/
    case MMI_WAIT_SETUP:  
      switch(((recDataType*) MailPtr)->PrimitiveIdentifier)
      {
        case KEY_MESSAGE:
          switch(((recDataType*) MailPtr)->bData[0])
          {
            case 'o': // PP MMI rejects incoming call
              BUSM_SendMailP1(0, USER_TASK, API_PP_RELEASE_REQ, 0); // no reason
              MmiState = MMI_WAIT_RELEASE;
              printf("<-API_PP_RELEASE_REQ\nMmiState = MMI_WAIT_RELEASE\n");
              break;
          }
          break;    

        case API_PP_CONNECT_IND:
          if(MmiCallClass == 2/*callclass=SERVICE*/)
          {
            MmiState = MMI_SERVICE_CALL;
            printf("->API_PP_CONNECT_IND\nMmiState = MMI_SERVICE_CALL\n");
          } 
          else if (MmiCallClass == 5/*callclass=EXT_DATA*/)
          {
            printf("->API_PP_CONNECT_IND\nMmiState = MMI_EXT_DATA\n");
            MmiState = MMI_EXT_DATA;
            DataInit();
          }
          else
          {
            MmiState = MMI_CONVERSATION;
            BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_TONE_REQ, 0);
            BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_OPEN_REQ);
            printf("->API_PP_CONNECT_IND\nMmiState = MMI_CONVERSATION\n");
          }
          break;

         case API_PP_SETUP_ACK_IND:
          if(MmiCallClass == 2/*callclass=SERVICE*/)
          {
            MmiState = MMI_SERVICE_CALL;
            printf("->API_PP_SETUP_ACK_IND\nMmiState = MMI_SERVICE_CALL (IntCall)\n");
          }
          else if (MmiCallClass == 5/*callclass=EXT_DATA*/)
          {
            MmiState = MMI_EXT_DATA;
            printf("->API_PP_SETUP_ACK_IND\nMmiState = MMI_EXT_DATA\n");
            DataInit();
          }
          else
          {
            MmiState = MMI_CONVERSATION;
//             BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_OPEN_REQ);
            BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_OPEN_ADPCM_OFF_REQ);
            printf("->API_PP_SETUP_ACK_IND\nMmiState = MMI_CONVERSATION (IntCall)\n");
          }  
          break;

         case API_PP_RELEASE_IND:
           BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_TONE_REQ, 0);
           BUSM_SendMailP0(0, USER_TASK, API_PP_RELEASE_RES);
           MmiState = MMI_STANDBY;
           printf("->API_PP_RELEASE_IND\nMmiState = MMI_STANDBY\n");
           break;

         case API_PP_REJECT_IND:
           BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_TONE_REQ, 0);
           MmiState = MMI_STANDBY;
           printf("->API_PP_REJECT_IND\nMmiState = MMI_STANDBY\n");
           break;

      }     
      break;        

   /**************************************************************
   *                       MMI_ALERTING
   **************************************************************/
    case MMI_ALERTING:    
      switch(((recDataType*) MailPtr)->PrimitiveIdentifier)
      {
        case KEY_MESSAGE:
          switch(((recDataType*) MailPtr)->bData[0])
          {
            case 'u': // hook key
            case 'i': // int key
            case 'H': // high speed data
              BUSM_SendMailP0(0, USER_TASK, API_PP_CONNECT_REQ);
              printf("<-API_PP_CONNECT_REQ\n");
              break;
              
            case 'o': // PP MMI rejects incoming call
              BUSM_SendMailP1(0, USER_TASK, API_PP_REJECT_REQ, 0); // no reason
              MmiState = MMI_STANDBY;
              printf("->API_PP_REJECT_REQ\nMmiState = MMI_STANDBY\n");
              break;
          }
          break;    

        case API_PP_ALERT_ON_IND:
           printf("->API_PP_ALERT_ON_IND: %x\n", ((recDataType*) MailPtr)->bData[0]);
           BUSM_SendMailP3(0, USER_TASK, CVM_PP_AUDIO_START_MELODY_REQ, 1, 9, 0);
           break;

        case API_PP_ALERT_OFF_IND:
           BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_MELODY_REQ, 0);
           printf("->API_PP_ALERT_OFF_IND: %x\n", ((recDataType*) MailPtr)->bData[0]);
           break;

        case API_PP_CONNECT_CFM:
          if (MmiCallClass == 5/*callclass=EXT_DATA*/)
          {
            MmiState = MMI_EXT_DATA;
            printf("->API_PP_CONNECT_CFM\nMmiState = MMI_EXT_DATA\n");
            DataInit();
          }
          else
          {
            MmiState = MMI_CONVERSATION;
            BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_MELODY_REQ, 0);
            BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_OPEN_REQ);
            printf("->API_PP_CONNECT_CFM\nMmiState = MMI_CONVERSATION\n");
          }
          break;

        case API_PP_RELEASE_IND:
          BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_MELODY_REQ, 0);
          BUSM_SendMailP0(0, USER_TASK, API_PP_RELEASE_RES);
          MmiState = MMI_STANDBY;
          printf("->API_PP_RELEASE_IND\nMmiState = MMI_STANDBY\n");
          break;

        case API_PP_REJECT_IND:
          BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_MELODY_REQ, 0);
          MmiState = MMI_STANDBY;
          printf("->API_PP_REJECT_IND\nMmiState = MMI_STANDBY\n");
          break;
      }     
      break;        

   /**************************************************************
   *                     MMI_CONVERSATION
   **************************************************************/
    case MMI_CONVERSATION:
      switch(((recDataType*) MailPtr)->PrimitiveIdentifier)
      {
        case KEY_MESSAGE:
          switch(((recDataType*) MailPtr)->bData[0])
          {
            case 'o': // hook on
              MmiState = MMI_WAIT_RELEASE;
              BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_TONE_REQ, 0);
              BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_CLOSE_REQ);
              BUSM_SendMailP1(0, USER_TASK, API_PP_RELEASE_REQ, 0); // no reason
              printf("<-API_PP_RELEASE_REQ\nMmiState = MMI_WAIT_RELEASE\n");
              break;

            case '1': case '2': case '3': case '4': case '5':
            case '6': case '7': case '8': case '9': case '0':
            case '*': case '#': 
              BUSM_SendMailP2(0, USER_TASK, API_PP_KEYPAD_REQ, 1, ((recDataType*) MailPtr)->bData[0]);
              printf("<-API_PP_KEYPAD_REQ (%c)\n", ((recDataType*) MailPtr)->bData[0]);
              break;
              
            case 'r':
              BUSM_SendMailP2(0, USER_TASK, API_PP_KEYPAD_REQ, 1, 0x15);
              printf("<-API_PP_KEYPAD_REQ (Flash)\n");
              break;               
                
            case 'R':
              BUSM_SendMailP2(0, USER_TASK, API_PP_KEYPAD_REQ, 1, 0x05);
              printf("<-API_PP_KEYPAD_REQ (KEYPAD_PAUSE)\n");
              break;               
              
            case '_':
              BUSM_SendMailP2(0, USER_TASK, API_PP_KEYPAD_REQ, 1, 0x16);
              printf("<-API_PP_KEYPAD_REQ (KEYPAD_GOTO_INFINTE_DTMF)\n");
              break;               

            case '-':
              BUSM_SendMailP2(0, USER_TASK, API_PP_KEYPAD_REQ, 1, 0x14);
              printf("<-API_PP_KEYPAD_REQ (KEYPAD_GOTO_DTMF)\n");
              break;               

            case 'i':
              BUSM_SendMailP2(0, USER_TASK, API_PP_KEYPAD_REQ, 1, 0x17);
              printf("<-API_PP_KEYPAD_REQ (Int)\n");
              break;               

            case 'v':
             if(AudioVol< DSP_NUMBER_OF_VOL_STEPS-1)
             {
               AudioVol++;
               BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_SET_VOLUME_REQ, AudioVol);
               printf("<-CVM_PP_AUDIO_SET_VOLUME_REQ: (+)%x\n", AudioVol);
             }
             break;

            case 'V':
             if(AudioVol)
             {
               AudioVol--;
               BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_SET_VOLUME_REQ, AudioVol);
               printf("<-CVM_PP_AUDIO_SET_VOLUME_REQ: (-)%x\n", AudioVol);
             }
             break;
             
            case 'p': // enable headset
              BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_HS_PLUG_IND, 1);
              break;

            case 'P': // disable headset
              BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_HS_PLUG_IND, 0);
              break;
              
            case 'f': // enable handsfree mode
              BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_OPEN_HANDSFREE_REQ);
              break;
              
            case 'F': // disable handsfree mode
              BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_CLOSE_HANDSFREE_REQ);
              break;

            case 'j': // mute mic
              BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_MUTE_MIC_REQ);
              break;
              
            case 'J': // unmute mic
              BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_UNMUTE_MIC_REQ);
              break;
              
            case 'd': // data send test iwu to FP (12 34 56 78)
              {
                ApiPpIwuDataReqType * NewMailPtr;

                NewMailPtr = (ApiPpIwuDataReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(ApiPpIwuDataReqType)+3));
      
                if(NewMailPtr != NULL)
                {
                   NewMailPtr->PrimitiveIdentifier = API_PP_IWU_DATA_REQ;
                   NewMailPtr->bDataLength = 4;
                   NewMailPtr->bData[0] = 0x11;
                   NewMailPtr->bData[1] = 0x22;
                   NewMailPtr->bData[2] = 0x33;
                   NewMailPtr->bData[3] = 0x44;
                   BUSM_DeliverMail((uint8*) NewMailPtr);
                   printf("<-API_PP_IWU_DATA_REQ (IWU_IWU_USER_DEFINED)\n");
                }
              }  
              break;

            case ':': // start FP remote un-subscription
            case '/': // start FP remote un-subscription
            {
              BUSM_SendMailP1(0, USER_TASK, API_PP_REMOTE_DELETE_SUBS_REQ, 0x01/*PpNo1*/);
              printf("<-API_PP_REMOTE_DELETE_SUBS_REQ (PpNo#1)\n");
            }
            break;

            case '(': // start FP remote un-subscription
            {
              BUSM_SendMailP1(0, USER_TASK, API_PP_REMOTE_DELETE_SUBS_REQ, 0x02/*PpNo2*/);
              printf("<-API_PP_REMOTE_DELETE_SUBS_REQ (PpNo#2)\n");
            }
            break;

            case ')': // start FP remote un-subscription
            {
              BUSM_SendMailP1(0, USER_TASK, API_PP_REMOTE_DELETE_SUBS_REQ, 0x03/*PpNo3*/);
              printf("<-API_PP_REMOTE_DELETE_SUBS_REQ (PpNo#3)\n");
            }
            break;

            case '=': // start FP remote un-subscription
            {
              BUSM_SendMailP1(0, USER_TASK, API_PP_REMOTE_DELETE_SUBS_REQ, 0x04/*PpNo4*/);
              printf("<-API_PP_REMOTE_DELETE_SUBS_REQ (PpNo#4\n");
            }
            break;

            case KEY_CTRL_A: 
             
             SendSwCtrlCmdP0( CVM_SW_CMD_HOLD_ANSWER);
             break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -