oleavr-rgl-a500-mini-linux-.../drivers/media/platform/sunxi-vin/utility/cfg_op.h
Ole André Vadla Ravnås 169c65d57e Initial commit
2022-05-07 01:01:45 +02:00

105 lines
3 KiB
C

/*
* linux-3.10/drivers/media/platform/sunxi-vin/utility/cfg_op.h
*
* Copyright (c) 2007-2017 Allwinnertech Co., Ltd.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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.
*
*/
/*
******************************************************************************
*
* cfg_op.h
*
* Hawkview ISP - cfg_op.h module
*
* Copyright (c) 2015 by Allwinnertech Co., Ltd. http://www.allwinnertech.com
*
* Version Author Date Description
*
* 3.0 Yang Feng 2015/12/02 ISP Tuning Tools Support
*
******************************************************************************
*/
#ifndef __CFG__OP__H__
#define __CFG__OP__H__
#include <linux/vmalloc.h>
#define LINE_MAX_CHAR_NUM 512
#define MAX_LINE_NUM 1024
#define MAX_NAME_LEN 32
#define MAX_VALUE_LEN 128
#define MAX_MAINKEY_NUM 16
#define MAX_SUBKEY_NUM 512
#define INI_MAX_CHAR_NUM (LINE_MAX_CHAR_NUM * MAX_LINE_NUM)
#define BIN_MAX_SIZE (4096*4)
enum cfg_item_type {
CFG_ITEM_VALUE_TYPE_INVALID = 0,
CFG_ITEM_VALUE_TYPE_INT,
CFG_ITEM_VALUE_TYPE_STR,
};
enum cfg_key_flag {
CFG_KEY_RELEASE,
CFG_KEY_INIT,
};
struct cfg_item {
int val;
char str[MAX_VALUE_LEN];
};
struct cfg_subkey {
char name[MAX_NAME_LEN];
struct cfg_item value;
enum cfg_item_type type;
enum cfg_key_flag cfg_flag;
};
struct cfg_mainkey {
char name[MAX_NAME_LEN];
struct cfg_subkey subkey[MAX_SUBKEY_NUM];
char *subkey_name[MAX_SUBKEY_NUM];
char *subkey_value[MAX_SUBKEY_NUM];
int subkey_cnt;
enum cfg_key_flag cfg_flag;
};
struct cfg_section {
struct cfg_mainkey *mainkey[MAX_MAINKEY_NUM];
char *mainkey_name[MAX_MAINKEY_NUM];
int mainkey_cnt;
enum cfg_key_flag cfg_flag;
};
int cfg_get_sections(char *buffer, char *sections[]);
int cfg_get_one_key_value(char *buffer, struct cfg_mainkey *scts,
struct cfg_subkey *subkey);
int cfg_get_all_keys_value(char *buffer, struct cfg_mainkey *scts);
void cfg_subkey_init(struct cfg_subkey **subkey);
void cfg_subkey_release(struct cfg_subkey **subkey);
void cfg_mainkey_init(struct cfg_mainkey **mainkey, char **mainkey_name);
void cfg_mainkey_release(struct cfg_mainkey **mainkey, char **mainkey_name);
void cfg_section_init(struct cfg_section **cfg_sct);
void cfg_section_release(struct cfg_section **cfg_sct);
int cfg_read_ini(char *file_path, struct cfg_section **cfg_section);
int cfg_read_file(char *file_path, char *buf, size_t len);
int cfg_get_one_subkey(struct cfg_section *cfg_section, char *main, char *sub,
struct cfg_subkey *subkey);
struct file *cfg_open_file(char *file_path);
int cfg_close_file(struct file *fp);
int cfg_write_file(struct file *fp, char *buf, size_t len);
#endif /*__CFG__OP__H__*/