127 lines
3.2 KiB
C
127 lines
3.2 KiB
C
/*
|
|
* Copyright (C) 2012 Texas Instruments Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
* 02110-1301 USA
|
|
*
|
|
*/
|
|
|
|
#ifndef __WLCONF_H__
|
|
#define __WLCONF_H__
|
|
|
|
struct element {
|
|
char *name;
|
|
int type;
|
|
int array_size;
|
|
int *value;
|
|
size_t position;
|
|
};
|
|
|
|
struct structure {
|
|
char *name;
|
|
int n_elements;
|
|
struct element *elements;
|
|
size_t size;
|
|
};
|
|
|
|
struct type {
|
|
char *name;
|
|
int size;
|
|
char *format;
|
|
};
|
|
|
|
struct dict_entry {
|
|
char *ini_str;
|
|
char *element_str;
|
|
};
|
|
|
|
enum text_file_type {
|
|
TEXT_FILE_INI,
|
|
TEXT_FILE_CONF,
|
|
};
|
|
|
|
struct type types[] = {
|
|
{ "u32", 4, "%u" },
|
|
{ "u16", 2, "%u" },
|
|
{ "u8", 1, "%u" },
|
|
{ "s32", 4, "%d" },
|
|
{ "s16", 2, "%d" },
|
|
{ "s8", 1, "%d" },
|
|
{ "__le32", 4, "%d" },
|
|
{ "__le16", 2, "%d" },
|
|
};
|
|
|
|
/*
|
|
* WLCONF_DIR can contains the default directory for wlconf metafiles
|
|
* It is used in case of Android build so wlconf can run anywhere
|
|
* See in Android.mk
|
|
*/
|
|
#ifndef WLCONF_DIR
|
|
#define WLCONF_DIR ""
|
|
#endif
|
|
|
|
#define DEFAULT_INPUT_FILENAME WLCONF_DIR "wl18xx-conf-default.bin"
|
|
#define DEFAULT_OUTPUT_FILENAME "wl18xx-conf.bin"
|
|
#define DEFAULT_BIN_FILENAME WLCONF_DIR "struct.bin"
|
|
#define DEFAULT_DICT_FILENAME WLCONF_DIR "dictionary.txt"
|
|
#define DEFAULT_CONF_FILENAME WLCONF_DIR "default.conf"
|
|
#define DEFAULT_ROOT_STRUCT "wlcore_conf_file"
|
|
#define DEFAULT_MAGIC_SYMBOL "WL18XX_CONF_MAGIC"
|
|
#define DEFAULT_VERSION_SYMBOL "WL18XX_CONF_VERSION"
|
|
#define DEFAULT_MAGIC_ELEMENT "header.magic"
|
|
#define DEFAULT_VERSION_ELEMENT "header.version"
|
|
#define DEFAULT_CHKSUM_ELEMENT "header.checksum"
|
|
|
|
#define STRUCT_BASE 1000
|
|
|
|
#define MAX_ARRAY_STR_LEN 4096
|
|
#define MAX_VALUE_STR_LEN 256
|
|
|
|
#define STRUCT_PATTERN "[\n\t\r ]*struct[\n\t\r ]+([a-zA-Z0-9_]+)" \
|
|
"[\n\t\r ]*\\{[\n\t\r ]*([^}]*)\\}[\n\t\r ]*" \
|
|
"[a-zA-Z0-9_]*;[\n\t\r ]*"
|
|
|
|
#define ELEMENT_PATTERN "[\n\t\r ]*([A-Za-z0-9_]+)[\n\t\r ]+" \
|
|
"([a-zA-Z_][a-zA-Z0-9_]*)(\\[([0-9]+)\\])?[\n\t\r ]*;[\n\t\r ]*"
|
|
|
|
#define TEXT_CONF_PATTERN "^[\t ]*([A-Za-z_][A-Za-z0-9_.]*)" \
|
|
"[\t ]*=[\t ]*([A-Za-z0-9_, \t]+)"
|
|
|
|
#define TEXT_INI_PATTERN "^[\t ]*([A-Za-z_][A-Za-z0-9_]*)" \
|
|
"[\t ]*=[\t ]*([0-9A-Fa-f \t]+)"
|
|
|
|
#define DICT_PATTERN "^[\t ]*([A-Za-z_][A-Za-z0-9_]*)" \
|
|
"[\t ]+([A-Za-z_][A-Za-z0-9_.]*)"
|
|
|
|
#define CC_COMMENT_PATTERN "(([^/]|[/][^/])*)//[^\n]*\n(.*)"
|
|
|
|
#define C_COMMENT_PATTERN "(([^/]|[/][^*])*)/\\*(([^*]|[*][^/])*)\\*/(.*)"
|
|
|
|
|
|
/* we only match WL12XX and WL18XX magic */
|
|
#define DEFINE_PATTERN "#define[\n\t\r ]+([A-Za-z_][A-Za-z0-9_]*)" \
|
|
"[\n\t\r ]+(0x[0-9A-Fa-f]+)"
|
|
|
|
#define WRITE_INT32(from, file) { \
|
|
int32_t val = (int32_t) from; \
|
|
fwrite(&val, 1, sizeof(val), file); \
|
|
}
|
|
|
|
#define READ_INT32(into, type, file) { \
|
|
int32_t val; \
|
|
fread(&val, 1, sizeof(val), file); \
|
|
into = type val; \
|
|
}
|
|
|
|
#endif /* __WLCONF_H__ */
|