# 公共基础
- [简介](#section11660541593)
- [目录](#section1464106163817)
- [使用](#section83091355151312)
- [涉及仓](#section6250105871917)
## 简介
公共基础库存放OpenHarmony通用的基础组件。这些基础组件可被OpenHarmony各业务子系统及上层应用所使用。
公共基础库在不同平台上提供的能力:
- LiteOS-M内核\(Hi3861平台\):KV\(key value\)存储、文件操作、定时器、IoT外设控制、Dump系统属性。
- LiteOS-A内核\(Hi3516、Hi3518平台\):KV\(key value\)存储、定时器、JS API\(设备查询,数据存储\)、Dump系统属性。
**表 1** 公共基础库功能
模块
|
平台支持
|
说明
|
KV存储
|
LiteOS-M内核、LiteOS-A内核
|
为应用程序提供KV存储机制。
|
文件操作
|
LiteOS-M内核
|
提供统一的文件操作接口,屏蔽对底层不同芯片组件的差异。
|
定时器
|
LiteOS-M内核、LiteOS-A内核
|
提供统一的定时器操作接口,屏蔽对底层不同芯片组件的差异。
|
JS API
|
LiteOS-A内核
|
提供获取设备信息,数据存储的JS API。
|
IoT外设控制
|
LiteOS-M内核
|
IoT外设控制模块提供对外围设备的操作能力。
|
Dump系统属性
|
LiteOS-M内核、LiteOS-A内核
|
提供dump系统属性的命令行工具。
|
## 目录
```
utils/native/lite/ # 公共基础库根目录
├── file # 文件接口实现
├── hals # HAL目录
│ └── file # 文件操作硬件抽象层头文件
├── include # 公共基础库对外接口文件
├── js # JS API目录
│ └── builtin
│ ├── common
│ ├── deviceinfokit # 设备信息Kit
│ ├── filekit # 文件Kit
│ └── kvstorekit # KV存储Kit
├── kal # KAL目录
│ └── timer # Timer的KAL实现
├── kv_store # KV存储实现
│ ├── innerkits # KV存储内部接口
│ └── src # KV存储源文件
├── memory
│ └── include # 内存池管理接口
├── os_dump # Dump系统属性
├── timer_task # Timer实现
└── unittest # 公共基础库自测试用例
base/iot_hardware #IoT外设控制
├── frameworks
│ └── wifiiot_lite #IoT外设控制模块实现
├── hals
│ └── wifiiot_lite #HAL适配层接口声明
└── interfaces
└── kits #IoT外设控制模块接口
vendor/hisi/hi3861/hi3861_adapter/hals/iot_hardware #IoT外设控制HAL层
└── wifiiot_lite #HAL适配层接口实现
```
## 使用
- **KV存储**
```
// 存储/更新key对应数据项
const char key1[] = "key_sample";
const char defValue[] = "test case of key value store.";
int ret = UtilsSetValue(key1, defValue);
// 根据key获取对应数据项
char value1[32] = {0};
ret = UtilsGetValue(key1, value1, 32);
// 删除key对应数据项
UtilsDeleteValue(key1);
```
- **文件操作**
```
// 打开或创建文件
const char fileName[] = "testfile";
int fd = UtilsFileOpen(fileName, O_RDWR_FS | O_CREAT_FS | O_TRUNC_FS, 0);
// 向文件写入特定大小的数据
const char defValue[] = "test case of file system.";
int ret = UtilsFileWrite(fd, defValue, strlen(defValue));
// 关闭文件
UtilsFileClose(fd);
// 获取文件大小
int fileLen = 0;
ret = UtilsFileStat(fileName, &fileLen);
printf("file size = %d\n", fileLen);
// 重新定位文件读/写偏移量
int fd1 = UtilsFileOpen(fileName, O_RDWR_FS, 0);
ret = UtilsFileSeek(fd1, 5, SEEK_SET_FS);
// 读取特定长度的文件数据
char buf[32] = {0};
int readLen = UtilsFileRead(fd1, buf, 32);
ret = UtilsFileClose(fd1);
printf("read len = %d : buf = %s\n", readLen, buf);
// 删除指定文件
ret = UtilsFileDelete(fileName);
```
- **dump系统属性**
LiteOS-M内核:在串口执行如下命令,即可打印当前系统参数
```
AT+SYSPARA
```
LiteOS-A内核:在bin路径下执行os\_dump,即可打印当前系统参数
```
./bin/os_dump syspara
```
## 涉及仓
**公共基础库**
[utils\_native\_lite](https://gitee.com/openharmony/utils_native_lite/blob/master/README_zh.md)
[iothardware\_peripheral](https://gitee.com/openharmony/iothardware_peripheral/blob/master/README_zh.md)