Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
4e58ef9a
D
Docs
项目概览
OpenHarmony
/
Docs
12 个月 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
4e58ef9a
编写于
1月 10, 2022
作者:
O
openharmony_ci
提交者:
Gitee
1月 10, 2022
浏览文件
操作
浏览文件
下载
差异文件
!990 新增deviceprofile 中文readme
Merge pull request !990 from zjucx/master
上级
7d0b5874
6ba9e255
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
196 addition
and
0 deletion
+196
-0
zh-cn/readme/DeviceProfile子系统.md
zh-cn/readme/DeviceProfile子系统.md
+196
-0
zh-cn/readme/figures/dp-architecture_zh.png
zh-cn/readme/figures/dp-architecture_zh.png
+0
-0
未找到文件。
zh-cn/readme/DeviceProfile子系统.md
0 → 100755
浏览文件 @
4e58ef9a
# DeviceProfile子系统<a name="ZH-CN_TOPIC_0000001128264105"></a>
-
[
简介
](
#section11660541593
)
-
[
目录
](
#section1464106163817
)
-
[
约束
](
#section1718733212019
)
-
[
使用
](
#section10729231131110
)
-
[
涉及仓
](
#section176111311166
)
## 简介<a name="section11660541593"></a>
DeviceProfile是设备硬件能力和系统软件特征的管理器,典型的Profile有设备类型、设备名称、设备OS类型、OS版本号等。DeviceProfile提供快速访问本地和远端设备Profile的能力,是发起分布式业务的基础。主要功能如下:
-
本地设备Profile的查询、插入、删除。
-
远程设备Profile的查询。
-
跨设备同步Profile。
-
订阅远程Profile变化的通知。
DeviceProfile模块组成如下图所示:
## 系统架构<a name="section13587185873516"></a>
**图 1**
DeviceProfile组件架构图
<a
name=
"fig4460722185514"
></a>
![](
figures/dp-architecture_zh.png
)
## 目录<a name="section1464106163817"></a>
DeviceProfile主要代码目录结构如下:
```
├── interfaces
│ └── innerkits
│ └── distributeddeviceprofile // 系统内部接口
├── ohos.build
├── sa_profile // said声明文件
│ ├── 6001.xml
│ └── BUILD.gn
├── services
│ └── distributeddeviceprofile
│ ├── BUILD.gn
│ ├── include
│ │ ├── contentsensor // CS数据采集头文件
│ │ ├── dbstorage // 数据库操作头文件
│ │ ├── devicemanager // 设备管理头文件
│ │ └── subscribemanager // 订阅管理头文件
│ ├── src
│ │ ├── contentsensor // CS数据采集实现
│ │ ├── dbstorage // 数据库操作实现
│ │ ├── devicemanager // 设备管理实现
│ │ ├── subscribemanager // 订阅管理实现
│ └── test // 测试用例
└── tools
└── dp // 辅助测试工具
```
## 约束<a name="section1718733212019"></a>
-
组网设备需在同一局域网中。
-
组网之前,需先完成设备绑定,绑定流程参见安全子系统中说明。
## 使用<a name="section10729231131110"></a>
### 查询Profile信息
*
GetDeviceProfile参数描述
| 名称 | 类型 | 必填 | 描述 |
| --------- | ---------------------------- | ---- | ----------------------------------- |
| deviceId | std::string | 是 | 查询指定设备的profile,空值表示查询本地 |
| serviceId | std::string | 是 | 查询的service id(数据记录的ID标识) |
| profile | ServiceCharacteristicProfile | 是 | 返回值 |
*
代码示例
```
c++
// 声明返回值
ServiceCharacteristicProfile
profile
;
// 执行查询接口GetDeviceProfile
DistributedDeviceProfileClient
::
GetInstance
().
GetDeviceProfile
(
deviceId
,
serviceId
,
profile
);
std
::
string
jsonData
=
profile
.
GetCharacteristicProfileJson
();
result
.
append
(
"jsonData:"
+
jsonData
+
"
\n
"
);
```
### 插入Profile信息
*
PutDeviceProfile参数描述
| 名称 | 类型 | 必填 | 描述 |
| --------- | ---------------------------- | ---- | ----------------------------------- |
| profile | ServiceCharacteristicProfile | 是 | 需要插入的profile信息 |
*
代码示例
```
c++
// 声明并填充插入数据
ServiceCharacteristicProfile
profile
;
profile
.
SetServiceId
(
serviceId
);
profile
.
SetServiceType
(
serviceType
);
nlohmann
::
json
j
;
j
[
"testVersion"
]
=
"3.0.0"
;
j
[
"testApiLevel"
]
=
API_LEVEL
;
profile
.
SetCharacteristicProfileJson
(
j
.
dump
());
// 执行插入接口PutDeviceProfile
DistributedDeviceProfileClient
::
GetInstance
().
PutDeviceProfile
(
profile
);
```
### 删除Profile信息
*
DeleteDeviceProfile参数描述
| 名称 | 类型 | 必填 | 描述 |
| --------- | ---------------------------- | ---- | ----------------------------------- |
| serviceId | std::string | 是 | 删除特定serviceid的记录 |
*
代码示例
```
c++
// 声明并填充插入数据
std
::
string
serviceId
=
"test"
;
// DeleteDeviceProfile
DistributedDeviceProfileClient
::
GetInstance
().
DeleteDeviceProfile
(
serviceId
);
```
### 同步Profile信息
*
SyncDeviceProfile参数描述
| 名称 | 类型 | 必填 | 描述 |
| --------- | ---------------------------- | ---- | ----------------------------------- |
| syncOption| SyncOption | 是 | 指定同步范围和模式 |
| syncCb | IProfileEventCallback | 是 | 同步结果回调 |
*
代码示例
```
c++
// 定义同步模式和范围
SyncOptions
syncOption
;
syncOption
.
SetSyncMode
((
OHOS
::
DistributedKv
::
SyncMode
)
atoi
(
mode
.
c_str
()));
for
(
const
auto
&
deviceId
:
deviceIds
)
{
syncOption
.
AddDevice
(
deviceId
);
}
// 执行同步接口
DistributedDeviceProfileClient
::
GetInstance
().
SyncDeviceProfile
(
syncOption
,
std
::
make_shared
<
ProfileEventCallback
>
());
```
### 订阅Profile事件(同步、变更事件)
*
SubscribeProfileEvents参数描述
| 名称 | 类型 | 必填 | 描述 |
| -------------- | ---------------------------- | ---- | ----------------------------------- |
| subscribeInfos | SubscribeInfo | 是 | 指定订阅的事件类型 |
| eventCb | IProfileEventCallback | 是 | 订阅事件回调 |
| failedEvents | ProfileEvent | 是 | 失败事件 |
*
代码示例
```
c++
auto
callback
=
std
::
make_shared
<
ProfileEventCallback
>
();
std
::
list
<
SubscribeInfo
>
subscribeInfos
;
ExtraInfo
extraInfo
;
extraInfo
[
"deviceId"
]
=
deviceId
;
extraInfo
[
"serviceIds"
]
=
serviceIds
;
// 订阅EVENT_PROFILE_CHANGED事件
SubscribeInfo
info1
;
info1
.
profileEvent
=
ProfileEvent
::
EVENT_PROFILE_CHANGED
;
info1
.
extraInfo
=
std
::
move
(
extraInfo
);
subscribeInfos
.
emplace_back
(
info1
);
// 订阅EVENT_SYNC_COMPLETED事件
SubscribeInfo
info2
;
info2
.
profileEvent
=
ProfileEvent
::
EVENT_SYNC_COMPLETED
;
info2
.
extraInfo
=
std
::
move
(
extraInfo
);
subscribeInfos
.
emplace_back
(
info2
);
std
::
list
<
ProfileEvent
>
failedEvents
;
// 执行订阅接口
DistributedDeviceProfileClient
::
GetInstance
().
SubscribeProfileEvents
(
subscribeInfos
,
callback
,
failedEvents
);
sleep
(
SUBSCRIBE_SLEEP_TIME
);
std
::
list
<
ProfileEvent
>
profileEvents
;
profileEvents
.
emplace_back
(
ProfileEvent
::
EVENT_PROFILE_CHANGED
);
failedEvents
.
clear
();
// 解除订阅
DistributedDeviceProfileClient
::
GetInstance
().
UnsubscribeProfileEvents
(
profileEvents
,
callback
,
failedEvents
);
```
## 涉及仓<a name="section176111311166"></a>
**DeviceProfile子系统**
[
device\_profile\_core
](
https://gitee.com/openharmony/device_profile_core
)
\ No newline at end of file
zh-cn/readme/figures/dp-architecture_zh.png
0 → 100755
浏览文件 @
4e58ef9a
45.0 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录