rkipc main.c 中 rk_param_init函数分析

server/2025/2/25 1:32:34/

rk_param_init函数

这个函数是用来读取配置文件进行参数配置
这个函数在
luckfox-pico/project/app/rk_smart_door/smart_door/common/uvc/param/param.c

这个函数在main函数中被调用

//通过-c 配置文件路径  把配置文件传进来
case 'c':rkipc_ini_path_ = optarg;
//调用,根据文件中的配置项配置参数
rk_param_init(rkipc_ini_path_);### 函数分析```c
int rk_param_init(char *ini_path) {LOG_INFO("%s\n", __func__);//加锁pthread_mutex_lock(&g_param_mutex);g_ini_d_ = NULL;//存在配置文件,读路径进g_ini_path_if (ini_path)memcpy(g_ini_path_, ini_path, strlen(ini_path));//不存在则读缺省的elsememcpy(g_ini_path_, "/usr/share/rkuvc.ini", strlen("/usr/share/rkuvc.ini"));LOG_INFO("g_ini_path_ is %s\n", g_ini_path_);//解析出所有的参数,放在g_ini_d_ 中g_ini_d_ = iniparser_load(g_ini_path_);if (g_ini_d_ == NULL) {LOG_ERROR("iniparser_load error!\n");return -1;}//打印参数名称和值rk_param_dump();//开锁pthread_mutex_unlock(&g_param_mutex);return 0;
}

调用

g_ini_d_ 保存了所有的参数,要查看某一项的值,可以根据param.h里面的函数调用

extern dictionary *g_ini_d_;//获取名为entry整型参数 
int rk_param_get_int(const char *entry, int default_val);
//设置名为entry整型参数 
int rk_param_set_int(const char *entry, int val);//获取名为entry双精型参数
int rk_param_get_double(const char *entry, double default_val);//获取名为entry字符型参数
const char *rk_param_get_string(const char *entry, const char *default_val);//设置名为entry字符型参数
int rk_param_set_string(const char *entry, const char *val);//将当前参数保存为文件
int rk_param_save();//从指定ini文件初始化
int rk_param_init(char *ini_path);//反初始化
int rk_param_deinit();//rk_param_reload
int rk_param_reload();

例如 ini文件中

[video.source]
enable_aiq = 1
enable_vo = 0
vo_dev_id = 3 ; 0 is hdmi, 3 is mipi
enable_ivs = 1
enable_jpeg = 1
enable_venc_0 = 1
enable_venc_1 = 1
enable_venc_2 = 0
enable_npu = 0
npu_fps = 10
enable_rtsp = 1
enable_rtmp = 0
rotation = 0 ; available value:0 90 180 270

可以通过

rk_param_get_int("video.source:enable_npu", 0)

获得 enable_npu 的值得,用来控制npu开关。

关于iniparser_load函数

这个函数位于
luckfox-pico/project/app/component/rkadk/rkadk/src/third-party/iniparser/iniparser.c
中,用来分析ini文件

/*-------------------------------------------------------------------------*/
/**@brief    Parse an ini file and return an allocated dictionary object@param    ininame Name of the ini file to read.@return   Pointer to newly allocated dictionaryThis is the parser for ini files. This function is called, providingthe name of the file to be read. It returns a dictionary object thatshould not be accessed directly, but through accessor functionsinstead.The returned dictionary must be freed using iniparser_freedict().*/
/*--------------------------------------------------------------------------*/

deepseek翻译为

/--------------------------------------------------------------------------/
/**
@brief 解析一个ini文件并返回一个已分配的字典对象
@param ininame 要读取的ini文件的名称。
@return 指向新分配的字典的指针这是ini文件的解析器。调用此函数时需提供要读取的文件名。它会返回一个字典对象,
该对象不应直接访问,而应通过访问器函数进行操作。必须使用iniparser_freedict()来释放返回的字典。
/
/--------------------------------------------------------------------------*/

http://www.ppmy.cn/server/170446.html

相关文章

Qt的QToolButton的使用

在C中使用QToolButton的详细步骤如下&#xff1a; 1. 包含头文件 #include <QToolButton> #include <QAction> #include <QMenu>2. 创建QToolButton实例 QToolButton *toolButton new QToolButton(parentWidget); // parentWidget为父部件指针3. 基础属性…

STM32——HAL库开发笔记21(定时器2—输出比较)(参考来源:b站铁头山羊)

本文主要讲述输出比较及PWM信号相关知识。 一、概念 所谓输出比较&#xff0c;就是通过单片机的定时器向外输出精确定时的方波信号。 1.1 PWM信号 PWM信号即脉冲宽度调制信号。PWM信号的占空比 &#xff08;高电压 所占周期 / 整个周期&#xff09; * 100% 。所以PWM信号…

uni-app 系统学习,从入门到实战(一)—— 从零开始搭建第一个跨平台应用

全篇大概 1500 字&#xff0c;建议阅读时间 5min 简介 UniApp 是一个基于 Vue.js 的跨平台开发框架&#xff0c;开发者可以通过编写一套代码&#xff0c;同时发布到 iOS、Android、H5、微信小程序、支付宝小程序、百度小程序等多个平台。本文将带你从零开始&#xff0…

【电机控制器】ESP32-C3语言模型——豆包

【电机控制器】ESP32-C3语言模型——豆包 文章目录 [TOC](文章目录) 前言一、简介二、代码三、实验结果四、参考资料总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、简介 二、代码 #include <WiFi.h> #inc…

antv G6绘制流程图

效果图&#xff08;优点&#xff1a;可以自定义每一条折线的颜色&#xff0c;可以自定义节点的颜色&#xff0c;以及折线的计算样式等&#xff09;&#xff1a; 代码&#xff1a; <!-- 流程图组件 --> <template><div id"container"></div>…

socket编程详解

TCP报文格式 0. 举例 首先来看一个TCP连接的例子&#xff0c;如图1所示&#xff0c;分别给出了服务器和客户端所调用的API&#xff0c;对这些函数有一个总体认识之后&#xff0c;再逐个对每个函数详细介绍。 图1 创建TCP连接时服务器、客户端调用的API 1. socket() 注&#xf…

第三章 组件(8)- 控制 <head> 内容

Razor 组件可以修改页面的 HTML <head> 元素内容&#xff0c;包括页标题<title>元素、元数据<meta>元素、<base>和<link>等。 HeadOutlet组件 在Blazor中&#xff0c;可以通过HeadOutlet组件来控制HTML中的 <head> 内容。 HeadOutlet组…

HDFS Java 客户端 API

一、基本调用 Configuration 配置对象类&#xff0c;用于加载或设置参数属性 FileSystem 文件系统对象基类。针对不同文件系统有不同具体实现。该类封装了文件系统的相关操作方法。 1. maven依赖pom.xml文件 <dependency><groupId>org.apache.hadoop</groupId&g…