📄 cvmcon.cpp
字号:
{
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");
}
static void DataInit(void)
{
HsDataReadyIndCount = 0;
// We are allowed to send up to 5 ready req's in order to utilize the serial string fully
BUSM_SendMailP0(0, USER_TASK, API_PP_DATA_RECEIVE_READY_REQ);
BUSM_SendMailP0(0, USER_TASK, API_PP_DATA_RECEIVE_READY_REQ);
BUSM_SendMailP0(0, USER_TASK, API_PP_DATA_RECEIVE_READY_REQ);
BUSM_SendMailP0(0, USER_TASK, API_PP_DATA_RECEIVE_READY_REQ);
BUSM_SendMailP0(0, USER_TASK, API_PP_DATA_RECEIVE_READY_REQ);
printf("<-API_PP_DATA_RECEIVE_READY_REQ * 5\n");
}
static void DataSend(uint8 Length)
{
if (HsDataReadyIndCount > 0)
{
ApiPpDataSendReqType * NewMailPtr;
NewMailPtr = (ApiPpDataSendReqType*) BUSM_AllocateMail(0, USER_TASK, ((uint16)(sizeof(ApiPpDataSendReqType)+Length-1)));
if(NewMailPtr != NULL)
{
uint8 i;
NewMailPtr->PrimitiveIdentifier = API_PP_DATA_SEND_REQ;
NewMailPtr->bLength = Length;
for (i = 0; i < Length; i++)
{
NewMailPtr->bData[i] = HsDataTestTxCounter++;
}
BUSM_DeliverMail((uint8*) NewMailPtr);
HsDataTestTotalTxCount += Length;
if (HsDataTestMode && clock() && clock() != HsDataTestStartTime)
{
printf("<-API_PP_DATA_SEND_REQ (%u bytes %u total %u bps avg)\n", Length, HsDataTestTotalTxCount,
HsDataTestTotalTxCount*8*CLOCKS_PER_SEC/(clock()-HsDataTestStartTime));
}
else
{
printf("<-API_PP_DATA_SEND_REQ (%u bytes)\n", Length, HsDataTestTotalTxCount);
}
HsDataReadyIndCount--;
}
}
}
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");
BUSM_SendMailP0(0, USER_TASK, CVM_PP_LOCKED_STATUS_REQ);
break;
#endif
case KEY_MESSAGE:
switch(((recDataType*) MailPtr)->bData[0])
{
case 'h':
printf("\nCVM_PP_API: MmiState = %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("x : Start Registration with PpNo1, AC:1234\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("b : test keybeep\n");
printf("p/P : Enable/Disable headset mode\n");
printf("f/F : Enable/Disable handsfree mode\n");
printf("w/W : Busmode: UART/SPI\n");
printf("c/C : Test Clock : Read/Set Timeclock\n");
printf("shift+2: Test Clock : Set remote Timeclock\n");
printf("e/E : Test Eeprom : Read/Write 8 bytes eep at adr 0x0800\n");
printf("g/G : Test RemoteEeprom : Read/Write 8 bytes eep at adr 0x0800\n");
// printf("s/S : Test Ram/Reg: Read/Write 8 bytes ram at adr 0xBFF0\n");
printf("d : Test IwuData: Send 4 bytes data from PP to FP\n");
printf(". : Deregister PpNo1 (PP only)\n");
printf("Shift+7,8,9,0: [/()=] Remote deregister PpNo1-PpNo4\n");
printf("! : PowerOff PP\n");
printf("z : Enter WT mode (GrpID: 0123, HSNo: 01)\n");
printf("Z : Enter WT mode (GrpID: 0123, HSNo: 02)\n");
printf("q : Exit WT mode\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("@ : Read RSSI\n");
printf("l : LockedStatus\n");
printf("? : Extended commands\n\n");
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");
printf("CTRL+U : Special hold/release operation\n");
break;
// case 's':
// {
// CvmRamReadReqType * NewMailPtr;
//
// NewMailPtr = (CvmRamReadReqType*) BUSM_AllocateMail(0, USER_TASK, sizeof(CvmRamReadReqType));
// if(NewMailPtr != NULL)
// {
// NewMailPtr->PrimitiveIdentifier = CVM_RAM_READ_REQ;
// NewMailPtr->w32DataAdr = (uint32)0x0000BFF0L; // read register at adr 0x0000BFF0
// NewMailPtr->bDataLength = 8; // NoOfBytes to read
// BUSM_DeliverMail((uint8*) NewMailPtr);
// }
// printf("Testing: ram/register read 8 bytes at adr 0xBFF0\n");
// }
// break;
//
// case 'S':
// {
// CvmRamWriteReqType * NewMailPtr;
//
// NewMailPtr = (CvmRamWriteReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(CvmRamWriteReqType)+7));
// if(NewMailPtr != NULL)
// {
// NewMailPtr->PrimitiveIdentifier = CVM_RAM_WRITE_REQ;
// NewMailPtr->w32DataAdr = 0x0000BFF0; // write to ram adr 0x0000BFF0
// NewMailPtr->bDataLength = 8;
// NewMailPtr->bData[0] = 0x11;
// NewMailPtr->bData[1] = 0x22;
// NewMailPtr->bData[2] = 0x33;
// NewMailPtr->bData[3] = 0x44;
// NewMailPtr->bData[4] = 0x55;
// NewMailPtr->bData[5] = 0x66;
// NewMailPtr->bData[6] = 0x77;
// NewMailPtr->bData[7] = 0x88;
// BUSM_DeliverMail((uint8*) NewMailPtr);
// }
// printf("Testing: writing 8 bytes at adr 0x0000BFF0\n");
// }
// break;
case 't':
// Send the mail to target:
// ProgramId: O, obsolete always send to the connected target.
// TaskId: USER_TASK
// Primitive: START_PING_PONG
// Parm1: This program ID, debug_ProgramId
// Parm2: This task ID.
BUSM_SendMailP2(0, USER_TASK, START_PING_PONG, (uint8) debug_ProgramId, 0);
printf("Testing communication to Usertask\n");
break;
case 'X': // production test command "tonetest.bat" simulation
BUSM_SendMailP2(0, TB_HANDLE_TASK, TEST_CMD_req, 0x95, 0x01);
printf("<-TB_HANDLE_TASK(0x00), TEST_CMD_req(0x005D), TEST_TONE(0x95), ON(0x01)\n");
break;
case '@':
BUSM_SendMailP0(0, USER_TASK, API_PP_READ_RSSI_REQ);
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 'g':
printf("Testing: remote eeprom read 8 bytes at adr 0x0800\n");
BUSM_SendMailP3(0, USER_TASK, CVM_REMOTE_EEP_READ_REQ, 0x00, 0x08, 8); // read 8 bytes of eeprom at adr 0x0800
break;
case '!':
printf("<-CVM_BAT_POWER_OFF_REQ\n");
BUSM_SendMailP0(0, USER_TASK, CVM_BAT_POWER_OFF_REQ);
break;
case 'G':
{
CvmEepromWriteReqType * NewMailPtr;
NewMailPtr = (CvmEepromWriteReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(CvmEepromWriteReqType)+7));
if(NewMailPtr != NULL)
{
NewMailPtr->PrimitiveIdentifier = CVM_REMOTE_EEP_WRITE_REQ;
NewMailPtr->wEepAdr = 0x0800;
NewMailPtr->bEepLength = 8;
NewMailPtr->bEepData[0] = 0x88;
NewMailPtr->bEepData[1] = 0x77;
NewMailPtr->bEepData[2] = 0x66;
NewMailPtr->bEepData[3] = 0x55;
NewMailPtr->bEepData[4] = 0x44;
NewMailPtr->bEepData[5] = 0x33;
NewMailPtr->bEepData[6] = 0x22;
NewMailPtr->bEepData[7] = 0x11;
BUSM_DeliverMail((uint8*) NewMailPtr); // write 8 bytes in eeprom at adr 0x0800
}
printf("Testing: eeprom write 8 bytes at adr 0x0800\n");
}
break;
case 'c':
printf("Testing: read realtime clock\n");
BUSM_SendMailP0(0, USER_TASK, CVM_GET_TIME_REQ);
break;
case 'C':
{
CvmSetTimeReqType * NewMailPtr;
NewMailPtr = (CvmSetTimeReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(CvmSetTimeReqType)));
if(NewMailPtr != NULL)
{
NewMailPtr->PrimitiveIdentifier = CVM_SET_TIME_REMOTE_REQ;
NewMailPtr->bYear = 3;
NewMailPtr->bMonth = 1;
NewMailPtr->bDay = 9;
NewMailPtr->bHours = 16;
NewMailPtr->bMinutes = 57;
BUSM_DeliverMail((uint8*) NewMailPtr); // write 8 bytes in eeprom at adr 0x0800
}
printf("Testing: set realtime clock to: 9-1-2003, 16:57\n");
}
break;
case 0x22:
{
CvmSetTimeReqType * NewMailPtr;
NewMailPtr = (CvmSetTimeReqType*) BUSM_AllocateMail(0, USER_TASK, (sizeof(CvmSetTimeReqType)));
if(NewMailPtr != NULL)
{
NewMailPtr->PrimitiveIdentifier = CVM_SET_TIME_REQ;
NewMailPtr->bYear = 9;
NewMailPtr->bMonth = 9;
NewMailPtr->bDay = 9;
NewMailPtr->bHours = 9;
NewMailPtr->bMinutes = 9;
BUSM_DeliverMail((uint8*) NewMailPtr); // write 8 bytes in eeprom at adr 0x0800
}
printf("Testing: set remote realtime clock to: 9-9-2009, 09:09\n");
}
break;
case 'a': // OpenAudio
BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_OPEN_REQ);
break;
case 'A': // CloseAudio
BUSM_SendMailP0(0, USER_TASK, CVM_PP_AUDIO_CLOSE_REQ);
break;
case 'm': // StartMelody
BUSM_SendMailP3(0, USER_TASK, CVM_PP_AUDIO_START_MELODY_REQ, 1, 9, 0);
break;
case 'n': // StartTone
BUSM_SendMailP2(0, USER_TASK, CVM_PP_AUDIO_START_TONE_REQ, 13, 9);
break;
case 'M': // StopMelody
BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_MELODY_REQ, 0);
break;
case 'N': // StopTone
BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_STOP_TONE_REQ, 0);
break;
case 'b': // KeyBeep
BUSM_SendMailP1(0, USER_TASK, CVM_PP_AUDIO_KEY_BEEP_REQ, 9);
break;
case 'l': // LockedStatus
BUSM_SendMailP0(0, USER_TASK, CVM_PP_LOCKED_STATUS_REQ);
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;
case 'z': // Enter WT mode (GrpID: 0123, HSNo: 01)
printf("<-API_WT_ENTER_REQ, GrpID: 0123, HSNo: 01\n");
BUSM_SendMailP3(0, USER_TASK, API_WT_ENTER_REQ, 23, 01, 01);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -