📄 hf_demo_app.c
字号:
printf("Param mode %i\n",prim->mode);
printf("Param mpty %i\n\n",prim->mpty);
if(prim->data!=NULL)
{
type = pmalloc(prim->dataLength + 1);
MemCpy(type,prim->data, prim->dataLength);
type[prim->dataLength] = '\0';
printf("Param data %s\n",prim->data);
}
break;
}
case HF_COPS_CFM:
{
HF_COPS_CFM_T * prim;
uint8_t *name = NULL;
prim = (HF_COPS_CFM_T *) thePrim;
if(prim->result)
{
name = pmalloc(prim->dataLength + 1);
MemCpy(name, prim->data, prim->dataLength);
name[prim->dataLength] = '\0';
printf("Network operator name: %s", prim->data);
}
pfree(prim->data);
if(name != NULL)
{
pfree(name);
}
break;
}
case HF_CNUM_IND:
{
HF_CNUM_IND_T * prim;
uint8_t *number;
uint8_t *type;
prim = (HF_CNUM_IND_T *) thePrim;
number = pmalloc(prim->bodyLength + 1);
MemCpy(number,prim->body, prim->bodyLength);
number[prim->bodyLength] = '\0';
type = pmalloc(prim->dataLength + 1);
MemCpy(type,prim->data, prim->dataLength);
type[prim->dataLength] = '\0';
printf("\tNumber: %s\n", number);
printf("\tType: %s\n", type);
printf("\tservice: %c", prim->service);
pfree(prim->data);
pfree(prim->body);
break;
}
case HF_CHLD_IND:
{
HF_CHLD_IND_T * prim;
uint8_t *body;
prim = (HF_CHLD_IND_T *) thePrim;
printf("CHLD Support: %s\n", prim->chldString);
if(instData->currentConnection == HF_CONNECTION)
{
body = pmalloc(12);
sprintf(body, "AT+CCWA=%i\r\n\0",
(instData->conInstData[HF_CONNECTION].supportedFeatures & HF_SUPPORT_CALL_WAITING_THREE_WAY_CALLING) ? 1 : 0);
HfAtCmdReqSend(12, body, HF_CONNECTION);
}
break;
}
#endif
case HF_AT_CMD_IND:
{
uint16_t result;
uint16_t returnValue1;
uint16_t returnValue2;
bool_t commandError;
uint16_t charsConsumed;
char *continueFrom;
HF_AT_CMD_IND_T *myPrim;
myPrim = (HF_AT_CMD_IND_T *) thePrim;
#if (PRINT_AT_CMD_VERBOSE != 0)
{
int i;
printf("\nReceived AT data: ");
for (i=0; i<myPrim->payloadLength; i++)
{
switch (myPrim->payload[i])
{
case '\r':
{
printf("\\r");
break;
}
case '\n':
{
printf("\\n");
break;
}
default:
{
printf("%c", myPrim->payload[i]);
break;
}
}
}
printf("\n");
}
#endif
result = HfGetAtToken( (uint8_t*)myPrim->payload, &continueFrom, &returnValue1, &returnValue2, &charsConsumed);
commandError = FALSE;
switch (result)
{
case OK_TOKEN:
{
#if (PRINT_AT_CMD != 0)
printf("OK_TOKEN\n");
#endif
if (instData->state == operatorQuery)
{
HfAtCopsQuerySend(HF_CONNECTION);
instData->state = instData->preState;
}
}
break;
case ERROR_TOKEN:
{
#if (PRINT_AT_CMD != 0)
printf("ERROR_TOKEN\n");
#endif
}
break;
case CCWA_TOKEN:
{
printf("BEEP - call waiting...\n");
}
break;
case CSR_SMS_HF_TOKEN:
{
printf("Incoming SMS:\n Index: ");
while (*continueFrom != ',')
{
printf("%c", *continueFrom);
continueFrom++;
}
continueFrom += 2; /* Skip ',' and '"' */
printf("\n Number: ");
while (*continueFrom != '"')
{
printf("%c", *continueFrom);
continueFrom++;
}
continueFrom += 3; /* Skip '"', ',' and '"' */
printf("\n Name: ");
while (*continueFrom != '"')
{
printf("%c", *continueFrom);
continueFrom++;
}
printf("\n");
}
break;
case CSR_GET_SMS_HF_TOKEN:
{
printf("SMS retrieved: ");
while (*continueFrom != '\r')
{
printf("%c", *continueFrom);
continueFrom++;
}
printf("\n");
}
break;
case CSR_TOKEN:
{
printf("+CSR received: ");
while (*continueFrom != '\r')
{
printf("%c", *continueFrom);
continueFrom++;
}
printf("\n");
}
break;
case CSR_TXT_HF_TOKEN:
{
printf("Text received: ");
while (*continueFrom != '\r')
{
printf("%c", *continueFrom);
continueFrom++;
}
printf("\n");
}
break;
case CSR_SF_HF_TOKEN:
{
printf("C2C initialisation response received: ");
while (*continueFrom != '\r')
{
printf("%c", *continueFrom);
continueFrom++;
}
printf("\n");
}
break;
case CSR_BAT_HF_TOKEN:
{
printf("Battery level requested\n");
sendBatteryLevel(instData, instData->batteryLevel);
}
break;
case CLIP_TOKEN:
{
printf("CLIP received: ");
while (*continueFrom != '\r')
{
printf("%c", *continueFrom);
continueFrom++;
}
printf("\n");
}
break;
default:
{
#if (PRINT_AT_CMD != 0)
printf("Unhandled AT cmd\n");
#endif
}
break;
}
#ifdef ADVANCED_HF
switch (instData->conInstData[myPrim->connectionType].atState)
{
case sequence1:
{
if (result == BRSF_TOKEN)
{
printf("BRSF_TOKEN\n");
instData->conInstData[myPrim->connectionType].atResultCounter++;
}
else if (result == OK_TOKEN)
{
printf("OK_TOKEN\n");
instData->conInstData[myPrim->connectionType].atResultCounter++;
}
else if (result == ERROR_TOKEN)
{
printf("ERROR_TOKEN\n");
printf("Connected device does not support HFP ver. 1.0\n");
instData->conInstData[myPrim->connectionType].atResultCounter = 2;
}
else
{
printf("Unhandled AT cmd in the Service Level Connection start-up sequence\n");
}
if (instData->conInstData[myPrim->connectionType].atResultCounter == 2)
{
appSendCindSupport();
instData->conInstData[myPrim->connectionType].atState = sequence2;
instData->conInstData[myPrim->connectionType].atResultCounter = 0;
}
break;
}
case sequence2:
{
if (result == CIND_SUPPORT_TOKEN)
{
printf("CIND_SUPPORT_TOKEN\n");
instData->conInstData[myPrim->connectionType].atResultCounter++;
}
else if (result == OK_TOKEN)
{
printf("OK_TOKEN\n");
instData->conInstData[myPrim->connectionType].atResultCounter++;
}
else
{
printf("Unhandled AT cmd in the Service Level Connection start-up sequence\n");
}
if (instData->conInstData[myPrim->connectionType].atResultCounter == 2)
{
appSendCindvalue();
instData->conInstData[myPrim->connectionType].atState = sequence3;
instData->conInstData[myPrim->connectionType].atResultCounter = 0;
}
break;
}
case sequence3:
{
if (result == CIND_STATUS_TOKEN)
{
printf("CIND_STATUS_TOKEN\n");
instData->conInstData[myPrim->connectionType].atResultCounter++;
}
else if (result == OK_TOKEN)
{
printf("OK_TOKEN\n");
instData->conInstData[myPrim->connectionType].atResultCounter++;
}
else
{
printf("Unhandled AT cmd in the Service Level Connection start-up sequence\n");
}
if (instData->conInstData[myPrim->connectionType].atResultCounter == 2)
{
appSendCmerValue("3,0,0,1");
instData->conInstData[myPrim->connectionType].atState = sequence4;
instData->conInstData[myPrim->connectionType].atResultCounter = 0;
}
break;
}
case sequence4:
{
if (result == OK_TOKEN)
{
printf("OK_TOKEN\n");
instData->conInstData[myPrim->connectionType].atResultCounter++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -