/* Copyright 2017 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include <syslog.h>
#include "cras_board_config.h"
#include "iniparser_wrapper.h"
/* Allocate 63 chars + 1 for null where declared. */
static const unsigned int MAX_INI_NAME_LEN = 63;
static const unsigned int MAX_KEY_LEN = 63;
static const int32_t DEFAULT_OUTPUT_BUFFER_SIZE = 512;
static const int32_t AEC_SUPPORTED_DEFAULT = 0;
#define CONFIG_NAME "board.ini"
#define DEFAULT_OUTPUT_BUF_SIZE_INI_KEY "output:default_output_buffer_size"
#define AEC_SUPPORTED_INI_KEY "processing:aec_supported"
void cras_board_config_get(const char *config_path,
struct cras_board_config *board_config)
{
char ini_name[MAX_INI_NAME_LEN + 1];
char ini_key[MAX_KEY_LEN + 1];
dictionary *ini;
board_config->default_output_buffer_size = DEFAULT_OUTPUT_BUFFER_SIZE;
board_config->aec_supported = AEC_SUPPORTED_DEFAULT;
if (config_path == NULL)
return;
snprintf(ini_name, MAX_INI_NAME_LEN, "%s/%s", config_path,
CONFIG_NAME);
ini_name[MAX_INI_NAME_LEN] = '\0';
ini = iniparser_load_wrapper(ini_name);
if (ini == NULL) {
syslog(LOG_DEBUG, "No ini file %s", ini_name);
return;
}
snprintf(ini_key, MAX_KEY_LEN, DEFAULT_OUTPUT_BUF_SIZE_INI_KEY);
ini_key[MAX_KEY_LEN] = 0;
board_config->default_output_buffer_size =
iniparser_getint(ini, ini_key, DEFAULT_OUTPUT_BUFFER_SIZE);
snprintf(ini_key, MAX_KEY_LEN, AEC_SUPPORTED_INI_KEY);
ini_key[MAX_KEY_LEN] = 0;
board_config->aec_supported =
iniparser_getint(ini, ini_key, AEC_SUPPORTED_DEFAULT);
iniparser_freedict(ini);
syslog(LOG_DEBUG, "Loaded ini file %s", ini_name);
}