From beb1f305216d46fce93e8a1f8ca700bc00c64499 Mon Sep 17 00:00:00 2001 From: "ester.zhou" Date: Fri, 11 Feb 2022 14:28:13 +0800 Subject: [PATCH] add docs Signed-off-by: ester.zhou --- en/readme/DeviceProfile.md | 189 ++++++++++++++++++++++++++ en/readme/figures/dp-architecture.png | Bin 0 -> 42375 bytes 2 files changed, 189 insertions(+) create mode 100644 en/readme/DeviceProfile.md create mode 100644 en/readme/figures/dp-architecture.png diff --git a/en/readme/DeviceProfile.md b/en/readme/DeviceProfile.md new file mode 100644 index 0000000000..29653fb13b --- /dev/null +++ b/en/readme/DeviceProfile.md @@ -0,0 +1,189 @@ +# DeviceProfile + +## 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. It provides the following features: + +- Querying, inserting, and deleting local device profile information +- Querying remote device profile information +- Synchronizing profile information across devices +- Subscribing to remote device profile changes + +Below is the architecture of the DeviceProfile subsystem. + +## Architecture + +**Figure 1** Architecture of the DeviceProfile subsystem + +![](figures/dp-architecture.png) + +## Directory Structure + +The main code directory structure of DeviceProfile is as follows: + +``` +├── interfaces +│   └── innerkits +│ └── distributeddeviceprofile // Internal APIs +├── ohos.build +├── sa_profile // SAID profile +│   ├── 6001.xml +│   └── BUILD.gn +├── services +│   └── distributeddeviceprofile +│   ├── BUILD.gn +│   ├── include +│ │ ├── 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 +│ │ ├── 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 +└── tools + └── dp // Auxiliary test tool +``` + +## 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 relevant descriptions in the Security subsystem readme file. + +## Usage + +### Querying Profile Information + +* Parameters of GetDeviceProfile + +| Name| Type| Mandatory| Description| +| --------- | ---------------------------- | ---- | ----------------------------------- | +| 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 (ID of the service data record).| +| profile | ServiceCharacteristicProfile | Yes| Return value.| + +* Example + +```c++ +// Declare the return value. +ServiceCharacteristicProfile profile; +// Call GetDeviceProfile. +DistributedDeviceProfileClient::GetInstance().GetDeviceProfile(deviceId, serviceId, profile); +std::string jsonData = profile.GetCharacteristicProfileJson(); +result.append("jsonData:" + jsonData + "\n"); +``` + +### Inserting Profile Information + +* Parameters of PutDeviceProfile + +| Name| Type| Mandatory| Description| +| --------- | ---------------------------- | ---- | ----------------------------------- | +| profile | ServiceCharacteristicProfile | Yes| Profile information to insert.| + +* Example + +```c++ +// Declare and fill in the data to insert. +ServiceCharacteristicProfile profile; +profile.SetServiceId(serviceId); +profile.SetServiceType(serviceType); +nlohmann::json j; +j["testVersion"] = "3.0.0"; +j["testApiLevel"] = API_LEVEL; +profile.SetCharacteristicProfileJson(j.dump()); +// Call PutDeviceProfile. +DistributedDeviceProfileClient::GetInstance().PutDeviceProfile(profile); +``` + +### Deleting Profile Information + +* Parameters of DeleteDeviceProfile + +| Name| Type| Mandatory| Description| +| --------- | ---------------------------- | ---- | ----------------------------------- | +| serviceId | std::string | Yes| ID of the service record to delete.| + +* Example + +```c++ +// Declare and fill in the data to delete. +std::string serviceId = "test"; +// DeleteDeviceProfile +DistributedDeviceProfileClient::GetInstance().DeleteDeviceProfile(serviceId); +``` + +### Synchronizing Profile Information + +* Parameters of SyncDeviceProfile + +| Name| Type| Mandatory| Description| +| --------- | ---------------------------- | ---- | ----------------------------------- | +| syncOption| SyncOption | Yes| Synchronization mode and range.| +| syncCb | IProfileEventCallback | Yes| Callback used to return the synchronization result.| + +* Example + +```c++ +// Define the synchronization mode and range. +SyncOptions syncOption; +syncOption.SetSyncMode((OHOS::DistributedKv::SyncMode)atoi(mode.c_str())); +for (const auto& deviceId : deviceIds) { + syncOption.AddDevice(deviceId); +} +// Call SyncDeviceProfile. +DistributedDeviceProfileClient::GetInstance().SyncDeviceProfile(syncOption, + std::make_shared()); +``` + +### Subscribing to Profile Events (Synchronization and Change Events) + +* Parameters of SubscribeProfileEvents + +| Name| Type| Mandatory| Description| +| -------------- | ---------------------------- | ---- | ----------------------------------- | +| subscribeInfos | SubscribeInfo | Yes| Type of the event to subscribe to.| +| eventCb | IProfileEventCallback | Yes| Callback for the subscribed event.| +| failedEvents | ProfileEvent | Yes| Failure event.| + +* Example + +```c++ +auto callback = std::make_shared(); +std::list subscribeInfos; +ExtraInfo extraInfo; +extraInfo["deviceId"] = deviceId; +extraInfo["serviceIds"] = serviceIds; + +// Subscribe to the EVENT_PROFILE_CHANGED event. +SubscribeInfo info1; +info1.profileEvent = ProfileEvent::EVENT_PROFILE_CHANGED; +info1.extraInfo = std::move(extraInfo); +subscribeInfos.emplace_back(info1); + +// Subscribe to the EVENT_SYNC_COMPLETED event. +SubscribeInfo info2; +info2.profileEvent = ProfileEvent::EVENT_SYNC_COMPLETED; +info2.extraInfo = std::move(extraInfo); +subscribeInfos.emplace_back(info2); + +std::list failedEvents; +// Call SubscribeProfileEvents. +DistributedDeviceProfileClient::GetInstance().SubscribeProfileEvents(subscribeInfos, + callback, failedEvents); +sleep(SUBSCRIBE_SLEEP_TIME); +std::list profileEvents; +profileEvents.emplace_back(ProfileEvent::EVENT_PROFILE_CHANGED); +failedEvents.clear(); +// Cancel the subscription. +DistributedDeviceProfileClient::GetInstance().UnsubscribeProfileEvents(profileEvents, + callback, failedEvents); +``` + +## Repositories Involved + +**DeviceProfile subsystem** + +[device\_profile\_core](https://gitee.com/openharmony/device_profile_core) diff --git a/en/readme/figures/dp-architecture.png b/en/readme/figures/dp-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..6d4573646c6b950b3e571d94ee09816397dd1d73 GIT binary patch literal 42375 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 literal 0 HcmV?d00001 -- GitLab