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

📄 headset_config.c

📁 蓝牙耳机的源代码,结合csr的开发套件使用
💻 C
字号:
/****************************************************************************Copyright (C) Cambridge Silicon Radio Ltd. 2005-2006Part of BlueLab 3.5.2-releaseFILE NAME    headset_config.c    DESCRIPTION    */#include "headset_config.h"#include <ps.h>#include <string.h>#include <stdlib.h>/****************************************************************************//* Reference the default configuartion definition files */ 	extern const config_type csr_pioneer_default_config;  /****************************************************************************//* Identify each default configuration, this defines an offset into the main config table */typedef enum{	/* CSR Headset Pioneer */ 	csr_pioneer = (0),       	entry_1 = (0),  	entry_2 = (0),  	entry_3 = (0), 	entry_4 = (0),     	entry_5 = (0),    entry_6 = (0),  	last_config_id = (7)}config_id_type; /****************************************************************************//* Table of default configurations */const config_type* const default_configs[] = { 	/* CSR Headset Pioneer */	 &csr_pioneer_default_config,  	0,  	0, 	0, 	0, 	0, 	0,};/****************************************************************************/const uint8 * const default_service_records[] = {		/* CSR Headset Pioneer */ 	0, 	0, 	0, 	0, 	0, 	0,    0,} ;/****************************************************************************/const uint16 * const default_service_record_lengths[] = {		/* CSR Headset Pioneer */ 	0, 	0, 	0, 	0, 	0, 	0,    0,} ;/****************************************************************************//****************************************************************************//* Key defintion structure */typedef struct{ 	uint16    length; 	const uint16* data;}key_type;/****************************************************************************NAME  	getkeyDESCRIPTION 	Access specified key in constant space RETURNS 	void*/static key_type getkey(config_id_type config_id, uint16 key_id){ 	key_type key = {0, 0};  	switch(key_id) 	{   		case PSKEY_BATTERY_CONFIG:      		key.length = default_configs[config_id]->battery_config->length;      		key.data = (uint16*)&default_configs[config_id]->battery_config->value;      		break;  		case PSKEY_BUTTON_CONFIG:        	key.length = default_configs[config_id]->button_config->length;        	key.data = (uint16*)&default_configs[config_id]->button_config->value;        	break;  		case PSKEY_BUTTON_PATTERN_CONFIG:        	key.length = default_configs[config_id]->button_pattern_config->length;        	key.data = (uint16*)&default_configs[config_id]->button_pattern_config->value;        	break;		case PSKEY_HFP_SUPPORTED_FEATURES:        	key.length = default_configs[config_id]->supported_features_config->length;   			key.data = (uint16*)&default_configs[config_id]->supported_features_config->value;            break ;            		case PSKEY_INPUT_PIO_BLOCK:   			key.length = default_configs[config_id]->input_pio_block->length;   			key.data = (uint16*)&default_configs[config_id]->input_pio_block->value;   			break;                         case PSKEY_HFP_1_5_SUPPORTED_FEATURES:            key.length = default_configs[config_id]->HFP_1_5_features_config->length;   			key.data = (uint16*)&default_configs[config_id]->HFP_1_5_features_config->value;   			break ;        case PSKEY_NETWORK_SERVICE_IND_TIME:        	key.length = default_configs[config_id]->network_ind_time->length;   			key.data = (uint16*)&default_configs[config_id]->network_ind_time->value;   			break;                  		case PSKEY_MUTE_REMIND_TIME:        	key.length = default_configs[config_id]->mute_remind_timeout->length;        	key.data = (uint16*)&default_configs[config_id]->mute_remind_timeout->value;        	break;  		case PSKEY_POWER_ON_TIMEOUT:        	key.length = default_configs[config_id]->power_on_timeout->length;        	key.data = (uint16*)&default_configs[config_id]->power_on_timeout->value;        	break;                      case PSKEY_POWER_OFF_DISABLED_TIME:   			key.length = default_configs[config_id]->auto_disconnect_timeout->length;   			key.data = (uint16*)&default_configs[config_id]->auto_disconnect_timeout->value;   			break;                              case PSKEY_VOLUME_ORIENTATION:       	    key.length = default_configs[config_id]->volume_orientation->length;   			key.data = (uint16*)&default_configs[config_id]->volume_orientation->value;   		 break;   		case PSKEY_PAIRING_TIMEOUT:   			key.length = default_configs[config_id]->pairing_timeout->length;   			key.data = (uint16*)&default_configs[config_id]->pairing_timeout->value;   			break;     		case PSKEY_AUTOMATIC_SWITCH_OFF:   			key.length = default_configs[config_id]->auto_switch_off_timeout->length;   			key.data = (uint16*)&default_configs[config_id]->auto_switch_off_timeout->value;   			break;     		case PSKEY_RADIO_CONFIG:   			key.length = default_configs[config_id]->radio->length;   			key.data = (uint16*)&default_configs[config_id]->radio->value;   			break;     		case PSKEY_NIMH_CHARGER_CONFIG:   			key.length = default_configs[config_id]->nimh_charger->length;   			key.data = (uint16*)&default_configs[config_id]->nimh_charger->value;   			break;     		case PSKEY_FEATURE_BLOCK:   			key.length = default_configs[config_id]->features->length;   			key.data = (uint16*)&default_configs[config_id]->features->value;   			break;     		case PSKEY_SPEAKER_GAIN_MAPPING:   			key.length = default_configs[config_id]->volume->length;   			key.data = (uint16*)&default_configs[config_id]->volume->value;   			break;     		case PSKEY_NO_LED_FILTERS:   			key.length = default_configs[config_id]->no_led_filters->length;   			key.data = (uint16*)&default_configs[config_id]->no_led_filters->value;   			break;     		case PSKEY_LED_FILTERS:   			key.length = default_configs[config_id]->led_filters->length;   			key.data = (uint16*)&default_configs[config_id]->led_filters->value;   			break;     		case PSKEY_NO_LED_STATES:   			key.length = default_configs[config_id]->no_led_states->length;   			key.data = (uint16*)&default_configs[config_id]->no_led_states->value;   			break;     		case PSKEY_LED_STATES:   			key.length = default_configs[config_id]->led_states->length;   			key.data = (uint16*)&default_configs[config_id]->led_states->value;   			break;     		case PSKEY_NO_LED_EVENTS:   			key.length = default_configs[config_id]->no_led_events->length;   			key.data = (uint16*)&default_configs[config_id]->no_led_events->value;   			break;     		case PSKEY_LED_EVENTS:   			key.length = default_configs[config_id]->led_events->length;   			key.data = (uint16*)&default_configs[config_id]->led_events->value;   			break;     		case PSKEY_EVENTS_A:   			key.length = default_configs[config_id]->events_a->length;   			key.data = (uint16*)&default_configs[config_id]->events_a->value;   			break;     		case PSKEY_EVENTS_B:   			key.length = default_configs[config_id]->events_b->length;   			key.data = (uint16*)&default_configs[config_id]->events_b->value;   			break;     		case PSKEY_NO_TONES:   			key.length = default_configs[config_id]->no_tone_events->length;   			key.data = (uint16*)&default_configs[config_id]->no_tone_events->value;   			break;     		case PSKEY_TONES:   			key.length = default_configs[config_id]->tones->length;   			key.data = (uint16*)&default_configs[config_id]->tones->value;   			break;     		case PSKEY_PIO_BLOCK:   			key.length = default_configs[config_id]->pio_block->length;   			key.data = (uint16*)&default_configs[config_id]->pio_block->value;   			break;        case PSKEY_LINK_LOSS_NUM_RETRIES:            key.length = default_configs[config_id]->link_loss_num_retries->length;            key.data = (uint16*)&default_configs[config_id]->link_loss_num_retries->value;   			break;  		case PSKEY_LAST_USED_AG:  		case PSKEY_DEFAULT_AG:  		case PSKEY_CONFIGURATION_ID:  		default:   			break; 	} 	return key;}/****************************************************************************NAME  	get_config_idDESCRIPTION 	This function is called to read the configuration ID RETURNS 	Defaults to config 0 if the key doesn't exist*/static uint16 get_config_id(uint16 key){ 	/* Default to CSR standard configuration */ 	uint16 id = 0;  	/* Read the configuration ID.  This identifies the configuration held in       constant space */ 	if(PsRetrieve(key, &id, sizeof(uint16))) 	{  		if(id >= last_config_id)  		{             			id = 0;  		} 	}  	return id;}/****************************************************************************NAME  	ConfigRetrieveDESCRIPTION 	This function is called to read a configuration key.  If the key exists 	in persistent store it is read from there.  If it does not exist then 	the default is read from constant space RETURNS 	0 if no data was read otherwise the length of data*/uint16 ConfigRetrieve(uint16 key_id, void* data, uint16 len){ 	uint16 ret_len; 	uint16 config_id;  	/* Read the Configuration ID */ 	config_id = get_config_id(PSKEY_CONFIGURATION_ID);    	/* Read requested key from PS if it exists */ 	ret_len = PsRetrieve(key_id, data, len);  	/* If no key exists then read the parameters from the default configuration       held in constant space */ 	if(!ret_len) 	{  		/* Access the required configuration */  		if(default_configs[config_id])  		{   			/* Read the key */   			key_type key = getkey(config_id, key_id);      			/* Providing the requested length matches the entry in constant space */   			if(key.length == len)   			{    			/* Copy from constant space */    			memcpy(data, key.data, len);    			ret_len = len;   			}  		} 	}  	return ret_len;} uint8 * get_service_record ( void ) {	uint16 lIndex = get_config_id(PSKEY_CONFIGURATION_ID);    	uint8 * lServiceRecord = (uint8*) default_service_records[lIndex] ;		DEBUG(("CONF: Service_Record[%d][%d]\n",lIndex , (int)lServiceRecord)) ;    		return lServiceRecord ;}uint16 get_service_record_length ( void ) {	uint16 lIndex = get_config_id(PSKEY_CONFIGURATION_ID);        uint16 lLength = 0 ;    if (default_service_record_lengths[lIndex])    {	   lLength = *default_service_record_lengths[lIndex] ;    }    	DEBUG(("CONF: Service Record Len = [%d]\n", lLength)) ;		return lLength ;}

⌨️ 快捷键说明

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