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

📄 hf_demo_app.c

📁 BlueTooth Host Software HandFree相关的lib/app/demo源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                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 + -