android_mt6572_jiabo/hardware/ti/wlan/mac80211/ti-utils/wlconf/wlconf.h
2025-09-05 16:56:03 +08:00

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__ */