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

📄 cvmcon.cpp

📁 SITEL的2.4G无线分机CVM的基站端FP参考程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        Time[1]  = (((ClipDataPtr->bClipHeader.bClipDate)&0x0F)+0x30);
        Time[2]  = '/';
        Time[3]  = ((((ClipDataPtr->bClipHeader.bClipMonth)&0xF0)>>4)+0x30);
        Time[4]  = (((ClipDataPtr->bClipHeader.bClipMonth)&0x0F)+0x30);
        Time[5]  = '-';
        Time[6]  = ((((ClipDataPtr->bClipHeader.bClipHours)&0xF0)>>4)+0x30);
        Time[7]  = (((ClipDataPtr->bClipHeader.bClipHours)&0x0F)+0x30);
        Time[8]  = ':';
        Time[9]  = ((((ClipDataPtr->bClipHeader.bClipMinutes)&0xF0)>>4)+0x30);
        Time[10] = (((ClipDataPtr->bClipHeader.bClipMinutes)&0x0F)+0x30);
        Time[11] = '\0';

        // Get Name
        memcpy(&Name, ClipDataPtr->bClipData, ClipDataPtr->bClipHeader.bClipNameLength);
        Name[ClipDataPtr->bClipHeader.bClipNameLength] = '\0';

        // Get Number
        memcpy(&Number,  &ClipDataPtr->bClipData[ClipDataPtr->bClipHeader.bClipNameLength], ClipDataPtr->bClipHeader.bClipNumberLength);
        Number[ClipDataPtr->bClipHeader.bClipNumberLength] = '\0';

        // Print result
        printf("->API_FP_CLIP_IND\n");
        printf("    Name         : %s\n", Name);
        printf("    Number       : %s\n", Number);
        printf("    Time         : %s\n", Time);
        printf("    Type         : %d\n", Type);
        printf("    Reason Name  : %d\n", ReasonName);
        printf("    Reason Number: %d\n", ReasonNumber);
      }
      break;


    case CVM_FP_PLUG_STATUS_IND:
      printf("->CVM_FP_PLUG_STATUS_IND: %x\n", (((CvmFpPpPlugStatusIndType*) MailPtr)->bPlugState));
      break;

    case CVM_FP_LINE_STATUS_IND:
      printf("->CVM_FP_LINE_STATUS_IND: %x\n", (((CvmFpPpLineStatusIndType*) MailPtr)->bLineState));
      break;

  /**************************************************************************
  ***************************************************************************
  *                      HANDLING OF SERVICE CALLS
  ***************************************************************************
  **************************************************************************/
    case API_FP_SETUP_IND:
      if( (((ApiFpSetupIndType*) MailPtr)->bConnectionEI >= SW_EI_TYPE_IN_DATA0) && // check if SERVICE call
          (((ApiFpSetupIndType*) MailPtr)->bConnectionEI <= SW_EI_TYPE_IN_DATA7) &&
          (((ApiFpSetupIndType*) MailPtr)->bCallClass != CALLCLASS_EXT_DATA))
      {
        CallClass = ((ApiFpSetupIndType*) MailPtr)->bCallClass;
        BUSM_SendMailP1(0, USER_TASK, API_FP_ALERT_REQ,   (((ApiFpSetupIndType*) MailPtr)->bConnectionEI));
        printf("->API_FP_SETUP_IND: (SERVICE) %x, %x, %x \n", 
                (((ApiFpSetupIndType*) MailPtr)->bConnectionEI), 
                (((ApiFpSetupIndType*) MailPtr)->bCallClass), 
                (((ApiFpSetupIndType*) MailPtr)->bSignal));
        BUSM_SendMailP1(0, USER_TASK, API_FP_CONNECT_REQ, (((ApiFpSetupIndType*) MailPtr)->bConnectionEI));
        printf("Setup Serviceconnection but keep MMI in idle ready for audiocall\n");
        return; // do not check mmi states
      }  
      break;

    case API_FP_CONNECT_IND:
      if( (((ApiFpConnectIndType*) MailPtr)->bConnectionEI >= SW_EI_TYPE_IN_DATA0) && // check if SERVICE call
          (((ApiFpConnectIndType*) MailPtr)->bConnectionEI <= SW_EI_TYPE_IN_DATA7) &&
          CallClass != CALLCLASS_EXT_DATA)
      {    
        printf("->API_FP_CONNECT_IND: (SERVICE) %x\n",
        (((ApiFpConnectIndType*) MailPtr)->bConnectionEI) );
        return; // do not check mmi states
      } 
      break;

    case API_FP_RELEASE_IND:
      if( (((ApiFpReleaseIndType*) MailPtr)->bConnectionEI >= SW_EI_TYPE_IN_DATA0) && // check if SERVICE call
          (((ApiFpReleaseIndType*) MailPtr)->bConnectionEI <= SW_EI_TYPE_IN_DATA7) &&
          CallClass != CALLCLASS_EXT_DATA)
      {    
        BUSM_SendMailP1(0, USER_TASK, API_FP_RELEASE_RES, ((ApiFpReleaseIndType*) MailPtr)->bConnectionEI);
        BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_MELODY_REQ, 0);
        printf("->API_FP_RELEASE_IND: (SERVICE)\n");
        return; // do not check mmi states
      }  
      break;

    case API_FP_REJECT_IND:
      if( (((ApiFpRejectIndType*) MailPtr)->bConnectionEI >= SW_EI_TYPE_IN_DATA0) && // check if SERVICE call
          (((ApiFpRejectIndType*) MailPtr)->bConnectionEI <= SW_EI_TYPE_IN_DATA7) &&
          CallClass != CALLCLASS_EXT_DATA)
      {    
        printf("->API_FP_REJECT_IND: (SERVICE)\n");
        BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_STOP_MELODY_REQ, 0);
        return; // do not check mmi states
      }
      break;
  }  

  /**************************************************************************
  ***************************************************************************
  *                      STATEDEPENDING HANDLING OF CALLS
  ***************************************************************************
  **************************************************************************/
      
  switch(MmiState)    
  {
   /**************************************************************
   *                       MMI_STANDBY
   **************************************************************/
    case MMI_STANDBY:     
      switch(((recDataType*) MailPtr)->PrimitiveIdentifier)
      {
        case KEY_MESSAGE:
           switch(((recDataType*) MailPtr)->bData[0])
           {
             case 'u': // external outgoing call
             {
               ApiFpSetupReqType * NewMailPtr;

               ConnectionEI = SW_EI_TYPE_OUT_AUDIO;

               NewMailPtr = (ApiFpSetupReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(ApiFpSetupReqType)));
               if(NewMailPtr != NULL)
               {
                  NewMailPtr->PrimitiveIdentifier = API_FP_SETUP_REQ;
                  NewMailPtr->bConnectionEI      = ConnectionEI;
                  NewMailPtr->bCallClass    = CALLCLASS__EXT;
//                   NewMailPtr->bDstCallerId  = 'A';
//                   NewMailPtr->bLength       = 0;
                  BUSM_DeliverMail((uint8*) NewMailPtr); // write 8 bytes in eeprom at adr 0x0800
               }
               MmiState = MMI_WAIT_SETUP;
               CallClass = CALLCLASS__EXT;
               printf("MmiState = MMI_WAIT_SETUP (ext)\n");
               printf("<-API_FP_SETUP_REQ\n");
             }
             break;
           
             case 'i': // intercom
             {
               ApiFpSetupReqType * NewMailPtr;

               ConnectionEI = SW_EI_TYPE_OUT_AUDIO;

               NewMailPtr = (ApiFpSetupReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(ApiFpSetupReqType)));
               if(NewMailPtr != NULL)
               {
                  NewMailPtr->PrimitiveIdentifier = API_FP_SETUP_REQ;
                  NewMailPtr->bConnectionEI      = ConnectionEI;
                  NewMailPtr->bCallClass    = CALLCLASS__INT;
//                  NewMailPtr->bDstCallerId  = '\0';
//                  NewMailPtr->bLength       = 0;
                  BUSM_DeliverMail((uint8*) NewMailPtr); // write 8 bytes in eeprom at adr 0x0800
               }
               MmiState = MMI_WAIT_SETUP;
               CallClass = CALLCLASS__INT;
               printf("MmiState = MMI_WAIT_SETUP\n");
               printf("<-API_FP_SETUP_REQ (int)\n");
             }
             break;

             case 'I': // intercom service connection
             {
               ApiFpSetupReqType * NewMailPtr;

               ConnectionEI = SW_EI_TYPE_OUT_DATA0;

               NewMailPtr = (ApiFpSetupReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(ApiFpSetupReqType)));
               if(NewMailPtr != NULL)
               {
                  NewMailPtr->PrimitiveIdentifier = API_FP_SETUP_REQ;
                  NewMailPtr->bConnectionEI      = ConnectionEI;
                  NewMailPtr->bCallClass    = CALLCLASS_SERVICE;
//                  NewMailPtr->bDstCallerId  = '\0';
//                  NewMailPtr->bLength       = 0;
                  BUSM_DeliverMail((uint8*) NewMailPtr);
               }
               MmiState = MMI_WAIT_SETUP;
               CallClass = CALLCLASS_SERVICE;
               printf("MmiState = MMI_WAIT_SETUP\n");
               printf("<-API_FP_SETUP_REQ (service)\n");
             }
             break;
             
           case 's':
             {
               ApiFpSetupReqType * NewMailPtr;

               ConnectionEI = SW_EI_TYPE_AUDIO_EXT;

               NewMailPtr = (ApiFpSetupReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(ApiFpSetupReqType)));
               if(NewMailPtr != NULL)
               {
                  NewMailPtr->PrimitiveIdentifier = API_FP_SETUP_REQ;
                  NewMailPtr->bConnectionEI      = ConnectionEI;
                  NewMailPtr->bCallClass    = CALLCLASS__EXT;
//                   NewMailPtr->bDstCallerId  = 'A';
//                   NewMailPtr->bLength       = 0;
                  BUSM_DeliverMail((uint8*) NewMailPtr); // write 8 bytes in eeprom at adr 0x0800
               }
               MmiState = MMI_FP_WAIT_SETUP;
               CallClass = CALLCLASS__EXT;
               printf("MmiState = MMI_FP_WAIT_SETUP (ext)\n");
               printf("<-API_FP_SETUP_REQ (SW_EI_TYPE_AUDIO_EXT)\n");
             }
             break;

           case 'S':
             printf("<-API_FP_ALERT_DISTINTIVE_OFF_REQ (LINE_SIM)\n");
             BUSM_SendMailP1(0, USER_TASK, API_FP_ALERT_DISTINTIVE_OFF_REQ, 0/*ConnectionEI*/);
             break;
 
           case 'a':
             printf("<-API_FP_ALERT_ON_REQ (LINE_SIM)\n");
             BUSM_SendMailP1(0, USER_TASK, API_FP_ALERT_ON_REQ, 0/*ConnectionEI*/);
             break;

           case 'A':
             printf("<-API_FP_ALERT_OFF_REQ (LINE_SIM)\n");
             BUSM_SendMailP1(0, USER_TASK, API_FP_ALERT_OFF_REQ, 0/*ConnectionEI*/);
             break;

             case 'H': // intercom service connection
             {
               ApiFpSetupReqType * NewMailPtr;

               ConnectionEI = SW_EI_TYPE_OUT_DATA0;

               NewMailPtr = (ApiFpSetupReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(ApiFpSetupReqType)));
               if(NewMailPtr != NULL)
               {
                  NewMailPtr->PrimitiveIdentifier = API_FP_SETUP_REQ;
                  NewMailPtr->bConnectionEI      = ConnectionEI;
                  NewMailPtr->bCallClass    = CALLCLASS_EXT_DATA;
//                  NewMailPtr->bDstCallerId  = '\0';
//                  NewMailPtr->bLength       = 0;
                  BUSM_DeliverMail((uint8*) NewMailPtr);
               }
               MmiState = MMI_WAIT_SETUP;
               CallClass = CALLCLASS_EXT_DATA;
               printf("MmiState = MMI_WAIT_SETUP\n");
               printf("<-API_FP_SETUP_REQ (high speed data)\n");
             }
             break;
             
//           case 'a': // OpenAudio
//            BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_OPEN_REQ, SPK_AEC_ENABLED);
//            break;

//           case 'A': // CloseAudio
//            BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_CLOSE_REQ, SPK_AEC_ENABLED);
//            break;

           case 'm': // StartMelody
            BUSM_SendMailP3(0, USER_TASK, CVM_FP_AUDIO_START_MELODY_REQ, 1, 9, 0);
            break;                            
          
           case 'n': // StartTone
            BUSM_SendMailP2(0, USER_TASK, CVM_FP_AUDIO_START_TONE_REQ, 13, 9);
            break;

           case 'M': // StopMelody
            BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_STOP_MELODY_REQ, 0);
            break;

           case 'N': // StopTone
            BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_STOP_TONE_REQ, 0);
            break;

//           case 'b': // KeyBeep
//            BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_KEY_BEEP_REQ, 9);
//            break;
             
         case 'w': // busmode UART
           printf("Busmode select: UART\n");
           BUSM_SendMailP1(0, USER_TASK, CVM_BUS_SELECT_REQ, 0);
           break;

         case 'W': // busmode SPI
           printf("Busmode select: SPI\n");
           BUSM_SendMailP1(0, USER_TASK, CVM_BUS_SELECT_REQ, 1);
           break;


           }
           break;    

        case API_FP_SETUP_IND:
          ConnectionEI = (((ApiFpSetupIndType*) MailPtr)->bConnectionEI);
          CallClass = ((ApiFpSetupIndType*) MailPtr)->bCallClass;
          if (CallClass != 5/*callclass=EXT_DATA*/)
          {
            BUSM_SendMailP1(0, USER_TASK, API_FP_ALERT_REQ, ConnectionEI);
          }

          if (CallClass != 2/*callclass=SERVICE*/ && CallClass != 5/*callclass=EXT_DATA*/)
          {
            BUSM_SendMailP3(0, USER_TASK, CVM_FP_AUDIO_START_MELODY_REQ, 1, 9, 0);
          }


          MmiState = MMI_ALERTING;
          printf("->API_FP_SETUP_IND: %x, %x \nMmiState = MMI_ALERTING\n", 
                (((ApiFpSetupIndType*) MailPtr)->bConnectionEI), 
                (((ApiFpSetupIndType*) MailPtr)->bCallClass), 
                (((ApiFpSetupIndType*) MailPtr)->bSignal));
          break;      
      }
      break;        

    /**************************************************************
    *                       MMI_WAIT_SETUP
    **************************************************************/
     case MMI_WAIT_SETUP:  
       switch(((recDataType*) MailPtr)->PrimitiveIdentifier)
       {
         case API_FP_CONNECT_IND:
           printf("->API_FP_CONNECT_IND: %x\n", (((ApiFpConnectIndType*) MailPtr)->bConnectionEI) );
           //            BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_OPEN_REQ, SPK_AEC_ENABLED);
           if (CallClass == CALLCLASS_EXT_DATA)

⌨️ 快捷键说明

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