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

📄 cvmcon.cpp

📁 SITEL的2.4G无线分机CVM的基站端FP参考程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
  else
  {
    printf("No cmdline arguments\n");
  }  
  printf("Connecting to COM%d:\n",Comport);
  InitTestBus();
  InitRs232(Comport, 19200);

  // initialize state handler
  if(MmiState == MMI_INIT)
  {
    while(bus232_Busy()); // wait for rs232 handshake
    Primitiv = INITTASK;
    tempDataPtr[0] = (uint8) (Primitiv&0x00ff);
    tempDataPtr[1] = (uint8) (Primitiv>>8);
    tempLength = 0;
    sendmail_ReceivePacket(tempLength, tempDataPtr);
  }
 
  // check for quit
  while (Key != 0x1B/*ESC Key*/)
  {
    tempDataPtr[0] = KEY_MESSAGE; // primitiv LoByte 0x01 
    tempDataPtr[1] = 0;           // primitiv HiByte 0x00
    tempDataPtr[2] = Key;
    tempLength = 1;
    sendmail_ReceivePacket(tempLength, tempDataPtr);
 //    Sleep(1000);   // Take it easy..
    Key = _getch();  // Get keypress
  }
  printf("\n-Exiting..\n");
}



void sendmail_ReceivePacket(uint16 Length, uint8 *MailPtr)
{
  uint16 Primitiv = (uint16) (MailPtr[0] + (MailPtr[1]>>8));

  /**************************************************************************
  ***************************************************************************
  *                      PP-PCCON FUNCTIONS: BEGIN
  ***************************************************************************
  **************************************************************************/


  /**************************************************************************
  ***************************************************************************
  *                        GENERAL MMI HANDLING                
  ***************************************************************************
  **************************************************************************/
  switch(((recDataType*) MailPtr)->PrimitiveIdentifier)
  {
#ifndef RSX
    case INITTASK:
      printf("RSX Init...\n");
      MmiState = MMI_STANDBY;
      break;
#endif

    case KEY_MESSAGE:
      switch(((recDataType*) MailPtr)->bData[0])
      {
        case 'h':
          printf("\nCVM_FP_API: %x\n", MmiState);
          printf("t   : Test communication to task\n");
          printf("u   : External Hook off\n");
          printf("i   : Internal Hook off\n");
          printf("o   : Hook on\n");
          printf("0-9 : Dial Digits\n");
          printf("*, #: Dial Digits\n");
          printf("f   : Dial Flash/calibrate break\n");

          printf("v/V : AudioVolume Up/down\n");
          printf("j/J : Mute/UnMute microphone\n");
          printf("m/M : Start/Stop melody test\n");
          printf("n/N : Start/Stop tone test\n");
          
          printf("w/W : Busmode: UART/SPI\n");
          printf("e/E : TestEeprom: Read/Write 8 bytes eep at adr 0x0800\n");
          printf("g   : Test IwuData: Send 4 bytes data from FP to PP while EXT call\n");
          printf("d   : Test IwuData: Send 4 bytes data from FP to PP while INT call\n");
          printf("D   : Test broadcast unitdata\n");
          printf(":   : Deregister PpNo1\n");

          printf("H   : High speed data, hook off\n");
          printf("d   : High speed data, send packet\n");
          printf("T   : High speed data, toggle test\n");
          printf("+/- : High speed data, adjust packet length\n");

          printf("?   : Extended commands\n");

#if (FP_PCCON_REMOTE_LINE==1)
          printf("r/R : Ring On-Off/Terminate\n");
#endif
          break; 

         case '?':
          printf("\n");
          printf("CTRL+A : Put callparty on hold & answer\n");
          printf("CTRL+S : Swap call\n");
          printf("CTRL+C : Conference with callparty on hold\n");
          printf("CTRL+R : Resume call with callparty on hold\n"); 
          break;

 
         case 't':
           BUSM_SendMailP2(0, USER_TASK, START_PING_PONG, (uint8) debug_ProgramId, 0);
           printf("Testing communication to Usertask\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 'e':
           printf("Testing: eeprom read 8 bytes at adr 0x0800\n");
           BUSM_SendMailP3(0, USER_TASK, CVM_EEPROM_READ_REQ, 0x00, 0x08, 8); // read 8 bytes of eeprom at adr 0x0800
           break;          
         
         case 'E':
           {
             CvmEepromWriteReqType * NewMailPtr;

             NewMailPtr = (CvmEepromWriteReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(CvmEepromWriteReqType)+7));
             if(NewMailPtr != NULL)
             {
                NewMailPtr->PrimitiveIdentifier = CVM_EEPROM_WRITE_REQ;
                NewMailPtr->wEepAdr     = 0x0800;
                NewMailPtr->bEepLength  = 8;
                NewMailPtr->bEepData[0] = 0x11;
                NewMailPtr->bEepData[1] = 0x22;
                NewMailPtr->bEepData[2] = 0x33;
                NewMailPtr->bEepData[3] = 0x44;
                NewMailPtr->bEepData[4] = 0x55;
                NewMailPtr->bEepData[5] = 0x66;
                NewMailPtr->bEepData[6] = 0x77;
                NewMailPtr->bEepData[7] = 0x88;
                BUSM_DeliverMail((uint8*) NewMailPtr); // write 8 bytes in eeprom at adr 0x0800
             }
             printf("Testing: eeprom write 8 bytes at adr 0x0800\n");
           }
           break;

         case 'D': // unitdata broadcast test
           {
             ApiFpUnitdataReqType * NewMailPtr;

             NewMailPtr = (ApiFpUnitdataReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(ApiFpUnitdataReqType)+18));
             if(NewMailPtr != NULL)
             {
                NewMailPtr->PrimitiveIdentifier = API_FP_UNITDATA_REQ;
                NewMailPtr->bDataLength = 19;
                NewMailPtr->bData[0]  = 0x01;
                NewMailPtr->bData[1]  = 0x02;
                NewMailPtr->bData[2]  = 0x03;
                NewMailPtr->bData[3]  = 0x04;
                NewMailPtr->bData[4]  = 0x05;
                NewMailPtr->bData[5]  = 0x06;
                NewMailPtr->bData[6]  = 0x07;
                NewMailPtr->bData[7]  = 0x08;
                NewMailPtr->bData[8]  = 0x09;
                NewMailPtr->bData[9]  = 0x10;
                NewMailPtr->bData[10] = 0x11;
                NewMailPtr->bData[11] = 0x12;
                NewMailPtr->bData[12] = 0x13;
                NewMailPtr->bData[13] = 0x14;
                NewMailPtr->bData[14] = 0x15;
                NewMailPtr->bData[15] = 0x16;
                NewMailPtr->bData[16] = 0x17;
                NewMailPtr->bData[17] = 0x18;
                NewMailPtr->bData[18] = 0x19;
                BUSM_DeliverMail((uint8*) NewMailPtr);
             }
             printf("Testing: unitdata broadcast 19 bytes of data to all PP's\n");
           }
           break;          

        case 'g': // send EXT_call test iwu to PP
           {
             ApiFpIwuDataReqType * NewMailPtr;

             NewMailPtr = (ApiFpIwuDataReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(ApiFpIwuDataReqType)+3));

             if(NewMailPtr != NULL)
             {
                NewMailPtr->PrimitiveIdentifier = API_FP_IWU_DATA_REQ;
                NewMailPtr->bConnectionEI = 0; // send IWU to active PP
                NewMailPtr->bDataLength = 4; // NoOfBytes to send
                NewMailPtr->bData[0] = 0x55;
                NewMailPtr->bData[1] = 0x66;
                NewMailPtr->bData[2] = 0x77;
                NewMailPtr->bData[3] = 0x88;
                BUSM_DeliverMail((uint8*) NewMailPtr);
                printf("<-API_FP_IWU_DATA_REQ (IWU_IWU_USER_DEFINED) (bConnectionEI=0)\n");
             }
           }  
           break;

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

           {
             ApiClipDataIndType * NewMailPtr;

             NewMailPtr = (ApiClipDataIndType*) BUSM_AllocateMail(0, USER_TASK, sizeof(ApiClipDataIndType));
             if(NewMailPtr != NULL)
             {
                NewMailPtr->PrimitiveIdentifier = CLIP_MESSAGE_WAITING_ind; // simulate MessageWaiting mail
                NewMailPtr->LineId         = 0x00;
                NewMailPtr->ReasonCode     = 0x00;
                NewMailPtr->ReasonName     = 0x00;
                NewMailPtr->NumberLen      = 0x00;
                NewMailPtr->NameLen        = 0x00;
                NewMailPtr->TimeDateLen    = 0x00;
                NewMailPtr->VmwiLen        = 0x00;
                NewMailPtr->NmssLen        = 0x01;
                NewMailPtr->MsgWaitingData = 0x34;
                BUSM_DeliverMail((uint8*) NewMailPtr);
             }
             printf("Testing: simulate message waiting\n");
           }
           break;
           
#if (FP_PCCON_REMOTE_LINE==1)          
        default:
          FpPcLineTask(MailPtr);
          break;
#endif           
      }
      break;
      
    case STOP_PING_PONG:
       printf("Communication OK\n");
       break;

    case CVM_EEPROM_READ_CFM:
      {
        uint8 xx;

        printf("CVM_EEPROM_READ_CFM: (%x) ", (((CvmEepromReadCfmType*) MailPtr)->bEepLength));
        for(xx=0;xx<(((CvmEepromReadCfmType*) MailPtr)->bEepLength); xx++)
        {
         printf("%x ", (((CvmEepromReadCfmType*) MailPtr)->bEepData[xx]));
        }
        printf("\n");
      }
      break;

    case CVM_READ_PORT_CFM:
      printf("CVM_READ_PORT_CFM: (%x) \n", (((CvmReadPortCfmType*) MailPtr)->bData));
      break;
      
    case CVM_FP_SW_AUDIO_MUTE_IND:
      printf("CVM_FP_SW_AUDIO_MUTE_IND: (%x) \n", ((CvmFpSwAudioMuteIndType*) MailPtr)->bCtrlCmd);
      switch(((CvmFpSwAudioMuteIndType*) MailPtr)->bCtrlCmd)
      {
        case 0x05: //SW_AUDIO_CMD_MUTE: //0x05
          BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_MUTE_REQ, 0);
          BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_MUTE_REQ, 1);
          break;
          
        case 0x06: //SW_AUDIO_CMD_UNMUTE: //0x06
          BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_UNMUTE_REQ, 0);
          BUSM_SendMailP1(0, USER_TASK, CVM_FP_AUDIO_UNMUTE_REQ, 1);
          break;
      }
      break;  
      
    case API_FP_IWU_DATA_IND:  
      {
        uint8 xx;

        printf("API_FP_IWU_DATA_IND: (%x) ", (((ApiFpIwuDataIndType*) MailPtr)->bDataLength));
        for(xx=0;xx<(((ApiFpIwuDataIndType*) MailPtr)->bDataLength); xx++)
        {
         printf("%x ", (((ApiFpIwuDataIndType*) MailPtr)->bData[xx]));
        }
        printf("\n");
      }
      break;
      
      
    case API_FP_MESSAGE_WAITING_IND:
      printf("API_FP_MESSAGE_WAITING_IND: %x\n", (((ApiMessageWaitingIndType*) MailPtr)->bIndication));
      break;
    
    case API_FP_CLIP_IND:
      {
        uint8 Number[CID_TELNO_MAX+1], Name[CID_NAME_MAX+1], Time[12], Type, ReasonNumber, ReasonName;
        ApiClipIndDataType *ClipDataPtr;

        ClipDataPtr = ((ApiClipIndDataType *) &((recDataType*) MailPtr)->PrimitiveIdentifier);

        // Clear local variables
        memset(Number, 0x20, sizeof(Number));
        memset(Name, 0x20, sizeof(Name));
        memset(Time, 0x20, sizeof(Time));
        Type = ReasonNumber = ReasonName = 0x00;

        // Get CLIP Type
        Type = (ClipDataPtr->bClipHeader.bClipType);

        // Get Reason codes for name and number
        ReasonName = (((ClipDataPtr->bClipHeader.bClipReason)&0xF0)>>4);
        ReasonNumber = ((ClipDataPtr->bClipHeader.bClipReason)&0x0F);

        // Get Time stamp
        Time[0]  = ((((ClipDataPtr->bClipHeader.bClipDate)&0xF0)>>4)+0x30);

⌨️ 快捷键说明

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