headset_init.c

来自「bluelab的一个很好的例程」· C语言 代码 · 共 127 行

C
127
字号
/****************************************************************************
Copyright (C) Cambridge Silicon Radio Ltd. 2004

FILE NAME
    headset_init.c

DESCRIPTION
    

NOTES

*/


/****************************************************************************
    Header files
*/
#include "headset_private.h"
#include "headset_init.h"
#include "headset_config.h"


#include <connection.h>
#include <hfp.h>
#include <panic.h>


/****************************************************************************
NAME    
    headsetHfpInit
    
DESCRIPTION
    Initialise HFP library

RETURNS
    void
*/

void headsetHfpInit( hsTaskData * pApp )
{

    hfp_init_params init;
    
        /*make sure the features we are using are configured*/
    uint16 lSupportedFeatures = configManagerSupportedFeatures (pApp) ;
        
    configManagerHFP_1_5_SupportedFeatures(pApp) ;

    DEBUG(("INIT: HFP Supp[%x] HFP1.5[%c]\n", lSupportedFeatures , (pApp->HFP_1_5_supp_features.HFP_1_5_Is_Enabled)?'T':'F' )) ;
    
    /* Initialise an HFP profile instance */
        /*default to handsfree 1.0*/
    init.supported_profile = hfp_handsfree_profile;

    if ( pApp->HFP_1_5_supp_features.HFP_1_5_Is_Enabled)
    {
        init.supported_profile = hfp_handsfree_15_profile ;
    }

    init.supported_features = lSupportedFeatures;
	init.size_service_record = 0 ;
	init.service_record = 0 ;
    
	init.priority = 255 ;

    HfpInit(getAppTask(), &init );
    

/* 	    Initialise an HSP profile instance */						
    init.supported_profile = hfp_headset_profile;
    init.supported_features = 0;
	init.priority = 255 ;
	init.size_service_record = 0 ;
	init.service_record = 0 ;
    
    HfpInit(getAppTask(), &init );
}



/****************************************************************************
NAME    
    headsetInitComplete
    
DESCRIPTION
    Headset initialisation has completed. 

RETURNS
    void
*/
void headsetInitComplete(hsTaskData *app, const HFP_INIT_CFM_T *cfm)
{
    /* Make sure the profile instance initialisation succeeded. */
    if (cfm->status == hfp_init_success)
    {
        /* Check for an hfp instance, that's registered first */
        if (!app->hfp)
        {
            /* This must be the hfp instance */ 
            app->hfp = cfm->hfp;
        }
        else
        {
            /* Its not HFP so must be HSP */
            app->hsp = cfm->hfp;

            /* Set the class of device to indicate this is a headset */
            ConnectionWriteClassOfDevice(AUDIO_MAJOR_SERV_CLASS | AV_MAJOR_DEVICE_CLASS | AV_MINOR_HEADSET);
    
            /* Disable SDP security  */
            ConnectionSmSetSdpSecurityIn(TRUE);

                /* Register a service record if there is one to be found */
            if (get_service_record_length() )
            {
                ConnectionRegisterServiceRecord(getAppTask(), get_service_record_length(), get_service_record()  );
            }
            
            /* Send an internal message to indicate init has completed */
            MessageSend(getAppTask(), HEADSET_INIT_CFM, 0);
        }
    }
    else
        /* If the profile initialisation has failed then things are bad so panic. */
        Panic();
}

⌨️ 快捷键说明

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