diff --git "a/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/openKylin+SDK\345\274\200\345\217\221\346\214\207\345\215\227V2.0.md" "b/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/openKylin+SDK\345\274\200\345\217\221\346\214\207\345\215\227V2.3.md" similarity index 39% rename from "\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/openKylin+SDK\345\274\200\345\217\221\346\214\207\345\215\227V2.0.md" rename to "\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/openKylin+SDK\345\274\200\345\217\221\346\214\207\345\215\227V2.3.md" index 7add09ddc44225c4ede0ebfe966b643ab42a5dd6..d600bbcd8ba1aaa4ec73bbe63636e66200093e00 100644 --- "a/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/openKylin+SDK\345\274\200\345\217\221\346\214\207\345\215\227V2.0.md" +++ "b/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/openKylin+SDK\345\274\200\345\217\221\346\214\207\345\215\227V2.3.md" @@ -1,6 +1,6 @@ ![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image3.png) -# openSDK V2.0 ------开发指南 +# openSDK V2.3 ------开发指南 ![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image1.png) @@ -19,18 +19,20 @@ openSDK SIG 3.1 系统信息 3.1.1 系统时间报时 3.1.2 获取硬件信息 - 3.1.3 获取包列表信息 - 3.1.4 获取资源信息 - 3.1.5 获取操作系统基础信息 - 3.1.6 获取网络信息 - 3.1.7 获取系统运行时信息 - 3.1.8 获取当前地理信息 + 3.1.3 获取磁盘信息 + 3.1.4 获取包列表信息 + 3.1.5 获取资源信息 + 3.1.6 获取操作系统基础信息 + 3.1.7 获取网络信息 + 3.1.8 获取系统运行时信息 + 3.1.9 获取当前地理信息 3.2 电源管理 3.2.1 锁屏设置 3.3 文件管理 3.4 AI 能力 3.4.1 OCR 文字识别功能 3.5 打印机管理 + 3.6 jpeg编码 4 应用支撑 SDK 4.1 QT 自研控件模块 4.1.1 窗体模块 @@ -61,6 +63,10 @@ openSDK SIG 5.4 链表模块 5.5 配置文件操作 5.6 单位进制转换 + 5.7 Gsettings配置 + 5.8 埋点数据 + 5.9 conf2配置 + ``` @@ -88,6 +94,8 @@ openSDK SIG (1)软件源: +1.0软件源 + ``` deb http://archive.build.openKylin.top/openkylin/ yangtze main cross pty @@ -96,7 +104,18 @@ deb http://archive.build.openKylin.top/openkylin/ yangtze-security main cross pt deb http://archive.build.openKylin.top/openkylin/ yangtze-updates main cross pty ``` - + +2.0软件源 + +``` +deb http://archive.build.openKylin.top/openkylin/ nile main cross pty + +deb http://archive.build.openKylin.top/openkylin/ nile-security main cross pty + +deb http://archive.build.openKylin.top/openkylin/ nile-updates main cross pty + +deb http://archive.build.openKylin.top/openkylin/ nile-proposed main cross pty +``` (2)配置后更新源: @@ -105,6 +124,8 @@ deb http://archive.build.openKylin.top/openkylin/ yangtze-updates main cross pty ``` $ sudo apt update ``` + + # 3 系统能力 SDK 系统能力 SDK 中的每个软件包均表述了一个或一类系统能力,例如操作系统信息、硬件管理、系统内生安全策略、网络管理等; @@ -119,7 +140,7 @@ $ sudo apt-get install libkysdk-system libkysdk-system-dev 该层设计主要为应用提供与操作系统相关的功能接口,以自研、组合、封装三种方式,将与 OS 相关功能(如文件系统、硬件信息、通信等)以功能为角度重新实现;屏蔽系统差异、平台差异带来的开发复杂性与调试难度。 -### 3.1.1 系统时间报时 +### **3.1.1** 系统时间报时 当系统时间在整分或系统时间被修改时,com.kylin.kysdk.TimeServer Dbus 服务会发出报时信号。 @@ -128,6 +149,36 @@ $ sudo apt-get install libkysdk-system libkysdk-system-dev $ sudo apt-get install libdbus-1-dev libdbus-glib-1-dev libkysdk-systime libkysdk-systime-dev ``` +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-systime +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKSYSTIME kysdk-systime) +target_include_directories(demo PRIVATE ${KYSDKSYSTIME_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKSYSTIME_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKSYSTIME_LIBRARIES}) +``` + + +(3)调用日期格式,需要添加头文件: +``` + #include "kysdk/kysdk-system/libkydate.h" +``` + (1)dbus 服务名称:com.kylin.kysdk.TimeServer (2)路径名称:/com/kylin/kysdk/Timer @@ -140,17 +191,322 @@ $ sudo apt-get install libdbus-1-dev libdbus-glib-1-dev libkysdk-systime libkysd 定时报时信号:TimeSignal - 系统时间修改报时 + > 系统时间修改报时(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------- | ------------------------------------------------------------ | +| 系统时间报时 | C | void TimeChangeSignal(const char* t) | 当系统时间被修改时,com.kylin.kysdk.TimeServerDbus服务会发出报时信号 | +| | | 参数说明 | 返回值说明 | +| | | t:当前时间 如: "2021/09/26 21:13:28" | 无 | + + > 系统时间整分报时(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------- | ------------------------------------------------------------ | +| 系统时间报时 | C | void TimeSignal(const char* t) | 当系统时间在整分时,com.kylin.kysdk.TimeServerDbus服务会发出报时信号 | +| | | 参数说明 | 返回值说明 | +| | | t:当前时间 如: "2021/09/26 21:07:00" | 无 | + + > 获取系统支持的日期格式(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------ | ------------------------------------------------------------ | +| 获取日期信息 | C | extern char** kdk_system_get_dateformat(); | 获取系统支持的日期格式 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char**,按照支持的日期格式返回当日日期;由 NULL 字符串表示结 尾;由 alloc 生成,需要被 kdk_date_freeall 回收。 | + + > 回收字符串列表(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | -------------- | +| 获取日期信息 | C | extern inline void kdk_date_freeall(char **list); | 回收字符串列表 | +| | | 参数说明 | 返回值说明 | +| | | char **,字符串列表 | 无 | + + > 设置日期格式(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------ | -------------------------------- | +| 获取日期信息 | C | extern int kdk_system_set_dateformat(char *date) | 设置日期格式 | +| | | 参数说明 | 返回值说明 | +| | | char*,通过接口获取到的格式中的一种 | int,设置成功返回 0;其它值,失败。 | + + > 设置 24 小时制格式(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------- | -------------------------------- | +| 获取日期信息 | C | extern int kdk_system_set_24_timeformat() | 设置 24 小时制格式 | +| | | 参数说明 | 返回值说明 | +| | | 无 | int,设置成功返回 0;其它值,失败。 | + + > 设置 12 小时制格式(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------- | -------------------------------- | +| 获取日期信息 | C | extern int kdk_system_set_12_timeformat() | 设置 12 小时制格式 | +| | | 参数说明 | 返回值说明 | +| | | 无 | int,设置成功返回 0;其它值,失败。 | + + > 获取当前的日期格式(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------- | -------------------------- | +| 获取日期信息 | C | extern char* kdk_system_get_now_dateformat() | 获取当前的日期格式 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char*,用户的当前日期格式。 | + + > 获取当前的时间格式(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------- | -------------------------- | +| 获取日期信息 | C | extern char* kdk_system_get_now_timeformat() | 获取当前的时间格式 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char*,用户的当前时间格式。 | + + > 获取当前星期接口(短格式)(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------- | ------------------------ | +| 获取日期信息 | C | extern char* kdk_system_shortweek() | 获取当前星期接口(短格式) | +| | | 参数说明 | 返回值说明 | +| | | 无 | char*,用户的当前星期。 | + + > 获取当前星期接口(长格式)(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------- | ------------------------ | +| 获取日期信息 | C | extern char* kdk_system_longweek() | 获取当前星期接口(长格式) | +| | | 参数说明 | 返回值说明 | +| | | 无 | char*,用户的当前星期。 | + + > 获取当前秒钟接口(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------- | ------------------------------------------------------------ | +| 获取日期信息 | C | extern char* kdk_system_second(); | 获取当前秒钟接口 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 用户的当前的带秒钟数的时间,返回的字符串需要被 free 释放 | + + > 时间格式转换(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 获取日期信息 | C | extern kdk_dateinfo *kdk_system_tran_dateformat(stru ct tm *ptr) | 时间格式转换 | +| | | 参数说明 | 返回值说明 | +| | | struct tm *需要转换的时间。 | 结构体 kdk_dateinfo;成员:date(char*);描述:用户配置文件 中的格式的日期;成员:time(char*);描述:用户配置文件中的格式的时间; 成员:timesec(char*);描述:用户配置文件中的格式的带秒钟时间。 | + + > 释放由 kdk_system_tran_dateformat 返回的日期信息结构体(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------------------ | +| 获取日期信息 | C | extern void kdk_free_dateinfo(kdk_dateinfo *date) | 释放由 kdk_system_tran_dateformat 返回的日期信息结构体 | +| | | 参数说明 | 返回值说明 | +| | | kdk_dateinfo *,由 kdk_system_tran_dateformat 返回的结构体 指针 | 无 | + + > 获取当前时间(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------- | -------------------------------------------------- | +| 获取日期信息 | C | extern char* kdk_system_nowtime() | 获取当前时间 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char*,与用户设置时间格式相同的当前时间。例如:15:02 | + + > 获取当前日期(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------- | ------------------------------------------------------- | +| 获取日期信息 | C | extern char* kdk_system_nowdate() | 获取当前日期 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char*,与用户设置时间格式相同的当前时间。例如:2022/08/04 | + + > 获取未登录时的时间,星期,日期(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 获取日期信息 | C | extern kdk_logn_dateinfo *kdk_system_logn_dateinfo( char *user) | 获取未登录时的时间,星期,日期 | +| | | 参数说明 | 返回值说明 | +| | | char*,用户名 | kdk_logn_dateinfo,成员:date(char*);描述:登录配置文件中 的格式的日期;成员:time(char*);描述:登录配置文件中的格式的时间;成 员:week(char*);描述:当前星期。 | + + > 释放由 kdk_system_logn_dateinfo 返回的日期信息结构体(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ---------------------------------------------------- | +| 获取日期信息 | C | extern void kdk_free_logn_dateinfo(kdk_logn_dateinfo *date) | 释放由 kdk_system_logn_dateinfo 返回的日期信息结构体 | +| | | 参数说明 | 返回值说明 | +| | | kdk_logn_dateinfo *,由 kdk_system_logn_dateinfo 返回的结 构体指针 | 无 | + + > 转换工具箱时间(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------- | ---------------------------- | +| 获取日期信息 | C | extern char* kdk_system_gjx_time(char *date) | 转换工具箱时间 | +| | | 参数说明 | 返回值说明 | +| | | char*,工具箱日期 | char*,配置文件中的格式的日期 | + + > 监听系统时间格式修改信号(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------ | +| 获取日期信息 | C | dbus服务名:com.kylin.kysdk.DateServer
dbus接口名称:com.kylin.kysdk.DateInterface
dbus接口信号名称:DateSignal
dbus接口信号参数:string(日期格式,详见备注 19),string(当前格式的日期),string(12/24 小时制)。例如:**/**/**时制 | 监听系统时间格式修改信号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 无 | + + > 设置日期长格式(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------------- | --------------------------------- | +| 获取日期信息 | C | extern int kdk_system_set_long_dateformat(char *format); | 设置日期长格式 | +| | | 参数说明 | 返回值说明 | +| | | format 长格式的一种 | int 设置成功返回0;其它值,失败。 | + + > 设置日期短格式(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------------------------- | --------------------------------- | +| 获取日期信息 | C | extern int kdk_system_set_short_dateformat(char *format); | 设置日期短格式 | +| | | 参数说明 | 返回值说明 | +| | | format 短格式的一种 | int 设置成功返回0;其它值,失败。 | + + > 获取当前的长格式日期(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------- | ---------------------------- | +| 获取日期信息 | C | extern char* kdk_system_get_longformat_date(); | 获取当前的长格式日期 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 用户的当前长格式的日期 | + + > 获取当前的短格式日期(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | ---------------------------- | +| 获取日期信息 | C | extern char* kdk_system_get_shortformat_date(); | 获取当前的短格式日期 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 用户的当前短格式的日期 | + + > 获取长格式(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------- | ------------------------------------------------------------ | +| 获取日期信息 | C | extern char* kdk_system_get_longformat(); | 获取长格式 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char*,用户设置的长格式,长格式有{yyyy MM dd,yy M d},默认yyyy MM dd 格式。 | + + > 获取短格式(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------ | ------------------------------------------------------------ | +| 获取日期信息 | C | extern char* kdk_system_get_shortformat(); | 获取短格式 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char*,用户设置的短格式,短格式有{yyyy/MM/dd,yy/M/d,yyyy-MM-dd,yy-M-d,yyyy.MM.dd,yy.M.d},默认 yyyy/MM/dd 格式。 | + + > 长格式转化(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------ | +| 获取日期信息 | C | extern char* kdk_system_longformat_transform(struct tm *ptr); | 长格式转化 | +| | | 参数说明 | 返回值说明 | +| | | struct tm *,需要转化的时间。 | char*,用户设置的长格式形式输出转化的日期。 | + + > 短格式转化(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | --------------------------------------------------------- | +| 获取日期信息 | C | extern char* kdk_system_shortformat_transform(struct tm *ptr); | 短格式转化 | +| | | 参数说明 | 返回值说明 | +| | | struct tm *,需要转化的时间。 | char*,用户设置的短格式形式输出转化的日期。如 2023/06/09。 | + + > 获取登录锁屏的时间,星期,长格式日期(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 获取日期信息 | C | extern kdk_logn_dateinfo *kdk_system_login_lock_dateinfo(char *user); | 获取登录锁屏的时间,星期,长格式日期 | +| | | 参数说明 | 返回值说明 | +| | | user 用户名 | kdk_logn_dateinfo,成员:date(char*);描述:登录配置文件中的长格式的日期; | + + > 时间格式转化(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ---------------------------------------- | +| 获取日期信息 | C | extern kdk_timeinfo *kdk_system_timeformat_transform(struct tm *ptr); | 时间格式转化 | +| | | 参数说明 | 返回值说明 | +| | | struct tm *,需要转化的时间。 | char*,用户设置的时间形式输出转化的时间。 | + + > 释放由kdk_system_timeformat_transform返回的时间信息结构体(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------ | --------------------------------------------------------- | +| 获取日期信息 | C | extern void kdk_free_timeinfo(kdk_timeinfo *time); | 释放由kdk_system_timeformat_transform返回的时间信息结构体 | +| | | 参数说明 | 返回值说明 | +| | | time 由kdk_system_timeformat_transform返回的结构体指针 | 无 | + + > 监听日期长格式修改信号(自2.2.3.5版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ---------------------- | +| 获取日期信息 | C | dbus 服务名:com.kylin.kysdk.DateServer
dbus 接口名称:com.kylin.kysdk.DateInterface
dbus 接口信号名称:LongDateSignaldbus 接口信号参数:string(日期长格式),string(当前长格式的日期)。
例如:yyyy MM dd 2023 年 06 月 04 日 | 监听日期长格式修改信号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 无 | + + > 监听日期短格式修改信号(自2.2.3.5版本启用) -
子模块编程语言声明描述
系统时间报时CVoid TimeChangeSignal(const char* t)当系统时间被修改时,com.kylin.kysdk.TimeServerDbus服务会发出报时信号
参数说明返回值说明
t:当前时间 如: "2021/09/26 21:13:28"
+| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ---------------------- | +| 获取日期信息 | C | dbus 服务名:com.kylin.kysdk.DateServer
dbus 接口名称:com.kylin.kysdk.DateInterface
dbus 接口信号名称:ShortDateSignal
dbus 接口信号参数:string(日期短格式),string(当前短格式的日期)。
例如:yyyy/MM/dd 2023/06/04 | 监听日期短格式修改信号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 无 | + > 监听时间格式修改信号(自2.2.3.5版本启用) - 系统时间整分报时 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | -------------------- | +| 获取日期信息 | C | dbus 服务名:com.kylin.kysdk.DateServer
dbus 接口名称:com.kylin.kysdk.DateInterface
dbus 接口信号名称:TimeSignal
dbus 接口信号参数:string(时间格式)。 | 监听时间格式修改信号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 无 | + + > 相对日期转为绝对日期(自2.3.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------------- | ------------------------------------------------------------ | +| 获取日期信息 | C | extern char* kdk_system_tran_absolute_date(struct tm *ptr); | 相对日期转为绝对日期 | +| | | 参数说明 | 返回值说明 | +| | | struct tm 日期 | char* 成功返回字符串{今天,明天},失败返回NULL;返回的字符串需要free释放。 | -
子模块编程语言声明描述
系统时间报时Cvoid TimeSignal(const char* t)当系统时间在整分时,com.kylin.kysdk.TimeServerDbus服务会发出报时信号
参数说明返回值说明
t:当前时间 如: "2021/09/26 21:07:00"
### **3.1.2** 获取硬件信息 @@ -160,39 +516,51 @@ $ sudo apt-get install libdbus-1-dev libdbus-glib-1-dev libkysdk-systime libkysd $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev ``` -#### **3.1.2.1** 获取 CPU 信息 +构建 demo: - 封装 C 接口获取 CPU 信息 + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: - (1)CMakeLists.txt 构建项目 - ``` - aux_source_directory(. SOURCESCODE) +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-hardware +``` - include_directories(.) + (2)CMakeLists.txt 构建项目 - add_library(kyhw SHARED \${SOURCESCODE}) - add_executable(kycpu-test test/kycpu-test.c) +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKHARDWARE kysdk-hardware) +target_include_directories(demo PRIVATE ${KYSDKHARDWARE_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKHARDWARE_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKHARDWARE_LIBRARIES}) +``` - target_link_libraries(kyhw kylog kyconf pthread systemd udev) +#### **3.1.2.1** 获取 CPU 信息 - target_link_libraries(kycpu-test kyhw) - ``` + 封装 C 接口获取 CPU 信息 - (2)获取硬件 CPU 信息,需要添加头文件: + (1)获取硬件 CPU 信息,需要添加头文件: ``` #include "kysdk/kysdk-system/libkycpu.h" ``` - 获取 CPU 架构 + > 获取 CPU 架构(自1.2.0版本启用) -
子模块编程语言声明描述
获取CPU信息Cextern const char* kdk_cpu_get_arch()获取CPU架构
参数说明返回值说明
const char* 架构信息,如"x86_64";返回的是const char*,不要free
+| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | ------------------------------------- | ------------------------------------------------------------ | +| 获取CPU信息 | C | extern const char* kdk_cpu_get_arch() | 获取 CPU 架构 | +| | | 参数说明 | 返回值说明 | +| | | 无 | const char* 架构信息,如"x86_64";返回的是const char*,不要free | - 获取 CPU 制造厂商 + > 获取 CPU 制造厂商(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -203,7 +571,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取 CPU 型号 + > 获取 CPU 型号(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -216,7 +584,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取 CPU 额定主频 + > 获取 CPU 额定主频(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -228,7 +596,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取 CPU 核心数量 + > 获取 CPU 核心数量(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -239,7 +607,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取 CPU 对虚拟化的支持 + > 获取 CPU 对虚拟化的支持(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -249,33 +617,90 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev | | | 无 | const char* 若CPU支持虚拟化,则返回虚拟化技术,如“vmx”;若不支持,返回NULL;返回的是const char*,不要free | + > 获取CPU线程数(自1.2.0版本启用) -#### **3.1.2.2** 获取网卡信息 +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | ------------------------------------------ | ------------------------------- | +| 获取CPU信息 | C | extern unsigned int kdk_cpu_get_process(); | 获取CPU线程数 | +| | | 参数说明 | 返回值说明 | +| | | 无 | const char* 返回cpu支持的线程数 | - 封装 C 接口获取到网卡硬件信息。 + > 获取CPU最大频率(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | ---------------------------------------- | ----------------------------------------------------- | +| 获取CPU信息 | C | extern float kdk_cpu_get_max_freq_MHz(); | 获取CPU最大频率 | +| | | 参数说明 | 返回值说明 | +| | | 无 | float 返回cpu频率最大频率,如“2600.0000”,单位为MHz。 | + + > 获取CPU最小频率(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | ---------------------------------------- | ----------------------------------------------------- | +| 获取CPU信息 | C | extern float kdk_cpu_get_min_freq_MHz(); | 获取CPU最小频率 | +| | | 参数说明 | 返回值说明 | +| | | 无 | float 返回cpu频率最小频率,如“1900.0000”,单位为MHz。 | + + > 获取CPU运行时间(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | ---------------------------------------- | ------------------------------------------------------------ | +| 获取CPU信息 | C | extern char* kdk_cpu_get_running_time(); | 获取CPU运行时间 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 返回cpu运行时间,如“xx天xx小时xx分钟”;若失败,返回NULL;返回的字符串需要被 free 释放 | + + > 获取CPU插槽(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | ------------------------------------------ | ------------------------------------------ | +| 获取CPU信息 | C | extern unsigned int kdk_cpu_get_sockets(); | 获取CPU插槽 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回cpu插槽数量; 失败返回-1。 | + + > 获取CPU L1缓存(数据)(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | -------------------------------------------- | ------------------------------------------------- | +| 获取CPU信息 | C | extern unsigned int kdk_cpu_get_L1d_cache(); | 获取CPU L1缓存(数据) | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回cpu L1缓存(数据); 失败返回-1。 | + + > 获取CPU L1缓存(指令)(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | -------------------------------------------- | ------------------------------------------------- | +| 获取CPU信息 | C | extern unsigned int kdk_cpu_get_L1i_cache(); | 获取CPU L1缓存(指令) | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回cpu L1缓存(指令); 失败返回-1。 | + + > 获取CPU L2缓存(自2.3.0.0版本启用) - (1)CMakeLists.txt 构建项目 - ``` +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | ------------------------------------------- | ----------------------------------------- | +| 获取CPU信息 | C | extern unsigned int kdk_cpu_get_L2_cache(); | 获取CPU L2缓存 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回cpu L2缓存; 失败返回-1。 | - aux_source_directory(. SOURCESCODE) + > 获取CPU L3缓存(自2.3.0.0版本启用) - include_directories(.) +| 子模块 | 编程语言 | 声明 | 描述 | +| ----------- | -------- | ------------------------------------------- | ----------------------------------------- | +| 获取CPU信息 | C | extern unsigned int kdk_cpu_get_L3_cache(); | 获取CPU L3缓存 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回cpu L3缓存; 失败返回-1。 | - add_library(kyhw SHARED \${SOURCESCODE}) - add_executable(kync-test test/kync-test.c) - target_link_libraries(kyhw kylog kyconf pthread systemd udev) +#### **3.1.2.2** 获取网卡信息 - target_link_libraries(kync-test kyhw) - ``` + 封装 C 接口获取到网卡硬件信息。 - (2)获取网卡信息,需要添加头文件: + (1)获取网卡信息,需要添加头文件: ``` #include "kysdk/kysdk-system/libkync.h" ``` - 获取系统中所有的网卡 + > 获取系统中所有的网卡(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -285,7 +710,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev | | | 无 | char** 网卡名称列表,由NULL字符串表示结尾;由alloc生成,需要被kdk_nc_freeall回收;若获取出错,返回NULL; | - 检测指定网卡是否处于 UP 状态 + > 检测指定网卡是否处于 UP 状态(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -296,7 +721,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取系统中当前处于 link up 状态的网卡列表 + > 获取系统中当前处于 link up 状态的网卡列表(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|------------------------------------|-----------------------------------------------------------------------| @@ -306,7 +731,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取指定网卡的物理 MAC 地址 + > 获取指定网卡的物理 MAC 地址(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|------------------------------------------------|-------------------------------------------------| @@ -316,7 +741,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取指定网卡的第一个 IPv4 地址 + > 获取指定网卡的第一个 IPv4 地址(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -327,7 +752,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取指定网卡的所有 IPv4 地址 + > 获取指定网卡的所有 IPv4 地址(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -338,7 +763,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取指定网卡的第一个 IPv6 地址 + > 获取指定网卡的第一个 IPv6 地址(自1.2.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -348,7 +773,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev | | | nc:网卡名称,如eno1 | char* IPv6地址,获取出错或无IP返回NULL | - 获取指定网卡的所有 IPv6 地址 + > 获取指定网卡的所有 IPv6 地址(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|-----------------------------------------------|----------------------------------------------------------------------| @@ -358,7 +783,7 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取指定网卡的有线/无线类型 +> 获取指定网卡的有线/无线类型(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | @@ -370,2777 +795,4814 @@ $ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev - 获取指定网卡的厂商名称和设备型号 + > 获取指定网卡的厂商名称和设备型号(自2.0.0.0版本启用) -
子模块编程语言声明描述
获取网卡信息Cextern int kdk_nc_get_vendor_and_product(const char *nc, char *vendor, char *product);获取指定网卡的厂商名称和设备型号
参数说明返回值说明
nc:网卡名称,如eno1vendor:接受厂商名称的缓冲区product:接受设备型号的缓冲区0 : 成功1 : 失败
+| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | -------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_vendor_and_product(const char *nc, char *vendor, char *product); | 获取指定网卡的厂商名称和设备型号 | +| | | 参数说明 | 返回值说明 | +| | | nc:网卡名称,如eno1vendor:接受厂商名称的缓冲区product:接受设备型号的缓冲区 | 0 : 成功1 : 失败 | - 回收字符串列表 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-----------------------------------------------|---------| -| 获取网卡信息 | C | extern inline void kdk_nc_freeall(char **ptr) | 回收字符串列表 | -| | | 参数说明 | 返回值说明 | | -| | | ptr:字符串列表 | 无 | + > 获取指定网卡的驱动(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | ------------------------------------------------------------ | +| 获取网卡信息 | C | extern char *kdk_nc_get_driver(const char *nc); | 获取指定网卡的驱动 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | char * 成功返回网卡驱动,失败返回NULL。返回的字符串需要被 free 释放。 | -#### **3.1.2.3** 获取磁盘信息 - 封装 C 接口获取到网卡硬件信息。 - (1)CMakeLists.txt 构建项目 -``` - aux_source_directory(. SOURCESCODE) -add_library(kydiskinfo SHARED ${SOURCESCODE}) -set_target_properties(kydiskinfo PROPERTIES VERSION 1.2.0 SOVERSION 1) -add_executable(test-getdiskinfo test/getdiskinfo.c) -add_executable(test-getdisklist test/getdisklist.c) -find_library(UDEV_LIB udev) -target_link_libraries(kydiskinfo blkid kylog pthread systemd kyconf ${UDEV_LIB}) -target_link_libraries(test-getdiskinfo kydiskinfo) -target_link_libraries(test-getdisklist kydiskinfo) -``` - (2)获取网卡信息,需要添加头文件: -``` - #include "kysdk/kysdk-system/libkydiskinfo.h" -``` - 获取系统中所有磁盘的列表 + > 回收字符串列表(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------- | -------------- | +| 获取网卡信息 | C | extern inline void kdk_nc_freeall(char **ptr); | 回收字符串列表 | +| | | 参数说明 | 返回值说明 | +| | | ptr:字符串列表 | 无 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------|-----------------------------------------| -| 获取磁盘信息 | C | extern char** kdk_get_disklist() | 获取系统中所有磁盘的列表 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char**, 每个字符串表示一个磁盘的绝对路径, 结尾以NULL字符表示结束 | + > 获取指定网卡的广播地址(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 获取网卡信息 | C | extern char *kdk_nc_get_broadAddr(const char *nc, const char *addr); | 获取指定网卡的广播地址 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1
addr ip地址 | char * 成功返回网卡广播地址, 失败返回NULL。返回的字符串需要被 free 释放 | - 释放由 kdk_get_disklist 返回的磁盘列表 + > 获取指定网卡的子网掩码(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|------------------------------------------------|----------------------------| -| 获取磁盘信息 | C | extern void kdk_free_disklist(char** disklist) | 释放由kdk_get_disklist返回的磁盘列表 | -| | | 参数说明 | 返回值说明 | | -| | | disklist :由kdk_get_disk_list返回的字符串指针 | 无 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 获取网卡信息 | C | extern char *kdk_nc_get_netmask(const char *nc, const char *addr); | 获取指定网卡的子网掩码 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1
addr ip地址 | char * 成功返回子网掩码, 失败返回NULL。返回的字符串需要被 free 释放 | + > 获取指定网卡的掩码长度(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ---------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_mask_length(int type, const char *nc, const char *addr); | 获取指定网卡的掩码长度 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1
addr ip地址 | int 网卡的掩码长度 | - 获取系统中指定磁盘的磁盘信息 + > 获取指定网卡的连接类型(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 获取网卡信息 | C | char * 成功返回网卡的连接类型,如"Ethernet", 失败返回NULL;不需要free。 | 获取指定网卡的连接类型 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | char * 成功返回网卡的连接类型,如"Ethernet", 失败返回NULL;不需要free。 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------------------------------------|-------------------------------| -| 获取磁盘信息 | C | extern kdk_diskinfo *kdk_get_diskinfo(const char *diskname) | 获取指定磁盘的磁盘信息 | -| | | 参数说明 | 返回值说明 | | -| | | diskname:指定磁盘名称,应当是例如/dev/sda这种绝对路径,或者是disklist中的某个元素 | kdk_diskinfo* 该磁盘的详细信息,具体信息自取 | + > 获取wifi名称(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------- | ------------------------------------------------------- | +| 获取网卡信息 | C | extern char *kdk_nc_get_wifi_name(const char *nc); | 获取wifi名称 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | char * 成功返回wifi名称, 返回的字符串需要被 free 释放。 | + > 获取信号质量(连接 wifi 显示)(自2.3.0.0版本启用) - 释放由 kdk_get_diskinfo 返回的磁盘信息结构体 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------- | ---------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_wifi_signal_qual(const char *nc); | 获取信号质量(连接 wifi 显示) | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回信号质量, 失败返回-1。 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|-------------------------------| -| 获取磁盘信息 | C | extern void kdk_free_diskinfo(kdk_diskinfo *disk); | 释放由kdk_get_diskinfo返回的磁盘信息结构体 | -| | | 参数说明 | 返回值说明 | | -| | | disk:由kdk_get_diskinfo返回的结构体指针 | 无 | + > 获取信号强度(连接 wifi 显示)(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------------- | ---------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_wifi_signal_level(const char *nc); | 获取信号强度(连接 wifi 显示) | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回信号强度, 失败返回-1。 | + + > 获取底噪(连接 wifi 显示)(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | ------------------------------ | +| 获取网卡信息 | C | extern int kdk_nc_get_wifi_noise(const char *nc); | 获取底噪(连接 wifi 显示) | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回底噪, 失败返回-1。 | + + > 获取网卡速率(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------- | ------------------------------------------------------------ | +| 获取网卡信息 | C | extern char *kdk_nc_get_speed(const char *nc); | 获取网卡速率 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | char * 成功返回网卡的速率,如"1000Mb/s", 失败返回NULL;返回的字符串需要被 free 释放。 | + > 获取指定网卡的接收包数量(自2.3.0.0版本启用) -#### 3.1.2.4 获取 bios 信息 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | ------------------------------------------ | +| 获取网卡信息 | C | extern int kdk_nc_get_rx_packets(const char *nc); | 获取指定网卡的接收包数量 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的接收包数量, 失败返回-1。 | + + > 获取指定网卡的总计接收(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | --------------------------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_rx_bytes(const char *nc); | 获取指定网卡的总计接收 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的总计接收,单位为字节, 失败返回-1。 | + + > 获取指定网卡的接收(错误包)(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------ | ------------------------------------------------ | +| 获取网卡信息 | C | extern int kdk_nc_get_rx_errors(const char *nc); | 获取指定网卡的接收(错误包) | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的接收(错误包)数量, 失败返回-1。 | + + > 获取指定网卡的接收(丢弃包)(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | ------------------------------------------------ | +| 获取网卡信息 | C | extern int kdk_nc_get_rx_dropped(const char *nc); | 获取指定网卡的接收(丢弃包) | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的接收(丢弃包)数量, 失败返回-1。 | + + > 获取指定网卡的接收FIFO(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------- | -------------------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_rx_fifo_errors(const char *nc); | 获取指定网卡的接收FIFO | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的接收FIFO数量, 失败返回-1。 | + + > 获取指定网卡的分组帧错误(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------ | ------------------------------------------ | +| 获取网卡信息 | C | extern int kdk_nc_get_rx_frame_errors(const char *nc); | 获取指定网卡的分组帧错误 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的分组帧错误, 失败返回-1。 | + + > 获取指定网卡的发送包数量(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | ------------------------------------------ | +| 获取网卡信息 | C | extern int kdk_nc_get_tx_packets(const char *nc); | 获取指定网卡的发送包数量 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的发送包数量, 失败返回-1。 | + + > 获取指定网卡的总计发送(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | ---------------------------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_tx_bytes(const char *nc); | 获取指定网卡的总计发送 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的总计发送, 单位为字节, 失败返回-1。 | + + > 获取指定网卡的发送(错误包)(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------ | ------------------------------------------------ | +| 获取网卡信息 | C | extern int kdk_nc_get_tx_errors(const char *nc); | 获取指定网卡的发送(错误包) | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的发送(错误包)数量, 失败返回-1。 | + + > 获取指定网卡的发送(丢弃包)(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | ------------------------------------------------ | +| 获取网卡信息 | C | extern int kdk_nc_get_tx_dropped(const char *nc); | 获取指定网卡的发送(丢弃包) | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的发送(丢弃包)数量, 失败返回-1。 | + + > 获取指定网卡的发送FIFO(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------- | -------------------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_tx_fifo_errors(const char *nc); | 获取指定网卡的发送FIFO | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的发送FIFO数量, 失败返回-1。 | + + > 获取指定网卡的载波损耗(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------------- | ---------------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_tx_carrier_errors(const char *nc); | 获取指定网卡的载波损耗 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | int 成功返回网卡的载波损耗, 失败返回-1。 | + + > 获取指定网卡的域(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ---------------------------------- | +| 获取网卡信息 | C | extern int kdk_nc_get_scope(const char *nc, const char *addr); | 获取指定网卡的域 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1
addr ip地址 | int 成功返回网卡的域, 失败返回-1。 | + + +#### **3.1.2.3** 获取 bios 信息 封装 C 接口获取到 bios 硬件信息。 - (1)CMakeLists.txt 构建项目 -``` -aux_source_directory(. SOURCESCODE) -include_directories(.) -add_library(kyhw SHARED ${SOURCESCODE}) -add_executable(kybios-test test/kycpu-test.c) -target_link_libraries(kyhw kylog kyconf pthread systemd udev) -target_link_libraries(kybios-test kyhw) -``` - (2)获取 bios 信息,需要添加头文件: + (1)获取 bios 信息,需要添加头文件: ``` #include "kysdk/kysdk-system/libkybiosinfo.h" ``` - 获取 bios 厂商信息 + > 获取 bios 厂商信息(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|-------------------------------------------|---------------------| -| 获取磁盘信息 | C | extern const char *kdk_bios_get_vendor(); | 获取bios厂商信息 | +| 获取 bios 信息 | C | extern const char *kdk_bios_get_vendor(); | 获取bios厂商信息 | | | | 参数说明 | 返回值说明 | | | | | 无 | 成功返回bios厂商,失败返回null | - 获取 bios 版本信息 + > 获取 bios 版本信息(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|--------------------------------------------|---------------------| -| 获取磁盘信息 | C | extern const char *kdk_bios_get_version(); | 获取bios版本信息 | +| 获取 bios 信息 | C | extern const char *kdk_bios_get_version(); | 获取bios版本信息 | | | | 参数说明 | 返回值说明 | | | | | 无 | 成功返回bios版本,失败返回null | - 释放内存 + > 释放内存(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|----------------------------------------|---------------| -| 获取磁盘信息 | C | extern void kdk_bios_free(char* info); | 释放获取信息接口申请的内存 | +| 获取 bios 信息 | C | extern void kdk_bios_free(char* info); | 释放获取信息接口申请的内存 | | | | 参数说明 | 返回值说明 | | | | | 获取信息接口返回的指针 | 无 | -#### 3.1.2.5 获取主板信息 +#### **3.1.2.4** 获取主板信息 封装 C 接口获取到主板硬件信息。 - (1)CMakeLists.txt 构建项目 -``` -aux_source_directory(. SOURCESCODE) -include_directories(.) -add_library(kyhw SHARED ${SOURCESCODE}) -add_executable(kyboard-test test/kycpu-test.c) -target_link_libraries(kyhw kylog kyconf pthread systemd udev) -target_link_libraries(kyboard-test kyhw) -``` - (2)获取主板信息,需要添加头文件: + (1)获取主板信息,需要添加头文件: ``` #include "kysdk/kysdk-system/libkyboardinfo.h" ``` - 获取主板产品名称信息 + > 获取主板产品名称信息(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|------------------------------------------|---------------------| -| 获取磁盘信息 | C | extern const char *kdk_board_get_name(); | 获取主板产品名称 | +| 获取主板信息 | C | extern const char *kdk_board_get_name(); | 获取主板产品名称 | | | | 参数说明 | 返回值说明 | | | | | 无 | 成功返回主板产品名称,失败返回null | - 获取主板生产日期 + > 获取主板生产日期(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|------------------------------------------|---------------------| -| 获取磁盘信息 | C | extern const char *kdk_board_get_date(); | 获取主板生产日期 | +| 获取主板信息 | C | extern const char *kdk_board_get_date(); | 获取主板生产日期 | | | | 参数说明 | 返回值说明 | | | | | 无 | 成功返回主板生产日期,失败返回null | - 获取主板序列号 + > 获取主板序列号(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|--------------------------------------------|--------------------| -| 获取磁盘信息 | C | extern const char *kdk_board_get_serial(); | 获取主板序列号 | +| 获取主板信息 | C | extern const char *kdk_board_get_serial(); | 获取主板序列号 | | | | 参数说明 | 返回值说明 | | | | | 无 | 成功返回主板序列号,失败返回null | - 获取主板厂商信息 +> 获取主板厂商信息(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|--------------------------------------------|---------------------| -| 获取磁盘信息 | C | extern const char *kdk_board_get_vendor(); | 获取主板厂商信息 | +| 获取主板信息 | C | extern const char *kdk_board_get_vendor(); | 获取主板厂商信息 | | | | 参数说明 | 返回值说明 | | | | | 无 | 成功返回主板厂商信息,失败返回null | - 释放内存 + > 释放内存(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|-----------------------------------------|---------------| -| 获取磁盘信息 | C | extern void kdk_board_free(char* info); | 释放获取信息接口申请的内存 | +| 获取主板信息 | C | extern void kdk_board_free(char* info); | 释放获取信息接口申请的内存 | | | | 参数说明 | 返回值说明 | | | | | 获取信息接口返回的指针 | 无 | -#### 3.1.2.6 获取 usb 设备信息 +#### **3.1.2.5** 获取 usb 设备信息 封装 C 接口获取到 usb 设备硬件信息。 - (1)CMakeLists.txt 构建项目 -``` -aux_source_directory(. SOURCESCODE) -include_directories(.) -add_library(kyhw SHARED ${SOURCESCODE}) -add_executable(kyusb-test test/kyusb-test.c) -target_link_libraries(kyhw kylog kyconf pthread systemd udev) -target_link_libraries(kyusb-test kyhw) -``` - (2)获取 usb 设备信息,需要添加头文件: + (1)获取 usb 设备信息,需要添加头文件: ``` #include "kysdk/kysdk-system/libkyusbinfo.h" ``` - 获取所有 usb 设备信息 + > 获取所有 usb 设备信息(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|--------------------------------------------|----------------------------------------| -| 获取磁盘信息 | C | extern pDriverInfoList kdk_usb_get_list(); | 获取usb设备信息 | +| 获取usb设备信息 | C | extern pDriverInfoList kdk_usb_get_list(); | 获取usb设备信息 | | | | 参数说明 | 返回值说明 | | | | | 无 | pDriverInfoList : usb设备信息的结构体指针,具体信息自取 | - 释放内存 + > 释放内存(自2.0.0.0版本启用) | 子模块 | 编程语言 | 声明 | 描述 | |--------|------|-------------------------------------------------|--------------| -| 获取磁盘信息 | C | extern void kdk_usb_free(pDriverInfoList list); | 释放获取信息时申请的内存 | +| 获取usb设备信息 | C | extern void kdk_usb_free(pDriverInfoList list); | 释放获取信息时申请的内存 | | | | 参数说明 | 返回值说明 | | | | | list:kdk_usb_get_list()返回的指针 | 无 | -### **3.1.3** 获取包列表信息 +#### **3.1.2.6** 获取蓝牙设备信息 - 封装 C 接口获取系统中所有的包信息。 + 封装 C 接口获取到蓝牙设备硬件信息。 + (1)获取蓝牙设备信息,需要添加头文件: ``` -$ sudo apt-get install libkysdk-package libkysdk-package-dev + #include "kysdk/kysdk-system/libkybluetooth.h" ``` - (1)CMakeLists.txt 构建项目 + > 获取蓝牙的设备id(自2.2.3.5版本启用) -``` -aux_source_directory(. SOURCESCODE) -include_directories(.) -add_library(kypackage SHARED ${SOURCESCODE}) -add_executable(kypackage-test test/kypackage-test.c) -target_link_libraries(kypackage-test kypackage) -``` - (2)获取包列表信息,需要添加头文件: -``` - #include "kysdk/kysdk-system/libkypackages.h" -``` - 获取系统中所有包列表 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------ | ------------------ | +| 获取蓝牙信息 | C | extern int** kdk_bluetooth_get_device_id(); | 获取蓝牙的设备id | +| | | 参数说明 | 返回值说明 | +| | | 无 | int** 蓝牙的设备id | -| 子模块 | 编程语言 | 声明 | 描述 | -|---------|------|--------------------------------------------------------|----------------------------------------------------------------------| -| 获取包列表信息 | C | extern kdk_package_list* kdk_package_get_packagelist() | 获取系统中所有包列表 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | kdk_package_list* 包描述结构体列表;返回的结构体需要由kdk_package_free_packagelist()回收 | + > 获取蓝牙的制造商(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------- | ------------------------ | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_manufacturer(int num); | 获取蓝牙的制造商 | +| | | 参数说明 | 返回值说明 | +| | | num 蓝牙设备的个数,从0开始,0代表1个,以此类推。 | const char* 蓝牙的制造商 | - 获取系统中指定包的版本号 + > 获取蓝牙的设备版本(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|---------|------|--------------------------------------------------------|---------------------------------------------| -| 获取包列表信息 | C | extern char* kdk_package_get_version(const char *name) | 获取系统中指定包的版本号 | -| | | 参数说明 | 返回值说明 | | -| | | name:软件包名 | char* 版本号,由alloc生成,需要被free;若给定的包不存在,则返回NULL | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------------- | -------------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_dev_version(int num); | 获取蓝牙的设备版本 | +| | | 参数说明 | 返回值说明 | +| | | num 蓝牙设备的个数,从0开始,0代表1个,以此类推。 | const char* 蓝牙的设备版本 | + > 获取蓝牙的名称(自2.2.3.5版本启用) - 检测指定包名的软件包是否正确安装 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------- | ---------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_name(int id); | 获取蓝牙的名称 | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的名称 | + > 获取蓝牙的地址(自2.2.3.5版本启用) -
子模块编程语言声明描述
获取包列表信息Cextern int kdk_package_is_installed(const char *name, const char *version)检测指定包名的软件包是否正确安装
参数说明返回值说明
name:软件包名version:版本号,大部分情况下为NULL,预留为snap做准备int 成功返回0,失败返回错误码
+| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | ---------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_address(int id); | 获取蓝牙的地址 | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的地址 | -### **3.1.4** 获取资源信息 + > 获取蓝牙的连接模式(自2.2.3.5版本启用) - 封装 C 接口获取到内存、swap 分区、cpu 的使用率。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | -------------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_link_mode(int id); | 获取蓝牙的连接模式 | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的连接模式 | -``` -$ sudo apt-get install libkysdk-proc libkysdk-proc-dev + > 获取蓝牙的连接策略(自2.2.3.5版本启用) -``` +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------------------- | -------------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_link_policy(int id); | 获取蓝牙的连接策略 | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的连接策略 | - (1)CMakeLists.txt 构建项目 -``` -aux_source_directory(. SOURCESCODE) -include_directories(.) -add_library(kyrtinfo SHARED ${SOURCESCODE}) -add_executable(kyrtinfo-test test/kyrtinfo-test.c) -target_link_libraries(kyrtinfo-test kyrtinfo) -``` - (2)获取包列表信息,需要添加头文件: -``` - #include "kysdk/kysdk-system/libkyrtinfo.h" -``` - 获取系统中物理内存总大小 + > 获取蓝牙的总线(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|------------------------------------------------------|-----------------------------| -| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_res_total_KiB() | 获取系统中物理内存总大小 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned long 物理内存大小,KiB为单位 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------- | ---------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_bus(int id); | 获取蓝牙的总线 | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的总线 | + > 获取蓝牙的SCO MTU(自2.2.3.5版本启用) - 获取物理内存使用率 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|--------------------------------------------------|---------------| -| 获取资源信息 | C | extern float kdk_rti_get_mem_res_usage_percent() | 获取物理内存使用率 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | float 物理内存使用率 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------- | ------------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_scomtu(int id); | 获取蓝牙的SCO MTU | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的SCO MTU | + > 获取蓝牙的ALC MTU(自2.2.3.5版本启用) - 获取物理内存使用大小 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------- | ------------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_alcmtu(int id); | 获取蓝牙的ALC MTU | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的ALC MTU | + > 获取蓝牙的数据包类型(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|------------------------------------------------------|------------------------------------| -| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_res_usage_KiB() | 获取物理内存使用大小,注意Buffer/Cache被计算为已使用内存 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned long 物理内存使用大小,KiB为单位 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------- | ---------------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_packettype(int id); | 获取蓝牙的数据包类型 | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的数据包类型 | + > 获取蓝牙的功能(自2.2.3.5版本启用) - 获取实际可用的物理内存大小 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------ | ---------------------- | +| 获取蓝牙信息 | C | extern char* kdk_bluetooth_get_features(int id); | 获取蓝牙的功能 | +| | | 参数说明 | 返回值说明 | +| | | id 蓝牙的设备id | const char* 蓝牙的功能 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------------|-------------------------------------------| -| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_res_available_KiB() | 获取实际可用的物理内存大小,该数值约等于Free + Buffer + Cache | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned long 可用物理内存大小,KiB为单位 | +#### **3.1.2.7** 获取显卡设备信息 - 获取实际空闲的物理内存大小 + 封装 C 接口获取到显卡设备硬件信息。 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-----------------------------------------------------|---------------------------------------| -| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_res_free_KiB() | 获取实际空闲的物理内存大小,注意Buffer/Cache被计算为已使用内存 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned long 空闲的物理内存大小,KiB为单位 | + (1)获取显卡设备信息,需要添加头文件: +``` + #include "kysdk/kysdk-system/libkydisplay.h" +``` - 获取所有应用申请的虚拟内存总量 + > 获取显卡的制造商(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------------------------------|-------------------------------| -| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_virt_alloc_KiB() | 获取所有应用申请的虚拟内存总量 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned long 虚拟内存总申请量,KiB为单位 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------- | ------------------ | +| 获取显卡信息 | C | extern char* kdk_display_get_vendor(); | 获取显卡的制造商 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的制造商 | - 获取系统中 Swap 分区总大小 + > 获取显卡的型号(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------------------------------|-------------------------------| -| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_swap_total_KiB() | 获取系统中Swap分区总大小 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned long Swap分区大小,KiB为单位 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------- | ---------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_product(); | 获取显卡的型号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的型号 | + > 获取显卡的说明(自2.2.3.5版本启用) - 获取 Swap 分区使用率 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------- | ---------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_description(); | 获取显卡的说明 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的说明 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|---------------------------------------------------|-----------------| -| 获取资源信息 | C | extern float kdk_rti_get_mem_swap_usage_percent() | 获取Swap分区使用率 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | float Swap分区使用率 | + > 获取显卡的物理id(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------- | ------------------ | +| 获取显卡信息 | C | extern char* kdk_display_get_physical_id(); | 获取显卡的物理id | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的物理id | - 获取 Swap 分区使用量 + > 获取显卡的总线地址(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------------------------------|--------------------------------| -| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_swap_usage_KiB() | 获取Swap分区使用量 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned long Swap分区使用量,KiB为单位 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------- | -------------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_bus_info(); | 获取显卡的总线地址 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的总线地址 | + > 获取显卡的设备版本(自2.2.3.5版本启用) - 获取 Swap 分区空闲大小 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------- | -------------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_version(); | 获取显卡的设备版本 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的设备版本 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|------------------------------------------------------|---------------------------------| -| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_swap_free_KiB() | 获取Swap分区空闲大小 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned long Swap分区空闲大小,KiB为单位 | + > 获取显卡的数据宽度(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------- | -------------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_width(); | 获取显卡的数据宽度 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的数据宽度 | - 获取 CPU 瞬时使用率 + > 获取显卡的频率(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------|--------------------------| -| 获取资源信息 | C | extern float kdk_rti_get_cpu_current_usage() | 获取CPU瞬时使用率 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | float CPU瞬时使用率,该值 < 1.00 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------- | ---------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_clock(); | 获取显卡的频率 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的频率 | + > 获取显卡的功能(自2.2.3.5版本启用) - 获取操作系统开机时长 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------- | ---------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_capabilities(); | 获取显卡的功能 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的功能 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------------------|----------------|------------------------------------------------------------------------------------------------------------|------------| -| 获取资源信息 | C | extern int kdk_rti_get_uptime(unsigned int *day, unsigned int *hour, unsigned int *min, unsigned int *sec) | 获取操作系统开机时长 | -| | | 参数说明 | 返回值说明 | | -| | | day:开机天数
hour小时数,该数值一定 < 24
min:分钟数,该数值一定 < 60
sec:秒数,该数值一定 < 60 | int 返回0表示成功,返回非零表示失败 | + > 获取显卡的配置(自2.2.3.5版本启用) - 获取指定进程的 CPU 使用率 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------------- | ---------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_configuration(); | 获取显卡的配置 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的配置 | + > 获取显卡的资源(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|--------------------------------------------------------------|---------------| -| 获取资源信息 | C | extern float kdk_get_process_cpu_usage_percent(int proc_num) | 获取指定进程的CPU使用率 | -| | | 参数说明 | 返回值说明 | | -| | | proc_num:进程号 | float CPU使用率 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------- | ---------------- | +| 获取显卡信息 | C | extern char* kdk_display_get_resources(); | 获取显卡的资源 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 显卡的资源 | - 获取指定进程的内存占用率 +#### **3.1.2.8** 获取显示器设备信息 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|--------------------------------------------------------------|--------------| -| 获取资源信息 | C | extern float kdk_get_process_mem_usage_percent(int proc_num) | 获取指定进程的内存占用率 | -| | | 参数说明 | 返回值说明 | | -| | | proc_num:进程号 | float 内存占用率 | + 封装 C 接口获取到显示器设备硬件信息。 + (1)获取显示器设备信息,需要添加头文件: +``` + #include "kysdk/kysdk-system/libkyedid.h" +``` - 获取指定进程的进程状态 + > 获取显示器的当前接口(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|---------------------------------------------------|-------------| -| 获取资源信息 | C | extern char* kdk_get_process_status(int proc_num) | 获取指定进程的进程状态 | -| | | 参数说明 | 返回值说明 | | -| | | proc_num:进程号 | char* 进程状态 | +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | --------------------------------------- | ------------------------------------------------------------ | +| 获取显示器信息 | C | extern char** kdk_edid_get_interface(); | 获取显示器的当前接口 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 显示器的当前接口,由NULL字符串表示结尾;由alloc生成,需要被kdk_edid_freeall回收;若获取出错,返回NULL; | + > 获取显示器的伽马值(自2.2.3.5版本启用) - 获取指定进程的端口号占用 +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | -------------------------------------------- | -------------------------------------------- | +| 获取显示器信息 | C | extern float kdk_edid_get_gamma(char *name); | 获取显示器的伽马值 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | float 显示器的伽马值;若获取出错,返回0.00; | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-----------------------------------------------|--------------| -| 获取资源信息 | C | extern int kdk_get_process_port(int proc_num) | 获取指定进程的端口号占用 | -| | | 参数说明 | 返回值说明 | | -| | | proc_num:进程号 | char* 使用的端口号 | + > 获取显示器的屏幕尺寸(英寸)(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ------------------------------------------- | ------------------------------------------------------ | +| 获取显示器信息 | C | extern float kdk_edid_get_size(char *name); | 获取显示器的屏幕尺寸(英寸) | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | float 显示器的屏幕尺寸(英寸);若获取出错,返回0.00; | - 获取指定进程的启动时间 + > 获取显示器的最大分辨率(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------------------------------|-------------| -| 获取资源信息 | C | extern char* kdk_get_process_start_time(int proc_num) | 获取指定进程的启动时间 | -| | | 参数说明 | 返回值说明 | | -| | | proc_num:进程号 | char* 启动时间 | - 获取指定进程的运行时间 +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ----------------------------------------------------- | ------------------------------------------------------------ | +| 获取显示器信息 | C | extern char* kdk_edid_get_max_resolution(char *name); | 获取显示器的最大分辨率 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回显示器的最大分辨率,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取显示器的显示器型号(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------------------------------|-------------| -| 获取资源信息 | C | extern char* kdk_get_process_running_time(int proc_num) | 获取指定进程的运行时间 | -| | | 参数说明 | 返回值说明 | | -| | | proc_num:进程号 | char* 运行时间 | +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | -------------------------------------------- | ------------------------------------------------------------ | +| 获取显示器信息 | C | extern char* kdk_edid_get_model(char *name); | 获取显示器的显示器型号 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回显示器的显示器型号,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取显示器的可视面积(自2.2.3.5版本启用) - 获取指定进程的 cpu 时间 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-----------------------------------------------------|--------------| -| 获取资源信息 | C | extern char* kdk_get_process_cpu_time(int proc_num) | 获取指定进程的cpu时间 | -| | | 参数说明 | 返回值说明 | | -| | | proc_num:进程号 | char* cpu时间 | +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | --------------------------------------------------- | ------------------------------------------------------------ | +| 获取显示器信息 | C | extern char* kdk_edid_get_visible_area(char *name); | 获取显示器的可视面积 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回显示器的可视面积,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取显示器的厂商(自2.2.3.5版本启用) - 获取指定进程的 Command +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | --------------------------------------------------- | ------------------------------------------------------------ | +| 获取显示器信息 | C | extern char* kdk_edid_get_manufacturer(char *name); | 获取显示器的厂商 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回显示器的厂商,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取显示器的生产日期/周(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取资源信息 | C | extern char* kdk_get_process_command(int proc_num) | 获取指定进程的Command | -| | | 参数说明 | 返回值说明 | | -| | | proc_num:进程号 | char* Command | +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ----------------------------------------- | ----------------------------------------------- | +| 获取显示器信息 | C | extern int kdk_edid_get_week(char *name); | 获取显示器的生产日期/周 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回显示器的生产日期/周,失败返回-1。 | + > 获取显示器的生产日期/年(自2.2.3.5版本启用) - 获取指定进程的属主 +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ----------------------------------------- | ----------------------------------------------- | +| 获取显示器信息 | C | extern int kdk_edid_get_year(char *name); | 获取显示器的生产日期/年 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回显示器的生产日期/年,失败返回-1。 | -
子模块编程语言声明描述
获取资源信息Cextern char* kdk_get_process_user(int proc_num)获取指定进程的属主
参数说明返回值说明
proc_num:进程号char* 属主
+ > 获取是否是主显示器(是/否)(自2.2.3.5版本启用) -获取指定进程的CPU使用率 -
子模块编程语言声明描述
获取资源信息Cextern float kdk_procname_get_process_cpu_usage_percent(char *proc_name)获取指定进程的CPU使用率
参数说明返回值说明
proc_name 进程名float CPU使用率
+| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | -------------------------------------------- | -------------------------------- | +| 获取显示器信息 | C | extern int kdk_edid_get_primary(char *name); | 获取是否是主显示器(是/否) | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | int 是否是主显示器,1为是,0为否 | -获取指定进程的信息 -
子模块编程语言声明描述
获取资源信息Cextern char** kdk_procname_get_process_infomation(char *proc_name)获取指定进程的信息
参数说明返回值说明
proc_name 进程名char** 进程的信息列表,以NULL表示结尾,由alloc生成,需要被kdk_proc_freeall回收;若获取出错,返回NULL;
+ > 获取分辨率(自2.2.3.5版本启用) - 获取进程所有信息 -
子模块编程语言声明描述
获取资源信息Cchar** kdk_get_process_all_information()获取进程所有信息
参数说明返回值说明
char** 进程所有信息列表,,以NULL表示结尾,由alloc生成,需要被kdk_proc_freeall回收;若获取出错,返回NULL;
-回收字符串列表 -
子模块编程语言声明描述
获取资源信息Cextern inline void kdk_proc_freeall(char **ptr)回收字符串列表
参数说明返回值说明
ptr:字符串列表
+| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ------------------------------------------------- | ------------------------------------------------------------ | +| 获取显示器信息 | C | extern char* kdk_edid_get_resolution(char *name); | 获取分辨率 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回分辨率,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取图像高宽比(自2.2.3.5版本启用) -### **3.1.5** 获取操作系统基础信息 - 封装 C 接口获取系统名称、版本号、激活信息等。 +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | -------------------------------------------- | ------------------------------------------------------------ | +| 获取显示器信息 | C | extern char* kdk_edid_get_ratio(char *name); | 获取图像高宽比 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回图像高宽比,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取显示器edid未解析的字符串(自2.2.3.5版本启用) -``` -$ sudo apt-get install libkysdk-sysinfo libkysdk-sysinfo-dev -``` +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ------------------------------------------------ | ------------------------------------------------------------ | +| 获取显示器信息 | C | extern char* kdk_edid_get_character(char *name); | 获取显示器edid未解析的字符串 | +| | | 参数说明 | 返回值说明 | +| | | name 显示器的当前接口 | char* 成功返回edid未解析的字符串,失败返回NULL。返回的字符串需要被 free 释放。 | + > 用于回收字符串列表(自2.2.3.5版本启用) - (1)CMakeLists.txt 构建项目 - -``` -aux_source_directory(. SOURCESCODE) +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ------------------------------------------------ | ------------------ | +| 获取显示器信息 | C | extern inline void kdk_edid_freeall(char **ptr); | 用于回收字符串列表 | +| | | 参数说明 | 返回值说明 | +| | | ptr 字符串列表 | 无 | -include_directories(.) -find_library(GLIBC_LIB glib-2.0) -find_library(DBUS_LIB dbus-1) +#### **3.1.2.9** 获取风扇设备信息 -find_library(DBUS_GLIB_LIB dbus-glib-1) + 封装 C 接口获取到风扇设备硬件信息。 -add_library(kysysinfo SHARED ${SOURCESCODE}) + (1)获取风扇设备信息,需要添加头文件: -add_executable(kysysinfo-test test/kysysinfo_test.c) +``` + #include "kysdk/kysdk-system/libkyfan.h" +``` -target_link_libraries(kysysinfo kylin-activation kylog systemd kyconf + > 获取风扇的信息(自2.2.3.5版本启用) -${GLIBC_LIB} ${DBUS_LIB} ${DBUS_GLIB_LIB}) -target_link_libraries(kysysinfo-test kysysinfo) -``` +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------------ | -------- | ---------------------------------------- | ------------------------------- | +| 获取风扇设备信息 | C | extern char** kdk_fan_get_information(); | 获取风扇的信息 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 风扇的信息(名称,转速) | + > 用于回收字符串列表(自2.2.3.5版本启用) - (2)获取操作系统信息,需要添加头文件: -``` - #include "kysdk/kysdk-system/libkysysinfo.h" -``` - 获取操作系统架构信息 - -| 子模块 | 编程语言 | 声明 | 描述 | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|------|------------------------------------------------------|----------------------------------------------------------------------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_architecture() | 获取系统架构信息 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char* 系统架构,例:x86_64 | | - - 获取操作系统名称 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_systemName() | 获取操作系统名称 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char* 系统名称,例:Kylin | | - - 获取操作系统版本号 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_version(bool verbose) | 获取系统版本号 | -| | | 参数说明 | 返回值说明 | | -| | | verbose:0获取简略版本号,1获取详细版本号 | char* 系统版本号,例:系统简略版本:xxxx桌面操作系统;系统详细版本:Desktop-V10-Professional-Release-Build1-210203 | - - 获取内核版本号 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_kernelVersion() | 获取内核版本号 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | 内核版本号 | | - - 获取当前登录用户的用户名 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_eUser() | 获取当前登录用户的用户名(Effect User) | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | | - 获取操作系统项目编号名 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_projectName() | 获取操作系统项目编号名 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------------ | -------- | ----------------------------------------------- | -------------- | +| 获取风扇设备信息 | C | extern inline void kdk_fan_freeall(char **ptr); | 获取风扇的信息 | +| | | 参数说明 | 返回值说明 | +| | | ptr 字符串列表 | 无 | + - 获取操作系统项目子编号名 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_projectSubName() | 获取操作系统项目子编号名 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | | - 获取操作系统产品标识码 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern unsigned int kdk_system_get_productFeatures() | 获取操作系统产品标识码 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | unsigned int 返回标志码
0000:信息异常
0001:仅PC特性
0010:仅平板特性
0011:支持平板与PC特性 | +#### **3.1.2.10** 获取键盘、鼠标、声卡、光驱、摄像头、电源信息 + + 封装 C 接口获取到键盘、鼠标、声卡、光驱、摄像头、电源信息。 + + (1)获取键盘、鼠标、声卡、光驱、摄像头、电源信息,需要添加头文件: + +``` + #include "kysdk/kysdk-system/libkyhw.h" +``` - 获取操作系统宿主机的虚拟机类型 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_hostVirtType() | 获取操作系统宿主机的虚拟机类型 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char* 获取失败返回NULL,获取成功返回一个字符串,字符串内容如下:
[none, qemu, kvm, zvm, vmware,hyper-v, orcale virtualbox, xen, bochs, uml,parallels,bhyve,qnx,arcn,openvz,lxc,lxc-libvirt,systemd-nspawn,docker,podman,rkt,wsl] | + > 获取硬件信息(自2.2.3.5版本启用) - 获取操作系统宿主机的云平台类型 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char* kdk_system_get_hostCloudPlatform() | 获取操作系统宿主机的云平台类型 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char* 获取失败返回NULL,获取成功返回一个字符串,字符串内容如下:
[none, huawei] | - 判断当前操作系统是否为专用机系统 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern bool kdk_system_is_zyj(void) | 判断当前镜像系统否为专用机系统 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | bool
true代表是
false代表不是 | +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------------------------------------- | -------- | ------------------------------------------------------------ | ----------------------------------- | +| 获取键盘、鼠标、声卡、光驱、摄像头、电源信息 | C | extern struct HWInfo *kdk_hw_get_hwinfo(int type); | 获取硬件信息 | +| | | 参数说明 | 返回值说明 | +| | | type
3 keyboard;
5 mouse;
15 bound;
23 cdrom;
27 usb | HWInfo 硬件信息,具体参考返回结构体 | - 获取系统分辨率信息 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern char** kdk_system_get_resolving_power() | 获取系统分辨率信息 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | char** 分辨率信息列表,以NULL表示结尾,由alloc生成,需要被kdk_resolving_freeall回收;若获取出错,返回NULL; | | + > 释放由kdk_hw_get_hwinfo返回的磁盘信息结构体(自2.2.3.5版本启用) - 回收字符串列表 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------|----------------| -| 获取系统基础信息 | C | extern inline void kdk_resolving_freeal(char **ptr) | 回收字符串列表 | -| | | 参数说明 | 返回值说明 | | -| | | ptr:字符串列表 | 无 | +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------------------------------------- | -------- | ------------------------------------------------ | ------------------------------------------- | +| 获取键盘、鼠标、声卡、光驱、摄像头、电源信息 | C | extern void kdk_hw_free_hw(struct HWInfo *list); | 释放由kdk_hw_get_hwinfo返回的磁盘信息结构体 | +| | | 参数说明 | 返回值说明 | +| | | list:由kdk_hw_get_hwinfo返回的结构体指针 | 无 | + > 获取电源信息(自2.2.3.5版本启用) -### **3.1.6** 获取网络信息 +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------------------------------------- | -------- | -------------------------------------------- | ----------------------------------- | +| 获取键盘、鼠标、声卡、光驱、摄像头、电源信息 | C | extern struct Power *kdk_hw_get_powerinfo(); | 获取电源信息 | +| | | 参数说明 | 返回值说明 | +| | | 无 | Power,电源信息,具体参考返回结构体 | - 获取网络连接状态 + > 释放由kdk_hw_get_powerinfo返回的磁盘信息结构体(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|---------------------------------------------------------------------|------------------------------------| -| 获取系统基础信息 | dbus接口 | bus: system bus | -| name : org.freedesktop.NetworkManager | -| path: org.freedesktop.NetworkManager | -| method: state()->int arg0; | 获取网络连接状态。 | -| | -| | | 参数说明 | 返回值说明 | | -| | | 无 | int 网络连接状态 | | -| | +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------------------------------------- | -------- | ------------------------------------------------------- | ---------------------------------------------- | +| 获取键盘、鼠标、声卡、光驱、摄像头、电源信息 | C | extern void kdk_hw_free_power_info(struct Power *info); | 释放由kdk_hw_get_powerinfo返回的磁盘信息结构体 | +| | | 参数说明 | 返回值说明 | +| | | info:由kdk_hw_get_powerinfo返回的结构体指针 | 无 | -获取网络端口状态 -
子模块编程语言声明描述
获取系统基础信息Cextern int kdk_net_get_port_stat(int port);获取端口状态
参数说明返回值说明
port 端口号int 端口状态FREE:0TCP_ESTABLISHED:1 TCP_SYN_SENT:2 TCP_SYN_RECV:3 TCP_FIN_WAIT1:4 TCP_FIN_WAIT2:5 TCP_TIME_WAIT:6 TCP_CLOSE:7 TCP_CLOSE_WAIT:8 TCP_LAST_ACL:9 TCP_LISTEN:10 TCP_CLOSING:11
- 获取多个网络端口状态 -
子模块编程语言声明描述
获取系统基础信息Cint kdk_net_get_multiple_port_stat(int start, int end, int *result)获取[start,end]的端口状态
参数说明返回值说明
start 开始端口号end 结束端口号result 具有足够空间的int数组。接受端口状态成功返回0失败返回 端口状态
+### **3.1.3** 获取磁盘信息 -获取默认网关 -
子模块编程语言声明描述
获取系统基础信息Cextern prouteMapList kdk_net_get_route();获取默认网关
参数说明返回值说明
prouteMapList 网管信息,具体信息自取,失败返回NULL
+``` -获取防火墙状态 - -
子模块编程语言声明描述
获取系统基础信息Cextern pChain kdk_net_get_iptable_rules()获取防火墙信息
参数说明返回值说明
pChain 防火墙信息,具体信息自取,失败返回NULL
+$ sudo apt-get install libkysdk-disk libkysdk-disk-dev +``` + 封装 C 接口获取到磁盘硬件信息。 + 构建 demo: -### **3.1.7** 获取系统运行时信息 + (1).pro 文件构建项目 - 封装 C++类获取网速、cpu 温度、硬盘温度等。 + qt 项目.pro 文件中增加: ``` -$ sudo apt-get install libkyrealtimeinfo libkyrealtimeinfo-dev +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-disk ``` + (2)CMakeLists.txt 构建项目 - (1)CMakeLists.txt 构建项目 ``` -include_directories("smartctl/") -aux_source_directory(./smartctl CODE) -add_library(kyrealtime SHARED libkyrealtimeinfo.cpp libkyrealtimeinfo.h ${CODE}) -set_target_properties(kyrealtime PROPERTIES VERSION 1.2.0 SOVERSION 1) - -add_executable(realtimetest test/getrealtimeinfo.cpp) -target_link_libraries(realtimetest kyrealtime) +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKDISK kysdk-disk) +target_include_directories(demo PRIVATE ${KYSDKDISK_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKDISK_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKDISK_LIBRARIES}) ``` - (2)获取操作系统运行时信息,需要添加头文件: + (3)获取磁盘信息,需要添加头文件: ``` -#include "kysdk/kysdk-system/libkyrealtimeinfo.h" + #include "kysdk/kysdk-system/libkydiskinfo.h" ``` + > 获取系统中所有磁盘的列表(自1.2.0版本启用) - 获取瞬时网速 -
子模块编程语言声明描述
获取系统基础信息C++RealTimeInfo::float kdk_real_get_net_speed();获取瞬时网速
参数说明返回值说明
float瞬时网速
+| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|----------------------------------|-----------------------------------------| +| 获取磁盘信息 | C | extern char** kdk_get_disklist() | 获取系统中所有磁盘的列表 | +| | | 参数说明 | 返回值说明 | | +| | | 无 | char**, 每个字符串表示一个磁盘的绝对路径, 结尾以NULL字符表示结束 | - 获取cpu温度 + > 释放由 kdk_get_disklist 返回的磁盘列表(自1.2.0版本启用) -
子模块编程语言声明描述
获取系统基础信息C++RealTimeInfo::float kdk_real_get_cpu_temperatu();获取瞬时cpu温度
参数说明返回值说明
floatcpu瞬时温度
+| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|------------------------------------------------|----------------------------| +| 获取磁盘信息 | C | extern void kdk_free_disklist(char** disklist) | 释放由kdk_get_disklist返回的磁盘列表 | +| | | 参数说明 | 返回值说明 | | +| | | disklist :由kdk_get_disk_list返回的字符串指针 | 无 | - 获取硬盘温度 -
子模块编程语言声明描述
获取系统基础信息C++RealTimeInfo::float kdk_real_get_disk_temperatu(const char * name);获取瞬时硬盘温度
参数说明返回值说明
name:硬盘绝对路径float指定硬盘瞬时温度
- 获取磁盘转速 -
子模块编程语言声明描述
获取系统基础信息C++RealTimeInfo::int kdk_real_get_disk_rate(const char *name);获取磁盘转速
参数说明返回值说明
name:硬盘绝对路径int指定磁盘转速
+ > 获取系统中指定磁盘的磁盘信息(自1.2.0版本启用) -### **3.1.8** 获取当前地理信息 +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|-------------------------------------------------------------|-------------------------------| +| 获取磁盘信息 | C | extern kdk_diskinfo *kdk_get_diskinfo(const char *diskname) | 获取指定磁盘的磁盘信息 | +| | | 参数说明 | 返回值说明 | | +| | | diskname:指定磁盘名称,应当是例如/dev/sda这种绝对路径,或者是disklist中的某个元素 | kdk_diskinfo* 该磁盘的详细信息,具体信息自取 | - 封装 C 接口获取当前 ip 地址地理信息。 -``` -$ sudo apt-get install libkylocation libkylocation-dev -``` + > 释放由 kdk_get_diskinfo 返回的磁盘信息结构体(自1.2.0版本启用) - (1)CMakeLists.txt 构建项目 -``` -include_directories("/usr/include/python3.8") -add_library(kylocation SHARED libkylocation.c) -set_target_properties(kylocation PROPERTIES VERSION 1.2.0 SOVERSION 1) -target_link_libraries(kylocation -lpython3.8) -add_executable(locationtest test/getlocation.c) -target_link_libraries(locationtest kylocation) -``` +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|----------------------------------------------------|-------------------------------| +| 获取磁盘信息 | C | extern void kdk_free_diskinfo(kdk_diskinfo *disk); | 释放由kdk_get_diskinfo返回的磁盘信息结构体 | +| | | 参数说明 | 返回值说明 | | +| | | disk:由kdk_get_diskinfo返回的结构体指针 | 无 | - (2)获取 IP 地址地理信息,需要添加头文件: -``` -#include "kysdk/kysdk-system/libkylocation.h" -``` + > 获取系统接入所有硬盘(自2.2.3.5版本启用) - 获取本机地理位置 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------- | -------------------- | +| 获取磁盘信息 | C | extern char** kdk_get_hard_disk(); | 获取系统接入所有硬盘 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 硬盘名称 | + > 获取硬盘大小(自2.2.3.5版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|----------------------------------|----------------| -| 获取系统基础信息 | C | extern char *kdk_loaction_get(); | 获取本机的地理位置 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | 描述地理位置的json字符串 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| 获取磁盘信息 | C | extern char* kdk_get_hard_disk_size(const char *hardname); | 获取硬盘大小 | +| | | 参数说明 | 返回值说明 | +| | | hardname 指定磁盘名称,应当是例如/dev/sda这种绝对路径 | char* 硬盘大小,失败返回NULL。返回的字符串需要被 free 释放 | + > 获取硬盘固态版本(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------ | ------------------------------------------------------------ | +| 获取磁盘信息 | C | extern char* kdk_get_hard_fwrev(const char *hardname); | 获取硬盘固态版本 | +| | | 参数说明 | 返回值说明 | +| | | hardname 指定磁盘名称,应当是例如/dev/sda这种绝对路径 | char* 硬盘固态版本,失败返回NULL。返回的字符串需要被 free 释放 | -## **3.2** 电源管理 + > 获取硬盘类型(自2.2.3.5版本启用) - 该层设计主要为应用电源管理接口。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------- | ---------------------------------------------------------- | +| 获取磁盘信息 | C | extern char* kdk_get_hard_type(const char *hardname); | 获取硬盘类型 | +| | | 参数说明 | 返回值说明 | +| | | hardname 指定磁盘名称,应当是例如/dev/sda这种绝对路径 | char* 硬盘类型,失败返回NULL。返回的字符串需要被 free 释放 | -### **3.2.1** 锁屏设置 + > 获取硬盘型号(自2.2.3.5版本启用) - 封装 C++接口提供锁屏设置能力。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------ | ---------------------------------------------------------- | +| 获取磁盘信息 | C | extern char* kdk_get_hard_model(const char *hardname); | 获取硬盘型号 | +| | | 参数说明 | 返回值说明 | +| | | hardname 指定磁盘名称,应当是例如/dev/sda这种绝对路径 | char* 硬盘型号,失败返回NULL。返回的字符串需要被 free 释放 | - 设置禁止锁屏 + > 获取硬盘序列号(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------- | ------------------------------------------------------------ | +| 获取磁盘信息 | C | extern char* kdk_get_hard_serial(const char *hardname); | 获取硬盘序列号 | +| | | 参数说明 | 返回值说明 | +| | | hardname 指定磁盘名称,应当是例如/dev/sda这种绝对路径 | char* 硬盘序列号,失败返回NULL。返回的字符串需要被 free 释放 | -| 子模块 | 编程语言 | 声明 | 描述 | -|---------------|-------|--------------------------------------------------------------------------------|--------| -| 电源管理模块 | C++ | uint32_t kdk_set_inhibit_lockscreen(const char *appName , const char *reason) | 设置禁止锁屏 | -| | -| | | 参数说明 | 返回值说明 | -| | | appName:应用名
reason:禁止锁屏原因 | 0: 失败
>0: 成功(大于0) | + > 获取硬盘厂商(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------- | ---------------------------------------------------------- | +| 获取磁盘信息 | C | extern char* kdk_get_hard_vendor(const char *hardname); | 获取硬盘厂商 | +| | | 参数说明 | 返回值说明 | +| | | hardname 指定磁盘名称,应当是例如/dev/sda这种绝对路径 | char* 硬盘厂商,失败返回NULL。返回的字符串需要被 free 释放 | - 取消禁止锁屏 -| 子模块 | 编程语言 | 声明 | 描述 | -|-----------------|-------|-----------------------------------------------|--------| -| 电源管理模块 | C++ | int kdk_un_inhibit_lockscreen(uint32_t flag) | 取消禁止锁屏 | -| | -| | | 参数说明 |返回值说明 | -| | | flag:禁止锁屏接口的返回值 | 0: 成功
-1: 失败 | +### **3.1.4** 获取包列表信息 + 封装 C 接口获取系统中所有的包信息。 -## **3.3** 文件管理 +``` +$ sudo apt-get install libkysdk-package libkysdk-package-dev +``` - 该模块设计主要为开发者监控文件系统中文件变化,提供接口定义;减少 +构建 demo: - 系统版本间由于部分文件系统变化而导致的差异; + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: - 安装方式: ``` - $ sudo apt install libkysdk-filesystem libkysdk-filesystem-dev +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-package ``` + (2)CMakeLists.txt 构建项目 -| 声明 | 描述 | -|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------| -| QStringList addWatchTargetRecursive(QString url, FileWatcherType type = PERIODIC, int attr = OPEN`|`CLOSE`|`MODIFY`|`DELETE, int maxdepth = 5, int recurType = DIR`|`REGULAR); | 增加需要监听的文件路径,对于目录,默认启用递归监听子目录 | -| QStringList addWatchTargetListRecursive(QStringList urlList, FileWatcherType type = PERIODIC, int attr = OPEN`|`CLOSE`|`MODIFY`|`DELETE, int maxdepth = 5, int recurType = DIR`|`REGULAR); | 增加需要监听的文件列表 | -| QStringList removeWatchTargetRecursive(QString url, int maxdepth = 5, int recurType = ALLFILE); | 从监听列表中移除指定的文件 | -| void clearWatchList(); | 清空监听列表 | -| void pauseWatcher(); | 暂停文件监听 | -| void restartWatcher(); | 恢复文件监听 | +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKPACKAGE kysdk-package) +target_include_directories(demo PRIVATE ${KYSDKPACKAGE_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKPACKAGE_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKPACKAGE_LIBRARIES}) +``` + (3)获取包列表信息,需要添加头文件: +``` + #include "kysdk/kysdk-system/libkypackages.h" +``` + > 获取系统中所有包列表(自1.2.0版本启用) -## **3.4** AI 能力 - 该层设计主要为应用提供 AI 识别功能接口,为 OS 增加 OCR - 文字识别功能;屏蔽需 +| 子模块 | 编程语言 | 声明 | 描述 | +|---------|------|--------------------------------------------------------|----------------------------------------------------------------------| +| 获取包列表信息 | C | extern kdk_package_list* kdk_package_get_packagelist() | 获取系统中所有包列表 | +| | | 参数说明 | 返回值说明 | | +| | | 无 | kdk_package_list* 包描述结构体列表;返回的结构体需要由kdk_package_free_packagelist()回收 | - 引入 AI 功能带来的开发复杂性与调试难度。 -### **3.4.1** OCR 文字识别功能 - 封装 C++接口提供 OCR 文字识别功能。 + > 获取系统中指定包的版本号(自1.2.0版本启用) - 获取文字框 +| 子模块 | 编程语言 | 声明 | 描述 | +|---------|------|--------------------------------------------------------|---------------------------------------------| +| 获取包列表信息 | C | extern char* kdk_package_get_version(const char *name) | 获取系统中指定包的版本号 | +| | | 参数说明 | 返回值说明 | | +| | | name:软件包名 | char* 版本号,由alloc生成,需要被free;若给定的包不存在,则返回NULL | -| 子模块 | 编程语言 | 声明 | | 描述 | -|--------------------|------|-----------------------------------------------------------------------------|------------------|----------------------------------| -| OCR文字识别功能 | C++ | Std::vector>> kdk::kdkOCR::getRect(const std::string &imagePath) || 获取文字框 | -| | | 参数说明 | 返回值说明 | | -| | | String 图片文件路径 | Vector
文字框点的坐标矩阵、以及文字框的个数 | + > 检测指定包名的软件包是否正确安装(自1.2.0版本启用) - 获取文字内容 -| 子模块 | 编程语言 | 声明 || 描述 | -|----------------|---------|-------------------------------------------------------------------|-|--------| -| OCR文字识别功能 | C++ | Std::vector>>getCls(const std::string &imagePath,int nums) || 获取文字内容 | -| | | 参数说明 | 返回值说明 | | -| | | String 图片文件路径
Vector图片中的文字字符串 | Int nums 同时处理的文字栈个数 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ------------------------------------------------------------ | -------------------------------- | +| 获取包列表信息 | C | extern int kdk_package_is_installed(const char *name, const char *version); | 检测指定包名的软件包是否正确安装 | +| | | 参数说明 | 返回值说明 | +| | | name 包名
version 版本号,大部分情况下为NULL,预留为snap做准备 | int 成功返回0,失败返回错误码 | -## **3.5** 打印机管理 +> 回收由kdk_package_get_packagelist()返回的结构体(自1.2.0版本启用) - 该层主要为应用提供打印机管理接口,可以实现打印任务的下发,打印方式,打印任 - 务的取消。 +| 子模块 | 编程语言 | 声明 | 描述 | +| -------------- | -------- | ------------------------------------------------------------ | ----------------------------------------------- | +| 获取包列表信息 | C | extern void kdk_package_free_packagelist(kdk_package_list *list); | 回收由kdk_package_get_packagelist()返回的结构体 | +| | | 参数说明 | 返回值说明 | +| | | list 由kdk_package_get_packagelist()返回的结构体 | 无 | - 获取系统打印机列表 +### **3.1.5** 获取资源信息 -| 子模块 | 编程语言 | 声明 | 描述 | -|------------|----------|---------------------------------------|------------------------| -| 打印机管理 | C | extern char** kdk_printer_get_list(); | 获取打印机列表 | -| | | 参数说明 | 返回值说明 | -| | | 无 | char ** 系统打印机列表 | + 封装 C 接口获取到内存、swap 分区、cpu 的使用率等资源信息。 - 获取系统可用打印机列表 -| 子模块 | 编程语言 | 声明 | 描述 | -|------------|----------|-------------------------------------------------|------------------------| -| 打印机管理 | C | extern char** kdk_printer_get _availablelist(); | 获取可用打印机列表 | -| | | 参数说明 | 返回值说明 | -| | | 无 | char ** 系统打印机列表 | +``` +$ sudo apt-get install libkysdk-proc libkysdk-proc-dev - 设置打印参数 +``` -| 子模块 | 编程语言 | 声明 | 描述 | -|------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------| -| 打印机管理 | C | extern void kdk_printer_set_options(int number_up,const char *media,const char *number_up_layout,const char *sides); | 设置打印参数 | -| | | 参数说明 | 返回值说明 | -| | | number_up:一张纸打印几页
media:纸张类型
number_up_layout:cups属性,如lrtb
sides:单面one-sided,双面(长边翻转):two_sided_long_dege
双面(短边翻转):
two_sided_short_dege | 无 | +构建 demo: - 打印文件 -| 子模块 | 编程语言 | 声明 | 描述 | -|------------|----------|-----------------------------------------------------------------------------------|------------------| -| 打印机管理 | C | extern int kdk_printer_print_local_file(const char *printername, char *filepath); | 打印文件 | -| | | 参数说明 | 返回值说明 | -| | | printername: 打印机名
filepath:打印文件绝对路径 | int 打印作业的id | + (1).pro 文件构建项目 - 取消打印作业 -| 子模块 | 编程语言 | 声明 | 描述 | -|-----------------|-------|-----------------------------------------------|--------| -| 打印机管理 | C | extern int kdk_printer_cancel_all_jobs(const char *printername); | 取消打印作业 | -| | | 参数说明 | 返回值说明 | | -| | | printername:打印机名 | int
成功:0
失败:-1 | + qt 项目.pro 文件中增加: - 获取打印机状态 -| 子模块 | 编程语言 | 声明 | 描述 | -|------------|----------|-------------------------------------------------------------|----------------| -| 打印机管理 | C | extern int kdk_printer_get_status(const char *printername); | 获取打印机状态 | -| | | 参数说明 | 返回值说明 | -| | | printername,打印机名 | 打印机状态码 | +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-proc +``` - 从url中解析下载的文件名 -| 子模块 | 编程语言 | 声明 | 描述 | -|------------|----------|------------------------------------------------------------------------|-----------------------| -| 打印机管理 | C | extern void kdk_printer_get_filename(const char *url, char *filename); | 从url解析下载的文件名 | -| | | 参数说明 | 返回值说明 | -| | | url,下载链接 | | -| | | filename,解析出来的文件名 | | + (2)CMakeLists.txt 构建项目 - 获取当前打印任务状态 +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKPROC kysdk-proc) +target_include_directories(demo PRIVATE ${KYSDKPROC_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKPROC_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKPROC_LIBRARIES}) +``` -| 子模块 | 编程语言 | 声明 | 描述 | -|------------|----------|----------------------------------------------------------------------------|----------------------| -| 打印机管理 | C | extern int kdk_printer_get_job_status(const char *printername, int jobid); | 获取当前打印任务状态 | -| | | 参数说明 | 返回值说明 | -| | | printername,打印机名 | 打印任务状态码 | + (3)获取包列表信息,需要添加头文件: - 下载网络文件到本地 -| 子模块 | 编程语言 | 声明 | 描述 | -|------------|----------|-------------------------------------------------------------------------------------------|--------------------| -| 打印机管理 | C | extern int kdk_printer_print_download_remote_file(const char *url, const char *filepath); | 下载网络文件到本地 | -| | | 参数说明 | 返回值说明 | -| | | url,网络文件 | 下载状态码 | -| | | filepath,要保存的文件路径,用户自定义 | | +``` + #include "kysdk/kysdk-system/libkyrtinfo.h" + #include "kysdk/kysdk-system/libkyprocess.h" +``` + > 获取系统中物理内存总大小(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------------- | ------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_res_total_KiB() | 获取系统中物理内存总大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 物理内存大小,KiB为单位 | -# **4** 应用支撑 SDK + > 获取物理内存使用率(自1.2.0版本启用) - openSDK 应用支撑层中,所有的包均为向图形化应用提供图形化开发功能,例如图形化控件、主题风格等;该层通常与某个特定的开发框架有所绑定 , 如 QT 、 GTK ; 应 用 支 撑层 SDK 安装时需安装 两个虚包:libkysdk-application、libkysdk-applications-dev,其他包按照功能分类生成多个实包,比如:QT 控件类: libkysdk-qtwidgets,wayland 显示协议兼容接口 libkysdk-waylandhelper,应用通用模块 libkysdk-kabase 等。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------ | -------------------- | +| 获取资源信息 | C | extern float kdk_rti_get_mem_res_usage_percent() | 获取物理内存使用率 | +| | | 参数说明 | 返回值说明 | +| | | 无 | float 物理内存使用率 | - 安装命令: -``` -$ sudo apt install libkysdk-applications libkysdk-applications-dev + > 获取物理内存使用大小(自1.2.0版本启用) -``` -## **4.1** QT 自研控件模块 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------------- | -------------------------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_res_usage_KiB() | 获取物理内存使用大小,注意Buffer/Cache被计算为已使用内存 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 物理内存使用大小,KiB为单位 | - QT 自研控件模块 kysdk-qtwidgets 属于 kysdk-application 的子模块,安装方式如下: -``` -sudo apt install libkysdk-qtwidgets libkysdk-qtwidgets-dev -``` + > 获取实际可用的物理内存大小(自1.2.0版本启用) - 根据不同项目类型,可参考以下 demo: +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_res_available_KiB() | 获取实际可用的物理内存大小,该数值约等于Free + Buffer + Cache | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 可用物理内存大小,KiB为单位 | - (1).pro 文件构建项目 - qt 项目.pro 文件中增加: + > 获取实际空闲的物理内存大小(自1.2.0版本启用) -``` -CONFIG += link_pkgconfig -PKGCONFIG += kysdk-qtwidgets +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_res_free_KiB() | 获取实际空闲的物理内存大小,注意Buffer/Cache被计算为已使用内存 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 空闲的物理内存大小,KiB为单位 | -``` - (2)CMakeLists.txt 构建项目 + > 获取所有应用申请的虚拟内存总量(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------- | ----------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_virt_alloc_KiB() | 获取所有应用申请的虚拟内存总量 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 虚拟内存总申请量,KiB为单位 | -``` -cmake_minimum_required(VERSION 3.5) -find_package(Qt5 COMPONENTS Widgets REQUIRED) -find_package(PkgConfig REQUIRED) -pkg_check_modules(KYSDKQTWIDGETS_PKG kysdk-qtwidgets) -target_include_directories(demo PRIVATE ${KYSDKQTWIDGETS_PKG_INCLUDE_DIRS}) -target_link_directories(demo PRIVATE ${KYSDKQTWIDGETS_PKG_LIBRARY_DIRS}) -target_link_libraries(demo Qt5::Widgets ${KYSDKQTWIDGETS_PKG_LIBRARIES}) -``` + > 获取系统中 Swap 分区总大小(自1.2.0版本启用) - 在具体项目中,需在代码中引入对应的头文件以及命名空间,如: +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------- | ------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_swap_total_KiB() | 获取系统中Swap分区总大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long Swap分区大小,KiB为单位 | -``` -#include "kwidget.h" -using namespace kdk; -``` - 部分控件用到翻译文件,可以在 main()函数中加载翻译文件,目前支持中 + > 获取 Swap 分区使用率(自1.2.0版本启用) - 文、藏文、英文三种语言,翻译文件已经编进动态库中,加载方式如下: +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | -------------------- | +| 获取资源信息 | C | extern float kdk_rti_get_mem_swap_usage_percent() | 获取Swap分区使用率 | +| | | 参数说明 | 返回值说明 | +| | | 无 | float Swap分区使用率 | -``` -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - QTranslator trans; - QString locale = QLocale::system().name(); - if(locale == "zh_CN") - { - if(trans.load(":/translations/gui_zh_CN.qm")) - { - a.installTranslator(&trans); - } - } - if(locale == "bo_CN") - { - if(trans.load(":/translations/gui_bo_CN.qm")) - { - a.installTranslator(&trans); - } - } - Widget w; - w.show(); - return a.exec(); -} -``` + > 获取 Swap 分区使用量(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------- | --------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_swap_usage_KiB() | 获取Swap分区使用量 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long Swap分区使用量,KiB为单位 | -### **4.1.1** 窗体模块 -#### **4.1.1.1** 基础窗体 - 功能描述:KWidget,继承自 QWidget,支持响应主题背景切换,响应图标主 +> 获取 Swap 分区空闲大小(自1.2.0版本启用) -题切换,标题颜色响应窗口激活状态,窗口按钮样式符合 ukui3.1 的设计风格, - 分 为 四 个 组 成 部 分 iconBar,windowButtonBar,sideBar,baseBar 。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------------- | ----------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_swap_free_KiB() | 获取Swap分区空闲大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long Swap分区空闲大小,KiB为单位 | - iconBar,windowButtonBar 默认高度为 40px,sideBar 默认宽度为 200px。 -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image4.png) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image5.png) +> 获取 CPU 瞬时使用率(自1.2.0版本启用) -| 枚举类型 | LayoutType { VerticalType, HorizontalType, MixedType } | -|------|--------------------------------------------------------| +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------- | -------------------------------- | +| 获取资源信息 | C | extern float kdk_rti_get_cpu_current_usage() | 获取CPU瞬时使用率 | +| | | 参数说明 | 返回值说明 | +| | | 无 | float CPU瞬时使用率,该值 < 1.00 | -> VerticalType:上下结构 -> -> HorizontalType:左右结构 -> -> MixedType:过渡结构 + > 获取操作系统开机时长(自1.2.0版本启用) -| 声明 | 描述 | | | -|------------------------------------------------|--------------------------------------------------|---|---| -| QWidget* sideBar(); | 获取左边栏widget,通过setlayout添加自定义内容。 | | | -| QWidget* baseBar(); | 获取主内容区widget,通过setlayout添加自定义内容。 | | | -| void setIcon(const QIcon& icon); | 通过icon添加窗体图标 | | | -| void setIcon(const QString& iconName); | 设置窗体图标,iconName 需要直接指定系统目录中的图标名称,如"kylin-music"。 | | | -| void setWidgetName(const QString& widgetName); | 设置窗体名称。 | | | -| KWindowButtonBar* windowButtonBar(); | 获取窗口三联组合控件,以控制是否显示最大化、最小化按钮和下拉菜单按钮。 | | | -| KIconBar* iconBar(); | 获取窗口标题、图标组合控件,以控制相关样式。 | | | -| void setLayoutType(LayoutType type); | 设置布局结构类型。 | | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ----------------------------------- | +| 获取资源信息 | C | extern int kdk_rti_get_uptime(unsigned int *day, unsigned int *hour, unsigned int *min, unsigned int *sec) | 获取操作系统开机时长 | +| | | 参数说明 | 返回值说明 | +| | | day:开机天数
hour小时数,该数值一定 < 24
min:分钟数,该数值一定 < 60
sec:秒数,该数值一定 < 60 | int 返回0表示成功,返回非零表示失败 | + > 获取共享内存大小(自2.3.0.0版本启用) -#### **4.1.1.2** KBubbleWidget -> -> 功能描述:KBubbleWidget,继承自 QWidget,是一个带有气泡尾部的窗 -体,可以指定气泡尾部的尺寸、显示方向和显示位置,还可以设置窗体的圆 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------- | ------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_shared_KiB(); | 获取共享内存大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 共享内存大小,KiB为单位 | -> 角、毛玻璃以及透明度。自 2.0.0.0 版本启用。 + > 获取高速缓存大小(自2.3.0.0版本启用) -
枚举类型enum TailDirection{ TopDirection, LeftDirection, BottomDirection, RightDirection, None };
enum TailLocation{ LeftLocation, MiddleLocation, RightLocation };
+| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------- | ------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_cached_KiB(); | 获取高速缓存大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 高速缓存大小,KiB为单位 | -> TailDirection:气泡尾部的显示方向 -> -> TailLocation:指定气泡尾部的显示位置 + > 获取数据缓存大小(自2.3.0.0版本启用) -| 声明 | 描述 | -|-----------------------------------------------------------------------------------|----------------------| -| void setTailSize(const QSize& size); | 设置气泡尾部尺寸 | -| QSize tailSize(); | 获取气泡尾部尺寸 | -| void setTailPosition(TailDirection dirType, TailLocation locType=MiddleLocation); | 设置气泡尾部显示位置 | -| TailDirection tailDirection(); | 获取气泡尾部显示方向(左、上、右、下) | -| TailLocation tailLocation(); | 获取气泡尾部显示位置(居左、居中、居右) | -| void setBorderRadius(int bottomLeft,int topLeft,int topRight,int bottomRight); | 设置窗体圆角半径 | -| void setBorderRadius(int radius); | 设置窗体圆角半径 | -| void setEnableBlur(bool flag); | 设置是否启用毛玻璃效果 | -| bool enableBlur(); | 获取是否已启用毛玻璃效果 | -| void setOpacity(qreal opacity); | 设置透明度 | -| qreal opacity(); | 获取透明度 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------------------- | ------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_buffers_KiB(); | 获取数据缓存大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 数据缓存大小,KiB为单位 | + > 获取交换缓存区大小(自2.3.0.0版本启用) -### **4.1.2** 对话框模块 -#### **4.1.2.1** 基础对话框 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------- | --------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_swap_cached_KiB(); | 获取交换缓存区大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 交换缓存区大小,KiB为单位 | -> 功能描述:KDialog,继承自 QDialog 支持响应主题背景切换,相应图标主 + > 获取活跃的缓冲文件大小(自2.3.0.0版本启用) -题切换,窗口按钮样式符合 ukui3.1 的设计风格,标题颜色响应窗口激活状态。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------- | ------------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_active_KiB(); | 获取活跃的缓冲文件大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 活跃的缓冲文件大小,KiB为单位 | -| 声明 | 描述 | -|----------------------------------------------|-----------------------------------------------------------------------| -| void setWindowIcon(const QIcon &icon); | 设置对话框图标 | -| void setWindowIcon(const QString& iconName); | 直接根据图标名称设置窗口图标,例如:dialog->setWindowIcon("kylin-music"); | -| void setWindowTitle(const QString &); | 设置对话框标题名称 | -| QPushButton* maximumButton(); | 获取最大化按钮 | -| QPushButton* minimumButton(); | 获取最小化按钮 | -| QPushButton* closeButton(); | 获取关闭按钮 | -| KMenuButton* menuButton(); | 获取下拉菜单按钮,默认是隐藏的,不显示。 | -| QWidget* mainWidget(); | 获取主内容区,通过setLayout()添加内容。例如:dialog->mainWidget()->setLayout(hLayout); | + > 获取不活跃的缓冲文件大小(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------------------- | --------------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_inactive_KiB(); | 获取不活跃的缓冲文件大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 不活跃的缓冲文件大小,KiB为单位 | -#### **4.1.2.2** 关于对话框 -> -> 功能描述:KAboutDialog,包含的主要内容有:应用图标,应用名称,版本 + > 获取脏页大小(自2.3.0.0版本启用) -号,团队邮箱以及具体的应用描述,注意,默认应用描述是不显示的。可以通 -> 过 setBodyTextVisible(bool)控制其是否需要显示。 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image6.png) -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image7.png) -| 声明 | 描述 | -|------------------------------------------------|---------------------------| -| void setAppIcon(const QIcon& icon); | 设置应用程序图标 | -| void setAppName(const QString& appName); | 设置应用程序名称 | -| QString appName(); | 获取应用程序名称 | -| void setAppVersion(const QString& appVersion); | 设置应用程序版本号 | -| QString appVersion(); | 获取应用程序版本号 | -| void setBodyText(const QString& bodyText); | 设置应用程序具体的说明内容 | -| QString bodyText(); | 获取应用程序具体的说明内容 | -| void setAppSupport(const QString& appSupport); | 设置服务与支持邮箱,有默认缺省 | -| QString appSupport(); | 获取服务与支持邮箱 | -| void setBodyTextVisiable(bool flag); | 设置是否显示说明内容 | -| void setAppPrivacyLabelVisible(bool flag); | 设置隐私按钮是否可见(自1.2.0.10版本启用) | -| bool AppPrivacyLabelIsVisible(); | 返回隐私按钮是否可见(自1.2.0.10版本启用) | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | --------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_dirty_KiB(); | 获取脏页大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 脏页大小,KiB为单位 | + > 获取映射大小(自2.3.0.0版本启用) -#### **4.1.2.3** 输入对话框 -> -> 功能描述:输入对话框 KInputDialog,继承自 QDialog,参考 QInputDialog -> -> 源码,对子控件布局以及样式进行了调整,功能同 QInputDialog。 -> -> (1)QString KInputDialog::getText(QWidget \*parent,const QString -> &label, -> -> QLineEdit::EchoMode mode, const QString &text,bool \*ok, -> -> Qt::WindowFlags flags, Qt::InputMethodHints inputMethodHints) -> -> 文本输入对话框,同 QInputDialog +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | --------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_map_KiB(); | 获取映射大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 映射大小,KiB为单位 | -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image8.png) + > 获取内核数据结构缓存大小(自2.3.0.0版本启用) -> (2)QString KInputDialog::getMultiLineText(QWidget \*parent,const -> QString&label, -> -> const QString &text, bool \*ok, Qt::WindowFlags flags, -> -> Qt::InputMethodHints inputMethodHints) -> -> 多行文本输入框,同 QInputDialog -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image9.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------ | --------------------------------------------- | +| 获取资源信息 | C | extern unsigned long kdk_rti_get_mem_slab_KiB(); | 获取内核数据结构缓存大小 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned long 内核数据结构缓存大小,KiB为单位 | -> (3) -``` -int KInputDialog::getInt(QWidget *parent,const QString &label, int value, -int min, int max, int step, bool *ok, Qt::WindowFlags flags) -``` -> 整型数字输入对话框,同 QInputDialog -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image10.png) -> -> (3) -``` -double KInputDialog::getDouble(QWidget *parent,const QString &label, -double value, double minValue, double maxValue, -int decimals, bool *ok, Qt::WindowFlags flags) -``` + > 获取指定进程的 CPU 使用率(自2.0.0.0版本启用) -> 浮点型数字输入对话框,同 QInputDialog -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image11.png) -> -> 枚举类型 -| enum | InputDialogOption { NoButtons, UseListViewForComboBoxItems, UsePlainTextEditForTextInput } | -|-------|--------------------------------------------------------------------------------------------| -| flags | InputDialogOptions | -| enum | InputMode { TextInput, IntInput, DoubleInput } | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------ | +| 获取资源信息 | C | extern float kdk_get_process_cpu_usage_percent(int proc_num) | 获取指定进程的CPU使用率 | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | float 成功返回CPU使用率,失败返回0.0 | -| 常量 | 描述 | -|--------------------------------------------|------------------------------------------------------------| -| QInputDialog::NoButtons | 不显示确定和取消按钮 | -| QInputDialog::UseListViewForComboBoxItems | 使用QListView而不是不可编辑的QComboxItems来显示使用SetComboxItems()设置的项目。 | -| QInputDialog::UsePlainTextEditForTextInput | 使用QPlainTextEdit进行多行文本输入。在这个值中在5.2中被引入。 | +> 获取指定进程的内存占用率(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | -------------------------------------- | +| 获取资源信息 | C | extern float kdk_get_process_mem_usage_percent(int proc_num) | 获取指定进程的内存占用率 | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | float 成功返回内存占用率,失败返回0.00 | -| 常量 | 描述 | -|---------------------------|---------------| -| QInputDialog::TextInput | 用于输入文本字符串。 | -| QInputDialog::IntInput | 用于输入整数。 | -| QInputDialog::DoubleInput | 用于以双精度输入的浮点数。 | +> 获取指定进程的进程状态(自2.0.0.0版本启用) -| 声明 | 描述 | -|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| -| void setInputMode(InputMode mode); | 设置输入模式 | -| InputMode inputMode() const; | 获取输入模式 | -| void setLabelText(const QString &text); | 设置标签文本 | -| QString labelText() const; | 获取标签文本 | -| void setOption(InputDialogOption option, bool on = true); | 设置选项 | -| bool testOption(InputDialogOption option) const; | 测试选项 | -| void setOptions(InputDialogOptions options); | 设置选项 | -| InputDialogOptions options() const; | 获取输入框选项 | -| void setTextValue(const QString &text); | 设置文本值 | -| QString textValue() const; | 获取文本值 | -| void setTextEchoMode(QLineEdit::EchoMode mode); | 设置文本模式 | -| QLineEdit::EchoMode textEchoMode() const; | 获取文本模式 | -| void setComboBoxEditable(bool editable); | 设置组合框可编辑 | -| bool isComboBoxEditable() const; | 返回组合框是否可以编辑 | -| void setComboBoxItems(const QStringList &items); | 设置组合框项目 | -| QStringList comboBoxItems() const; | 返回组合框列表 | -| void setIntValue(int value); | 设置int类型的值 | -| int intValue() const; | 获取int类型的值 | -| void setIntMinimum(int min); | 设置int类型的最低值 | -| int intMinimum() const; | 获取int最低值 | -| void setIntMaximum(int max); | 设置int类型最大值 | -| int intMaximum() const; | 获取int最大值 | -| void setIntRange(int min, int max); | 设置int范围 | -| void setIntStep(int step); | 设置int步数 | -| int intStep() const; | 获取int步数 | -| void setDoubleValue(double value); | 设置double值 | -| double doubleValue() const; | 获取double值 | -| void setDoubleMinimum(double min); | 设置double最小值 | -| double doubleMinimum() const; | 获取double最小值 | -| void setDoubleMaximum(double max); | 设置double最大值 | -| double doubleMaximum() const; | 获取double最大值 | -| void setDoubleRange(double min, double max); | 设置double范围 | -| void setDoubleDecimals(int decimals); | 设置两个小数 | -| int doubleDecimals() const; | 返回小数位数 | -| void setOkButtonText(const QString &text); | 设置确认按钮文本 | -| QString okButtonText() const; | 获取确认按钮文本 | -| void setCancelButtonText(const QString &text); | 设置取消按钮文本 | -| QString cancelButtonText() const; | 获取取消按钮文本 | -| void open(QObject *receiver, const char *member); | 此函数将其信号之一连接到接收器和成员指定的插槽。特定信号取决于在成员中指定的参数。 | -| void setVisible(bool visible) override; | 设置是否可见 | -| QSize minimumSizeHint() const override; | 最小尺寸提示 | -| QSize sizeHint() const override; | 尺寸提示 | -| static QString getText(QWidget *parent,const QString &label,QLineEdit::EchoMode echo = QLineEdit::Normal,const QString &text = String(), bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags(),Qt::InputMethodHints inputMethodHints = Qt::ImhNone); | 获取文本 | -| static QString getMultiLineText(QWidget *parent,const QString &label,const QString &text = QString(), bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags(),Qt::InputMethodHints inputMethodHints = Qt::ImhNone); | 获取多行文本 | -| static QString getItem(QWidget *parent,const QString &label,const QStringList &items, int current = 0, bool editable = true,bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(),Qt::InputMethodHints inputMethodHints = Qt::ImhNone); | 获取项目 | -| static int getInt(QWidget *parent,const QString &label, int value = 0,int minValue = -2147483647, int maxValue = 2147483647,int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | 获取int型文本 | -| static double getDouble(QWidget *parent,const QString &label,double value = 0, double minValue = -2147483647,double maxValue = 2147483647, int decimals = 1, bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags()); | 获取double类型文本 | -| void setDoubleStep(double step); | 设置double步数 | -| double doubleStep() const; | 获取double步数 | -| void setPlaceholderText(const QString &); | 设置PlaceholderText的文本内容(自1.2.0.12启用) | -| QString placeholderText() const; | 获取PlaceholderText的文本内容(自1.2.0.12启用) | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | extern char* kdk_get_process_status(int proc_num) | 获取指定进程的进程状态 | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | 成功返回进程状态,失败返回NULL。返回的字符串需要被 free 释放。 | -#### **4.1.2.4** 进度对话框 -> -> 功能描述:KProgressDialog,继承自 QDialog,参考 QProgressDialog 源码, -对子控件 ProgressBar 的样式进行了调整。可以设置具体下载信息是否需要显示,设置进度值的后缀等。 + > 获取指定进程的端口号占用(自2.0.0.0版本启用) -``` -KProgressDialog *progress2 = new KProgressDialog(tr("下载"),tr("取消"),0,100,this); -progress2->setSubContent("下载中..."); -progress2->setSuffix("MB"); -progress2->setWindowTitle("进度对话框"); -progress2->setWindowIcon("kylin-music"); -progress2->setValue(50); -progress2->setShowDetail(false); -``` +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------------- | ------------------------------------- | +| 获取资源信息 | C | extern int kdk_get_process_port(int proc_num) | 获取指定进程的端口号占用 | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | int 成功返回使用的端口号,失败返回0。 | -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image12.png) -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image13.png) + > 获取指定进程的启动时间(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | extern char* kdk_get_process_start_time(int proc_num) | 获取指定进程的启动时间 | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | char* 成功返回启动时间,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取指定进程的运行时间(自2.0.0.0版本启用) -| 声明 | 描述 | -|-----------------------------------------------|---------------------------------------------------------------------------------------------------------| -| void setLabel(QLabel *label); | 将标签设置给label。进度对话框会调整大小以适应。标签成为进度对话框的所有权,必要时将被删除,所以不要在堆栈中传递对象的地址。 | -| void setCancelButton(QPushButton *button); | 将取消按钮设置给按钮,cancelButton。进度对话框拥有这个按钮的所有权,这个按钮在必要时将被删除,所以不要传递堆栈中的对象的地址,用new()来创建按钮。如果传递nullptr,将不会显示取消按钮。 | -| void setBar(QProgressBar *bar); | 将进度条部件设置给bar。进度对话框会调整大小以适应。进度条对话框拥有进度条的所有权,该进度条将在必要时被删除,所以不要使用分配在堆栈中的进度条。 | -| void setSuffix(const QString& suffix); | 设置detail的后缀 | -| void setShowDetail(bool flag); | 设置是否显示详细信息 | -| int minimum() const; | 返回最小值 | -| int maximum() const; | 返回最大值 | -| int value() const | 返回当前值 | -| QString labelText() const; | 返回提示内容 | -| void setAutoReset(bool reset); | 设置进度对话框是否在value()等于maximum()时立即调用reset(),默认为true。 | -| bool autoReset() const; | 返回是否自动重置 | -| void setAutoClose(bool close); | 设置是否自动关闭对话框 | -| bool autoClose() const; | 返回是否自动关闭对话框 | -| QProgressBar* progressBar(); | 获取进度条 | -| void cancel(); | 取消进度条。 | -| void reset(); | 重置进度条。 | -| void setMaximum(int maximum) | 设置进度条所代表的最高值,默认值是100。 | -| void setMinimum(int minimum) | 设置进度条所代表的最小值,默认值是0。 | -| void setRange(int minimum, int maximum) | 设置进度条范围,如果最大值小于最小值,则最小值成为唯一的合法值。如果当前值超出了新的范围,则用reset()重置进度框。 | -| void setValue(int progress) | 设置当前进度值。 | -| void setLabelText(const QString &text) | 设置提示标签文本。 | -| void setCancelButtonText(const QString &text) | 设置取消按钮文本。 | -| void setSubContent(const QString &text) | 设置次级内容。 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | extern char* kdk_get_process_running_time(int proc_num); | 获取指定进程的运行时间 | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | char* 成功返回运行时间,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取指定进程的 cpu 时间(自2.0.0.0版本启用) -#### **4.1.2.5** 程序卸载对话框 -> -> 功能描述:KUninstallDialog,代码整合自麒麟安装器,支持显示应用图 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | extern char* kdk_get_process_cpu_time(int proc_num) | 获取指定进程的cpu时间 | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | char* 成功返回cpu时间,失败返回NULL。返回的字符串需要被 free 释放。 | -标,应用名称,包名,版本号等信息,不包括具体的卸载行为。使用时只需传 -> 入包名以及版本后两个参数即可。 + > 获取指定进程的 Command(自2.0.0.0版本启用) -``` -KUninstallDialog *uninstallDialog = new KUninstallDialog("browser360-cn-stable","104",this); -``` +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | extern char* kdk_get_process_command(int proc_num) | 获取指定进程的Command | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | char* 成功返回Command,失败返回NULL。返回的字符串需要被 free 释放。 | -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image14.png) + > 获取指定进程的属主(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | extern char* kdk_get_process_user(int proc_num) | 获取指定进程的属主 | +| | | 参数说明 | 返回值说明 | +| | | proc_num:进程号 | char* 成功返回属主,失败返回NULL。返回的字符串需要被 free 释放。 | -| 声明 | 描述 | -|----------------------------------|------------------| -| QLabel* debAppNameLabel(); | 获取应用名称的label | -| QLabel* debNameLabel(); | 获取包名的label | -| QLabel* debIconLabel(); | 获取应用图标的label | -| QLabel* debVersionLabel(); | 获取包版本的label | -| QPushButton* uninstallButtton(); | 获取卸载按钮pushbutton | + > 获取指定进程的信息(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 获取资源信息 | C | extern char** kdk_procname_get_process_infomation(char *proc_name) | 获取指定进程的信息 | +| | | 参数说明 | 返回值说明 | +| | | proc_name:进程名 | char** 进程的信息列表,以NULL表示结尾,由alloc生成,需要被kdk_proc_freeall回收;若获取出错,返回NULL; | + > 获取系统中所有进程的信息(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------- | ------------------------------------------------------------ | +| 获取资源信息 | C | char** kdk_get_process_all_information() | 获取系统中所有进程的信息 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 进程所有信息列表,,以NULL表示结尾,由alloc生成,需要被kdk_proc_freeall回收;若获取出错,返回NULL; | -### **4.1.3** 输入框模块 + > 回收字符串列表(自2.0.0.0版本启用) -#### **4.1.3.1** 密码输入框 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | -------------- | +| 获取资源信息 | C | extern inline void kdk_proc_freeall(char **ptr) | 回收字符串列表 | +| | | 参数说明 | 返回值说明 | +| | | ptr:字符串列表 | 无 | + > 获取某一进程的名称(自2.2.3.5版本启用) -> 功能描述:KPasswordEdit,支持切换输入内容明文/暗文的切换,支持设置 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------ | ------------------------------------------------------------ | +| 获取资源信息 | C | extern char* kdk_get_process_name(int proc_num); | 获取某一进程的名称 | +| | | 参数说明 | 返回值说明 | +| | | proc_num 进程号 | char* 成功返回进程的名称,失败返回NULL。返回的字符串需要被 free 释放。 | -密码校验结果(正常输入为蓝色边框,设置密码正确为绿色边框,密码错误为 + > 获取某一进程的id(自2.2.3.5版本启用) -> 红色边框),支持 loading 状态,支持设置是否启用 clearButton。 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image15.png) -> -> 枚举类型 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | ------------------------------------ | +| 获取资源信息 | C | extern int kdk_get_process_id(char *proc_name); | 获取某一进程的id | +| | | 参数说明 | 返回值说明 | +| | | proc_name 进程的名称 | int 成功返回进程号(id),失败返回0. | -| | | -|-------|-----------------------------------------------| -| enum  | LoginState{Ordinary,LoginSuccess,LoginFailed} | +### **3.1.6** 获取操作系统基础信息 -| 声明 | 描述 | -|------------------------------------------|------------------------| -| void setState(LoginState state); | 设置登录状态 | -| LoginState state(); | 返回登录状态 | -| void setLoading(bool flag); | 设置是否启用加载状态。 | -| bool isLoading(); | 判断是否处于加载状态 | -| QString placeholderText(); | 返回placeholderText的文本内容 | -| void setPlaceholderText(QString&text); | 设置PlaceholderText的文本内容 | -| void setClearButtonEnabled(bool enable); | 设置是否启用ClearButton | -| bool isClearButtonEnabled() const; | 返回是否启用了ClearButton | -| void setEchoModeBtnVisible(bool enable); | 设置EchoModeBtn是否可见 | -| bool echoModeBtnVisible(); | 返回EchoModeBtn是否可见 | -| void setClearBtnVisible(bool enable); | 设置ClearBtn是否可见 | -| bool clearBtnVisible(); | 返回ClearBtn是否可见 | -| void setEnabled(bool); | 设置KLineEdit是否可用 | + 封装 C 接口获取系统名称、版本号、激活信息等。 +``` +$ sudo apt-get install libkysdk-sysinfo libkysdk-sysinfo-dev -#### **4.1.3.2** 搜索输入框 -> -> 功能描述:可以设置 placeHolder 的文字内容及对齐方式,输入文字的对齐 -> -> 方式,是否启用清除按钮等。 -> +``` -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image16.png) +构建 demo: + (1).pro 文件构建项目 + qt 项目.pro 文件中增加: -| 声明 | 描述 | -|---------------------------------------------------|---------------------------| -| void setEnabled(bool); | 设置是否可用 | -| bool isEnabled(); | 返回是否可用 | -| void setClearButtonEnabled(bool enable); | 设置是否显示清除按钮 | -| bool isClearButtonEnabled() const; | 返回是否显示清除按钮 | -| QStringplaceholderText() const; | 返回placeholder | -| void setPlaceholderText(const QString &); | 设置placeholder的文本 | -| Qt::Alignment placeholderAlignment() const; | 返回placeholder的对齐方式 | -| void setPlaceholderAlignment(Qt::Alignment flag); | 设置placeholder的对齐方式 | -| Qt::Alignment alignment() const; | 返回输入文本的对齐方式 | -| void setAlignment(Qt::Alignment flag); | 设置输入文本的对齐方式。 | -| void clear(); | 清空搜索框内容。 | -| void setTranslucent(bool flag); | 设置是否启用半透明效果(自1.2.0.10启用) | -| bool isTranslucent(); | 获取是否启用半透明效果(自1.2.0.10启用) | +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-sysinfo +``` + (2)CMakeLists.txt 构建项目 -### **4.1.4** 按钮模块 -#### **4.1.4.1** 带边框按钮 +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKSYSINFO kysdk-sysinfo) +target_include_directories(demo PRIVATE ${KYSDKSYSINFO_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKSYSINFO_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKSYSINFO_LIBRARIES}) +``` -> 功能描述:KBoderButton,继承自 QPushButton,样式上进行了封装。可以通过 -> -> setPalette()进一步调整样式。 -> -> 如: + (3)获取操作系统信息,需要添加头文件: ``` -QPalette palette = m_pBtn1->palette(); -palette.setColor(QPalette::ButtonText,QColor(255,0,0)); -m_pBtn1->setPalette(palette); + #include "kysdk/kysdk-system/libkysysinfo.h" ``` -> QPushButton 中的各接口均适用,支持四种构造方法。 + > 获取操作系统架构信息(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------------ | -------------------------- | +| 获取系统基础信息 | C | extern char* kdk_system_get_architecture() | 获取系统架构信息 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 系统架构,例:x86_64 | -| 声明 | 描述 | -|-----------------------------------------------------------------------------------|-------------------| -| KBorderButton(QWidget* parent = nullptr); | 仅一个button | -| KBorderButton(const QString &text, QWidget *parent = nullptr); | 构造一个带文本button | -| KBorderButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr); | 构造一个带文本和图标的button | -| KBorderButton(const QIcon &icon, QWidget *parent = nullptr); | 构造一个带图标的button | -| void setIcon(const QIcon &icon); | 设置按钮图标 | + > 获取操作系统名称(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ---------------------------------------- | ------------------------- | +| 获取系统基础信息 | C | extern char* kdk_system_get_systemName() | 获取操作系统名称 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 系统名称,例:Kylin | -#### **4.1.4.2** 无边框按钮 -> -> 功能描述:KboderlessButton,继承自 QPushButton,样式上进行了封装。同样 -> -> 可以可以通过 setPalette()进一步调整样式。 + > 获取操作系统版本号(自1.2.0版本启用) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image17.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_version(bool verbose) | 获取系统版本号 | +| | | 参数说明 | 返回值说明 | +| | | verbose:0获取简略版本号,1获取详细版本号 | char* 系统版本号,例:系统简略版本:xxxx桌面操作系统;系统详细版本:Desktop-V10-Professional-Release-Build1-210203 | -> QPushButton 中的各接口均适用,支持四种构造方法。 + > 获取操作系统激活状态(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern int kdk_system_get_activationStatus(int *status_error_num, int *date_error_num); | 获取操作系统激活状态 | +| | | 参数说明 | 返回值说明 | +| | | status_error_num 用于接收激活状态的错误信息
date_error_num 用于接收获取技术服务状态错误信息 | int 2表示已过期;0表示未激活,处于试用期;1表示已激活;-1表示接口内部错误; | -| 声明 | 描述 | -|---------------------------------------------------------------------------------------|-------------------| -| KBorderlessButton(QWidget* parent = nullptr); | 仅一个button | -| KBorderlessButton(const QString &text, QWidget *parent = nullptr); | 构造一个带文本button | -| KBorderlessButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr); | 构造一个带文本和图标的button | -| KBorderlessButton(const QIcon &icon, QWidget *parent = nullptr); | 构造一个带图标的button | -| void setIcon(const QIcon &icon) | 设置无边框按钮图标。 | + > 获取操作系统服务序列号(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_serialNumber(); | 获取操作系统服务序列号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | + > 获取内核版本号(自1.2.0版本启用) -#### **4.1.4.3** 下拉菜单按钮 -> -> 功能描述:KMenuButton,继承自 QPushButon,默认 ICon 为"open-menu-symbolic",一级菜单中包含 5 个选项,分别是:"设置","主题","帮助","关于","退出",主题中包括 3 个二级选项,分别是:"跟随主题","浅色主题","深色主题"。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_kernelVersion() | 获取内核版本号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image18.png) + > 获取当前登录用户的用户名(自1.2.0版本启用) + > 注:2.3.0.0版本后修改为系统当前登录的用户名,跟应用程序的启动用户没有关系,root用户启动的应用程序调用这个接口也不会返回root。 -> QPushButton 的各个接口均适用。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ----------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_eUser() | 获取当前登录用户的用户名(Effect User) | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | + > 获取当前登录用户的登录时间(自2.3.0.0版本启用) -| 声明 | 描述 | -|---------------------------|--------------| -| QMenu* menu(); | 获取主菜单 | -| QMenu* themeMenu(); | 获取主题菜单 | -| QAction* settingAction(); | 获取设置action | -| QAction* themeAction(); | 获取主题Action | -| QAction* assistAction(); | 获取帮助Action | -| QAction* aboutAction() | 获取关于Action | -| QAction* quitAction(); | 获取离开Action | -| QAction* autoAction(); | 获取跟随主题Action | -| QAction* lightAction(); | 获取浅色主题Action | -| QAction* darkAction(); | 获取深色主题Action | +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ----------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_eUser_login_time(); | 获取当前登录用户的登录时间 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | + > 获取操作系统项目编号名(自1.2.0版本启用) -#### **4.1.4.4** 开关按钮 -> -> 功能描述:KSwitchButton,继承自 QPushButton,对按钮进行了重绘,用于指示开/关状态。 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image19.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ----------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_projectName() | 获取操作系统项目编号名 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image20.png) + > 获取操作系统项目子编号名(自1.2.1版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | --------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_projectSubName() | 获取操作系统项目子编号名 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回字符串,失败返回NULL。返回的字符串需要被 free 释放 | -| 声明 | 描述 | -|---------------------------------|--------------------------| -| void setCheckable(bool); | 设置是否可选中 | -| bool isCheckable() const; | 返回是否可选中 | -| bool isChecked() const; | 返回是否选中 | -| void setChecked(bool); | 设置是否选中 | -| void setTranslucent(bool flag); | 设置是否启用半透明效果(自1.2.0.10启用) | -| bool isTranslucent() | 获取是否启用半透明效果(自1.2.0.10启用) | + > 获取操作系统产品标识码(自1.2.1版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ---------------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern unsigned int kdk_system_get_productFeatures() | 获取操作系统产品标识码 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回标志码
0000:信息异常
0001:仅PC特性
0010:仅平板特性
0011:支持平板与PC特性
0111 同时支持三种特性(平板、PC、大屏) | + > 获取操作系统宿主机的虚拟机类型(自1.2.0版本启用) -#### **4.1.4.5** 工具按钮 -> -> 功能描述:KToolButton,继承自 QToolButton,支持三种样式,支持 loading状态,支持是否显示下拉按钮。 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image21.png) -> -> 枚举类型 +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------------ | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_hostVirtType() | 获取操作系统宿主机的虚拟机类型 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 获取失败返回NULL,获取成功返回一个字符串,字符串内容如下:
[none, qemu, kvm, zvm, vmware,hyper-v, orcale virtualbox, xen, bochs, uml,parallels,bhyve,qnx,arcn,openvz,lxc,lxc-libvirt,systemd-nspawn,docker,podman,rkt,wsl]
其中 none 表示运行在物理机环境中;其他字符串代表具体的虚拟环境类型。返回的字符串需要被 free 释放 | -| | | -|-------|-------------------------------------------| -| enum  | KToolButtonType{Flat,SemiFlat,Background} | + > 获取操作系统宿主机的云平台类型(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ----------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char* kdk_system_get_hostCloudPlatform() | 获取操作系统宿主机的云平台类型(天翼云在2.2.2.0版本开始支持,华为特殊标识在2.3.0.0版本开始支持) | +| | | 参数说明 | 返回值说明 | +| | | | char* 获取失败返回NULL,获取成功返回一个字符串,字符串内容如下:
[none, huawei, ctyun]
其中 none 表示运行在物理机或未知的云平台环境中;其它字符串代表不同的云平台。返回的字符串需要被 free 释放 | -| 声明 | 描述 | -|---------------------------------------|---------------------------------| -| KToolButtonType type(); | 返回类型 | -| void setType(KToolButtonType type); | 设置类型 | -| void setIcon(const QIcon& icon); | 设置Icon | -| void setLoading(bool flag); | 设置正在加载状态,仅不带箭头的toolbuttuon支持该状态 | -| bool isLoading(); | 返回是否正在加载 | -| QIcon icon(); | 获取Icon | -| void setArrow(bool flag); | 设置是否显示向下箭头,默认不显示 | -| bool hasArrow() const; | 返回是否显示箭头 | -| void setPixmapSize(const QSize&size); | 设置pixmap大小 | -| QSize pixmapSize() const; | 获取pixmap大小 | + > 判断当前操作系统是否为专用机系统(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ----------------------------------- | --------------------------------------- | +| 获取系统基础信息 | C | extern bool kdk_system_is_zyj(void) | 判断当前镜像系统否为专用机系统 | +| | | 参数说明 | 返回值说明 | +| | | 无 | bool
true代表是
false代表不是 | -#### **4.1.4.6** KPushButton -> -> 功能描述:KPushButton,继承自 QPushButton,在 QPushButton 的基础上新增提供半透明效果,可以设置按钮圆角、背景色、图标是否跟随系统高亮,还可以设置按钮类型,分为正常类型和圆形(需要设置大小实现正圆)。自 1.2.0.10 版本启用。 + > 获取系统分辨率信息(自2.0.0.0版本启用) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image22.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ---------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char** kdk_system_get_resolving_power() | 获取系统分辨率信息 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 分辨率信息列表,以NULL表示结尾,由alloc生成,需要被kdk_resolving_freeall回收;若获取出错,返回NULL; | -> 枚举类型 + > 回收字符串列表(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ---------------------------------------------------- | -------------- | +| 获取系统基础信息 | C | extern inline void kdk_resolving_freeall(char **ptr) | 回收字符串列表 | +| | | 参数说明 | 返回值说明 | +| | | ptr:字符串列表 | 无 | -| | | -|-------|----------------------------------------| -| enum  | ButtonType { NormalType, CircleType }; | +> 获取显示系统硬件版本类别(自2.1.1.0版本启用) -| 声明 | 描述 | -|--------------------------------------------------------------------------------|-------------------------------------| -| void setBorderRadius(int radius); | 通过圆角半径设置按钮圆角(每个圆角相同) | -| void setBorderRadius(int bottomLeft,int topLeft,int topRight,int bottomRight); | 通过四个点来设置圆角 | -| int borderRadius(); | 获取按钮圆角 | -| void setBackgroundColor(QColor color); | 设置按钮背景色 | -| QColor backgroundColor(); | 获取按钮背景色 | -| void setButtonType(ButtonType type); | 设置KPushButton的类型 | -| ButtonType buttonType(); | 获取KPushButton的类型 | -| void setTranslucent(bool flag); | 设置KPushButton是否为半透明 | -| bool isTranslucent(); | 判断KPushButton是否为半透明 | -| void setIconHighlight(bool flag); | 设置图标是否跟随系统高亮色,默认不跟随 | -| bool isIconHighlight(); | 判断图标是否跟随系统高亮色 | -| void setIconColor(QColor color); | 设置按钮添加图标的颜色(自1.2.0.13启用) | -| QColor IconColor(); | 获取按钮添加图标的颜色(自1.2.0.13启用) | -| void setBackgroundColorHighlight(bool flag); | 设置按钮背景色是否跟随系统高亮色,默认不跟随(自1.2.0.13启用) | -| bool isBackgroundColorHighlight(); | 判断按钮背景色是否跟随系统高亮色(自1.2.0.13启用) | +| 子模块 | 编程语言 | 声明 | 描述 | +| :--------------- | :------- | :------------------------------------------- | :----------------------------------------------------------- | +| 获取系统基础信息 | C | extern char* kdk_system_get_systemCategory() | 获取显示系统版本类别 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回字符串系统版本硬件类别,版本类别有{Tablet, MaxTablet},Tablet-平板,MaxTablet-大屏;失败返回NULL,未读到文件或字段返回字符串none。返回的字符串需要被 free 释放。 | + > 获取系统版本号/补丁版本号(自1.2.1版本启用) -#### **4.1.4.7** KPressButton -> -> 功能描述:KPressButton,继承自 QPushButton,在 QPushButton 的基础上新增提供半透明效果,可以设置圆角,是否可选中,是否选中,还可以设置按钮的类型以及是否启用 loading 的状态。自 1.2.0.10 版本启用。 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image23.png) -> -> 枚举类型 +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | -------------------------------------------------- | ---------------------------------------------- | +| 获取系统基础信息 | C | extern version_t kdk_system_get_version_detaile(); | 获取系统版本号/补丁版本号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | version_t 该系统版本号的详细信息,具体信息自取 | -| | | -|-------|----------------------------------------| -| enum  | ButtonType { NormalType, CircleType }; | + > 获取系统开机时间(自2.2.3.5版本启用) -| 声明 | 描述 | -|--------------------------------------------------------------------------------|----------------------| -| void setBorderRadius(int radius); | 通过圆角半径设置按钮圆角(每个圆角相同) | -| void setBorderRadius(int bottomLeft,int topLeft,int topRight,int bottomRight); | 通过四个点来设置圆角 | -| void setCheckable(bool); | 设置是否可选中 | -| bool isCheckable() const; | 返回是否可选中 | -| void setChecked(bool); | 设置是否选中 | -| bool isChecked() const; | 返回是否选中 | -| void setButtonType(ButtonType type); | 设置button类型 | -| ButtonType buttonType(); | 获取KPushButton的类型 | -| void setTranslucent(bool flag); | 设置KPushButton是否为半透明 | -| bool isTranslucent(); | 判断KPushButton是否为半透明 | -| void setLoaingStatus(bool flag); | 设置是否启用loading状态 | -| bool isLoading(); | 返回是否启用loading状态 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | -------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char** kdk_system_get_startup_time(); | 获取系统开机时间 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 成功返回开机时间,以NULL表示结尾,由alloc生成,需要被kdk_resolving_freeall回收;若获取出错,返回NULL; | + > 获取系统关机时间(自2.2.3.5版本启用) -### **4.1.5** Bar 模块 -#### **4.1.5.1** KIconBar +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | --------------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char** kdk_system_get_shutdown_time(); | 获取系统关机时间 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 成功返回关机时间,以NULL表示结尾,由alloc生成,需要被kdk_resolving_freeall回收;若获取出错,返回NULL; | -> 功能描述:KWidget 和 KDialog 的一个组成部分,用于显示图标和窗口名称。 -> + > 获取整机制造商(自2.2.3.5版本启用) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image24.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ----------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char *kdk_get_host_vendor(); | 获取整机制造商 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 整机制造商,失败返回NULL。返回的字符串需要被 free 释放 | + > 获取整机型号(自2.2.3.5版本启用) -| 声明 | 描述 | -|-----------------------------------------------|-----------| -| void setIcon(const QString& iconName); | 设置图标名称 | -| void setIcon(const QIcon& icon); | 设置图标 | -| void setWidgetName(const QString& widgetName) | 设置标题 | -| QLabel* nameLabel(); | 获取标题label | -| QLabel* iconLabel(); | 获取图标label | +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------ | ---------------------------------------------------------- | +| 获取系统基础信息 | C | extern char *kdk_get_host_product(); | 获取整机型号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 整机型号,失败返回NULL。返回的字符串需要被 free 释放 | + > 获取整机序列号(自2.2.3.5版本启用) -#### **4.1.5.2** KWindowButtonBar -> -> 功能描述:KWidget 和 KDialog 的一个组成部分,用于下拉菜单、最小化、最大化、关闭按钮。 -> -> 枚举类型 +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ----------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char *kdk_get_host_serial(); | 获取整机序列号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 整机序列号,失败返回NULL。返回的字符串需要被 free 释放 | -| | | -|-------|-------------------------------------| -| enum  | MaximumButtonState{Maximum,Restore} | + > 获取主机名(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | --------------------------------------- | -------------------------------------------------------- | +| 获取系统基础信息 | C | extern char *kdk_system_get_hostName(); | 获取主机名 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 主机名,失败返回NULL。返回的字符串需要被 free 释放 | -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image25.png) + > 获取操作系统位数(自2.2.3.5版本启用) -| 声明 | 描述 | -|-------------------------------------------------------|---------------------| -| QPushButton* minimumButton(); | 获取最小化按钮 | -| QPushButton* maximumButton(); | 获取最大化按钮 | -| QPushButton* closeButton(); | 获取关闭按钮 | -| KMenuButton* menuButton(); | 获取菜单按钮 | -| MaximumButtonState maximumButtonState(); | 获取最大化按钮的状态(最大化/恢复) | -| void setMaximumButtonState(MaximumButtonState state); | 设置最大化按钮图标状态(最大化/恢复) | +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | --------------------------------- | ---------------- | +| 获取系统基础信息 | C | extern int kdk_system_get_word(); | 获取操作系统位数 | +| | | 参数说明 | 返回值说明 | +| | | 无 | int 返回系统位数 | + > 获取操作系统构建时间(自2.2.3.5版本启用) -#### **4.1.5.3** 进度条 -> -> 功能描述:KProgressBar,继承自 QProgressBar,支持三种状态:正常、完成和失败,支持是否显示进度值,支持水平和竖直。 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image26.png) -> -> 枚举类型 +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ---------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char *kdk_system_get_buildTime(); | 获取操作系统构建时间 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 操作系统构建时间,失败返回NULL。返回的字符串需要被 free 释放 | + > 获取总线信息(自2.2.3.5版本启用) -| | | -|-------|-----------------------------------------------------------------| -| enum  | ProgressBarState{NormalProgress,FailedProgress,SuccessProgress} | -| 声明 | 描述 | -|----------------------------------------|------| -| ProgressBarState state(); | 获取状态 | -| void setState(ProgressBarState state); | 设置状态 | -| QString text() const override; | 获取文本 | -| void setOrientation(Qt::Orientation); | 设置方向 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------------ | ----------------------------------------------------- | +| 获取系统基础信息 | C | extern struct KPci *kdk_hw_get_pci_info(); | 获取总线信息 | +| | | 参数说明 | 返回值说明 | +| | | 无 | pci总线信息结构体,具体参考返回结构体,lspci -k的返回 | + > 释放由kdk_hw_get_pci_info返回的pci总线信息结构体(自2.2.3.5版本启用) -#### **4.1.5.4** KProgressCircle -> -> 环形进度条,支持三种状态:正常、完成和失败,支持是否显示进度值。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ---------------------------------------------------- | ------------------------------------------------ | +| 获取系统基础信息 | C | extern void kdk_hw_free_pci_info(struct KPci *info); | 释放由kdk_hw_get_pci_info返回的pci总线信息结构体 | +| | | 参数说明 | 返回值说明 | +| | | info 由kdk_hw_get_pci_info返回的结构体指针 | 无 | -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image27.png) + > 获取应用场景(自2.2.3.5版本启用) -| 声明 | 描述 | -|---------------------------------------|-----------------| -| int minimum() const | 获取环形进度条的最小值。 | -| int maximum() const | 获取环形进度条的最大值。 | -| int value() const | 获取环形进度条的值。 | -| QString text() const | 获取环形进度条的文本。 | -| void setTextVisible(bool visible) | 设置环形进度条的文本是否可见。 | -| bool isTextVisible() const | 返回环形进度条的文本是否可见。 | -| ProgressBarState state() | 获取环形进度条的状态。 | -| void setState(ProgressBarState state) | 设置环形进度条的状态。 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | --------------------------------------- | ------------------------------------------------------------ | +| 获取系统基础信息 | C | extern char *kdk_system_get_appScene(); | 获取应用场景 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回字符串应用场景,应用场景有{EDU},失败返回NULL。返回的字符串需要被 free 释放 | + > 获取系统中文件描述符数(自2.3.0.0版本启用) -#### **4.1.5.5** KTabBar -> -> 功能描述:继承自 QTabBar -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image28.png) -> -> 枚举类型 +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ----------------------------------------------------- | ------------------------------------ | +| 获取系统基础信息 | C | extern unsigned int kdk_system_get_file_descriptor(); | 获取系统中文件描述符数 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回cpu的文件描述符数; | -| | | -|-------|------------------------------------------------| -| enum  | KTabBarStyle{SegmentDark,SegmentLight,Sliding} | + > 获取系统中进程数(自2.3.0.0版本启用) -| 声明 | 描述 | -|----------------------------------------------|---------------------------------------| -| void setTabBarStyle(KTabBarStyle barStyle); | 设置TabBar样式 | -| KTabBarStyle barStyle(); | 返回TabBar样式 | -| void setBorderRadius(int radius); | 设置圆角半径,只对SegmentDark,SegmentLight样式生效 | -| int borderRadius(); | 获取圆角半径 | -| void setBackgroundColor(const QColor &color) | 设置KTabBar背景色。 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | -------------------------------------------------- | ------------------------------ | +| 获取系统基础信息 | C | extern unsigned int kdk_system_get_process_nums(); | 获取系统中进程数 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回cpu的进程数; | -#### **4.1.5.6** 导航栏 -> -> 功能描述:KNavigationBar,支持显示三种样式的 item,带图标的表示一级导航的 item,不带图标的表示二级的导航 item,还有表示组别的灰色字体的item。 + > 获取系统中线程数(自2.3.0.0版本启用) -| 声明 | 描述 | -|--------------------------------------------------------------------|----------------------| -| void addItem(QStandardItem*item); | 增加常规Item | -| void addSubItem(QStandardItem*subItem); | 增加次级Item | -| void addGroupItems(QListitems,const QString& tag); | 成组增加Item,在导航栏中会显示tag | -| void addTag(const QString& tag); | 添加tag | -| QStandardItemModel* model(); | 获取model | -| QListView* listview(); | 获取listview | +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | ------------------------------------------------- | ------------------------------ | +| 获取系统基础信息 | C | extern unsigned int kdk_system_get_thread_nums(); | 获取系统中线程数 | +| | | 参数说明 | 返回值说明 | +| | | 无 | unsigned int 返回cpu的线程数; | + > 获取CPU负载均衡(自2.3.0.0版本启用) -#### **4.1.5.7** KPixmapContainer -> -> 功能描述:用于表示头像右上方消息提示信息,可以设置提示信息数值,字体大小,背景色,图片大小。 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image29.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | -------------------------------------------- | ----------------------------------------- | +| 获取系统基础信息 | C | extern kdk_loadavg kdk_system_get_loadavg(); | 获取CPU负载均衡 | +| | | 参数说明 | 返回值说明 | +| | | 无 | kdk_loadavg 返回cpu的1,5,15分钟负载均衡; | -| 声明 | 描述 | -|----------------------------------------|----------| -| int value() const; | 获取值 | -| void setValue(int value); | 设置值 | -| void setValueVisiable(bool flag); | 设置值是否可见 | -| bool isValueVisiable() const; | 获取值是否可见 | -| void setPixmap(const QPixmap& pixmap); | 设置pixmap | -| QPixmap pixmap()const; | 获取pixmap | -| void clearValue(); | 清除值 | -| QColor color(); | 返回背景色 | -| void setColor(const QColor& color); | 设置背景色 | -| int fontSize(); | 返回字体大小 | -| void setFontSize(int size); | 设置字体大小 | +### **3.1.7** 获取网络信息 -### **4.1.6** 滑动条模块 -#### **4.1.6.1** 滑动条 + 封装 C 接口获取到网络信息。 -> 功能描述: -> -> 非步数关系:步数为 1,可以在任意位置点击和拖拽; -> -> 步数关系:步数为固定值,可根据步数值点击和拖拽; -> -> 节点关系:步数为节点间隔,可根据节点间隔点击和拖拽 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image30.png) -> -> 枚举类型 +构建 demo: + (1).pro 文件构建项目 -| | | -|-------|--------------------------------------------------------------------| -| enum  | KSliderType{SmoothSlider,StepSlider,NodeSlider,SingleSelectSlider} | + qt 项目.pro 文件中增加: -| 声明 | 描述 | -|---------------------------------------|--------------------------| -| void setTickInterval(int interval); | 设置节点间隔 | -| void setSliderType(KSliderType type); | 设置滑动条类型 | -| KSliderType sliderType(); | 获取滑动条类型 | -| int | tickInterval() const; | 获取节点间隔 | -| void setValue(int); | 设置值 | -| void setNodeVisible(bool flag); | 设置是否显示节点 | -| bool nodeVisible(); | 获取是否显示节点 | -| void setToolTip(const QString&); | 设置tooltip(自1.2.0.7启用) | -| QString | toolTip() const; | 获取toolTip(自1.2.0.7启用) | -| void setTranslucent(bool flag); | 设置是否启用半透明效果(自1.2.0.10启用) | -| bool isTranslucent(); | 获取是否启用半透明效果(自1.2.0.10启用) | +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-net +``` + (2)CMakeLists.txt 构建项目 -### **4.1.7** 消息提示模块 -#### **4.1.7.1** KBadge -> 功能描述:消息提醒气泡。可以设置提示信息数值,字体大小,背景色。 -> -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image31.png) +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKNET kysdk-net) +target_include_directories(demo PRIVATE ${KYSDKNET_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKNET_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKNET_LIBRARIES}) +``` -| 声明 | 描述 | -|-------------------------------------|-----------------------------| -| int value(); | 返回值 | -| void setValue(int value); | 设置值,最大显示数值为999,大于999显示"..." | -| void setValueVisiable(bool flag); | 设置值是否可见 | -| bool isValueVisiable() const; | 获取值是否可见 | -| QColor color(); | 获取背景色 | -| void setColor(const QColor& color); | 设置背景色 | -| int fontSize(); | 获取字体大小 | -| void setFontSize(int size); | 设置字体大小 | + (3)获取网络信息,需要添加头文件: +``` + #include "kysdk/kysdk-system/libkynetinfo.h" +``` + (1)dbus 服务名称:org.freedesktop.NetworkManager -#### **4.1.7.2** KBallonTip -> -> 功能描述:消息提示框,支持四种背景色以及对应的提示图标。 + (2)路径名称:/org/freedesktop/NetworkManager -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image32.png) + (3)Interfaces:org.freedesktop.NetworkManager -> 枚举类型 + > 获取网络连接状态 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------- | ------------------ | +| 获取网络信息 | dbus接口 | int state() | 获取网络连接状态。 | +| | | 参数说明 | 返回值说明 | +| | | 无 | int 网络连接状态 | -| | | -|-------|--------------------------------------------| -| enum  | TipType{Nothing,Normal,Info,Warning,Error} | +> 获取网络端口状态(自2.0.0.0版本启用) -| 声明 | 描述 | -|-------------------------------------------------------------------|---------------------| -| void showInfo(); | 气泡在显示之后一定时间后自动消失 | -| void setTipType(const TipType& type); | 设置类型 | -| TipType tipType(); | 返回类型 | -| void setText(const QString& text); | 设置文本内容 | -| QString text(); | 返回文本内容 | -| void setContentsMargins(int left, int top, int right, int bottom) | 通过上下左右数值设置内容边距。 | -| void setContentsMargins(const QMargins &margins); | 通过QMargins对象设置内容边距。 | -| void setTipTime(int my_time); | 设置持续时间 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------- | ------------------------------------------------------------ | +| 获取网络信息 | C | extern int kdk_net_get_port_stat(int port); | 获取端口状态 | +| | | 参数说明 | 返回值说明 | +| | | port 端口号 | int 端口状态
FREE:0
TCP_ESTABLISHED:1
TCP_SYN_SENT:2
TCP_SYN_RECV:3
TCP_FIN_WAIT1:4
TCP_FIN_WAIT2:5
TCP_TIME_WAIT:6
TCP_CLOSE:7
TCP_CLOSE_WAIT:8
TCP_LAST_ACL:9
TCP_LISTEN:10
TCP_CLOSING:11 | + > 获取多个网络端口状态(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------------------- | +| 获取网络信息 | C | int kdk_net_get_multiple_port_stat(int start, int end, int *result); | 获取[start,end]的端口状态 | +| | | 参数说明 | 返回值说明 | +| | | start 开始端口号
end 结束端口号
result 具有足够空间的int数组接受端口状态 | 成功返回0
失败返回-1 | -#### **4.1.7.3** KSecurityLevelBar -> -> 功能描述:密码强度提示条,用于指示密码强度等级。分为低,中,高三个等级,等级具体划分策略由应用程序指定。 +> 获取默认网关(自2.0.0.0版本启用) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image33.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------- | -------------------------------------------------- | +| 获取网络信息 | C | extern prouteMapList kdk_net_get_route(); | 获取默认网关 | +| | | 参数说明 | 返回值说明 | +| | | 无 | prouteMapList 网管信息,具体信息自取,失败返回NULL | -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image34.png) +> 获取防火墙信息(自2.0.0.0版本启用) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image35.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------ | --------------------------------------------- | +| 获取网络信息 | C | extern pChain kdk_net_get_iptable_rules(); | 获取防火墙信息 | +| | | 参数说明 | 返回值说明 | +| | | 无 | pChain 防火墙信息,具体信息自取,失败返回NULL | -> 枚举类型 + > 获取子网信息(自2.2.3.5版本启用) -| | | -|-------|--------------------------------| -| enum  | SecurityLevel{Low,Medium,High} | -| 声明 | 描述 | -|---------------------------------------------|--------| -| void setSecurityLevel(SecurityLevel level); | 设置安全等级 | -| SecurityLevel securityLevel(); | 获取安全等级 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------------------------------ | ------------ | +| 获取网络信息 | C | extern void kdk_net_get_netmask(IN const char *nc, OUT char *mask); | 获取子网信息 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1;
mask 子网掩码 | 无 | + > 获取进程对应端口(自2.2.3.5版本启用) -### **4.1.8** 面包屑 KBreadCrumb -> -> 无边框的标签栏,可以添加文字和图标,支持点击和 hover 高亮。 -> -> 功能图: -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image36.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------- | ------------------------------------------------------------ | +| 获取网络信息 | C | extern char **kdk_net_get_proc_port(); | 获取进程对应端口 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char ** 进程对应端口, 以NULL表示结尾,由alloc生成,需要被kdk_net_freeall回收;若获取出错,返回NULL; | -> 枚举类型 + > 获取所有UP状态的端口号(自2.2.3.5版本启用) -| | | -|-------|----------------------------------------------------| -| enum  | KBreadCrumbType { FlatBreadCrumb, CubeBreadCrumb } | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ------------------------------------ | ------------------------------------------------------------ | +| 获取网络信息 | C | extern char **kdk_net_get_up_port(); | 获取所有UP状态的端口号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char ** 所有UP状态的端口号, 以NULL表示结尾,由alloc生成,需要被kdk_net_freeall回收;若获取出错,返回NULL; | -| 声明 | 描述 | -|----------------------------------|-------------------------| -| void setIcon(const QIcon &icon); | 设置图标 | -| QIcon icon() const; | 返回图标 | -| bool isFlat() const; | 返回KBreadCrumb是否为flat类型。 | -| void setFlat(bool flat); | 设置KBreadCrumb是否为flat类型。 | + > 获取hosts配置(自2.2.3.5版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------- | ------------------------------------------------------------ | +| 获取网络信息 | C | extern char* kdk_net_get_hosts(); | 获取hosts配置 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回hosts配置,失败返回NULL。返回的字符串需要被 free 释放。 | -### **4.1.9** KCommentPanel + > 获取hosts配置的域名映射(自2.2.3.5版本启用) -| | | -|-------|-------------------------------------------------------------------------------| -| enum  | StarLevel {LevelZero =0, LevelOne, LevelTwo, LevelThree, LevelFour,LevelFive} | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------- | ------------------------------------------------------------ | +| 获取网络信息 | C | extern char* kdk_net_get_hosts_domain(); | 获取hosts配置的域名映射 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char* 成功返回hosts配置的域名映射,失败返回NULL。返回的字符串需要被 free 释放。 | + > 获取DNS配置文件(自2.2.3.5版本启用) -> 枚举类型 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ---------------------------------------- | ------------------------------------------------------------ | +| 获取网络信息 | C | extern char** kdk_net_get_resolv_conf(); | 获取DNS配置文件 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** DNS配置文件, 以NULL表示结尾,由alloc生成,需要被kdk_net_freeall回收;若获取出错,返回NULL; | + > 用于回收字符串列表(自2.2.3.5版本启用) -| 声明 | 描述 | -|---------------------------------|--------| -| void setIcon(const QIcon&); | 设置图标 | -| void setTime(const QString&); | 设置评论时间 | -| void setName(const QString&); | 设置评论名称 | -| void setText(const QString&); | 设置评论内容 | -| void setGrade(StarLevel level); | 设置评论等级 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | ----------------------------------------------- | ------------------ | +| 获取网络信息 | C | extern inline void kdk_net_freeall(char **ptr); | 用于回收字符串列表 | +| | | 参数说明 | 返回值说明 | +| | | ptr 字符串列表 | 无 | -### **4.1.10** KListView -> -> 提供一个图片两行文字的显示效果,若只有一行文字,则对于 icon 居中显示 。 +> 释放由kdk_net_get_route返回的网关信息结构体(自2.0.0.0版本启用) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image37.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | --------------------------------------------------- | ------------------------------------------- | +| 获取网络信息 | C | extern void kdk_net_free_route(prouteMapList list); | 释放由kdk_net_get_route返回的网关信息结构体 | +| | | 参数说明 | 返回值说明 | +| | | list 由kdk_net_get_route返回的结构体 | 无 | -### **4.1.11** KTag -> -> 标签,分为默认和可关闭的两种。 + > 释放由kdk_net_get_iptable_rules返回的防火墙信息结构体(自2.0.0.0版本启用) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image38.png) -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image39.png) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------ | -------- | -------------------------------------------- | ----------------------------------------------------- | +| 获取网络信息 | C | extern void kdk_net_free_chain(pChain list); | 释放由kdk_net_get_iptable_rules返回的防火墙信息结构体 | +| | | 参数说明 | 返回值说明 | +| | | list 由kdk_net_get_iptable_rules返回的结构体 | 无 | -> 枚举类型 -| | | -|-------|-----------------------------------------------------------| -| enum  | TagStyle { HighlightTag, BoderTag, BaseBoderTag, GrayTag} | +### **3.1.8** 获取系统运行时信息 -| 声明 | 描述 | -|-----------------------------------|-------------| -| void setClosable(bool flag) | 设置标签是否可以关闭。 | -| bool closable() | 返回标签是否可以关闭。 | -| void setText(const QString &text) | 设置标签的文本。 | -| void setTagStyle(TagStyle style) | 设置标签的样式。 | -| TagStyle tagStyle() | 获取标签的样式。 | -| QString text() | 获取标签的文本。 | + 封装C接口获取网速、cpu 温度、硬盘温度等。 +``` +$ sudo apt-get install libkysdk-realtime libkysdk-realtime-dev +``` -### **4.1.12** KTranslucentFloor -> -> KTranslucentFloor,继承自 QFrame,提供一个毛玻璃底板,可以设置圆角以及是否添加阴影效果。自 1.2.0.12 版本启用。 +构建 demo: -![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image40.png) + (1).pro 文件构建项目 + qt 项目.pro 文件中增加: -| 声明 | 描述 | -|-------------------------------------|--------------------------| -| void setBorderRadious(int radious); | 设置圆角半径 | -| int borderRadius(); | 返回圆角半径 | -| void setShadow(bool flag); | 设置是否显示阴影 | -| bool shadow(); | 返回是否显示阴影 | -| void setEnableBlur(bool flag); | 设置是否启用毛玻璃效果(自2.0.0.0启用) | -| bool enableBlur(); | 获取是否已启用毛玻璃效果(自2.0.0.0启用) | -| void setOpacity(qreal opacity); | 设置透明度(自2.0.0.0启用) | -| qreal opacity(); | 获取透明度(自2.0.0.0启用) | + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-realtime +``` + + (2)CMakeLists.txt 构建项目 -## 4.2 Wayland-helper -> -> 该模块主要负责提供在 X 平台和 Wayland 平台下均能生效的兼容接口,使应用无需考虑显示平台的差异。该模块安装方式如下: ``` -sudo apt install libkysdk-waylandhelper libkysdk-waylandhelper-dev +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKREALTIME kysdk-realtime) +target_include_directories(demo PRIVATE ${KYSDKREALTIME_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKREALTIME_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKREALTIME_LIBRARIES}) ``` -> 根据不同项目类型,可参考以下 demo 构建项目: -> -> (1) .pro 文件构建项目: -> -> qt 项目.pro 文件中增加: + (2)获取操作系统运行时信息,需要添加头文件: + ``` -CONFIG += link_pkgconfig -PKGCONFIG += kysdk-waylandhelper +#include "kysdk/kysdk-system/libkyrealtimeinfo.h" ``` + > 获取上传的瞬时网速(自2.0.0.0版本启用) -> (2) CMakeLists.txt 构建项目 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------------ | -------- | ---------------------------------------------------- | ----------------------------------------- | +| 获取系统运行时信息 | C | extern float kdk_real_get_net_speed(const char *nc); | 获取瞬时网速 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | float 成功返回上传的瞬时网速,失败返回-1. | + + +> 获取cpu温度(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------------ | -------- | --------------------------------------------- | ----------------------------------- | +| 获取系统运行时信息 | C | extern double kdk_real_get_cpu_temperature(); | 获取CPU温度 | +| | | 参数说明 | 返回值说明 | +| | | 无- | double 成功返回CPU温度,失败返回-1. | + + > 获取磁盘温度(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------------ | -------- | ----------------------------------------------------------- | --------------------------------- | +| 获取系统运行时信息 | C | extern int kdk_real_get_disk_temperature(const char *name); | 获取磁盘温度 | +| | | 参数说明 | 返回值说明 | +| | | name 磁盘名称,应当是例如/dev/sda这种绝对路径 | int 成功返回磁盘温度,失败返回-1. | + + > 获取磁盘转速(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------------ | -------- | ---------------------------------------------------- | --------------------------------- | +| 获取系统运行时信息 | C | extern int kdk_real_get_disk_rate(const char *name); | 获取磁盘转速 | +| | | 参数说明 | 返回值说明 | +| | | name 磁盘名称,应当是例如/dev/sda这种绝对路径 | int 成功返回磁盘转速,失败返回-1. | + + > 获取下载的瞬时网速信息(自2.2.3.5版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------------ | -------- | --------------------------------------------------- | ----------------------------------------- | +| 获取系统运行时信息 | C | extern float kdk_real_get_if_speed(const char *nc); | 获取下载的瞬时网速信息 | +| | | 参数说明 | 返回值说明 | +| | | nc 网卡名称,如eno1 | float 成功返回下载的瞬时网速,失败返回-1. | + + +### **3.1.9** 获取当前地理信息 + + 封装 C 接口获取当前 ip 地址地理信息。 + +``` +$ sudo apt-get install libkysdk-location libkysdk-location-dev + +``` + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-location +``` + + (2)CMakeLists.txt 构建项目 ``` cmake_minimum_required(VERSION 3.5) -find_package(Qt5 COMPONENTS Widgets REQUIRED) find_package(PkgConfig REQUIRED) -pkg_check_modules(KYSDKWAYLANDHELPER_PKG kysdk-waylandhelper) -target_include_directories(demo PRIVATE ${KYSDKWAYLANDHELPER_PKG_INCLUDE_DIRS}) -target_link_directories(demo PRIVATE ${KYSDKWAYLANDHELPER_PKG_LIBRARY_DIRS}) -target_link_libraries(demo Qt5::Widgets ${KYSDKWAYLANDHELPER_PKG_LIBRARIES}) +pkg_check_modules(KYSDKLOCATION kysdk-location) +target_include_directories(demo PRIVATE ${KYSDKLOCATION_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKLOCATION_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKLOCATION_LIBRARIES}) ``` -### **4.2.1** WindowManager + (3)获取 IP 地址地理信息,需要添加头文件: +``` +#include "kysdk/kysdk-system/libkylocation.h" +``` -| 声明 | 描述 | -|-----------------------------------------------------------------|-------------------------------------------------| -| static WindowManager* self(); | 获取单例对象 | -| static WindowInfo getwindowInfo(const WindowId& windowId); | 获取窗口信息 | -| static WindowId currentActiveWindow(); | 获取当前活动窗口 | -| static void keepWindowAbove(const WindowId& windowId); | 置顶窗口 | -| static QString getWindowTitle(const WindowId& windowId); | 获取窗口标题 | -| static QIcon getWindowIcon(const WindowId& windowId); | 获取窗口图标 | -| static QString getWindowGroup(const WindowId& windowId); | 获取窗口所在组的组名 | -| static void closeWindow(const WindowId& windowId); | 关闭窗口 | -| static void activateWindow(const WindowId& windowId); | 激活窗口 | -| static void maximizeWindow(const WindowId& windowId); | 最大化窗口 | -| static void minimizeWindow(const WindowId& windowId); | 最小化窗口 | -| static quint32 getPid(const WindowId& windowId); | 获取窗口进程pid | -| static void showDesktop(); | 显示当前桌面 | -| static void hideDesktop(); | 取消显示当前桌面 | -| static QString currentDesktop(); | 获取当前桌面的名称 | -| static QList windows(); | 获取当前窗口列表 | -| static NET::WindowType getWindowType(const WindowId& windowId); | 获取窗口类型,仅适用于X环境下,wayland下统一返回normal | -| static void | setGeometry(QWindow *window,const QRect &rect); | 设置窗口位置 | -| static void setSkipTaskBar(QWindow *window,bool skip); | 设置是否跳过任务栏(自2.0.0.0启用) | -| static void setSkipSwitcher(QWindow *window,bool skip); | 设置是否跳过窗口选择(自2.0.0.0启用) | -| static bool skipTaskBar(const WindowId& windowId); | 判断窗体是否跳过任务栏(自2.0.0.0启用) | -| static bool skipSwitcher(const WindowId& windowId); | 判断窗体是否跳过窗口选择(自2.0.0.0启用) | -| static bool isShowingDesktop(); | 判断桌面是否处于显示状态(自2.0.0.0启用) | -| static void setOnAllDesktops(const WindowId &windowId); | 设置窗口在所有桌面中显示(自2.0.0.0启用) | -| static bool isOnAllDesktops(const WindowId &windowId); | 判断窗口是否在所有桌面中显示(自2.0.0.0启用) | + > 获取本机地理位置(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------------- | -------- | -------------------------------- | ------------------------ | +| 获取当前地理信息 | C | extern char *kdk_location_get(); | 获取本机的地理位置 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 描述地理位置的json字符串 | -### **4.2.2** WindowInfo +## **3.2** 电源管理 -| 声明 | 描述 | -|------------------------------------------------|----------------| -| inline bool isMaximized() const; | 返回窗口是否是最大化状态 | -| inline bool isMinimized() const; | 返回窗口是否是最小化状态 | -| inline bool isMaximizable() const; | 返回窗口是否可以最大化 | -| inline bool isMinimizable() const; | 返回窗口是否可以最小化 | -| inline bool isKeepAbove() const; | 返回窗口是否是置顶状态 | -| inline bool hasSkipTaskbar() const; | 返回窗口是否跳过任务栏 | -| inline bool isFullscreen() const; | 返回窗口是否是全屏状态 | -| inline bool isOnAllDesktops() const; noexcept; | 返回窗口是否在所有桌面中显示 | -| inline bool isValid() const; | 判断窗口id是否有效 | -| inline bool isActive() const noexcept; | 返回窗口是否是激活状态 | + 该层设计主要为应用电源管理接口。 + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-powermanagement +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKPOWER kysdk-powermanagement) +target_include_directories(demo PRIVATE ${KYSDKPOWER_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKPOWER_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKPOWER_LIBRARIES}) +``` + + (3)电源管理,需要添加头文件: + +``` +#include "kysdk/kysdk-system/libkylockscreen.h" +``` + +### **3.2.1** 锁屏设置 + + 封装 C++接口提供锁屏设置能力。 + + > 设置禁止锁屏(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|---------------|-------|--------------------------------------------------------------------------------|--------| +| 电源管理模块 | C++ | uint32_t kdk_set_inhibit_lockscreen(const char *appName , const char *reason) | 设置禁止锁屏 | +| | +| | | 参数说明 | 返回值说明 | +| | | appName:应用名
reason:禁止锁屏原因 | 0: 失败
>0: 成功(大于0) | + + + + > 取消禁止锁屏(自1.2.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----------------|-------|-----------------------------------------------|--------| +| 电源管理模块 | C++ | int kdk_un_inhibit_lockscreen(uint32_t flag) | 取消禁止锁屏 | +| | +| | | 参数说明 |返回值说明 | +| | | flag:禁止锁屏接口的返回值 | 0: 成功
-1: 失败 | + + + +## **3.3** 文件管理 + + 该模块设计主要为开发者监控文件系统中文件变化,提供接口定义;减少 + + 系统版本间由于部分文件系统变化而导致的差异; + + 安装方式: + +``` + $ sudo apt install libkysdk-filesystem libkysdk-filesystem-dev +``` + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-filesystem +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKFILESYSTEM kysdk-filesystem) +target_include_directories(demo PRIVATE ${KYSDKFILESYSTEM_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKFILESYSTEM_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKFILESYSTEM_LIBRARIES}) +``` + + (3)文件管理,需要添加头文件: + +``` +#include "kysdk/kysdk-system/libkyfilewatcher.hpp" +#include "kysdk/kysdk-system/libkyfilewatcher_global.hpp" +``` + +| 声明 | 描述 | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------| +| QStringList addWatchTargetRecursive(QString url, FileWatcherType type = PERIODIC, int attr = OPEN`|`CLOSE`|`MODIFY`|`DELETE, int maxdepth = 5, int recurType = DIR`|`REGULAR); | 增加需要监听的文件路径,对于目录,默认启用递归监听子目录(自1.2.0版本启用) | +| QStringList addWatchTargetListRecursive(QStringList urlList, FileWatcherType type = PERIODIC, int attr = OPEN`|`CLOSE`|`MODIFY`|`DELETE, int maxdepth = 5, int recurType = DIR`|`REGULAR); | 增加需要监听的文件列表(自1.2.0版本启用) | +| QStringList removeWatchTargetRecursive(QString url, int maxdepth = 5, int recurType = ALLFILE); | 从监听列表中移除指定的文件(自1.2.0版本启用) | +| void clearWatchList(); | 清空监听列表(自1.2.0版本启用) | +| void pauseWatcher(); | 暂停文件监听(自1.2.0版本启用) | +| void restartWatcher(); | 恢复文件监听(自1.2.0版本启用) | + + + + +## **3.4** AI 能力 + + 该层设计主要为应用提供 AI 识别功能接口,为 OS 增加 OCR + 文字识别功能;屏蔽需 + + 引入 AI 功能带来的开发复杂性与调试难度。 + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-ocr +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKOCR kysdk-ocr) +target_include_directories(demo PRIVATE ${KYSDKOCR_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKOCR_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKOCR_LIBRARIES}) +``` + + (3)OCR 文字识别功能,需要添加头文件: + +``` +#include "kysdk/kysdk-system/libkyocr.hpp" +``` + +### **3.4.1** OCR 文字识别功能 + + 封装 C++接口提供 OCR 文字识别功能。 + + > 获取文字框(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | | 描述 | +|--------------------|------|-----------------------------------------------------------------------------|------------------|----------------------------------| +| OCR文字识别功能 | C++ | Std::vector>> kdk::kdkOCR::getRect(const std::string &imagePath) || 获取文字框 | +| | | 参数说明 | 返回值说明 | | +| | | String 图片文件路径 | Vector
文字框点的坐标矩阵、以及文字框的个数 | + + + + > 获取文字内容(自1.2.0版本启用) + +| 子模块 | 编程语言 | 声明 || 描述 | +|----------------|---------|-------------------------------------------------------------------|-|--------| +| OCR文字识别功能 | C++ | Std::vector>>getCls(const std::string &imagePath,int nums) || 获取文字内容 | +| | | 参数说明 | 返回值说明 | | +| | | String 图片文件路径
Vector图片中的文字字符串 | Int nums 同时处理的文字栈个数 | | + + +## **3.5** 打印机管理 + +``` +$ sudo apt-get install libkysdk-hardware libkysdk-hardware-dev +``` + + 该层主要为应用提供打印机管理接口,可以实现打印任务的下发,打印方式,打印任 + + 务的取消。 + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-hardware +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKHARDWARE kysdk-hardware) +target_include_directories(demo PRIVATE ${KYSDKHARDWARE_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKHARDWARE_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKHARDWARE_LIBRARIES}) +``` + + (3)获取打印机信息,需要添加头文件: + +``` +#include "kysdk/kysdk-system/libkyprinter.h" +``` + + > 获取系统打印机列表(自2.0.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ------------------------------------- | ------------------------------------------------------------ | +| 打印机管理 | C | extern char** kdk_printer_get_list(); | 获取打印机列表 | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 打印机名称列表,由NULL字符串表示结尾;由alloc生成,需要被kdk_printer_freeall回收;若获取出错,返回NULL; | + + > 获取本地的所有可用打印机(打印机处于idle状态)(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ----------------------------------------------- | ------------------------------------------------------------ | +| 打印机管理 | C | extern char** kdk_printer_get_available_list(); | 获取本地的所有可用打印机(打印机处于idle状态) | +| | | 参数说明 | 返回值说明 | +| | | 无 | char** 打印机名称列表,由NULL字符串表示结尾;由alloc生成,需要被kdk_printer_freeall回收;若获取出错,返回NULL; | + + > 设置打印参数(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ------------------------------------------------------------ | ------------ | +| 打印机管理 | C | extern void kdk_printer_set_options(int number_up,const char *media,const char *number_up_layout,const char *sides); | 设置打印参数 | +| | | 参数说明 | 返回值说明 | +| | | number_up:一张纸打印几页
media:纸张类型
number_up_layout:cups属性,如lrtb
sides:单面one-sided,双面(长边翻转):two_sided_long_dege
双面(短边翻转):
two_sided_short_dege | 无 | + +> 打印文件(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ------------------------------------------------------------ | ---------------- | +| 打印机管理 | C | extern int kdk_printer_print_local_file(const char *printername, char *filepath); | 打印文件 | +| | | 参数说明 | 返回值说明 | +| | | printername: 打印机名,kdk_printer_get_list返回的值
filepath:打印文件绝对路径 | int 打印作业的id | + + > 取消打印作业(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ------------------------------------------------------------ | ------------------------------ | +| 打印机管理 | C | extern int kdk_printer_cancel_all_jobs(const char *printername); | 取消打印作业 | +| | | 参数说明 | 返回值说明 | +| | | printername:打印机名,kdk_printer_get_list返回的值 | int
成功:0
失败:-1 | + + > 获取打印机状态(状态不是实时更新)(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ----------------------------------------------------------- | -------------------------------- | +| 打印机管理 | C | extern int kdk_printer_get_status(const char *printername); | 获取打印机状态(状态不是实时更新) | +| | | 参数说明 | 返回值说明 | +| | | printername,打印机名,kdk_printer_get_list返回的值 | 打印机状态码 | + + +> 从url中解析下载的文件名(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ------------------------------------------------------- | --------------------- | +| 打印机管理 | C | extern char* kdk_printer_get_filename(const char *url); | 从url解析下载的文件名 | +| | | 参数说明 | 返回值说明 | +| | | url,下载链接 | 解析的文件名 | + + +> 获取当前打印任务状态(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 打印机管理 | C | extern int kdk_printer_get_job_status(const char *printername, int jobid); | 获取当前打印任务状态(发送打印任务之后下需要等待一会再获取状态,状态不是实时更新) | +| | | 参数说明 | 返回值说明 | +| | | printername,打印机名
jobid, 打印作业的id | 打印任务状态码 | + + +> 下载网络文件到本地(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | ------------------------------------------------------------ | ------------------ | +| 打印机管理 | C | extern int kdk_printer_print_download_remote_file(const char *url, const char *filepath); | 下载网络文件到本地 | +| | | 参数说明 | 返回值说明 | +| | | url,网络文件
filepath,要保存的文件路径,用户自定义 | 下载状态码 | + + +> 用于回收字符串列表(自2.2.3版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ---------- | -------- | --------------------------------------------------- | ------------------ | +| 打印机管理 | C | extern inline void kdk_printer_freeall(char **ptr); | 用于回收字符串列表 | +| | | 参数说明 | 返回值说明 | +| | | ptr 字符串列表 | 无 | + + + +## **3.6** jpeg编码 + +``` +$ sudo apt-get install libkysdk-imageproc libkysdk-imageproc-dev +``` + + 该层主要为应用提供jpeg编码器接口,可以实现初始化jpeg编码器,将rgb格式的纯字符内容的图片编码成jpg图片,释放编码器内存。 + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-imageproc +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKIMAGE kysdk-imageproc) +target_include_directories(demo PRIVATE ${KYSDKIMAGE_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKIMAGE_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKIMAGE_LIBRARIES}) +``` + + (3)获取jpeg编码器信息,需要添加头文件: + +``` +#include "kysdk/kysdk-system/libkyimageproc.h" +``` + + > 初始化jpeg编码器(自2.3.0.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +| -------- | -------- | ------------------------------------- | -------------------- | +| jpeg编码 | C | extern void* kdk_jpeg_encoder_init(); | 初始化jpeg编码器 | +| | | 参数说明 | 返回值说明 | +| | | 无 | void* 返回编码器句柄 | + + > jpeg图编码接口(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| -------- | -------- | ------------------------------------------------------------ | ------------------------------ | +| jpeg编码 | C | extern int kdk_jpeg_encode_to_file(void *handle, char *srcFile, char *destFile); | jpeg图编码接口 | +| | | 参数说明 | 返回值说明 | +| | | handle 编码器句柄
srcFile 源文件
destFile 输出文件 | int -1 则编码失败,0,编码成功 | + + > 释放编码器内存(自2.3.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| -------- | -------- | --------------------------------------------------- | -------------- | +| jpeg编码 | C | extern void kdk_jpeg_encoder_release(void* handle); | 释放编码器内存 | +| | | 参数说明 | 返回值说明 | +| | | handle 编码器句柄 | 无 | + + + +# **4** 应用支撑 SDK + + + openSDK 应用支撑层中,所有的包均为向图形化应用提供图形化开发功能,例如图形化控件、主题风格等;该层通常与某个特定的开发框架有所绑定 , 如 QT 、 GTK ; 应 用 支 撑层 SDK 安装时需安装 两个虚包:libkysdk-application、libkysdk-applications-dev,其他包按照功能分类生成多个实包,比如:QT 控件类: libkysdk-qtwidgets,wayland 显示协议兼容接口 libkysdk-waylandhelper,应用通用模块 libkysdk-kabase 等。 + + 安装命令: + + +``` +$ sudo apt install libkysdk-applications libkysdk-applications-dev + +``` + +## **4.1** QT 自研控件模块 + + QT 自研控件模块 kysdk-qtwidgets 属于 kysdk-application 的子模块,安装方式如下: + + +``` +sudo apt install libkysdk-qtwidgets libkysdk-qtwidgets-dev +``` + + + 根据不同项目类型,可参考以下 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-qtwidgets + +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(Qt5 COMPONENTS Widgets REQUIRED) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKQTWIDGETS_PKG kysdk-qtwidgets) +target_include_directories(demo PRIVATE ${KYSDKQTWIDGETS_PKG_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKQTWIDGETS_PKG_LIBRARY_DIRS}) +target_link_libraries(demo Qt5::Widgets ${KYSDKQTWIDGETS_PKG_LIBRARIES}) +``` + + + 在具体项目中,需在代码中引入对应的头文件以及命名空间,如: + + +``` +#include "kwidget.h" +using namespace kdk; +``` + + + 部分控件用到翻译文件,可以在 main()函数中加载翻译文件,目前支持中 + + 文、藏文、英文三种语言,翻译文件已经编进动态库中,加载方式如下: + + +``` +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + QTranslator trans; + QString locale = QLocale::system().name(); + if(locale == "zh_CN") + { + if(trans.load(":/translations/gui_zh_CN.qm")) + { + a.installTranslator(&trans); + } + } + if(locale == "bo_CN") + { + if(trans.load(":/translations/gui_bo_CN.qm")) + { + a.installTranslator(&trans); + } + } + Widget w; + w.show(); + return a.exec(); +} +``` + + + +### **4.1.1** 窗体模块 +#### **4.1.1.1** 基础窗体 + + + 功能描述:KWidget,继承自 QWidget,支持响应主题背景切换,响应图标主 + +题切换,标题颜色响应窗口激活状态,窗口按钮样式符合 ukui3.1 的设计风格, + + 分 为 四 个 组 成 部 分 iconBar,windowButtonBar,sideBar,baseBar 。 + + iconBar,windowButtonBar 默认高度为 40px,sideBar 默认宽度为 200px。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image4.png) +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image5.png) + + +| 枚举类型 | LayoutType { VerticalType, HorizontalType, MixedType } | +|------|--------------------------------------------------------| + + +> VerticalType:上下结构 +> +> HorizontalType:左右结构 +> +> MixedType:过渡结构 + + +| 声明 | 描述 | | | +|------------------------------------------------|--------------------------------------------------|---|---| +| QWidget* sideBar(); | 获取左边栏widget,通过setlayout添加自定义内容。 | | | +| QWidget* baseBar(); | 获取主内容区widget,通过setlayout添加自定义内容。 | | | +| void setIcon(const QIcon& icon); | 通过icon添加窗体图标 | | | +| void setIcon(const QString& iconName); | 设置窗体图标,iconName 需要直接指定系统目录中的图标名称,如"kylin-music"。 | | | +| void setWidgetName(const QString& widgetName); | 设置窗体名称。 | | | +| KWindowButtonBar* windowButtonBar(); | 获取窗口三联组合控件,以控制是否显示最大化、最小化按钮和下拉菜单按钮。 | | | +| KIconBar* iconBar(); | 获取窗口标题、图标组合控件,以控制相关样式。 | | | +| void setLayoutType(LayoutType type); | 设置布局结构类型。 | | | + + + +#### **4.1.1.2** KBubbleWidget +> +> 功能描述:KBubbleWidget,继承自 QWidget,是一个带有气泡尾部的窗 + +体,可以指定气泡尾部的尺寸、显示方向和显示位置,还可以设置窗体的圆 + +> 角、毛玻璃以及透明度。自 2.0.0.0 版本启用。 + +
枚举类型enum TailDirection{ TopDirection, LeftDirection, BottomDirection, RightDirection, None };
enum TailLocation{ LeftLocation, MiddleLocation, RightLocation };
+ + +> TailDirection:气泡尾部的显示方向 +> +> TailLocation:指定气泡尾部的显示位置 + + +| 声明 | 描述 | +|-----------------------------------------------------------------------------------|----------------------| +| void setTailSize(const QSize& size); | 设置气泡尾部尺寸 | +| QSize tailSize(); | 获取气泡尾部尺寸 | +| void setTailPosition(TailDirection dirType, TailLocation locType=MiddleLocation); | 设置气泡尾部显示位置 | +| TailDirection tailDirection(); | 获取气泡尾部显示方向(左、上、右、下) | +| TailLocation tailLocation(); | 获取气泡尾部显示位置(居左、居中、居右) | +| void setBorderRadius(int bottomLeft,int topLeft,int topRight,int bottomRight); | 设置窗体圆角半径 | +| void setBorderRadius(int radius); | 设置窗体圆角半径 | +| void setEnableBlur(bool flag); | 设置是否启用毛玻璃效果 | +| bool enableBlur(); | 获取是否已启用毛玻璃效果 | +| void setOpacity(qreal opacity); | 设置透明度 | +| qreal opacity(); | 获取透明度 | + + +### **4.1.2** 对话框模块 + +#### **4.1.2.1** 基础对话框 + +> 功能描述:KDialog,继承自 QDialog 支持响应主题背景切换,相应图标主 + +题切换,窗口按钮样式符合 ukui3.1 的设计风格,标题颜色响应窗口激活状态。 + + +| 声明 | 描述 | +|----------------------------------------------|-----------------------------------------------------------------------| +| void setWindowIcon(const QIcon &icon); | 设置对话框图标 | +| void setWindowIcon(const QString& iconName); | 直接根据图标名称设置窗口图标,例如:dialog->setWindowIcon("kylin-music"); | +| void setWindowTitle(const QString &); | 设置对话框标题名称 | +| QPushButton* maximumButton(); | 获取最大化按钮 | +| QPushButton* minimumButton(); | 获取最小化按钮 | +| QPushButton* closeButton(); | 获取关闭按钮 | +| KMenuButton* menuButton(); | 获取下拉菜单按钮,默认是隐藏的,不显示。 | +| QWidget* mainWidget(); | 获取主内容区,通过setLayout()添加内容。例如:dialog->mainWidget()->setLayout(hLayout); | + + + +#### **4.1.2.2** 关于对话框 +> +> 功能描述:KAboutDialog,包含的主要内容有:应用图标,应用名称,版本 + +号,团队邮箱以及具体的应用描述,注意,默认应用描述是不显示的。可以通 + +> 过 setBodyTextVisible(bool)控制其是否需要显示。 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image6.png) +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image7.png) +| 声明 | 描述 | +|------------------------------------------------|---------------------------| +| void setAppIcon(const QIcon& icon); | 设置应用程序图标 | +| void setAppName(const QString& appName); | 设置应用程序名称 | +| QString appName(); | 获取应用程序名称 | +| void setAppVersion(const QString& appVersion); | 设置应用程序版本号 | +| QString appVersion(); | 获取应用程序版本号 | +| void setBodyText(const QString& bodyText); | 设置应用程序具体的说明内容 | +| QString bodyText(); | 获取应用程序具体的说明内容 | +| void setAppSupport(const QString& appSupport); | 设置服务与支持邮箱,有默认缺省 | +| QString appSupport(); | 获取服务与支持邮箱 | +| void setBodyTextVisiable(bool flag); | 设置是否显示说明内容 | +| void setAppPrivacyLabelVisible(bool flag); | 设置隐私按钮是否可见(自1.2.0.10版本启用) | +| bool AppPrivacyLabelIsVisible(); | 返回隐私按钮是否可见(自1.2.0.10版本启用) | + + + +#### **4.1.2.3** 输入对话框 +> +> 功能描述:输入对话框 KInputDialog,继承自 QDialog,参考 QInputDialog +> +> 源码,对子控件布局以及样式进行了调整,功能同 QInputDialog。 +> +> (1)QString KInputDialog::getText(QWidget \*parent,const QString +> &label, +> +> QLineEdit::EchoMode mode, const QString &text,bool \*ok, +> +> Qt::WindowFlags flags, Qt::InputMethodHints inputMethodHints) +> +> 文本输入对话框,同 QInputDialog + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image8.png) + +> (2)QString KInputDialog::getMultiLineText(QWidget \*parent,const +> QString&label, +> +> const QString &text, bool \*ok, Qt::WindowFlags flags, +> +> Qt::InputMethodHints inputMethodHints) +> +> 多行文本输入框,同 QInputDialog + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image9.png) + +> (3) +``` +int KInputDialog::getInt(QWidget *parent,const QString &label, int value, +int min, int max, int step, bool *ok, Qt::WindowFlags flags) +``` +> 整型数字输入对话框,同 QInputDialog +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image10.png) +> +> (3) + +``` +double KInputDialog::getDouble(QWidget *parent,const QString &label, +double value, double minValue, double maxValue, +int decimals, bool *ok, Qt::WindowFlags flags) +``` + +> 浮点型数字输入对话框,同 QInputDialog +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image11.png) +> +> 枚举类型 + +| enum | InputDialogOption { NoButtons, UseListViewForComboBoxItems, UsePlainTextEditForTextInput } | +|-------|--------------------------------------------------------------------------------------------| +| flags | InputDialogOptions | +| enum | InputMode { TextInput, IntInput, DoubleInput } | + + + +| 常量 | 描述 | +|--------------------------------------------|------------------------------------------------------------| +| QInputDialog::NoButtons | 不显示确定和取消按钮 | +| QInputDialog::UseListViewForComboBoxItems | 使用QListView而不是不可编辑的QComboxItems来显示使用SetComboxItems()设置的项目。 | +| QInputDialog::UsePlainTextEditForTextInput | 使用QPlainTextEdit进行多行文本输入。在这个值中在5.2中被引入。 | + + + +| 常量 | 描述 | +|---------------------------|---------------| +| QInputDialog::TextInput | 用于输入文本字符串。 | +| QInputDialog::IntInput | 用于输入整数。 | +| QInputDialog::DoubleInput | 用于以双精度输入的浮点数。 | + + + +| 声明 | 描述 | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| +| void setInputMode(InputMode mode); | 设置输入模式 | +| InputMode inputMode() const; | 获取输入模式 | +| void setLabelText(const QString &text); | 设置标签文本 | +| QString labelText() const; | 获取标签文本 | +| void setOption(InputDialogOption option, bool on = true); | 设置选项 | +| bool testOption(InputDialogOption option) const; | 测试选项 | +| void setOptions(InputDialogOptions options); | 设置选项 | +| InputDialogOptions options() const; | 获取输入框选项 | +| void setTextValue(const QString &text); | 设置文本值 | +| QString textValue() const; | 获取文本值 | +| void setTextEchoMode(QLineEdit::EchoMode mode); | 设置文本模式 | +| QLineEdit::EchoMode textEchoMode() const; | 获取文本模式 | +| void setComboBoxEditable(bool editable); | 设置组合框可编辑 | +| bool isComboBoxEditable() const; | 返回组合框是否可以编辑 | +| void setComboBoxItems(const QStringList &items); | 设置组合框项目 | +| QStringList comboBoxItems() const; | 返回组合框列表 | +| void setIntValue(int value); | 设置int类型的值 | +| int intValue() const; | 获取int类型的值 | +| void setIntMinimum(int min); | 设置int类型的最低值 | +| int intMinimum() const; | 获取int最低值 | +| void setIntMaximum(int max); | 设置int类型最大值 | +| int intMaximum() const; | 获取int最大值 | +| void setIntRange(int min, int max); | 设置int范围 | +| void setIntStep(int step); | 设置int步数 | +| int intStep() const; | 获取int步数 | +| void setDoubleValue(double value); | 设置double值 | +| double doubleValue() const; | 获取double值 | +| void setDoubleMinimum(double min); | 设置double最小值 | +| double doubleMinimum() const; | 获取double最小值 | +| void setDoubleMaximum(double max); | 设置double最大值 | +| double doubleMaximum() const; | 获取double最大值 | +| void setDoubleRange(double min, double max); | 设置double范围 | +| void setDoubleDecimals(int decimals); | 设置两个小数 | +| int doubleDecimals() const; | 返回小数位数 | +| void setOkButtonText(const QString &text); | 设置确认按钮文本 | +| QString okButtonText() const; | 获取确认按钮文本 | +| void setCancelButtonText(const QString &text); | 设置取消按钮文本 | +| QString cancelButtonText() const; | 获取取消按钮文本 | +| void open(QObject *receiver, const char *member); | 此函数将其信号之一连接到接收器和成员指定的插槽。特定信号取决于在成员中指定的参数。 | +| void setVisible(bool visible) override; | 设置是否可见 | +| QSize minimumSizeHint() const override; | 最小尺寸提示 | +| QSize sizeHint() const override; | 尺寸提示 | +| static QString getText(QWidget *parent,const QString &label,QLineEdit::EchoMode echo = QLineEdit::Normal,const QString &text = String(), bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags(),Qt::InputMethodHints inputMethodHints = Qt::ImhNone); | 获取文本 | +| static QString getMultiLineText(QWidget *parent,const QString &label,const QString &text = QString(), bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags(),Qt::InputMethodHints inputMethodHints = Qt::ImhNone); | 获取多行文本 | +| static QString getItem(QWidget *parent,const QString &label,const QStringList &items, int current = 0, bool editable = true,bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(),Qt::InputMethodHints inputMethodHints = Qt::ImhNone); | 获取项目 | +| static int getInt(QWidget *parent,const QString &label, int value = 0,int minValue = -2147483647, int maxValue = 2147483647,int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | 获取int型文本 | +| static double getDouble(QWidget *parent,const QString &label,double value = 0, double minValue = -2147483647,double maxValue = 2147483647, int decimals = 1, bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags()); | 获取double类型文本 | +| void setDoubleStep(double step); | 设置double步数 | +| double doubleStep() const; | 获取double步数 | +| void setPlaceholderText(const QString &); | 设置PlaceholderText的文本内容(自1.2.0.12启用) | +| QString placeholderText() const; | 获取PlaceholderText的文本内容(自1.2.0.12启用) | + + + +#### **4.1.2.4** 进度对话框 +> +> 功能描述:KProgressDialog,继承自 QDialog,参考 QProgressDialog 源码, +对子控件 ProgressBar 的样式进行了调整。可以设置具体下载信息是否需要显示,设置进度值的后缀等。 + + +``` +KProgressDialog *progress2 = new KProgressDialog(tr("下载"),tr("取消"),0,100,this); +progress2->setSubContent("下载中..."); +progress2->setSuffix("MB"); +progress2->setWindowTitle("进度对话框"); +progress2->setWindowIcon("kylin-music"); +progress2->setValue(50); +progress2->setShowDetail(false); +``` + + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image12.png) +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image13.png) + + + + +| 声明 | 描述 | +|-----------------------------------------------|---------------------------------------------------------------------------------------------------------| +| void setLabel(QLabel *label); | 将标签设置给label。进度对话框会调整大小以适应。标签成为进度对话框的所有权,必要时将被删除,所以不要在堆栈中传递对象的地址。 | +| void setCancelButton(QPushButton *button); | 将取消按钮设置给按钮,cancelButton。进度对话框拥有这个按钮的所有权,这个按钮在必要时将被删除,所以不要传递堆栈中的对象的地址,用new()来创建按钮。如果传递nullptr,将不会显示取消按钮。 | +| void setBar(QProgressBar *bar); | 将进度条部件设置给bar。进度对话框会调整大小以适应。进度条对话框拥有进度条的所有权,该进度条将在必要时被删除,所以不要使用分配在堆栈中的进度条。 | +| void setSuffix(const QString& suffix); | 设置detail的后缀 | +| void setShowDetail(bool flag); | 设置是否显示详细信息 | +| int minimum() const; | 返回最小值 | +| int maximum() const; | 返回最大值 | +| int value() const | 返回当前值 | +| QString labelText() const; | 返回提示内容 | +| void setAutoReset(bool reset); | 设置进度对话框是否在value()等于maximum()时立即调用reset(),默认为true。 | +| bool autoReset() const; | 返回是否自动重置 | +| void setAutoClose(bool close); | 设置是否自动关闭对话框 | +| bool autoClose() const; | 返回是否自动关闭对话框 | +| QProgressBar* progressBar(); | 获取进度条 | +| void cancel(); | 取消进度条。 | +| void reset(); | 重置进度条。 | +| void setMaximum(int maximum) | 设置进度条所代表的最高值,默认值是100。 | +| void setMinimum(int minimum) | 设置进度条所代表的最小值,默认值是0。 | +| void setRange(int minimum, int maximum) | 设置进度条范围,如果最大值小于最小值,则最小值成为唯一的合法值。如果当前值超出了新的范围,则用reset()重置进度框。 | +| void setValue(int progress) | 设置当前进度值。 | +| void setLabelText(const QString &text) | 设置提示标签文本。 | +| void setCancelButtonText(const QString &text) | 设置取消按钮文本。 | +| void setSubContent(const QString &text) | 设置次级内容。 | + + + + + +#### **4.1.2.5** 程序卸载对话框 +> +> 功能描述:KUninstallDialog,代码整合自麒麟安装器,支持显示应用图 + +标,应用名称,包名,版本号等信息,不包括具体的卸载行为。使用时只需传 + +> 入包名以及版本后两个参数即可。 + + +``` +KUninstallDialog *uninstallDialog = new KUninstallDialog("browser360-cn-stable","104",this); +``` + + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image14.png) + + +| 声明 | 描述 | +|----------------------------------|------------------| +| QLabel* debAppNameLabel(); | 获取应用名称的label | +| QLabel* debNameLabel(); | 获取包名的label | +| QLabel* debIconLabel(); | 获取应用图标的label | +| QLabel* debVersionLabel(); | 获取包版本的label | +| QPushButton* uninstallButtton(); | 获取卸载按钮pushbutton | + + + + +### **4.1.3** 输入框模块 + +#### **4.1.3.1** 密码输入框 + + +> 功能描述:KPasswordEdit,支持切换输入内容明文/暗文的切换,支持设置 + +密码校验结果(正常输入为蓝色边框,设置密码正确为绿色边框,密码错误为 + +> 红色边框),支持 loading 状态,支持设置是否启用 clearButton。 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image15.png) +> +> 枚举类型 + + +| | | +|-------|-----------------------------------------------| +| enum  | LoginState{Ordinary,LoginSuccess,LoginFailed} | + +| 声明 | 描述 | +|------------------------------------------|------------------------| +| void setState(LoginState state); | 设置登录状态 | +| LoginState state(); | 返回登录状态 | +| void setLoading(bool flag); | 设置是否启用加载状态。 | +| bool isLoading(); | 判断是否处于加载状态 | +| QString placeholderText(); | 返回placeholderText的文本内容 | +| void setPlaceholderText(QString&text); | 设置PlaceholderText的文本内容 | +| void setClearButtonEnabled(bool enable); | 设置是否启用ClearButton | +| bool isClearButtonEnabled() const; | 返回是否启用了ClearButton | +| void setEchoModeBtnVisible(bool enable); | 设置EchoModeBtn是否可见 | +| bool echoModeBtnVisible(); | 返回EchoModeBtn是否可见 | +| void setClearBtnVisible(bool enable); | 设置ClearBtn是否可见 | +| bool clearBtnVisible(); | 返回ClearBtn是否可见 | +| void setEnabled(bool); | 设置KLineEdit是否可用 | + + + +#### **4.1.3.2** 搜索输入框 +> +> 功能描述:可以设置 placeHolder 的文字内容及对齐方式,输入文字的对齐 +> +> 方式,是否启用清除按钮等。 +> + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image16.png) + + + +| 声明 | 描述 | +|---------------------------------------------------|---------------------------| +| void setEnabled(bool); | 设置是否可用 | +| bool isEnabled(); | 返回是否可用 | +| void setClearButtonEnabled(bool enable); | 设置是否显示清除按钮 | +| bool isClearButtonEnabled() const; | 返回是否显示清除按钮 | +| QStringplaceholderText() const; | 返回placeholder | +| void setPlaceholderText(const QString &); | 设置placeholder的文本 | +| Qt::Alignment placeholderAlignment() const; | 返回placeholder的对齐方式 | +| void setPlaceholderAlignment(Qt::Alignment flag); | 设置placeholder的对齐方式 | +| Qt::Alignment alignment() const; | 返回输入文本的对齐方式 | +| void setAlignment(Qt::Alignment flag); | 设置输入文本的对齐方式。 | +| void clear(); | 清空搜索框内容。 | +| void setTranslucent(bool flag); | 设置是否启用半透明效果(自1.2.0.10启用) | +| bool isTranslucent(); | 获取是否启用半透明效果(自1.2.0.10启用) | + + + +### **4.1.4** 按钮模块 + +#### **4.1.4.1** 带边框按钮 + +> 功能描述:KBoderButton,继承自 QPushButton,样式上进行了封装。可以通过 +> +> setPalette()进一步调整样式。 +> +> 如: + + +``` +QPalette palette = m_pBtn1->palette(); +palette.setColor(QPalette::ButtonText,QColor(255,0,0)); +m_pBtn1->setPalette(palette); +``` + +> QPushButton 中的各接口均适用,支持四种构造方法。 + + +| 声明 | 描述 | +|-----------------------------------------------------------------------------------|-------------------| +| KBorderButton(QWidget* parent = nullptr); | 仅一个button | +| KBorderButton(const QString &text, QWidget *parent = nullptr); | 构造一个带文本button | +| KBorderButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr); | 构造一个带文本和图标的button | +| KBorderButton(const QIcon &icon, QWidget *parent = nullptr); | 构造一个带图标的button | +| void setIcon(const QIcon &icon); | 设置按钮图标 | + + +#### **4.1.4.2** 无边框按钮 +> +> 功能描述:KboderlessButton,继承自 QPushButton,样式上进行了封装。同样 +> +> 可以可以通过 setPalette()进一步调整样式。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image17.png) + +> QPushButton 中的各接口均适用,支持四种构造方法。 + + +| 声明 | 描述 | +|---------------------------------------------------------------------------------------|-------------------| +| KBorderlessButton(QWidget* parent = nullptr); | 仅一个button | +| KBorderlessButton(const QString &text, QWidget *parent = nullptr); | 构造一个带文本button | +| KBorderlessButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr); | 构造一个带文本和图标的button | +| KBorderlessButton(const QIcon &icon, QWidget *parent = nullptr); | 构造一个带图标的button | +| void setIcon(const QIcon &icon) | 设置无边框按钮图标。 | + + + +#### **4.1.4.3** 下拉菜单按钮 +> +> 功能描述:KMenuButton,继承自 QPushButon,默认 ICon 为"open-menu-symbolic",一级菜单中包含 5 个选项,分别是:"设置","主题","帮助","关于","退出",主题中包括 3 个二级选项,分别是:"跟随主题","浅色主题","深色主题"。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image18.png) + +> QPushButton 的各个接口均适用。 + + +| 声明 | 描述 | +|---------------------------|--------------| +| QMenu* menu(); | 获取主菜单 | +| QMenu* themeMenu(); | 获取主题菜单 | +| QAction* settingAction(); | 获取设置action | +| QAction* themeAction(); | 获取主题Action | +| QAction* assistAction(); | 获取帮助Action | +| QAction* aboutAction() | 获取关于Action | +| QAction* quitAction(); | 获取离开Action | +| QAction* autoAction(); | 获取跟随主题Action | +| QAction* lightAction(); | 获取浅色主题Action | +| QAction* darkAction(); | 获取深色主题Action | + + +#### **4.1.4.4** 开关按钮 +> +> 功能描述:KSwitchButton,继承自 QPushButton,对按钮进行了重绘,用于指示开/关状态。 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image19.png) + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image20.png) + + +| 声明 | 描述 | +|---------------------------------|--------------------------| +| void setCheckable(bool); | 设置是否可选中 | +| bool isCheckable() const; | 返回是否可选中 | +| bool isChecked() const; | 返回是否选中 | +| void setChecked(bool); | 设置是否选中 | +| void setTranslucent(bool flag); | 设置是否启用半透明效果(自1.2.0.10启用) | +| bool isTranslucent() | 获取是否启用半透明效果(自1.2.0.10启用) | + + + +#### **4.1.4.5** 工具按钮 +> +> 功能描述:KToolButton,继承自 QToolButton,支持三种样式,支持 loading状态,支持是否显示下拉按钮。 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image21.png) +> +> 枚举类型 + +| | | +|-------|-------------------------------------------| +| enum  | KToolButtonType{Flat,SemiFlat,Background} | + + +| 声明 | 描述 | +|---------------------------------------|---------------------------------| +| KToolButtonType type(); | 返回类型 | +| void setType(KToolButtonType type); | 设置类型 | +| void setIcon(const QIcon& icon); | 设置Icon | +| void setLoading(bool flag); | 设置正在加载状态,仅不带箭头的toolbuttuon支持该状态 | +| bool isLoading(); | 返回是否正在加载 | +| QIcon icon(); | 获取Icon | +| void setArrow(bool flag); | 设置是否显示向下箭头,默认不显示 | +| bool hasArrow() const; | 返回是否显示箭头 | +| void setPixmapSize(const QSize&size); | 设置pixmap大小 | +| QSize pixmapSize() const; | 获取pixmap大小 | + + +#### **4.1.4.6** KPushButton +> +> 功能描述:KPushButton,继承自 QPushButton,在 QPushButton 的基础上新增提供半透明效果,可以设置按钮圆角、背景色、图标是否跟随系统高亮,还可以设置按钮类型,分为正常类型和圆形(需要设置大小实现正圆)。自 1.2.0.10 版本启用。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image22.png) + +> 枚举类型 + + +| | | +|-------|----------------------------------------| +| enum  | ButtonType { NormalType, CircleType }; | + +| 声明 | 描述 | +|--------------------------------------------------------------------------------|-------------------------------------| +| void setBorderRadius(int radius); | 通过圆角半径设置按钮圆角(每个圆角相同) | +| void setBorderRadius(int bottomLeft,int topLeft,int topRight,int bottomRight); | 通过四个点来设置圆角 | +| int borderRadius(); | 获取按钮圆角 | +| void setBackgroundColor(QColor color); | 设置按钮背景色 | +| QColor backgroundColor(); | 获取按钮背景色 | +| void setButtonType(ButtonType type); | 设置KPushButton的类型 | +| ButtonType buttonType(); | 获取KPushButton的类型 | +| void setTranslucent(bool flag); | 设置KPushButton是否为半透明 | +| bool isTranslucent(); | 判断KPushButton是否为半透明 | +| void setIconHighlight(bool flag); | 设置图标是否跟随系统高亮色,默认不跟随 | +| bool isIconHighlight(); | 判断图标是否跟随系统高亮色 | +| void setIconColor(QColor color); | 设置按钮添加图标的颜色(自1.2.0.13启用) | +| QColor IconColor(); | 获取按钮添加图标的颜色(自1.2.0.13启用) | +| void setBackgroundColorHighlight(bool flag); | 设置按钮背景色是否跟随系统高亮色,默认不跟随(自1.2.0.13启用) | +| bool isBackgroundColorHighlight(); | 判断按钮背景色是否跟随系统高亮色(自1.2.0.13启用) | + + +#### **4.1.4.7** KPressButton +> +> 功能描述:KPressButton,继承自 QPushButton,在 QPushButton 的基础上新增提供半透明效果,可以设置圆角,是否可选中,是否选中,还可以设置按钮的类型以及是否启用 loading 的状态。自 1.2.0.10 版本启用。 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image23.png) +> +> 枚举类型 + + +| | | +|-------|----------------------------------------| +| enum  | ButtonType { NormalType, CircleType }; | + +| 声明 | 描述 | +|--------------------------------------------------------------------------------|----------------------| +| void setBorderRadius(int radius); | 通过圆角半径设置按钮圆角(每个圆角相同) | +| void setBorderRadius(int bottomLeft,int topLeft,int topRight,int bottomRight); | 通过四个点来设置圆角 | +| void setCheckable(bool); | 设置是否可选中 | +| bool isCheckable() const; | 返回是否可选中 | +| void setChecked(bool); | 设置是否选中 | +| bool isChecked() const; | 返回是否选中 | +| void setButtonType(ButtonType type); | 设置button类型 | +| ButtonType buttonType(); | 获取KPushButton的类型 | +| void setTranslucent(bool flag); | 设置KPushButton是否为半透明 | +| bool isTranslucent(); | 判断KPushButton是否为半透明 | +| void setLoaingStatus(bool flag); | 设置是否启用loading状态 | +| bool isLoading(); | 返回是否启用loading状态 | + + + + +### **4.1.5** Bar 模块 +#### **4.1.5.1** KIconBar + +> 功能描述:KWidget 和 KDialog 的一个组成部分,用于显示图标和窗口名称。 +> + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image24.png) + + + +| 声明 | 描述 | +|-----------------------------------------------|-----------| +| void setIcon(const QString& iconName); | 设置图标名称 | +| void setIcon(const QIcon& icon); | 设置图标 | +| void setWidgetName(const QString& widgetName) | 设置标题 | +| QLabel* nameLabel(); | 获取标题label | +| QLabel* iconLabel(); | 获取图标label | + + + +#### **4.1.5.2** KWindowButtonBar +> +> 功能描述:KWidget 和 KDialog 的一个组成部分,用于下拉菜单、最小化、最大化、关闭按钮。 +> +> 枚举类型 + + +| | | +|-------|-------------------------------------| +| enum  | MaximumButtonState{Maximum,Restore} | + + + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image25.png) + + +| 声明 | 描述 | +|-------------------------------------------------------|---------------------| +| QPushButton* minimumButton(); | 获取最小化按钮 | +| QPushButton* maximumButton(); | 获取最大化按钮 | +| QPushButton* closeButton(); | 获取关闭按钮 | +| KMenuButton* menuButton(); | 获取菜单按钮 | +| MaximumButtonState maximumButtonState(); | 获取最大化按钮的状态(最大化/恢复) | +| void setMaximumButtonState(MaximumButtonState state); | 设置最大化按钮图标状态(最大化/恢复) | + + + +#### **4.1.5.3** 进度条 +> +> 功能描述:KProgressBar,继承自 QProgressBar,支持三种状态:正常、完成和失败,支持是否显示进度值,支持水平和竖直。 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image26.png) +> +> 枚举类型 + + +| | | +|-------|-----------------------------------------------------------------| +| enum  | ProgressBarState{NormalProgress,FailedProgress,SuccessProgress} | + +| 声明 | 描述 | +|----------------------------------------|------| +| ProgressBarState state(); | 获取状态 | +| void setState(ProgressBarState state); | 设置状态 | +| QString text() const override; | 获取文本 | +| void setOrientation(Qt::Orientation); | 设置方向 | + + + +#### **4.1.5.4** KProgressCircle +> +> 环形进度条,支持三种状态:正常、完成和失败,支持是否显示进度值。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image27.png) + + +| 声明 | 描述 | +|---------------------------------------|-----------------| +| int minimum() const | 获取环形进度条的最小值。 | +| int maximum() const | 获取环形进度条的最大值。 | +| int value() const | 获取环形进度条的值。 | +| QString text() const | 获取环形进度条的文本。 | +| void setTextVisible(bool visible) | 设置环形进度条的文本是否可见。 | +| bool isTextVisible() const | 返回环形进度条的文本是否可见。 | +| ProgressBarState state() | 获取环形进度条的状态。 | +| void setState(ProgressBarState state) | 设置环形进度条的状态。 | + + + +#### **4.1.5.5** KTabBar +> +> 功能描述:继承自 QTabBar +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image28.png) +> +> 枚举类型 + +| | | +|-------|------------------------------------------------| +| enum  | KTabBarStyle{SegmentDark,SegmentLight,Sliding} | + +| 声明 | 描述 | +|----------------------------------------------|---------------------------------------| +| void setTabBarStyle(KTabBarStyle barStyle); | 设置TabBar样式 | +| KTabBarStyle barStyle(); | 返回TabBar样式 | +| void setBorderRadius(int radius); | 设置圆角半径,只对SegmentDark,SegmentLight样式生效 | +| int borderRadius(); | 获取圆角半径 | +| void setBackgroundColor(const QColor &color) | 设置KTabBar背景色。 | + + +#### **4.1.5.6** 导航栏 +> +> 功能描述:KNavigationBar,支持显示三种样式的 item,带图标的表示一级导航的 item,不带图标的表示二级的导航 item,还有表示组别的灰色字体的item。 + + +| 声明 | 描述 | +|--------------------------------------------------------------------|----------------------| +| void addItem(QStandardItem*item); | 增加常规Item | +| void addSubItem(QStandardItem*subItem); | 增加次级Item | +| void addGroupItems(QListitems,const QString& tag); | 成组增加Item,在导航栏中会显示tag | +| void addTag(const QString& tag); | 添加tag | +| QStandardItemModel* model(); | 获取model | +| QListView* listview(); | 获取listview | + + +#### **4.1.5.7** KPixmapContainer +> +> 功能描述:用于表示头像右上方消息提示信息,可以设置提示信息数值,字体大小,背景色,图片大小。 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image29.png) + + +| 声明 | 描述 | +|----------------------------------------|----------| +| int value() const; | 获取值 | +| void setValue(int value); | 设置值 | +| void setValueVisiable(bool flag); | 设置值是否可见 | +| bool isValueVisiable() const; | 获取值是否可见 | +| void setPixmap(const QPixmap& pixmap); | 设置pixmap | +| QPixmap pixmap()const; | 获取pixmap | +| void clearValue(); | 清除值 | +| QColor color(); | 返回背景色 | +| void setColor(const QColor& color); | 设置背景色 | +| int fontSize(); | 返回字体大小 | +| void setFontSize(int size); | 设置字体大小 | + + + +### **4.1.6** 滑动条模块 +#### **4.1.6.1** 滑动条 + +> 功能描述: +> +> 非步数关系:步数为 1,可以在任意位置点击和拖拽; +> +> 步数关系:步数为固定值,可根据步数值点击和拖拽; +> +> 节点关系:步数为节点间隔,可根据节点间隔点击和拖拽 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image30.png) +> +> 枚举类型 + + +| | | +|-------|--------------------------------------------------------------------| +| enum  | KSliderType{SmoothSlider,StepSlider,NodeSlider,SingleSelectSlider} | + +| 声明 | 描述 | +|---------------------------------------|--------------------------| +| void setTickInterval(int interval); | 设置节点间隔 | +| void setSliderType(KSliderType type); | 设置滑动条类型 | +| KSliderType sliderType(); | 获取滑动条类型 | +| int | tickInterval() const; | 获取节点间隔 | +| void setValue(int); | 设置值 | +| void setNodeVisible(bool flag); | 设置是否显示节点 | +| bool nodeVisible(); | 获取是否显示节点 | +| void setToolTip(const QString&); | 设置tooltip(自1.2.0.7启用) | +| QString | toolTip() const; | 获取toolTip(自1.2.0.7启用) | +| void setTranslucent(bool flag); | 设置是否启用半透明效果(自1.2.0.10启用) | +| bool isTranslucent(); | 获取是否启用半透明效果(自1.2.0.10启用) | + + + +### **4.1.7** 消息提示模块 +#### **4.1.7.1** KBadge + +> 功能描述:消息提醒气泡。可以设置提示信息数值,字体大小,背景色。 +> +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image31.png) + + +| 声明 | 描述 | +|-------------------------------------|-----------------------------| +| int value(); | 返回值 | +| void setValue(int value); | 设置值,最大显示数值为999,大于999显示"..." | +| void setValueVisiable(bool flag); | 设置值是否可见 | +| bool isValueVisiable() const; | 获取值是否可见 | +| QColor color(); | 获取背景色 | +| void setColor(const QColor& color); | 设置背景色 | +| int fontSize(); | 获取字体大小 | +| void setFontSize(int size); | 设置字体大小 | + + + +#### **4.1.7.2** KBallonTip +> +> 功能描述:消息提示框,支持四种背景色以及对应的提示图标。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image32.png) + +> 枚举类型 + + +| | | +|-------|--------------------------------------------| +| enum  | TipType{Nothing,Normal,Info,Warning,Error} | + +| 声明 | 描述 | +|-------------------------------------------------------------------|---------------------| +| void showInfo(); | 气泡在显示之后一定时间后自动消失 | +| void setTipType(const TipType& type); | 设置类型 | +| TipType tipType(); | 返回类型 | +| void setText(const QString& text); | 设置文本内容 | +| QString text(); | 返回文本内容 | +| void setContentsMargins(int left, int top, int right, int bottom) | 通过上下左右数值设置内容边距。 | +| void setContentsMargins(const QMargins &margins); | 通过QMargins对象设置内容边距。 | +| void setTipTime(int my_time); | 设置持续时间 | + + + +#### **4.1.7.3** KSecurityLevelBar +> +> 功能描述:密码强度提示条,用于指示密码强度等级。分为低,中,高三个等级,等级具体划分策略由应用程序指定。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image33.png) + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image34.png) + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image35.png) + +> 枚举类型 + +| | | +|-------|--------------------------------| +| enum  | SecurityLevel{Low,Medium,High} | + +| 声明 | 描述 | +|---------------------------------------------|--------| +| void setSecurityLevel(SecurityLevel level); | 设置安全等级 | +| SecurityLevel securityLevel(); | 获取安全等级 | + + +### **4.1.8** 面包屑 KBreadCrumb +> +> 无边框的标签栏,可以添加文字和图标,支持点击和 hover 高亮。 +> +> 功能图: + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image36.png) + +> 枚举类型 + + +| | | +|-------|----------------------------------------------------| +| enum  | KBreadCrumbType { FlatBreadCrumb, CubeBreadCrumb } | + +| 声明 | 描述 | +|----------------------------------|-------------------------| +| void setIcon(const QIcon &icon); | 设置图标 | +| QIcon icon() const; | 返回图标 | +| bool isFlat() const; | 返回KBreadCrumb是否为flat类型。 | +| void setFlat(bool flat); | 设置KBreadCrumb是否为flat类型。 | + + + +### **4.1.9** KCommentPanel + + +| | | +|-------|-------------------------------------------------------------------------------| +| enum  | StarLevel {LevelZero =0, LevelOne, LevelTwo, LevelThree, LevelFour,LevelFive} | + + + +> 枚举类型 + + +| 声明 | 描述 | +|---------------------------------|--------| +| void setIcon(const QIcon&); | 设置图标 | +| void setTime(const QString&); | 设置评论时间 | +| void setName(const QString&); | 设置评论名称 | +| void setText(const QString&); | 设置评论内容 | +| void setGrade(StarLevel level); | 设置评论等级 | + + +### **4.1.10** KListView +> +> 提供一个图片两行文字的显示效果,若只有一行文字,则对于 icon 居中显示 。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image37.png) + +### **4.1.11** KTag +> +> 标签,分为默认和可关闭的两种。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image38.png) + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image39.png) + +> 枚举类型 + +| | | +|-------|-----------------------------------------------------------| +| enum  | TagStyle { HighlightTag, BoderTag, BaseBoderTag, GrayTag} | + +| 声明 | 描述 | +|-----------------------------------|-------------| +| void setClosable(bool flag) | 设置标签是否可以关闭。 | +| bool closable() | 返回标签是否可以关闭。 | +| void setText(const QString &text) | 设置标签的文本。 | +| void setTagStyle(TagStyle style) | 设置标签的样式。 | +| TagStyle tagStyle() | 获取标签的样式。 | +| QString text() | 获取标签的文本。 | + + + +### **4.1.12** KTranslucentFloor +> +> KTranslucentFloor,继承自 QFrame,提供一个毛玻璃底板,可以设置圆角以及是否添加阴影效果。自 1.2.0.12 版本启用。 + +![输入图片说明](assets/openKylin%20SDK%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97V2.0/image40.png) + + +| 声明 | 描述 | +|-------------------------------------|--------------------------| +| void setBorderRadious(int radious); | 设置圆角半径 | +| int borderRadius(); | 返回圆角半径 | +| void setShadow(bool flag); | 设置是否显示阴影 | +| bool shadow(); | 返回是否显示阴影 | +| void setEnableBlur(bool flag); | 设置是否启用毛玻璃效果(自2.0.0.0启用) | +| bool enableBlur(); | 获取是否已启用毛玻璃效果(自2.0.0.0启用) | +| void setOpacity(qreal opacity); | 设置透明度(自2.0.0.0启用) | +| qreal opacity(); | 获取透明度(自2.0.0.0启用) | + + +## 4.2 Wayland-helper +> +> 该模块主要负责提供在 X 平台和 Wayland 平台下均能生效的兼容接口,使应用无需考虑显示平台的差异。该模块安装方式如下: +``` +sudo apt install libkysdk-waylandhelper libkysdk-waylandhelper-dev +``` +> 根据不同项目类型,可参考以下 demo 构建项目: +> +> (1) .pro 文件构建项目: +> +> qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-waylandhelper +``` + + +> (2) CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(Qt5 COMPONENTS Widgets REQUIRED) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKWAYLANDHELPER_PKG kysdk-waylandhelper) +target_include_directories(demo PRIVATE ${KYSDKWAYLANDHELPER_PKG_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKWAYLANDHELPER_PKG_LIBRARY_DIRS}) +target_link_libraries(demo Qt5::Widgets ${KYSDKWAYLANDHELPER_PKG_LIBRARIES}) +``` + + +### **4.2.1** WindowManager + + +| 声明 | 描述 | +|-----------------------------------------------------------------|-------------------------------------------------| +| static WindowManager* self(); | 获取单例对象 | +| static WindowInfo getwindowInfo(const WindowId& windowId); | 获取窗口信息 | +| static WindowId currentActiveWindow(); | 获取当前活动窗口 | +| static void keepWindowAbove(const WindowId& windowId); | 置顶窗口 | +| static QString getWindowTitle(const WindowId& windowId); | 获取窗口标题 | +| static QIcon getWindowIcon(const WindowId& windowId); | 获取窗口图标 | +| static QString getWindowGroup(const WindowId& windowId); | 获取窗口所在组的组名 | +| static void closeWindow(const WindowId& windowId); | 关闭窗口 | +| static void activateWindow(const WindowId& windowId); | 激活窗口 | +| static void maximizeWindow(const WindowId& windowId); | 最大化窗口 | +| static void minimizeWindow(const WindowId& windowId); | 最小化窗口 | +| static quint32 getPid(const WindowId& windowId); | 获取窗口进程pid | +| static void showDesktop(); | 显示当前桌面 | +| static void hideDesktop(); | 取消显示当前桌面 | +| static QString currentDesktop(); | 获取当前桌面的名称 | +| static QList windows(); | 获取当前窗口列表 | +| static NET::WindowType getWindowType(const WindowId& windowId); | 获取窗口类型,仅适用于X环境下,wayland下统一返回normal | +| static void | setGeometry(QWindow *window,const QRect &rect); | 设置窗口位置 | +| static void setSkipTaskBar(QWindow *window,bool skip); | 设置是否跳过任务栏(自2.0.0.0启用) | +| static void setSkipSwitcher(QWindow *window,bool skip); | 设置是否跳过窗口选择(自2.0.0.0启用) | +| static bool skipTaskBar(const WindowId& windowId); | 判断窗体是否跳过任务栏(自2.0.0.0启用) | +| static bool skipSwitcher(const WindowId& windowId); | 判断窗体是否跳过窗口选择(自2.0.0.0启用) | +| static bool isShowingDesktop(); | 判断桌面是否处于显示状态(自2.0.0.0启用) | +| static void setOnAllDesktops(const WindowId &windowId); | 设置窗口在所有桌面中显示(自2.0.0.0启用) | +| static bool isOnAllDesktops(const WindowId &windowId); | 判断窗口是否在所有桌面中显示(自2.0.0.0启用) | + + + +### **4.2.2** WindowInfo + + +| 声明 | 描述 | +|------------------------------------------------|----------------| +| inline bool isMaximized() const; | 返回窗口是否是最大化状态 | +| inline bool isMinimized() const; | 返回窗口是否是最小化状态 | +| inline bool isMaximizable() const; | 返回窗口是否可以最大化 | +| inline bool isMinimizable() const; | 返回窗口是否可以最小化 | +| inline bool isKeepAbove() const; | 返回窗口是否是置顶状态 | +| inline bool hasSkipTaskbar() const; | 返回窗口是否跳过任务栏 | +| inline bool isFullscreen() const; | 返回窗口是否是全屏状态 | +| inline bool isOnAllDesktops() const; noexcept; | 返回窗口是否在所有桌面中显示 | +| inline bool isValid() const; | 判断窗口id是否有效 | +| inline bool isActive() const noexcept; | 返回窗口是否是激活状态 | + + + +### **4.2.3** UkuiStyleHelper + + +| 声明 | 描述 | +|-------------------------------------|---------| +| static UkuiStyleHelper *self(); | 获取单例对象 | +| void removeHeader(QWidget* widget); | 移除窗管标题栏 | + + + +## 4.3 应用通用功能模块 + +### 4.3.1 日志模块 + + +| 子模块 | 编程语言 | 声明 | 描述 | +|------|------|--------------------------------------------------------------------------------------------------|--------------------| +| 日志模块 | C++ | static void logOutput(QtMsgType type , const QMessageLogContext &context , const QString &msg); | 用于Qt注册日志函数,不应单独调用. | +| | | 参数说明 | 返回值说明 | +| | | type:日志类型 context:调用打印日志接口文件信息 msg:日志信息 | 无 | + + + +### 4.3.2 系统相关模块 + +| 子模块 | 编程语言 | 声明 | 描述 | +|------|------|---------------------------------------------|------------| +| 窗管模块 | C++ | static bool setWindowMotifHint(int winId); | 添加窗管协议 . | +| | | 参数说明 | 返回值说明 | +| | | winId : 窗口 id | 成功 : true | +| | | | 失败 : false | + + + +| 子模块 | 编程语言 | 声明 | 描述 | +|------|------|------------------------------------------|------------| +| 窗管模块 | C++ | static bool setScalingProperties(void); | 设置窗口缩放属性 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 成功 : true | +| | | | 失败 : false | + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----------|------|-----------------------------------------------------------------|---------------| +| session模块 | C++ | quint32 setInhibitLockScreen(AppName appName , QString reason); | 禁止系统锁屏 . | +| | | 参数说明 | 返回值说明 | +| | | appName : 应用名 | 成功 : 非 0 的正整数 | +| | | reason : 禁止锁屏的原因 | 失败 : 0 | + + + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----------|------|----------------------------------------|------------| +| session模块 | C++ | bool unInhibitLockScreen(quint32 flag) | 取消禁止系统锁屏 . | +| | | 参数说明 | 返回值说明 | +| | | flag : 禁止锁屏标识 | 成功 : true | +| | | | 失败 : false | + + + +### 4.3.3 d-bus 模块------即将废弃 + + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------| +| d-bus模块 | C++ | static QList callMethod(QString serviceName, QString objectPath, QString interfaceName, QString methodName, QList args = QList()); | 函数调用 | +| | | 参数说明 | 返回值说明 | +| | | serviceName : 服务名 | 函数返回值 | +| | | objectPath : 对象路径 | | +| | | interfaceName : 接口名 | | +| | | methodName : 函数名 | | +| | | args : 参数列表 | | + + + +### 4.3.4 系统信息模块 + + +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|-------------------------------------------------|-------------------------------| +| 系统信息模块 | C++ | QString getLsbReleaseInformation(QString key); | 根据 lsb-release 文件的 key 值 获取信息 | +| | | 参数说明 | 返回值说明 | +| | | key : 键值 | 获取到的信息 , 为空时可能确实为空也可能失败 | + + + + +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|------------------------------------------------|------------------------------| +| 系统信息模块 | C++ | QString getOsReleaseInformation(QString key); | 根据 os-release 文件的 key 值 获取信息 | +| | | 参数说明 | 返回值说明 | +| | | key : 键值 | 获取到的信息 , 为空时可能确实为空也可能失败 | + + +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|-----------------------------------|--------------------------| +| 系统信息模块 | C++ | QString getProjectCodeName(void) | 获取 PROJECT_CODENAME 字段的值 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 空 : 失败 | +| | | | 非空 : 获取到的值 | + + + + +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|--------------------------------|------------| +| 系统信息模块 | C++ | QString getCpuModelName(void) | 获取 CPU 型号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 空 : 失败 | +| | | | 非空 : 获取到的值 | + + + + +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|-------------------------------|------------| +| 系统信息模块 | C++ | QString getHdPlatform(void); | 获取硬件平台信息 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 空 : 失败 | +| | | | 非空 : 获取到的值 | + + + +# 5 基础开发 SDK +> +> 该层设计主要为应用开发提供与操作系统无关的、高通用性、基础性的功能集合。减少不同应用在实现相同功能式的差异性和复杂性。该层设计主要为应用开发提供与操作系统无关的、高通用性、基础性的功能集合。减少不同应用在实现相同功能式的差异性和复杂性。 +> +> 安装命令: + + +``` +$ sudo apt install libkysdk-base libkysdk-base-dev +``` + + +## **5.1** 日志 +C 语言日志模块提供了八个等级的日志记录接口,非 root 程序记录在\~/.log +目录中,root 程序记录在/var/log 下 + + +``` +$ sudo apt-get install libkysdk-log llibkysdk-log-dev +``` + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-log +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKLOG kysdk-log) +target_include_directories(demo PRIVATE ${KYSDKLOG_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKLOG_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKLOG_LIBRARIES}) +``` + + +(3)调用日志模块,需要添加头文件: + +``` +#include "kysdk/kysdk-base/libkylog.h" +``` +> 输出日志(自1.2.0版本启用) + + +| | | +|---------------|---------------------------------| +| 类型 | 声明 | +| 输出debug级别日志 | #define klog_debug(fmt , ...) | +| 输出info级别日志 | #define klog_info(fmt , ...) | +| 输出notice级别日志 | #define klog_notice(fmt , ...) | +| 输出warning级别日志 | #define klog_warning(fmt , ...) | +| 输出error级别日志 | #define klog_err(fmt , ...) | +| 输出crit级别日志 | #define klog_crit(fmt , ...) | +| 输出alert级别日志 | #define klog_alert(fmt , ...) | +| 输出emerg级别日志 | #define klog_emerg(fmt , ...) | + + + +> 初始化日志记录(自1.2.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|-----------------------------------|----------------------------------| +| 日志 | C | extern int | kdk_logger_init(const char *ini) | 初始化日志记录,也可以不调用该函数直接使用上方日志记录的宏,若以此方式运行,则程序会使用默认的日志配置文件 | +| | | 参数说明 | 返回值说明 | | +| | | ini:日志配置文件路径,若传入NULL则会使用默认的日志配置文件 | int,0表示成功,非0表示失败 | + + +> 缓存区日志写入(自1.2.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|-------------|--------------------------------| +| 日志 | C | extern void | kdk_logger_flush() DESTRUCTOR; | 在异步写入的方式下,可以调用该函数手动将缓存区中的日志写入文件中 | +| | | 参数说明 | 返回值说明 | | +| | | 无 | 无 | + + + +> 设置日志存储目录(自1.2.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|-------------------------------------------------|---------------------------------------------------------| +| 日志 | C | extern int kdk_logger_setdir(const char* dpath) | 设置日志的存储目录,若不设置,非root程序会被记录在~/.log下,root程序会被记录在/var/log下 | +| | | 参数说明 | 返回值说明 | | +| | | dpath:日志存储路径 | int 成功返回0,失败返回-1 | + + + +> 设置日志输出自动换行(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|---------------------------------------------------|------------| +| 日志 | C | extern void kdk_logger_set_autowrap(int autowarp) | 设置日志输出自动换行 | +| | | 参数说明 | 返回值说明 | | +| | | autowarp:1表示启用启动换行,0表示禁止自动换行 | 无 | + + + +## **5.2** 定时器 + +C 语言定时器模块,给 C/C++程序提供定时器功能接口。 + + +``` +$ sudo apt-get install libkysdk-timer libkysdk-timer-dev +``` + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-timer +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKTIMER kysdk-timer) +target_include_directories(demo PRIVATE ${KYSDKTIMER_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKTIMER_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKTIMER_LIBRARIES}) +``` + + +(3)调用定时器模块,需要添加头文件: + +``` +#include "kysdk/kysdk-base/libkytimer.h" +``` + +> 初始化定时器(自1.2.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|----------------------|------------------| +| 定时器 | C | int kdk_timer_init() | 初始化定时器核心组件 | +| | | 参数说明 | 返回值说明 | | +| | | 无 | int,0表示成功,非0表示失败 | + + +> 启动定时器(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|----------------------|------------------| +| 定时器 | C | size_t | kdk_timer_start(unsigned int intervalms, time_handler callback, KTimerAttribute attr, KTimerType type, void* userdata, int freeOnDelete) | +| | | 参数说明 | 返回值说明 | +| | | intervalms:定时器时间,以毫秒为单位 | size_t定时器的ID | +| | | callback:定时器到期后触发的回调函数指针 | | +| | | attr:定时器属性,KTIMER_SINGLESHOT表示一次性定时器;KTIMER_PERIODIC表示周期性定时器;KTIMER_NEVER表示不会被触发的定时器 | | +| | | type:定时器类型,KTIMER_ABSOLUTE表示绝对时间定时器,修改系统时间不会影响定时器的时间;KTIMER_RELATIVE表示相对时间定时器,修改系统时间会影响定时器时间 | | +| | | userdata:指向用户数据的指针 | | +| | | freeOnDelete: [未启用] | | + + + +> 停止给定的定时器(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|-------------------------------------|----------| +| 定时器 | C | void kdk_timer_stop(size_t timerfd) | 停止给定的定时器 | +| | | 参数说明 | 返回值说明 | | +| | | timerfd:由kdk_timer_start:返回的定时器ID | 无 | + + + +> 销毁定时器(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|--------------------------|-------| +| 定时器 | C | void kdk_timer_destroy() | 销毁定时器 | +| | | 参数说明 | 返回值说明 | | +| | | 无 | 无 | + + + +> 重置定时器(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|-----|------|----------------------------------------------------------------|-------| +| 定时器 | C | void kdk_timer_reset(size_t timerfd , unsigned int intervalms) | 重置定时器 | +| | | 参数说明 | 返回值说明 | +| | | timerfd:由kdk_timer_start返回的定时器ID | 无 | +| | | intervalms:需要调整的时间间隔,以ms为单位 | | + + + +## **5.3** C 语言字符串扩展 + +该模块封装了对字符串操作的 C 接口,包括字符串裁剪、分割、大小写转换、查找特定字符等操作。 + + +``` +$ sudo apt-get install libkysdk-utils libkysdk-utils-dev + +``` + +(1)调用 C 语言字符串扩展模块,需要添加头文件: +``` +#include "kysdk/kysdk-base/cstring-extension.h" +``` + +> 分割字符串(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|-----------------------------------------|--------------------| +| C语言字符串扩展 | C | static inline char** strsplit(char *str, char delim) | 对原字符串以给定的分隔符进行分割,注意该函数会修改原字符串 | +| | | 参数说明 | 返回值说明 | +| | | str:需要分割的字符串 | char** 分割后的字符串列表,以NULL结尾。存储分割后所有字符串的字符串列表本身是由alloc申请的内存,因此当使用完成后应当被free;而分割出来的各个字符串不是申请的内存,而是分别指向了原字符串中的特定位置,因此他们不需要被分别free | +| | | delim:分隔符 | | + + + +> 小写字符串(自1.2.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|-----------------------------------------|--------------------| +| C语言字符串扩展 | C | static inline void str2lower(char *str) | 将字符串中的所有大写字母转化为小写字 | +| | | 参数说明 | 返回值说明 | | +| | | str:需要操作的字符串指针 | 无 | + + + +> 大写字符串(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|-----------------------------------------|---------------------| +| C语言字符串扩展 | C | static inline void str2upper(char *str) | 将字符串中的所有小写字母转化为大写字母 | +| | | 参数说明 | 返回值说明 | | +| | | str:需要操作的字符串指针 | 无 | + + + +> 统计出现次数(自1.2.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|----------------------------------------------------------|------------------| +| C语言字符串扩展 | C | static inline size_t strcounts(const char *str, char ch) | 统计给定字符在字符串中出现的次数 | +| | | 参数说明 | 返回值说明 | +| | | str:原字符串 | size_t:字符出现的次数 | +| | | ch:需要统计的字符 | | + + +> 后缀判断(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|--------------------------------------------------------------------|-------------------------------| +| C语言字符串扩展 | C | static inline int strendwith(const char *str, const char *postfix) | 判断str是否以postfix结尾需要区分大小写 | +| | | 参数说明 | 返回值说明 | +| | | str:原字符串 | int 若str以postfix结尾,则返回0;否则返回1 | +| | | postfix:需要匹配的字符串后缀 | | + + + +> 查找子字符串的首次出现位置(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|--------------------------------------------------------|-------------------------------| +| C语言字符串扩展 | C | static inline int strfirstof(const char* str, char ch) | 在给定的字符串中查找给定字符第一次出现的位置;计数从0开始 | +| | | 参数说明 | 返回值说明 | +| | | str:原字符串 | int 第一次出现的位置,若未找到给定的字符,则返回-1 | +| | | ch:需要查找的字符 | | + + + +> 查找子字符串的末次出现位置(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|-------------------------------------------------------|--------------------------------| +| C语言字符串扩展 | C | static inline int strlastof(const char* str, char ch) | 在给定的字符串中查找给定字符最后一次出现的位置;计数从0开始 | +| | | 参数说明 | 返回值说明 | +| | | str:原字符串 | int 最后一次出现的位置,若未找到给定的字符,则返回-1 | +| | | ch:需要查找的字符 | | + + + +> 删除空格和制表符(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|---------------------------------------------|--------------------------------------| +| C语言字符串扩展 | C | static inline void strstripblank(char *str) | 删除给定字符串前后的空格和水平制表符(tab),注意该操作会修改原字符串 | +| | | 参数说明 | 返回值说明 | | +| | | str:需要修改的字符串指针 | 无 | + + + +> 跳过开始的所有空格、制表符、换行符(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|-------------------------------------------------------|---------------------------------| +| C语言字符串扩展 | C | static inline const char *strskipspace(const char *p) | 跳过字符串前的所有空格、制表符、换行符;该操作不会修改原字符串 | +| | | 参数说明 | 返回值说明 | | +| | | p:指向原字符串的指针 | const char* 指向跳过space后的字符串指针 | + + + +> 前缀判断(区分大小写)(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|----------------------------------------------------------------------|------------------------------| +| C语言字符串扩展 | C | static inline int strstartswith(const char *str, const char *prefix) | 判断str是否以prefix开头,该函数区分大小写 | +| | | 参数说明 | 返回值说明 | +| | | str:原字符串 | int 若str以prefix开头,则返回0;否则返回1 | +| | | prefix:需要匹配的字符串前缀 | | + + + +> 前缀判断(不区分大小写)(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|-----------------------------------------------------------------------------|------------------------------| +| C语言字符串扩展 | C | static inline int strstartswith_nocase(const char *str, const char *prefix) | 判断str是否以prefix开头;不区分大小写 | +| | | 参数说明 | 返回值说明 | +| | | str:原字符串 | int 若str以prefix开头,则返回0;否则返回1 | +| | | prefix:需要匹配的字符串前缀 | | + + +> 删减字符串前后的指定字符(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|-------------------------------------------------|--------------------------------------------| +| C语言字符串扩展 | C | static inline void strstrip(char *str, char ch) | 对给定的字符串进行strip操作,删减字符串前后的指定字符;注意该操作会修改原字符串 | +| | | 参数说明 | 返回值说明 | +| | | str:需要进行strip的字符串指针 | 无 | +| | | ch:需要删除的字符 | | + + + +> 跳过开始的所有空格、水平制表符(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|-------------------------------------------------------|------------------------------------| +| C语言字符串扩展 | C | static inline const char *strskipblank(const char *p) | 跳过字符串前的所有空格和水平制表符(tab);该操作不会修改原字符串 | +| | | 参数说明 | 返回值说明 | | +| | | p:指向原字符串的指针 | const char* 指向跳过space后的字符串指针 | + + + +> 删除前后的空格、制表符、换行符(自1.2.0版本启用) + + +| 子模块 | 编程语言 | 声明 | 描述 | +|----------|------|---------------------------------------------|-----------------------------------| +| C语言字符串扩展 | C | static inline void strstripspace(char *str) | 删除给定字符串前后的空格、制表符、换行符,注意该操作会修改原字符串 | +| | | 参数说明 | 返回值说明 | | +| | | str:需要进行strip操作的字符串指针 | 无 | + + +## **5.4** 链表模块 + +该模块实现了 C 语言链表操作相关接口。 + +``` +$ sudo apt-get install libkysdk-utils libkysdk-utils-dev +``` + +构建 demo: + + (1).pro 文件构建项目 + + qt 项目.pro 文件中增加: + + +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-utils +``` + + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKUTILS kysdk-utils) +target_include_directories(demo PRIVATE ${KYSDKUTILS_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKUTILS_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKUTILS_LIBRARIES}) +``` + + +(3)调用链表模块,需要添加头文件: + +``` +#include "kysdk/kysdk-base/skip_linklist.h" +``` + +> 创建跳表(自1.2.0版本启用) + + +| | | | | +|-----|------|------------------------------------------------|---------------------| +| 子模块 | 编程语言 | 声明 | 描述 | +| 链表 | C | extern kysdk_skiplist* kysdk_create_skiplist() | 创建跳表 | +| | | 参数说明 | 返回值说明 | | +| | | 无 | kysdk_skiplist* 跳表 | + + +> 销毁跳表(自1.2.0版本启用) + + +| | | | | +|-----|------|----------------------------------------------------------|-------------------------------------------| +| 子模块 | 编程语言 | 声明 | 描述 | +| 链表 | C | extern void kysdk_destroy_skiplist(kysdk_skiplist *list) | 销毁跳表,并回收所有分配的内存;注意data.ptr指向的内存(若存在)不会被释放 | +| | | 参数说明 | 返回值说明 | | +| | | list:跳表 | 无 | + + + +> 删除 key 值对应的节点(自1.2.0版本启用) + + +| | | | | +|-----|------|-----------------------------------------------------------------|---------------------| +| 子模块 | 编程语言 | 声明 | 描述 | +| 链表 | C | extern int kysdk_skiplist_delete(kysdk_skiplist *list, int key) | 删除key值对应的节点 | +| | | 参数说明 | 返回值说明 | +| | | list:需要操作的链表 | int, 成功删除返回0,失败返回-1 | +| | | key:键 | | + + + +> 插入节点(自1.2.0版本启用) + + +| | | | | +|-----|------|--------------------------------------------------------------------------------------|--------------------| +| 子模块 | 编程语言 | 声明 | 描述 | +| 链表 | C | extern int kysdk_skiplist_insert(kysdk_skiplist *list, int key, kysdk_listdata data) | 插入节点 | +| | | 参数说明 | 返回值说明 | +| | | list:需要操作的链表 | int,成功插入返回0,失败返回-1 | +| | | key:键 | | +| | | data:数据 | | + + +> 根据给定的 key 搜索 data 内容(自1.2.0版本启用) + + +| | | | | +|-----|------|----------------------------------------------------------------------------|-----------------------------------------| +| 子模块 | 编程语言 | 声明 | 描述 | +| 链表 | C | extern kysdk_listdata kysdk_skiplist_search(kysdk_skiplist *list, int key) | 根据给定的key搜索data内容 | +| | | 参数说明 | 返回值说明 | +| | | list:需要操作的链表 | kysdk_listdata,当搜索的key不存在时,data.num值为-1 | +| | | key:键 | | + + + +> 设置跳表最高层数(自1.2.0版本启用) + + +| | | | | +|-----|------|--------------------------------------------------------------------------------------|------------------------| +| 子模块 | 编程语言 | 声明 | 描述 | +| 链表 | C | extern int kysdk_skiplist_setmaxlevels(kysdk_skiplist *list, unsigned int maxlevels) | 设置跳表最高层数,该选项必须在跳表为空时使用 | +| | | 参数说明 | 返回值说明 | +| | | list:需要修改的跳表 | int,成功返回0,失败返回-1 | +| | | maxlevels:层数 | | -### **4.2.3** UkuiStyleHelper +## **5.5** 配置文件操作 +KYSDK 配置文件处理库,支持标准格式、XML(未实现)、JSON(未实现)的 +配置文件处理,包括配置文件的读与写操作。 -| 声明 | 描述 | -|-------------------------------------|---------| -| static UkuiStyleHelper *self(); | 获取单例对象 | -| void removeHeader(QWidget* widget); | 移除窗管标题栏 | +``` +$ sudo apt-get install libkysdk-config libkysdk-config-dev +``` -## 4.3 应用通用功能模块 +构建 demo: -### 4.3.1 日志模块 + (1).pro 文件构建项目 + qt 项目.pro 文件中增加: -| 子模块 | 编程语言 | 声明 | 描述 | -|------|------|--------------------------------------------------------------------------------------------------|--------------------| -| 日志模块 | C++ | static void logOutput(QtMsgType type , const QMessageLogContext &context , const QString &msg); | 用于Qt注册日志函数,不应单独调用. | -| | | 参数说明 | 返回值说明 | -| | | type:日志类型 context:调用打印日志接口文件信息 msg:日志信息 | 无 | +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-config +``` + (2)CMakeLists.txt 构建项目 -### 4.3.2 系统相关模块 -| 子模块 | 编程语言 | 声明 | 描述 | -|------|------|---------------------------------------------|------------| -| 窗管模块 | C++ | static bool setWindowMotifHint(int winId); | 添加窗管协议 . | -| | | 参数说明 | 返回值说明 | -| | | winId : 窗口 id | 成功 : true | -| | | | 失败 : false | +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKCONFIG kysdk-config) +target_include_directories(demo PRIVATE ${KYSDKCONFIG_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKCONFIG_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKCONFIG_LIBRARIES}) +``` +(3)调用配置文件模块,需要添加头文件: -| 子模块 | 编程语言 | 声明 | 描述 | -|------|------|------------------------------------------|------------| -| 窗管模块 | C++ | static bool setScalingProperties(void); | 设置窗口缩放属性 | -| | | 参数说明 | 返回值说明 | -| | | 无 | 成功 : true | -| | | | 失败 : false | +``` +#include "kysdk/kysdk-base/libkyconf.h" +``` -| 子模块 | 编程语言 | 声明 | 描述 | -|-----------|------|-----------------------------------------------------------------|---------------| -| session模块 | C++ | quint32 setInhibitLockScreen(AppName appName , QString reason); | 禁止系统锁屏 . | -| | | 参数说明 | 返回值说明 | -| | | appName : 应用名 | 成功 : 非 0 的正整数 | -| | | reason : 禁止锁屏的原因 | 失败 : 0 | +> 初始化配置文件(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|------------------------------------------------|------------------------------| +| 配置文件操作 | C | extern int kdk_conf_init(const char* confpath) | 初始化配置文件 | +| | | 参数说明 | 返回值说明 | | +| | | confpath:配置文件的路径 | int 成功返回句柄号(非负值),失败返回错误码(负值) | -| 子模块 | 编程语言 | 声明 | 描述 | -|-----------|------|----------------------------------------|------------| -| session模块 | C++ | bool unInhibitLockScreen(quint32 flag) | 取消禁止系统锁屏 . | -| | | 参数说明 | 返回值说明 | -| | | flag : 禁止锁屏标识 | 成功 : true | -| | | | 失败 : false | +> 销毁指定的配置文件句柄(自1.2.0版本启用) -### 4.3.3 d-bus 模块------即将废弃 +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|--------------------------------------|-------------| +| 配置文件操作 | C | extern void kdk_conf_destroy(int id) | 销毁指定的配置文件句柄 | +| | | 参数说明 | 返回值说明 | | +| | | id:由kdk_conf_init返回的配置文件句柄 | 无 | -| 子模块 | 编程语言 | 声明 | 描述 | -|-----------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------| -| d-bus模块 | C++ | static QList callMethod(QString serviceName, QString objectPath, QString interfaceName, QString methodName, QList args = QList()); | 函数调用 | -| | | 参数说明 | 返回值说明 | -| | | serviceName : 服务名 | 函数返回值 | -| | | objectPath : 对象路径 | | -| | | interfaceName : 接口名 | | -| | | methodName : 函数名 | | -| | | args : 参数列表 | | +> 重新载入配置文件(自1.2.0版本启用) -### 4.3.4 系统信息模块 +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|------------------------------------|-------------------| +| 配置文件操作 | C | extern int kdk_conf_reload(int id) | 重新载入配置文件 | +| | | 参数说明 | 返回值说明 | | +| | | id:由kdk_conf_init返回的配置文件句柄 | int 成功返回0,失败返回错误码 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------------------------|-------------------------------| -| 系统信息模块 | C++ | QString getLsbReleaseInformation(QString key); | 根据 lsb-release 文件的 key 值 获取信息 | -| | | 参数说明 | 返回值说明 | -| | | key : 键值 | 获取到的信息 , 为空时可能确实为空也可能失败 | +> 获取指定配置项的值(自1.2.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|------------------------------------------------|------------------------------| -| 系统信息模块 | C++ | QString getOsReleaseInformation(QString key); | 根据 os-release 文件的 key 值 获取信息 | -| | | 参数说明 | 返回值说明 | -| | | key : 键值 | 获取到的信息 , 为空时可能确实为空也可能失败 | +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|-----------------------------------------------------------------------------------|----------------------------------------| +| 配置文件操作 | C | extern const char* kdk_conf_get_value(int id, const char* group, const char* key) | 获取指定配置项的值 | +| | | 参数说明 | 返回值说明 | +| | | id:由kdk_conf_init返回的配置文件句柄 | const char* 配置项所拥有的值,若key不存在,则返回一个空字符串 | +| | | group:key所在的组名称 | | +| | | key:配置项名称 | | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-----------------------------------|--------------------------| -| 系统信息模块 | C++ | QString getProjectCodeName(void) | 获取 PROJECT_CODENAME 字段的值 | -| | | 参数说明 | 返回值说明 | -| | | 无 | 空 : 失败 | -| | | | 非空 : 获取到的值 | +> 枚举 key 值(自1.2.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +|--------------|----------|------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------| +| 配置文件操作 | C | extern char** const kdk_conf_list_key(int id, const char* group) | 列举id对应配置文件的指定Group下的key值,结尾以NULL指针表示 | +| | | 参数说明 | 返回值说明 | +| | | id:由kdk_conf_init返回的句柄值 | const char** const 以NULL结尾的字符串列表,每个字符串都是一个key名称,字符串列表本身是由alloc分配的内存,需要被free释放;字符串不需要释放 | +| | | group:需要列举的Group名称 | | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|--------------------------------|------------| -| 系统信息模块 | C++ | QString getCpuModelName(void) | 获取 CPU 型号 | -| | | 参数说明 | 返回值说明 | -| | | 无 | 空 : 失败 | -| | | | 非空 : 获取到的值 | +> 枚举配置文件的 Group(自1.2.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------|------------| -| 系统信息模块 | C++ | QString getHdPlatform(void); | 获取硬件平台信息 | -| | | 参数说明 | 返回值说明 | -| | | 无 | 空 : 失败 | -| | | | 非空 : 获取到的值 | +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|-------------------------------------------------|--------------------------------------------------------------------------------------| +| 配置文件操作 | C | extern char** const kdk_conf_list_group(int id) | 列举id对应配置文件的所有Group,结尾以NULL指针表示 | +| | | 参数说明 | 返回值说明 | | +| | | id:由kdk_conf_init返回的句柄值 | const char** const 以NULL结尾的字符串列表,每个字符串都是一个组名称,字符串列表本身是由alloc分配的内存,需要被free释放;字符串不需要释放 | -# 5 基础开发 SDK -> -> 该层设计主要为应用开发提供与操作系统无关的、高通用性、基础性的功能集合。减少不同应用在实现相同功能式的差异性和复杂性。该层设计主要为应用开发提供与操作系统无关的、高通用性、基础性的功能集合。减少不同应用在实现相同功能式的差异性和复杂性。 -> -> 安装命令: +## **5.6** 单位进制转换 ``` -$ sudo apt install libkysdk-base libkysdk-base-dev +$ sudo apt-get install libkysdk-utils libkysdk-utils-dev ``` -## **5.1** 日志 -> -> C 语言日志模块提供了八个等级的日志记录接口,非 root 程序记录在\~/.log -> -> 目录中,root 程序记录在/var/log 下 +构建 demo: + (1).pro 文件构建项目 -``` -$ sudo apt-get install libkysdk-log llibkysdk-log-dev -``` + qt 项目.pro 文件中增加: -> (1)CMakeLists.txt 构建项目 -> -``` -aux_source_directory(. SOURCESCODE) -add_library(kylog SHARED ${SOURCESCODE}) -add_executable(kylog-testlog test/test-log.c) -add_executable(kylog-testsetdir test/test-setdir.c) -add_executable(kylog-testpressure test/test-pressure.c) -add_executable(kylog-testautowrap test/test-autowrap.c) -find_library(SYSTEMD_LIB systemd) -target_link_libraries(kylog kyconf pthread ${SYSTEMD_LIB}) -target_link_libraries(kylog-testlog kylog) -target_link_libraries(kylog-testsetdir kylog) -target_link_libraries(kylog-testautowrap kylog) -target_link_libraries(kylog-testpressure kylog) -``` -> (2)调用日志模块,需要添加头文件: -> ``` -#include "kysdk/kysdk-base/libkylog.h" +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-utils ``` -> -> 输出日志 + (2)CMakeLists.txt 构建项目 -| 类型 | 声明 | -|---------------|---------------------------------| -| 输出debug级别日志 | #define klog_debug(fmt , ...) | -| 输出info级别日志 | #define klog_info(fmt , ...) | -| 输出notice级别日志 | #define klog_notice(fmt , ...) | -| 输出warning级别日志 | #define klog_warning(fmt , ...) | -| 输出error级别日志 | #define klog_err(fmt , ...) | -| 输出crit级别日志 | #define klog_crit(fmt , ...) | -| 输出alert级别日志 | #define klog_alert(fmt , ...) | -| 输出emerg级别日志 | #define klog_emerg(fmt , ...) | +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKUTILS kysdk-utils) +target_include_directories(demo PRIVATE ${KYSDKUTILS_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKUTILS_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKUTILS_LIBRARIES}) +``` -> 初始化日志记录 +(3)调用单位进制转换模块,需要添加头文件: -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|-----------------------------------|----------------------------------| -| 日志 | C | extern int | kdk_logger_init(const char *ini) | 初始化日志记录,也可以不调用该函数直接使用上方日志记录的宏,若以此方式运行,则程序会使用默认的日志配置文件 | -| | | 参数说明 | 返回值说明 | | -| | | ini:日志配置文件路径,若传入NULL则会使用默认的日志配置文件 | int,0表示成功,非0表示失败 | +``` +#include "kysdk/kysdk-base/kyutils.h" +``` +> 字符格式单位进制转换(自1.2.0版本启用) -> 缓存区日志写入 +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|------|----------------------------------------------------------------------------------------------------------------------|-----------------| +| 配置文件操作 | C | extern int kdkVolumeBaseCharacterConvert(const char* origin_data, KDKVolumeBaseType result_base, char* result_data); | 字符格式单位进制转换 | +| | | 参数说明 | 返回值说明 | +| | | 入参: | int类型值,接口执行是否成功 | +| | | origin_data:原始字符类型的数据,以具体进制单位结束,如果没有,缺省为‘B’ | 0-无异常 | +| | | result_base:期望的结果进制单位 | 1-非法进制 | +| | | 出参: | 2-非法参数 | +| | | result_data:转化进制后的字符数据,带进制单位 | 3-非法数据格式 | +| | | | 4-系统运行异常引发的未知错误 | -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|-------------|--------------------------------| -| 日志 | C | extern void | kdk_logger_flush() DESTRUCTOR; | 在异步写入的方式下,可以调用该函数手动将缓存区中的日志写入文件中 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | 无 | +> 数字格式单位进制转换(自1.2.0版本启用) -> 设置日志存储目录 +| 子模块 | 编程语言 | 声明 | 描述 | +|--------|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|------------| +| 配置文件操作 | C | extern int kdkVolumeBaseNumericalConvert(double origin_numerical, KDKVolumeBaseType origin_base, KDKVolumeBaseType result_base, double* result_numerical); | 数字格式单位进制转换 | +| | 参数说明 | 返回值说明 | | +| | 入参: | int类型值,接口执行是否成功 | | +| | origin_numerical:原始数字类型数据 | 0-无异常 | | +| | origin_base:原始的进制单位 | 1-非法进制 | | +| | 出参: | 2-非法参数 | | +| | result_base:期望的进制单位 | 3-非法数据格式 | | +| | result_numerical:期望进制下的数字类型数据 | 4-系统运行异常引发的未知错误 | | -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|-------------------------------------------------|---------------------------------------------------------| -| 日志 | C | extern int kdk_logger_setdir(const char* dpath) | 设置日志的存储目录,若不设置,非root程序会被记录在~/.log下,root程序会被记录在/var/log下 | -| | | 参数说明 | 返回值说明 | | -| | | dpath:日志存储路径 | int 成功返回0,失败返回-1 | +## **5.7** Gsettings配置 -> 设置日志输出自动换行 +``` +$ sudo apt-get install libkysdk-gsetting libkysdk-gsetting-dev +``` -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|---------------------------------------------------|------------| -| 日志 | C | extern void kdk_logger_set_autowrap(int autowarp) | 设置日志输出自动换行 | -| | | 参数说明 | 返回值说明 | | -| | | autowarp:1表示启用启动换行,0表示禁止自动换行 | 无 | +构建 demo: + (1).pro 文件构建项目 -## **5.2** 定时器 -> -> C 语言定时器模块,给 C/C++程序提供定时器功能接口。 + qt 项目.pro 文件中增加: ``` -$ sudo apt-get install libkysdk-timer libkysdk-timer-dev +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-gsetting ``` + (2)CMakeLists.txt 构建项目 + -> (1)CMakeLists.txt 构建项目 -> ``` -aux_source_directory(. SOURCESCODE) -add_library(kytimer SHARED ${SOURCESCODE}) -add_executable(test-kytimer test/test-kytimer.c) -target_link_libraries(kytimer pthread) -target_link_libraries(test-kytimer kytimer) +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKGSETTING kysdk-gsetting) +target_include_directories(demo PRIVATE ${KYSDKGSETTING_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKGSETTING_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKGSETTING_LIBRARIES}) ``` -> (2)调用定时器模块,需要添加头文件: -> + +(3)调用Gsettings配置模块,需要添加头文件: + ``` -#include "kysdk/kysdk-base/libkytimer.h" +#include "libkygsetting.h" ``` -> -> 初始化定时器 -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|----------------------|------------------| -| 定时器 | C | int kdk_timer_init() | 初始化定时器核心组件 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | int,0表示成功,非0表示失败 | -> 启动定时器 +> 设置gesettings指定key值(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------- | +| Gsettings配置 | C | extern int kdk_gsettings_set(const char *schema_id, const char *key, const char *format, ...) | 设置gesettings指定key值 | +| | | 参数说明 | 返回值说明 | +| | | 入参:
schema_id配置文件id
key:配置文件key值
format:参数格式 | int类型值,接口执行是否成功
0-失败
1-成功 | -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|----------------------|------------------| -| 定时器 | C | size_t | kdk_timer_start(unsigned int intervalms, time_handler callback, KTimerAttribute attr, KTimerType type, void* userdata, int freeOnDelete) | -| | | 参数说明 | 返回值说明 | -| | | intervalms:定时器时间,以毫秒为单位 | size_t定时器的ID | -| | | callback:定时器到期后触发的回调函数指针 | | -| | | attr:定时器属性,KTIMER_SINGLESHOT表示一次性定时器;KTIMER_PERIODIC表示周期性定时器;KTIMER_NEVER表示不会被触发的定时器 | | -| | | type:定时器类型,KTIMER_ABSOLUTE表示绝对时间定时器,修改系统时间不会影响定时器的时间;KTIMER_RELATIVE表示相对时间定时器,修改系统时间会影响定时器时间 | | -| | | userdata:指向用户数据的指针 | | -| | | freeOnDelete: [未启用] | | +> 重置gesettings指定key值(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------- | +| Gsettings配置 | C | extern int kdk_settings_reset(const char *schema_id, const char *key) | 重置gesettings指定key值 | +| | | 参数说明 | 返回值说明 | +| | | 入参:
schema_id配置文件id
key:配置文件key值 | int类型值,接口执行是否成功
0-失败
1-成功 | -> 停止给定的定时器 +> 设置gesettings指定string类型key值(自2.0.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|-------------------------------------|----------| -| 定时器 | C | void kdk_timer_stop(size_t timerfd) | 停止给定的定时器 | -| | | 参数说明 | 返回值说明 | | -| | | timerfd:由kdk_timer_start:返回的定时器ID | 无 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------- | +| Gsettings配置 | C | extern int kdk_settings_set_string(const char *schema_id, const char *key, const char *value) | 设置gesettings指定string类型key值 | +| | | 参数说明 | 返回值说明 | +| | | 入参:
schema_id配置文件id
key:配置文件key值
value:值 | int类型值,接口执行是否成功
0-失败
1-成功 | + + +> 设置gesettings指定int类型key值(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------- | +| Gsettings配置 | C | extern int kdk_settings_set_int(const char *schema_id, const char *key, int value) | 设置gesettings指定int类型key值 | +| | | 参数说明 | 返回值说明 | +| | | 入参:
schema_id配置文件id
key:配置文件key值
value:值 | int类型值,接口执行是否成功
0-失败
1-成功 | + + +> 获取gesettings指定key值(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ----------------------- | +| Gsettings配置 | C | void* kdk_gsettings_get(const char *schema_id, const char *key, const char *format, ...) | 获取gesettings指定key值 | +| | | 参数说明 | 返回值说明 | +| | | 入参:
schema_id配置文件id
key:配置文件key值
format:类型 | 无 | + + +> 获取gesettings指定string类型key值(自2.0.0.0版本启用) + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | --------------------------------- | +| Gsettings配置 | C | extern char* kdk_settings_get_string(const char *schema_id, const char *key) | 获取gesettings指定string类型key值 | +| | | 参数说明 | 返回值说明 | +| | | 入参:
schema_id配置文件id
key:配置文件key值 | char*:key的值 | + + +> 获取gesettings指定int类型key值(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------ | +| Gsettings配置 | C | extern int kdk_settings_get_int(const char *schema_id, const char *key) | 获取gesettings指定int类型key值 | +| | | 参数说明 | 返回值说明 | +| | | 入参:
schema_id配置文件id
key:配置文件key值; | int:key的值 | -> 销毁定时器 +> 获取gesettings指定double类型key值(自2.0.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | --------------------------------- | +| Gsettings配置 | C | extern double kdk_settings_get_double(const char *schema_id, const char *key) | 获取gesettings指定double类型key值 | +| | | 参数说明 | 返回值说明 | +| | | 入参:
schema_id配置文件id
key:配置文件key值 | double:key的值 | -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|--------------------------|-------| -| 定时器 | C | void kdk_timer_destroy() | 销毁定时器 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | 无 | +## **5.8** 埋点数据 +该模块封装了上传埋点数据操作。 -> 重置定时器 +``` +$ sudo apt-get install libkysdk-diagnostics libkysdk-diagnostics-dev -| 子模块 | 编程语言 | 声明 | 描述 | -|-----|------|----------------------------------------------------------------|-------| -| 定时器 | C | void kdk_timer_reset(size_t timerfd , unsigned int intervalms) | 重置定时器 | -| | | 参数说明 | 返回值说明 | -| | | timerfd:由kdk_timer_start返回的定时器ID | 无 | -| | | intervalms:需要调整的时间间隔,以ms为单位 | | +``` +构建 demo: + (1).pro 文件构建项目 -## **5.3** C 语言字符串扩展 -> -> 该模块封装了对字符串操作的 C 接口,包括字符串裁剪、分割、大小写转换、查找特定字符等操作。 + qt 项目.pro 文件中增加: ``` -$ sudo apt-get install libkysdk-utils libkysdk-utils-dev +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-diagnostics +``` + (2)CMakeLists.txt 构建项目 + + +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKDIAGNOSTICS kysdk-diagnostics) +target_include_directories(demo PRIVATE ${KYSDKDIAGNOSTICS_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKDIAGNOSTICS_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKDIAGNOSTICS_LIBRARIES}) ``` -> (1)调用 C 语言字符串扩展模块,需要添加头文件: -> + +(3)调用埋点数据模块,需要添加头文件: + ``` -#include "kysdk/kysdk-base/cstring-extension.h" +#include "kysdk/kysdk-base/libkydiagnostics.h" ``` -> -> 分割字符串 -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|-----------------------------------------|--------------------| -| C语言字符串扩展 | C | static inline char** strsplit(char *str, char delim) | 对原字符串以给定的分隔符进行分割,注意该函数会修改原字符串 | -| | | 参数说明 | 返回值说明 | -| | | str:需要分割的字符串 | char** 分割后的字符串列表,以NULL结尾。存储分割后所有字符串的字符串列表本身是由alloc申请的内存,因此当使用完成后应当被free;而分割出来的各个字符串不是申请的内存,而是分别指向了原字符串中的特定位置,因此他们不需要被分别free | -| | | delim:分隔符 | | +> 上传埋点数据(自2.2.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| -------- | -------- | ------------------------------------------------------------ | -------------------- | +| 诊断模块 | C | int kdk_buried_point ( char *appName, char *messageType, KBuriedPoint *data, int length ) | 上传埋点数据 | +| | | 参数说明 | 返回值说明 | +| | | appName: 埋点的包名
messageType: 消息类型
data: 需要埋点的数据数组
length: 数组长度 | 0: 成功
-1: 失败 | -> 小写字符串 -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|-----------------------------------------|--------------------| -| C语言字符串扩展 | C | static inline void str2lower(char *str) | 将字符串中的所有大写字母转化为小写字 | -| | | 参数说明 | 返回值说明 | | -| | | str:需要操作的字符串指针 | 无 | +## **5.9** conf2配置 +统一配置模块是一个为了保证应用程序一次编译后在不同产品形态与行业项目之间按需配置、实现应用功能、系统行为可配置的一个系统配置管理模块。 -> 大写字符串 +``` +$ sudo apt-get install libkysdk-conf2 libkysdk-conf2-dev -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|-----------------------------------------|---------------------| -| C语言字符串扩展 | C | static inline void str2upper(char *str) | 将字符串中的所有小写字母转化为大写字母 | -| | | 参数说明 | 返回值说明 | | -| | | str:需要操作的字符串指针 | 无 | +``` +构建 demo: + (1).pro 文件构建项目 -> 统计出现次数 + qt 项目.pro 文件中增加: -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|----------------------------------------------------------|------------------| -| C语言字符串扩展 | C | static inline size_t strcounts(const char *str, char ch) | 统计给定字符在字符串中出现的次数 | -| | | 参数说明 | 返回值说明 | -| | | str:原字符串 | size_t:字符出现的次数 | -| | | ch:需要统计的字符 | | +``` +CONFIG += link_pkgconfig +PKGCONFIG += kysdk-conf2 +``` -> 后缀判断 + (2)CMakeLists.txt 构建项目 -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|--------------------------------------------------------------------|-------------------------------| -| C语言字符串扩展 | C | static inline int strendwith(const char *str, const char *postfix) | 判断str是否以postfix结尾需要区分大小写 | -| | | 参数说明 | 返回值说明 | -| | | str:原字符串 | int 若str以postfix结尾,则返回0;否则返回1 | -| | | postfix:需要匹配的字符串后缀 | | +``` +cmake_minimum_required(VERSION 3.5) +find_package(PkgConfig REQUIRED) +pkg_check_modules(KYSDKCONF2 kysdk-conf2) +target_include_directories(demo PRIVATE ${KYSDKCONF2_INCLUDE_DIRS}) +target_link_directories(demo PRIVATE ${KYSDKCONF2_LIBRARY_DIRS}) +target_link_libraries(demo PRIVATE ${KYSDKCONF2_LIBRARIES}) +``` +(3)调用conf2配置模块,需要添加头文件: -> 查找子字符串的首次出现位置 +``` +#include "kysdk/kysdk-base/libkysettings.h" +``` -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|--------------------------------------------------------|-------------------------------| -| C语言字符串扩展 | C | static inline int strfirstof(const char* str, char ch) | 在给定的字符串中查找给定字符第一次出现的位置;计数从0开始 | -| | | 参数说明 | 返回值说明 | -| | | str:原字符串 | int 第一次出现的位置,若未找到给定的字符,则返回-1 | -| | | ch:需要查找的字符 | | +> 读取指定id指定版本的句柄(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | KSettings *kdk_conf2_new ( const char *id, const char *version ) | 读取指定id指定版本的句柄 | +| | | 参数说明 | 返回值说明 | +| | | id : 组的路径
version: 版本号
传NULL,使用配置文件内设置默认版本;如果配置文件内没有设置默认版本,取最高版本为默认版本 | KSettings * 指定id的配置句柄,失败返回NULL;
调用方获得句柄的所有权,并负责释放数据 | -> 查找子字符串的末次出现位置 +> 销毁由kdk_conf2_new取得的配置句柄(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|-------------------------------------------------------|--------------------------------| -| C语言字符串扩展 | C | static inline int strlastof(const char* str, char ch) | 在给定的字符串中查找给定字符最后一次出现的位置;计数从0开始 | -| | | 参数说明 | 返回值说明 | -| | | str:原字符串 | int 最后一次出现的位置,若未找到给定的字符,则返回-1 | -| | | ch:需要查找的字符 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | --------------------------------- | +| conf2配置模块 | C | void kdk_conf2_ksettings_destory( KSettings *ksettings ) | 销毁由kdk_conf2_new取得的配置句柄 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 由kdk_conf2_new获取的句柄 | 无 | +> 获取配置句柄对应的配置id(自2.3.0.0版本启用) -> 删除空格和制表符 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | -------------------------------------------------- | ------------------------------------------------------------ | +| conf2配置模块 | C | char * kdk_conf2_get_id( KSettings *settings ) | 获取配置句柄对应的配置id | +| | | 参数说明 | 返回值说明 | +| | | settings: 句柄 | char * 配置id,该方法的调用方取得数据的所有权,并负责释放数据 | +> 获取配置句柄对应的配置版本(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|---------------------------------------------|--------------------------------------| -| C语言字符串扩展 | C | static inline void strstripblank(char *str) | 删除给定字符串前后的空格和水平制表符(tab),注意该操作会修改原字符串 | -| | | 参数说明 | 返回值说明 | | -| | | str:需要修改的字符串指针 | 无 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------- | ------------------------------------------------------------ | +| conf2配置模块 | C | char * kdk_conf2_get_version( KSettings *settings ) | 获取配置句柄对应的配置版本 | +| | | 参数说明 | 返回值说明 | +| | | settings: 句柄 | char * 配置版本号,该方法的调用方取得数据的所有权,并负责释放数据 | +> 获取当前句柄子id的配置句柄(自2.3.0.0版本启用) -> 跳过开始的所有空格、制表符、换行符 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | KSettings * kdk_conf2_get_child ( KSettings *ksettings, const char *name ) | 获取当前句柄子id的配置句柄 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 配置句柄
name: 子组名 | KSettings 子id句柄,失败返回NULL, 该方法的调用方取得数据的所有权,并负责释放数据 | -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|-------------------------------------------------------|---------------------------------| -| C语言字符串扩展 | C | static inline const char *strskipspace(const char *p) | 跳过字符串前的所有空格、制表符、换行符;该操作不会修改原字符串 | -| | | 参数说明 | 返回值说明 | | -| | | p:指向原字符串的指针 | const char* 指向跳过space后的字符串指针 | +> 获取当前句柄所有子组的名称(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | char ** kdk_conf2_list_children ( KSettings *ksettings ) | 获取当前句柄所有子组的名称 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄 | char ** 以NULL结尾的字符串数组,该方法的调用方取得数据的所有权,并负责释放数据;获取失败返回NULL。 | -> 前缀判断(区分大小写) +> 获取当前句柄所有的键名(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|----------------------------------------------------------------------|------------------------------| -| C语言字符串扩展 | C | static inline int strstartswith(const char *str, const char *prefix) | 判断str是否以prefix开头,该函数区分大小写 | -| | | 参数说明 | 返回值说明 | -| | | str:原字符串 | int 若str以prefix开头,则返回0;否则返回1 | -| | | prefix:需要匹配的字符串前缀 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | -------------------------------------------------------- | ------------------------------------------------------------ | +| conf2配置模块 | C | char ** kdk_conf2_list_keys ( KSettings *ksettings ) | 获取当前句柄所有的键名 | +| | | 参数说明 | 返回值说明 | +| | | settings: 句柄 | char ** 以NULL结尾的字符串数组,该方法的调用方取得数据的所有权,并负责释放数据;获取失败返回NULL。 | +> 获取设置中`bool`类型的键的值(自2.3.0.0版本启用) -> 前缀判断(不区分大小写) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | int kdk_conf2_get_boolean ( KSettings *ksettings, const char *key ) | 获取设置中`bool`类型的键的值;调用方调用此接口时需确认键值确为`bool`类型。 | +| | | 参数说明 | 返回值说明 | +| | | settings: 句柄
key: 键名 | 布尔值
1:True
0:False | +> 获取设置中键的默认值(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|-----------------------------------------------------------------------------|------------------------------| -| C语言字符串扩展 | C | static inline int strstartswith_nocase(const char *str, const char *prefix) | 判断str是否以prefix开头;不区分大小写 | -| | | 参数说明 | 返回值说明 | -| | | str:原字符串 | int 若str以prefix开头,则返回0;否则返回1 | -| | | prefix:需要匹配的字符串前缀 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | char * kdk_conf2_get_default_value ( KSettings *ksettings, const char *key ) | 获取设置中键的默认值 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | char *符合配置类型标签的字符串,失败返回NULL;该方法的调用方取得数据的所有权,并负责释放数据。 | -> 删减字符串前后的指定字符 +> 获取设置中`double`类型的键的值(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|-------------------------------------------------|--------------------------------------------| -| C语言字符串扩展 | C | static inline void strstrip(char *str, char ch) | 对给定的字符串进行strip操作,删减字符串前后的指定字符;注意该操作会修改原字符串 | -| | | 参数说明 | 返回值说明 | -| | | str:需要进行strip的字符串指针 | 无 | -| | | ch:需要删除的字符 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | double kdk_conf2_get_double ( KSettings *ksettings, const char *key ) | 获取设置中`double`类型的键的值;调用方需确认键值确为`double`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | double 浮点型值 | +> 获取设置中`enum`类型的键的值(自2.3.0.0版本启用) -> 跳过开始的所有空格、水平制表符 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | int kdk_conf2_get_enum ( KSettings *ksettings, const char *key ) | 获取设置中`enum`类型的键的值;调用方请确认键值类型确为`emum`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | 枚举的值,类型为`int`型 | +> 获取设置中`int`类型的键的值(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|-------------------------------------------------------|------------------------------------| -| C语言字符串扩展 | C | static inline const char *strskipblank(const char *p) | 跳过字符串前的所有空格和水平制表符(tab);该操作不会修改原字符串 | -| | | 参数说明 | 返回值说明 | | -| | | p:指向原字符串的指针 | const char* 指向跳过space后的字符串指针 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ---------------------------------------------------------- | +| conf2配置模块 | C | int kdk_conf2_get_int ( KSettings *ksettings, const char *key ) | 获取设置中`int`类型的键的值;调用方请确认键值确为`int`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | int 整型值 | +> 获取设置中`int64`类型的键的值(自2.3.0.0版本启用) -> 删除前后的空格、制表符、换行符 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | long kdk_conf2_get_int64 ( KSettings *ksettings, const char *key ) | 获取设置中`int64`类型的键的值;调用方请确认键值确为`int64`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | long 长整型数值 | -| 子模块 | 编程语言 | 声明 | 描述 | -|----------|------|---------------------------------------------|-----------------------------------| -| C语言字符串扩展 | C | static inline void strstripspace(char *str) | 删除给定字符串前后的空格、制表符、换行符,注意该操作会修改原字符串 | -| | | 参数说明 | 返回值说明 | | -| | | str:需要进行strip操作的字符串指针 | 无 | +> 获取设置中键的取值范围(自2.3.0.0版本启用) -## **5.4** 链表模块 -> -> 该模块实现了 C 语言链表操作相关接口。 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | char * kdk_conf2_get_range ( KSettings *ksettings, const char *key ) | 获取设置中键的取值范围 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | char *取值范围,不存在取值范围返回NULL;
针对枚举类型,返回`"a{si}"`类型的字符串;
针对取值区间,返回`“min,max”`类型的字符串
该方法的调用方取得数据的所有权,并负责释放数据。 | -``` -$ sudo apt-get install libkysdk-utils libkysdk-utils-dev -``` +> 获取设置中`string`类型的键值(自2.3.0.0版本启用) -> (1)CMakeLists.txt 构建项目 -> -``` -aux_source_directory(linklist/skip_linklist SOURCESCODE) -add_library(kydatastruct SHARED ${SOURCESCODE}) -add_subdirectory(linklist) -include_directories(linklist) -include_directories(linklist/skip_linklist) -add_executable(test-delete linklist/skip_linklist/test/delete_test.c) -add_executable(test-insert linklist/skip_linklist/test/insert_test.c) -add_executable(test-search linklist/skip_linklist/test/search_test.c) -target_link_libraries(test-delete kydatastruct) -target_link_libraries(test-insert kydatastruct) -target_link_libraries(test-search kydatastruct) -``` -> -> (2)调用定时器模块,需要添加头文件: -> -``` -#include "kysdk/kysdk-base/skip_linklist.h" -``` -> -> 创建跳表 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | char * kdk_conf2_get_string ( KSettings *ksettings, const char *key ) | 获取设置中`string`类型的键值;调用方请确认键值的确为`string`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | char *字符串,失败返回NULL;该方法的调用方取得数据的所有权,并负责释放数据。 | +> 获取设置中`strv`类型的键值(自2.3.0.0版本启用) -| | | | | -|-----|------|------------------------------------------------|---------------------| -| 子模块 | 编程语言 | 声明 | 描述 | -| 链表 | C | extern kysdk_skiplist* kysdk_create_skiplist() | 创建跳表 | -| | | 参数说明 | 返回值说明 | | -| | | 无 | kysdk_skiplist* 跳表 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | char ** kdk_conf2_get_strv ( KSettings *ksettings, const char *key ) | 获取设置中`strv`类型的键值; 调用方请确认键值确为`strv`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | char **以NULL结尾的字符串数组,失败返回NULL;该方法的调用方取得数据的所有权,并负责释放数据。 | -> 销毁跳表 +> 获取设置中`uint`类型的键值(自2.3.0.0版本启用) -| | | | | -|-----|------|----------------------------------------------------------|-------------------------------------------| -| 子模块 | 编程语言 | 声明 | 描述 | -| 链表 | C | extern void kysdk_destroy_skiplist(kysdk_skiplist *list) | 销毁跳表,并回收所有分配的内存;注意data.ptr指向的内存(若存在)不会被释放 | -| | | 参数说明 | 返回值说明 | | -| | | list:跳表 | 无 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ---------------------------------------------------------- | +| conf2配置模块 | C | unsigned int kdk_conf2_get_uint ( KSettings *ksettings, const char *key ) | 获取设置中`uint`类型的键值;调用方请确认键值确为`uint`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | unsigned int 无符号整型值 | +> 获取设置中`uint64`类型的键值(自2.3.0.0版本启用) -> 删除 key 值对应的节点 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | unsigned long kdk_conf2_get_uint64 ( KSettings *ksettings, const char *key ) | 获取设置中`uint64`类型的键值;调用方请确认键值的确为`uint64`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | unsigned long 无符号长整型值 | +> 获取设置中键的值(自2.3.0.0版本启用) -| | | | | -|-----|------|-----------------------------------------------------------------|---------------------| -| 子模块 | 编程语言 | 声明 | 描述 | -| 链表 | C | extern int kysdk_skiplist_delete(kysdk_skiplist *list, int key) | 删除key值对应的节点 | -| | | 参数说明 | 返回值说明 | -| | | list:需要操作的链表 | int, 成功删除返回0,失败返回-1 | -| | | key:键 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | char * kdk_conf2_get_value ( KSettings *ksettings, const char *key ) | 获取设置中键的值 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | char *符合键值类型标签的字符串,失败返回NULL;该方法的调用方取得数据的所有权,并负责释放数据。 | +> 获取键的`description`字段(自2.3.0.0版本启用) -> 插入节点 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | char * kdk_conf2_get_description ( KSettings *ksettings, const char *key ) | 获取键的`description`字段 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | char *键的`descritpion`字段;该方法的调用方取得数据的所有权,并负责释放数据。 | -| | | | | -|-----|------|--------------------------------------------------------------------------------------|--------------------| -| 子模块 | 编程语言 | 声明 | 描述 | -| 链表 | C | extern int kysdk_skiplist_insert(kysdk_skiplist *list, int key, kysdk_listdata data) | 插入节点 | -| | | 参数说明 | 返回值说明 | -| | | list:需要操作的链表 | int,成功插入返回0,失败返回-1 | -| | | key:键 | | -| | | data:数据 | | +> 获取键的`summary`字段(自2.3.0.0版本启用) -> 根据给定的 key 搜索 data 内容 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | char * kdk_conf2_get_summary( KSettings *settings, const char *key ) | 获取键的`summary`字段 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | char *键的`summary`字段;该方法的调用方取得数据的所有权,并负责释放数据 | +> 检测键值是否可写(自2.3.0.0版本启用) -| | | | | -|-----|------|----------------------------------------------------------------------------|-----------------------------------------| -| 子模块 | 编程语言 | 声明 | 描述 | -| 链表 | C | extern kysdk_listdata kysdk_skiplist_search(kysdk_skiplist *list, int key) | 根据给定的key搜索data内容 | -| | | 参数说明 | 返回值说明 | -| | | list:需要操作的链表 | kysdk_listdata,当搜索的key不存在时,data.num值为-1 | -| | | key:键 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | --------------------------------- | +| conf2配置模块 | C | int kdk_conf2_is_writable ( KSettings *ksettings, const char *key ) | 检测键值是否可写 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | 布尔值
1: True
0: False | +> 检查要设置值是否在取值区间(自2.3.0.0版本启用) -> 设置跳表最高层数 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | --------------------------------- | +| conf2配置模块 | C | int kdk_conf2_range_check ( KSettings *settings, const char *key, const char *value ) | 检查要设置值是否在取值区间 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 应该存在取值区间或是枚举类型
value: 要设置的值 | 布尔值
1: True
0: False | -| | | | | -|-----|------|--------------------------------------------------------------------------------------|------------------------| -| 子模块 | 编程语言 | 声明 | 描述 | -| 链表 | C | extern int kysdk_skiplist_setmaxlevels(kysdk_skiplist *list, unsigned int maxlevels) | 设置跳表最高层数,该选项必须在跳表为空时使用 | -| | | 参数说明 | 返回值说明 | -| | | list:需要修改的跳表 | int,成功返回0,失败返回-1 | -| | | maxlevels:层数 | | +> 将键的值重制为默认值(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | -------------------- | +| conf2配置模块 | C | void kdk_conf2_reset ( KSettings *settings, const char *key ) | 将键的值重制为默认值 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名 | 无 | -## **5.5** 配置文件操作 -> -> KYSDK 配置文件处理库,支持标准格式、XML(未实现)、JSON(未实现)的 -> -> 配置文件处理,包括配置文件的读与写操作。 -> -> sudo apt-get install libkysdk-config libkysdk-config-dev -> -> (1)CMakeLists.txt 构建项目 -> -``` -aux_source_directory(. SOURCESCODE) -add_library(kyconf SHARED ${SOURCESCODE}) -add_executable(kyconf-test-struct test/test_structlist.c) -target_link_libraries(kyconf-test-struct kyconf kylog pthread) -``` -> -> (2)调用配置文件模块,需要添加头文件: -> -``` -#include "kysdk/kysdk-base/libkyconf.h" -``` -> -> 初始化配置文件 +> 重新读取配置文件,并与当前用户的配置合并(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|------------------------------------------------|------------------------------| -| 配置文件操作 | C | extern int kdk_conf_init(const char* confpath) | 初始化配置文件 | -| | | 参数说明 | 返回值说明 | | -| | | confpath:配置文件的路径 | int 成功返回句柄号(非负值),失败返回错误码(负值) | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------- | ---------------------------------------- | +| conf2配置模块 | C | void kdk_conf2_reload (); | 重新读取配置文件,并与当前用户的配置合并 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 无 | +> 设置`bool`类型的键值(自2.3.0.0版本启用) -> 销毁指定的配置文件句柄 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ----------------------------------------------------- | +| conf2配置模块 | C | int kdk_conf2_set_boolean( KSettings *settings, const char *key, int value ) | 设置`bool`类型的键值; 调用方请确认键值确为`bool`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | +> 设置`double`类型的键值(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|--------------------------------------|-------------| -| 配置文件操作 | C | extern void kdk_conf_destroy(int id) | 销毁指定的配置文件句柄 | -| | | 参数说明 | 返回值说明 | | -| | | id:由kdk_conf_init返回的配置文件句柄 | 无 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | -------------------------------------------------------- | +| conf2配置模块 | C | int kdk_conf2_set_double( KSettings *ksettings, const char *key, double value ) | 设置`double`类型的键值;调用方请确认键值确为`double`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | +> 设置`enum`类型的键值(自2.3.0.0版本启用) -> 重新载入配置文件 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ---------------------------------------------------- | +| conf2配置模块 | C | int kdk_conf2_set_enum( KSettings *settings, const char *key, int value ) | 设置`enum`类型的键值;调用方请确认键值存在于`enum`中 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|------------------------------------|-------------------| -| 配置文件操作 | C | extern int kdk_conf_reload(int id) | 重新载入配置文件 | -| | | 参数说明 | 返回值说明 | | -| | | id:由kdk_conf_init返回的配置文件句柄 | int 成功返回0,失败返回错误码 | +> 设置`int`类型的键值(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------ | +| conf2配置模块 | C | int kdk_conf2_set_int( KSettings *settings, const char *key, int value ) | 设置`int`类型的键值;调用方请确认键值类型确为`int`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | -> 获取指定配置项的值 +> 设置`int64`类型的键值(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-----------------------------------------------------------------------------------|----------------------------------------| -| 配置文件操作 | C | extern const char* kdk_conf_get_value(int id, const char* group, const char* key) | 获取指定配置项的值 | -| | | 参数说明 | 返回值说明 | -| | | id:由kdk_conf_init返回的配置文件句柄 | const char* 配置项所拥有的值,若key不存在,则返回一个空字符串 | -| | | group:key所在的组名称 | | -| | | key:配置项名称 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ---------------------------------------------------------- | +| conf2配置模块 | C | int kdk_conf2_set_int64( KSettings *ksettings, const char *key, long value ) | 设置`int64`类型的键值;调用方请确认键值类型确为`int64`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | +> 设置`char *`类型的键值(自2.3.0.0版本启用) -> 枚举 key 值 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | int kdk_conf2_set_string( Ksettings *ksettings, const char *key, const char *value ) | 设置`char *`类型的键值;调用方请确认键值类型确为`char *`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | +> 设置`char **`类型的键值(自2.3.0.0版本启用) -| 子模块 | 编程语言 | 声明 | 描述 | -|--------------|----------|------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| 配置文件操作 | C | extern char** const kdk_conf_list_key(int id, const char* group) | 列举id对应配置文件的指定Group下的key值,结尾以NULL指针表示 | -| | | 参数说明 | 返回值说明 | -| | | id:由kdk_conf_init返回的句柄值 | const char** const 以NULL结尾的字符串列表,每个字符串都是一个key名称,字符串列表本身是由alloc分配的内存,需要被free释放;字符串不需要释放 | -| | | group:需要列举的Group名称 | | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | int kdk_conf2_set_strv( KSettings *ksettings, const char *key, const char *const *value ) | 设置`char **`类型的键值;调用方请确认键值类型确为`char **`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | +> 设置`uint`类型的键值(自2.3.0.0版本启用) -> 枚举配置文件的 Group +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | -------------------------------------------------------- | +| conf2配置模块 | C | int kdk_conf2_set_uint( KSettings *ksettings, const char *key, unsigned int value ) | 设置`uint`类型的键值;调用方请确认键值类型确为`uint`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|-------------------------------------------------|--------------------------------------------------------------------------------------| -| 配置文件操作 | C | extern char** const kdk_conf_list_group(int id) | 列举id对应配置文件的所有Group,结尾以NULL指针表示 | -| | | 参数说明 | 返回值说明 | | -| | | id:由kdk_conf_init返回的句柄值 | const char** const 以NULL结尾的字符串列表,每个字符串都是一个组名称,字符串列表本身是由alloc分配的内存,需要被free释放;字符串不需要释放 | +> 设置`uint64`类型的键值(自2.3.0.0版本启用) +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | int kdk_conf2_set_uint64( KSettings *ksettings, const char *key, unsigned long value ) | 设置`uint64`类型的键值;调用方请确认键值类型确为`uint64`类型 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 要设置的值 | 布尔值
1: True
0: False | -## **5.6** 单位进制转换 +> 设置键值(自2.3.0.0版本启用) -``` -$ sudo apt-get install libkysdk-utils libkysdk-utils-dev -``` +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | --------------------------------- | +| conf2配置模块 | C | int kdk_conf2_set_value( KSettings *ksettings, const char *key, const char *value ) | 设置键值 | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 句柄
key: 键名
value: 符合配置项类型标签的键值字符串 | 布尔值
1: True
0: False | +> 链接信号(自2.3.0.0版本启用) -> (1)调用 C 语言字符串扩展模块,需要添加头文件: -> -``` -#include "kysdk/kysdk-base/cstring-extension.h" -``` -> -> 字符格式单位进制转换 -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|------|----------------------------------------------------------------------------------------------------------------------|-----------------| -| 配置文件操作 | C | extern int kdkVolumeBaseCharacterConvert(const char* origin_data, KDKVolumeBaseType result_base, char* result_data); | 字符格式单位进制转换 | -| | | 参数说明 | 返回值说明 | -| | | 入参: | int类型值,接口执行是否成功 | -| | | origin_data:原始字符类型的数据,以具体进制单位结束,如果没有,缺省为‘B’ | 0-无异常 | -| | | result_base:期望的结果进制单位 | 1-非法进制 | -| | | 出参: | 2-非法参数 | -| | | result_data:转化进制后的字符数据,带进制单位 | 3-非法数据格式 | -| | | | 4-系统运行异常引发的未知错误 | +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | unsigned long kdk_conf2_connect_signal( KSettngs *ksettings, const char *signal_name, KCallBack handler, void *user_data )
typedef void (*KCallBack) (void); | | +| | | 参数说明 | 返回值说明 | +| | | ksettings: 信号链接的对象
signal_name: 信号的详细描述,格式"signal-name::detailed". 例如"changed"或"changed::key"
handler: 信号处理函数的C函数指针
user_data: 传递给信号处理函数的用户数据 | unsigned long 信号处理函数的ID,销毁句柄时会自动销毁句柄绑定的信号处理ID | + > 配置的设置值被修改时发出的信号 -> 数字格式单位进制转换 +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| conf2配置模块 | C | void changed( KSettings *传递给信号处理函数的用户数据, char *key, void *user_data ) | "changed"信号会在配置的设置值被修改时发出,您应该调用kdk_conf2_get()系列接口来获取新值。
该信号支持详细链接,可以连接到详细信号"changed::detailed",增加"detailed"修饰符可以仅在键"detailed"更改时接收回调。
注意,只有在信号已连接且您至少读取过一次配置时,这个信号才会发出。 | +| | | 参数说明 | 返回值说明 | +| | | 回调函数:
使用`kdk_conf2_connect_signal()`注册"changed"信号的回调函数
settings: 传递给信号处理函数的用户数据
key: 被更改的键名 | 无 | + + > 在对配置进行reload动作后,发送此信号 + + +| 子模块 | 编程语言 | 声明 | 描述 | +| ------------- | -------- | --------------- | ------------------------------------ | +| conf2配置模块 | C | updated() -> () | 在对配置进行reload动作后,发送此信号 | +| | | 参数说明 | 返回值说明 | +| | | 无 | 无 | -| 子模块 | 编程语言 | 声明 | 描述 | -|--------|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|------------| -| 配置文件操作 | C | extern int kdkVolumeBaseNumericalConvert(double origin_numerical, KDKVolumeBaseType origin_base, KDKVolumeBaseType result_base, double* result_numerical); | 数字格式单位进制转换 | -| | 参数说明 | 返回值说明 | | -| | 入参: | int类型值,接口执行是否成功 | | -| | origin_numerical:原始数字类型数据 | 0-无异常 | | -| | origin_base:原始的进制单位 | 1-非法进制 | | -| | 出参: | 2-非法参数 | | -| | result_base:期望的进制单位 | 3-非法数据格式 | | -| | result_numerical:期望进制下的数字类型数据 | 4-系统运行异常引发的未知错误 | | \ No newline at end of file