📄 cvmcon.cpp
字号:
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 + -