From 6da4cb3606609863a04d83cda4631fbe152f5eea Mon Sep 17 00:00:00 2001 From: Annie_wang Date: Tue, 20 Dec 2022 09:47:29 +0800 Subject: [PATCH] update docs Signed-off-by: Annie_wang --- README.md | 170 ++++++++++++++++----------------- figures/dp-architecture_en.png | Bin 0 -> 41635 bytes 2 files changed, 83 insertions(+), 87 deletions(-) create mode 100644 figures/dp-architecture_en.png diff --git a/README.md b/README.md index ffe3227f..2a92340c 100644 --- a/README.md +++ b/README.md @@ -1,98 +1,96 @@ -# 介绍 +# Distributed DeviceProfile -- [简介](#section11660541593) -- [目录](#section1464106163817) -- [约束](#section1718733212019) -- [使用](#section10729231131110) -- [涉及仓](#section176111311166) +## Introduction -## 简介 +DeviceProfile is used to manage device hardware capabilities and system software features. A typical device profile includes the device type, device name, OS type, and OS version. By allowing quick access to local and remote device profiles, DeviceProfile lays the foundation for initiating distributed services. -DeviceProfile是设备硬件能力和系统软件特征的管理器,典型的Profile有设备类型、设备名称、设备OS类型、OS版本号等。DeviceProfile提供快速访问本地和远端设备Profile的能力,是发起分布式业务的基础。主要功能如下: +DeviceProfile provides the following functions: -- 本地设备Profile的插入、删除、查询。 -- 远程设备Profile的查询。 -- 订阅远程Profile变化的通知。 -- 跨设备同步Profile。 +- Inserting, deleting, and querying profiles of local devices. +- Querying remote device profile information. +- Subscribing to remote device profile changes. +- Synchronizing profile information across devices. -DeviceProfile模块组成如下图所示: +The following figure shows the architecture of the DeviceProfile module. -## 系统架构 +## Architecture -![](figures/dp-architecture_zh.png) +**Figure 1** DeviceProfile component architecture -**图 1** DeviceProfile组件架构图 -## 目录 +![](figures/dp-architecture_en.png) -DeviceProfile主要代码目录结构如下: + +## Directory Structure + +The main code directory structure of DeviceProfile is as follows: ``` ├── interfaces -│   └── innerkits -│   └── distributeddeviceprofile // innerkits接口 +│ └── innerkits +│ └── distributeddeviceprofile // innerkits APIs ├── ohos.build -├── sa_profile // said声明文件 -│   ├── 6001.xml -│   └── BUILD.gn +├── sa_profile // SAID profile +│ ├── 6001.xml +│ └── BUILD.gn └── services -   └── distributeddeviceprofile -    ├── BUILD.gn -    ├── include -   │   ├── authority // 权限校验 -    │   ├── contentsensor // CS数据采集头文件 -    │   ├── dbstorage // 数据库操作头文件 -    │   ├── devicemanager // 设备管理头文件 -    │   └── subscribemanager // 订阅管理头文件 -   ├── src -    │   ├── authority // 权限校验 -   │   ├── contentsensor // CS数据采集实现 -    │   ├── dbstorage // 数据库操作实现 -    │   ├── devicemanager // 设备管理实现 -    │   └── subscribemanager // 订阅管理实现 -    └── test // 测试用例 + └── distributeddeviceprofile + ├── BUILD.gn + ├── include + │ ├── authority // Permission verification + │ ├── contentsensor // Header file for content sensor data collection + │ ├── dbstorage // Header file for database operations + │ ├── devicemanager // Header file for device management + │ └── subscribemanager // Header file for subscription management + ├── src + │ ├── authority // Permission verification + │ ├── contentsensor // Implementation of content sensor data collection + │ ├── dbstorage // Implementation of database operations + │ ├── devicemanager // Implementation of device management + │ └── subscribemanager // Implementation of subscription management + └── test // Test cases ``` -## 约束 +## Constraints -- 组网设备需在同一局域网中。 -- 组网之前,需先完成设备绑定,绑定流程参见安全子系统中说明。 +- The devices between which you want to set up a connection must be in the same LAN. +- Before setting up a connection between two devices, you must bind the devices. For details about the binding process, see the Security subsystem readme file. -## 使用 +## Usage -### 查询Profile信息 +### Querying Profile Information -* GetDeviceProfile参数描述 +* Parameters of **GetDeviceProfile** -| 名称 | 类型 | 必填 | 描述 | +| Name | Type | Mandatory| Description | | --------- | ---------------------------- | ---- | ----------------------------------- | -| deviceId | std::string | 是 | 查询指定设备的profile,空值表示查询本地 | -| serviceId | std::string | 是 | 查询的service id | -| profile | ServiceCharacteristicProfile | 是 | 返回值 | +| deviceId | std::string | Yes | ID of the device whose profile is to be queried. A null value indicates the local device.| +| serviceId | std::string | Yes | Service ID. | +| profile | ServiceCharacteristicProfile | Yes | Device profile information returned. | -* 代码示例 +* Sample code ```c++ -// 声明返回值 +// Declare the return value. ServiceCharacteristicProfile profile; -// 执行查询接口GetDeviceProfile +// Call GetDeviceProfile. DistributedDeviceProfileClient::GetInstance().GetDeviceProfile(deviceId, serviceId, profile); std::string jsonData = profile.GetCharacteristicProfileJson(); result.append("jsonData:" + jsonData + "\n"); ``` -### 插入Profile信息 +### Inserting Profile Information -* PutDeviceProfile参数描述 +* Parameters of **PutDeviceProfile** -| 名称 | 类型 | 必填 | 描述 | +| Name | Type | Mandatory| Description | | --------- | ---------------------------- | ---- | ----------------------------------- | -| profile | ServiceCharacteristicProfile | 是 | 需要插入的profile信息 | +| profile | ServiceCharacteristicProfile | Yes | Profile information to insert. | -* 代码示例 +* Sample code ```c++ -// 声明并填充插入数据 +// Declare and fill in the data to insert. ServiceCharacteristicProfile profile; profile.SetServiceId(serviceId); profile.SetServiceType(serviceType); @@ -100,67 +98,67 @@ nlohmann::json j; j["testVersion"] = "3.0.0"; j["testApiLevel"] = API_LEVEL; profile.SetCharacteristicProfileJson(j.dump()); -// 执行插入接口PutDeviceProfile +// Call PutDeviceProfile. DistributedDeviceProfileClient::GetInstance().PutDeviceProfile(profile); ``` -### 删除Profile信息 +### Deleting Profile Information -* DeleteDeviceProfile参数描述 +* Parameters of **DeleteDeviceProfile** -| 名称 | 类型 | 必填 | 描述 | +| Name | Type | Mandatory| Description | | --------- | ---------------------------- | ---- | ----------------------------------- | -| serviceId | std::string | 是 | 删除特定serviceid的记录 | +| serviceId | std::string | Yes | ID of the service record to delete. | -* 代码示例 +* Sample code ```c++ -// 声明并填充插入数据 +// Declare and fill in the data to delete. std::string serviceId = "test"; // DeleteDeviceProfile DistributedDeviceProfileClient::GetInstance().DeleteDeviceProfile(serviceId); ``` -### 同步Profile信息 +### Synchronizing Profile Information -* SyncDeviceProfile参数描述 +* Parameters of **SyncDeviceProfile** -| 名称 | 类型 | 必填 | 描述 | +| Name | Type | Mandatory| Description | | --------- | ---------------------------- | ---- | ----------------------------------- | -| syncOption| SyncOption | 是 | 指定同步范围和模式 | -| syncCb | IProfileEventCallback | 是 | 同步结果回调 | +| syncOption| SyncOption | Yes | Synchronization range and mode. | +| syncCb | IProfileEventCallback | Yes | Callback used to return the synchronization result. | -* 代码示例 +* Sample code ```c++ -// 定义同步模式和范围 +// Define the synchronization mode and range. SyncOptions syncOption; syncOption.SetSyncMode((OHOS::DeviceProfile::SyncMode)atoi(mode.c_str())); for (const auto& deviceId : deviceIds) { syncOption.AddDevice(deviceId); } -// 执行同步接口 +// Call SyncDeviceProfile. DistributedDeviceProfileClient::GetInstance().SyncDeviceProfile(syncOption, std::make_shared()); ``` -### 订阅Profile事件(同步、变更事件) +### Subscribing to Profile Events (Synchronization and Change Events) -* SubscribeProfileEvents参数描述 +* Parameters of **SubscribeProfileEvents** -| 名称 | 类型 | 必填 | 描述 | +| Name | Type | Mandatory| Description | | -------------- | ---------------------------- | ---- | ----------------------------------- | -| subscribeInfos | SubscribeInfo | 是 | 指定订阅的事件类型 | -| eventCb | IProfileEventCallback | 是 | 订阅事件回调 | -| failedEvents | ProfileEvent | 是 | 失败事件 | +| subscribeInfos | SubscribeInfo | Yes | Type of the event to subscribe to. | +| eventCb | IProfileEventCallback | Yes | Callback used to return the subscription event. | +| failedEvents | ProfileEvent | Yes | Failure event. | -* 代码示例 +* Sample code ```c++ auto callback = std::make_shared(); std::list subscribeInfos; -// 订阅EVENT_PROFILE_CHANGED事件 +// Subscribe to the EVENT_PROFILE_CHANGED event. ExtraInfo extraInfo; extraInfo["deviceId"] = deviceId; extraInfo["serviceIds"] = serviceIds; @@ -169,25 +167,23 @@ changeEventInfo.profileEvent = ProfileEvent::EVENT_PROFILE_CHANGED; changeEventInfo.extraInfo = std::move(extraInfo); subscribeInfos.emplace_back(changeEventInfo); -// 订阅EVENT_SYNC_COMPLETED事件 +// Subscribe to the EVENT_SYNC_COMPLETED event. SubscribeInfo syncEventInfo; syncEventInfo.profileEvent = ProfileEvent::EVENT_SYNC_COMPLETED; subscribeInfos.emplace_back(syncEventInfo); -// 执行订阅接口 +// Call SubscribeProfileEvents. std::list failedEvents; DistributedDeviceProfileClient::GetInstance().SubscribeProfileEvents(subscribeInfos, callback, failedEvents); -// 解除订阅 +// Cancel the subscription. std::list profileEvents; profileEvents.emplace_back(ProfileEvent::EVENT_PROFILE_CHANGED); DistributedDeviceProfileClient::GetInstance().UnsubscribeProfileEvents(profileEvents, callback, failedEvents); ``` -## 涉及仓 +## Repositories Involved -**[DeviceProfile子系统](zh-cn_topic_0000001115719369.md)** - -[device\_profile\_core](https://gitee.com/openharmony-sig/device_info_manager) \ No newline at end of file +[**deviceprofile_device_info_manager**](https://gitee.com/openharmony/deviceprofile_device_info_manager) diff --git a/figures/dp-architecture_en.png b/figures/dp-architecture_en.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5786b958a4d5ab9ce171fad4538fde2bed69cc GIT binary patch literal 41635 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