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