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

📄 main.c

📁 此软件为BlueLab 3.6.2 平台所自带的蓝牙耳机源码
💻 C
📖 第 1 页 / 共 4 页
字号:
    break;        case HFP_RELEASE_HELD_REJECT_WAITING_CALL_CFM :         MAIN_DEBUG(("HS3 : HFP_RELEASE_HELD_REJECT_WAITING_CALL_CFM_T [%c]\n", (((HFP_RELEASE_HELD_REJECT_WAITING_CALL_CFM_T * )message)->status == hfp_success) ? 'T':'F' )) ;         headsetHandleThreeReleaseHeldRejectWaitingCfm (&theHeadset ,(HFP_RELEASE_HELD_REJECT_WAITING_CALL_CFM_T * )message) ;    break;    case HFP_RELEASE_ACTIVE_ACCEPT_OTHER_CALL_CFM :         MAIN_DEBUG(("HS3 : HFP_RELEASE_ACTIVE_ACCEPT_OTHER_CALL_CFM_T [%c]\n" , (((HFP_RELEASE_ACTIVE_ACCEPT_OTHER_CALL_CFM_T *) message)->status == hfp_success)? 'T':'F' )) ;         headsetHandleThreeReleaseActiveAcceptOtherCfm (&theHeadset ,(HFP_RELEASE_ACTIVE_ACCEPT_OTHER_CALL_CFM_T *) message) ;    break;    case HFP_HOLD_ACTIVE_ACCEPT_OTHER_CALL_CFM :         MAIN_DEBUG(("HS3 : HFP_HOLD_ACTIVE_ACCEPT_OTHER_CALL_CFM_T [%c]\n", (((HFP_HOLD_ACTIVE_ACCEPT_OTHER_CALL_CFM_T * ) message)->status == hfp_success) ? 'T':'F' )) ;         headsetHandleThreeHoldActiveAcceptOtherCfm(&theHeadset ,(HFP_HOLD_ACTIVE_ACCEPT_OTHER_CALL_CFM_T * ) message);    break;    case HFP_ADD_HELD_CALL_CFM :         MAIN_DEBUG(("HS3 : HFP_ADD_HELD_CALL_CFM_T [%c]\n", (((HFP_ADD_HELD_CALL_CFM_T *)message)->status == hfp_success) ? 'T':'F' )) ;         headsetHandleThreeAddCall(&theHeadset ,(HFP_ADD_HELD_CALL_CFM_T *)message) ;    break ;    case HFP_EXPLICIT_CALL_TRANSFER_CFM :         MAIN_DEBUG(("HS3 : HFP_EXPLICIT_CALL_TRANSFER_CFM_T [%c]\n", (((HFP_EXPLICIT_CALL_TRANSFER_CFM_T * )message)->status == hfp_success)? 'T':'F'   )) ;        headsetHandleThreeExplicitTransfer (&theHeadset ,(HFP_EXPLICIT_CALL_TRANSFER_CFM_T * )message) ;    break ;/*******************************************************************//***Response Hold Messages*/    case HFP_RESPONSE_HOLD_STATUS_CFM:        MAIN_DEBUG(("HS: HFP_RESPONSE_HOLD_STATUS_CFM [%d]\n" , ((HFP_RESPONSE_HOLD_STATUS_CFM_T *)message)->status )) ;    break;    case HFP_RESPONSE_HOLD_HELD_CFM :        MAIN_DEBUG(("HS: HFP_RESPONSE_HOLD_HELD_CFM [%d]\n" , ((HFP_RESPONSE_HOLD_HELD_CFM_T *)message)->status )) ;    break;    case HFP_RESPONSE_HOLD_ACCEPT_CFM:        MAIN_DEBUG(("HS: HFP_RESPONSE_HOLD_ACCEPT_CFM [%d]\n" , ((HFP_RESPONSE_HOLD_ACCEPT_CFM_T*)message)->status )) ;    break;    case HFP_RESPONSE_HOLD_REJECT_CFM:        MAIN_DEBUG(("HS: HFP_RESPONSE_HOLD_REJECT_CFM [%d]\n" , ((HFP_RESPONSE_HOLD_REJECT_CFM_T*)message)->status )) ;    break;    case HFP_RESPONSE_HOLD_STATUS_IND:        headsethandleResponseHoldInd ( &theHeadset , (HFP_RESPONSE_HOLD_STATUS_IND_T *)message ) ;    break;/*******************************************************************/       case HFP_SUBSCRIBER_NUMBER_CFM:        MAIN_DEBUG(("HS3: HFP_SUBSCRIBER_NUMBER_CFM [%c]\n" , (((HFP_SUBSCRIBER_NUMBER_CFM_T*)message)->status == hfp_success)  ? 'T' :'F' )) ;    break ;    case HFP_SUBSCRIBER_NUMBER_IND:        {            uint16 i=0;                            MAIN_DEBUG(("HS3: HFP_SUBSCRIBER_NUMBER_IND [%d]\n" , ((HFP_SUBSCRIBER_NUMBER_IND_T*)message)->service )) ;            for (i=0;i< ((HFP_SUBSCRIBER_NUMBER_IND_T*)message)->size_number ; i++)            {                MAIN_DEBUG(("%c", ((HFP_SUBSCRIBER_NUMBER_IND_T*)message)->number[i])) ;            }            MAIN_DEBUG(("\n")) ;        }     break ;    case HFP_CURRENT_CALLS_CFM:        MAIN_DEBUG(("HS3: HFP_CURRENT_CALLS_CFM [%c]\n", (((HFP_CURRENT_CALLS_CFM_T*)message)->status == hfp_success)  ? 'T' :'F' )) ;    break ;    case HFP_CURRENT_CALLS_IND:        MAIN_DEBUG(("HS3: HFP_CURRENT_CALLS_IND id[%d] mult[%d] status[%d]\n" ,                                            ((HFP_CURRENT_CALLS_IND_T*)message)->call_idx ,                                             ((HFP_CURRENT_CALLS_IND_T*)message)->multiparty  ,                                             ((HFP_CURRENT_CALLS_IND_T*)message)->status)) ;        headsetHandleCurrentCallsInd (  &theHeadset , (HFP_CURRENT_CALLS_IND_T *) message ) ;                                              break;/******************************************************************//**New Esco handling messages**/              case    HFP_AUDIO_CONNECT_IND:        MAIN_DEBUG(("****HFP_AUDIO_CONNECT_IND\n")) ;        audioHandleSyncConnectInd( &theHeadset , (HFP_AUDIO_CONNECT_IND_T *)message ) ;    break ;    case HFP_AUDIO_CONNECT_CFM:        MAIN_DEBUG(("****HFP_AUDIO_CONNECT_CFM[%x][%x][%s%s%s] r[%d]t[%d]\n", ((HFP_AUDIO_CONNECT_CFM_T *)message)->status ,                                                      (int)((HFP_AUDIO_CONNECT_CFM_T *)message)->audio_sink ,                                                      ((((HFP_AUDIO_CONNECT_CFM_T *)message)->link_type == sync_link_sco) ? "SCO" : "" )      ,                                                        ((((HFP_AUDIO_CONNECT_CFM_T *)message)->link_type == sync_link_esco) ? "eSCO" : "" )    ,                                                      ((((HFP_AUDIO_CONNECT_CFM_T *)message)->link_type == sync_link_unknown) ? "unk?" : "" ) ,                                                      (int)((HFP_AUDIO_CONNECT_CFM_T *)message)->rx_bandwidth ,                                                      (int)((HFP_AUDIO_CONNECT_CFM_T *)message)->tx_bandwidth                                                       )) ;        audioHandleSyncConnectCfm ( &theHeadset , (HFP_AUDIO_CONNECT_CFM_T *)message ) ;            break ;    case HFP_AUDIO_DISCONNECT_IND:        MAIN_DEBUG(("****HFP_AUDIO_DISCONNECT_IND [%x]\n", ((HFP_AUDIO_DISCONNECT_IND_T *)message)->status)) ;        audioHandleSyncDisconnectInd (&theHeadset , (HFP_AUDIO_DISCONNECT_IND_T *)message) ;    break ;/*********************************************************************//*Other 1.5 messages*/	case HFP_SIGNAL_IND:        MAIN_DEBUG(("HS: HFP_SIGNAL_IND [%d]\n", ((HFP_SIGNAL_IND_T* )message)->signal )) ;    break ;	case HFP_ROAM_IND:        MAIN_DEBUG(("HS: HFP_ROAM_IND [%d]\n", ((HFP_ROAM_IND_T* )message)->roam )) ;    break; 	case HFP_BATTCHG_IND:             MAIN_DEBUG(("HS: HFP_BATTCHG_IND [%d]\n", ((HFP_BATTCHG_IND_T* )message)->battchg )) ;    break;	case HFP_CALLHELD_IND:         MAIN_DEBUG(("HS: HFP_CALLHELD_IND_T [%d]\n", ((HFP_CALLHELD_IND_T* )message)->callheld )) ;    break ;/*******************************************************************/    default :        MAIN_DEBUG(("HS :  HFP ? [%x]\n",id)) ;    break ;        }}/*************************************************************************NAME        handleHSMessage    DESCRIPTION    handles the Headset MessagesRETURNS    */static void handleHSMessage  ( Task task, MessageId id, Message message ){   headsetState current_headset_state = stateManagerGetState();           /* Handle incoming message identified by its message ID */ switch (id )                {  /* -- Headset Application Messages */  case HEADSET_INIT_CFM:            MAIN_DEBUG(("HEADSET_INIT_CFM\n"));   switch(current_headset_state)            {            case headsetPoweringOn:            /* The headset is now initialised */                            /*init the configurable parameters*/            headsetInitUserFeatures ( ) ;                break;            case headsetConnectable:            case headsetConnDiscoverable:            case headsetConnected:            case headsetOutgoingCallEstablish:            case headsetIncomingCallEstablish:            case headsetActiveCall:            default:                unhandledHeadsetState(current_headset_state, id);            }            break;									default:            MAIN_DEBUG(("HS : HS ? [%x]\n",id));			break;    }}/*************************************************************************NAME        headsetInitUserFeatures    DESCRIPTION    This function initialises all of the user features - this will result in a    poweron message if a user event is configured correctly and the headset will     complete the power onRETURNS*/static void headsetInitUserFeatures ( void ) {	/* Initialise the Sound Manager */    soundManagerInit(&theHeadset) ;    	/* Initialise the LED Manager */	LEDManagerInit( &theHeadset.theLEDTask ) ;		/* Initialise the Power Manager */	theHeadset.power = powerManagerInit();            /* Initialise the Button Manager */    buttonManagerInit(&theHeadset.theButtonTask , &theHeadset.task) ; 			/* Once system Managers are initialised, load up the configuration */    configManagerInit(&theHeadset);    /* Set to a known value*/    theHeadset.VoiceRecognitionIsActive = FALSE ;    /* Enter the limbo state as we may be ON due to a charger being plugged in */    stateManagerEnterLimboState ( &theHeadset ) ;            if (theHeadset.VolumeOrientationIsInverted)    {        MessageSend ( &theHeadset.task , EventVolumeOrientationInvert , 0 ) ;    }        /*what is the effect of this on motorola?*/    LedManagerEnableLEDS ( &theHeadset.theLEDTask ) ;                /*check the charger input pin to see if the charger is connected*/    if (theHeadset.input_PIO.charger_input != 0xF )    {        uint16 lPin = ( 1<< theHeadset.input_PIO.charger_input) ;                   if (PioGet() & lPin)        {            MessageSend(&theHeadset.task, EventChargerConnected , 0 );        }    }}/*************************************************************************NAME        app_handler    DESCRIPTION    This is the main message handler for the Headset Application.  All    messages pass through this handler to the subsequent handlers.RETURNS*/static void app_handler(Task task, MessageId id, Message message){    messageType_t lMsgType = MSGTYPE_UNKNOWN;        /* Get the origin of the message*/    lMsgType = headsetGetMessageType(id);            /* Handle the message with the appropriate handler */    switch ( lMsgType )    {    case (MSGTYPE_CL):        handleCLMessage(task, id,  message);                break;            case (MSGTYPE_HFP):        handleHFPMessage(task, id,  message);        break;            case (MSGTYPE_HS):        handleHSMessage(task, id,  message);        break;            case (MSGTYPE_UE):        handleUEMessage(task, id,  message);        break;		    default:           break;    }        #ifdef TEST_HARNESS    if ((lMsgType == MSGTYPE_CL)||(lMsgType == MSGTYPE_HFP))        test_handle_lib_message(task, id,  message);#endif    }/* The Headset Application starts here...*/int main(void){          DEBUG (("Main [%s]\n",__TIME__));        /*the internal regs must be latched on (smps and LDO)*/    /*set the feature bits - these will be overwitten on configuration*/    theHeadset.features.PowerOnSMPS    = TRUE ;    theHeadset.features.PowerOnLDO    = TRUE ;    LEDManagerSetPowerPin ( &theHeadset , POWER_ON ) ;	    /* Set up the Application task handler */    theHeadset.task.handler = app_handler;		/* Initialise headset state */	theHeadset.profile_connected = hfp_no_profile;    theHeadset.hfp = NULL;    theHeadset.hsp = NULL;                    /* Initialise the Connection Library */    ConnectionInit(&theHeadset.task);    #ifdef TEST_HARNESS    test_register(&theHeadset.task);#endif        /* Start the message scheduler loop */    MessageLoop();    /* Never get here...*/    return 0;}#ifdef DEBUG_MESSAGES#define DEBUG_MSG(x) DEBUG(x)#else#define DEBUG_MSG(x) #endif    /*Determine the origin of the message*/static messageType_t headsetGetMessageType (MessageId pMsg ){    messageType_t lMsgType = MSGTYPE_UNKNOWN ;         /* determine the message type based on base and offset */    if ( ( pMsg >= EVENTS_EVENT_BASE ) && ( pMsg <= EVENTS_LAST_EVENT ) )    {        /* Message is a User Generated Event */        lMsgType = MSGTYPE_UE ;         DEBUG_MSG (( "HS: MT UE [%x]\n", pMsg ));    }    if ( (pMsg >= CL_MESSAGE_BASE) && (pMsg <= CL_MESSAGE_TOP) )    {        lMsgType = MSGTYPE_CL ;        DEBUG_MSG (( "HS: MT CL [%x]\n", pMsg ));    }    if ( (pMsg >= HFP_MESSAGE_BASE ) && (pMsg <= HFP_EXTRA_INDICATOR_UPDATE_IND) )    {             lMsgType = MSGTYPE_HFP ;        DEBUG_MSG (( "HS: MT HFP [%x]\n", pMsg ));    }        if ( (pMsg >= HEADSET_MSG_BASE ) && (pMsg <= HEADSET_MESSAGE_TOP) )    {             lMsgType = MSGTYPE_HS ;        DEBUG_MSG (( "HS: MT HS [%x]\n", pMsg ));    }     /* This message is not one of the above */    if (lMsgType == MSGTYPE_UNKNOWN)    {        /* Pass this message to default handler */        DEBUG_MSG(("MSGTYPE ? [%x]\n", pMsg)) ;    }    return lMsgType ;}#ifdef DEBUG_MALLOC #define MA_DEBUG(x) DEBUG(x)#else#define MA_DEBUG(x)#endifvoid * mallocPanic ( size_t pSize ){    static uint16 lSize = 0 ;    static uint16 lCalls = 0 ;        void * lResult;     lCalls++ ;    lSize += pSize ;        MA_DEBUG(("HS :n[%d] s[%d] t[%d]\n",lCalls, pSize, lSize));             lResult = malloc ( pSize ) ;              /*and panic if the malloc fails*/    if ( lResult == NULL )    {        MA_DEBUG(("MA : !\n")) ;        Panic() ;    }        return lResult ;              }/*************************************************************************NAME        handleHFPStatusCFM    DESCRIPTION    Handles a status response from the HFP and sends an error message if one was receivedRETURNS*/static void handleHFPStatusCFM ( hsTaskData * theHeadset , hfp_lib_status pStatus ) {    if (pStatus != hfp_success )    {        MAIN_DEBUG(("HS: HFP CFM Err [%d]\n" , pStatus)) ;        MessageSend ( &theHeadset->task , EventError , 0 ) ;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -