📄 headset_config.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 + -