1 /* *****************************************************************
3 * Copyright 2015 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 * *****************************************************************/
21 #ifndef PROVISIONING_DATABASE_MANAGER_H
22 #define PROVISIONING_DATABASE_MANAGER_H
23 #include "securevirtualresourcetypes.h"
33 * This method is used by provisioning manager to open provisioning database.
35 * @param[in] dbPath file path of the sqlite3 db
37 * @return OC_STACK_OK in case of success and other value otherwise.
39 OCStackResult PDMInit(const char* dbPath);
42 * This method is used by provisioning manager to check whether device is stale or not with PDM.
44 * @param[in] uuid information about the target device's uuid.
45 * @param[out] result true in case device is stale.
47 * @return OC_STACK_OK in case of success and other value otherwise.
49 OCStackResult PDMIsDeviceStale(const OicUuid_t *uuid, bool *result);
52 * This method is used by provisioning manager to check duplication of device's Device ID with
53 * provisioning database.
55 * @param[in] uuidOfDevice information about the target device's uuid.
56 * @param[out] result true in case device UUID already exist otherwise false.
58 * @return OC_STACK_OK in case of success and other value otherwise.
60 OCStackResult PDMIsDuplicateDevice(const OicUuid_t* uuidOfDevice, bool* result);
63 * This method is used by provisioning manager to add owned device's Device ID.
65 * @param[in] uuidOfDevice information about the owned device's uuid.
67 * @return OC_STACK_OK in case of success and other value otherwise.
69 OCStackResult PDMAddDevice(const OicUuid_t* uuidOfDevice);
72 * This method is used by provisioning manager to update linked status of owned devices.
74 * @param[in] uuidOfDevice1 DeviceID which is going to be linked with uuid of device 2.
75 * @param[in] uuidOfDevice2 DeviceID which is going to be linked with uuid of device 1.
77 * @return OC_STACK_OK in case of success and other value otherwise.
79 OCStackResult PDMLinkDevices(const OicUuid_t *uuidOfDevice1, const OicUuid_t *uuidOfDevice2);
82 * This method is used by provisioning manager to unlink pairwise devices.
84 * @param[in] uuidOfDevice1 DeviceID which is going to be unlinked with uuid of device 2.
85 * @param[in] uuidOfDevice2 DeviceID which is going to be unlinked with uuid of device 1.
87 * @return OC_STACK_OK in case of success and other value otherwise.
89 OCStackResult PDMUnlinkDevices(const OicUuid_t *uuidOfDevice1, const OicUuid_t *uuidOfDevice2);
92 * This method is used by provisioning manager to delete owned device's Device ID.
94 * @param[in] uuidOfDevice information about the owned device's uuid to be deleted.
96 * @return OC_STACK_OK in case of success and other value otherwise.
98 OCStackResult PDMDeleteDevice(const OicUuid_t *uuidOfDevice);
101 * This method is used by provisioning manager to get owned devices' Device IDs.
103 * @param[out] uuidList information about the list of owned devices' uuids.
104 * @param[out] numOfDevices total number of owned devices.
106 * @return OC_STACK_OK in case of success and other value otherwise.
108 OCStackResult PDMGetOwnedDevices(OCUuidList_t** uuidList, size_t* numOfDevices);
111 * This method is used by provisioning manager to get linked devices' IDs.
113 * @param[in] uuidOfDevice a target device's uuid.
114 * @param[out] uuidList information about the list of linked devices' uuids.
115 * @param[out] numOfDevices total number of linked devices.
117 * @return OC_STACK_OK in case of success and other value otherwise.
119 OCStackResult PDMGetLinkedDevices(const OicUuid_t* uuidOfDevice, OCUuidList_t** uuidList,
120 size_t* numOfDevices);
123 * This method is used by provisioning manager to update linked status as stale.
125 * @param[in] uuidOfDevice1 first id of stale link.
126 * @param[in] uuidOfDevice2 other id for stale link.
128 * @return OC_STACK_OK in case of success and other value otherwise.
130 OCStackResult PDMSetLinkStale(const OicUuid_t* uuidOfDevice1, const OicUuid_t* uuidOfDevice2);
133 * This method is used by provisioning manager to update device status as stale.
135 * @param[in] uuidOfDevice id of stale device.
137 * @return OC_STACK_OK in case of success and other value otherwise.
139 OCStackResult PDMSetDeviceStale(const OicUuid_t* uuidOfDevice);
142 * This method is used by provisioning manager to get stale devices.
144 * @note in case of sqllite, the caller should set NULL for parameters.
146 * @param[out] staleDevices information about the list of "To be Removed" devices' uuid.
147 * @param[out] numOfDevices total number of devices to be removed.
149 * @return OC_STACK_OK in case of success and other value otherwise.
151 OCStackResult PDMGetToBeUnlinkedDevices(OCPairList_t** staleDevList, size_t* numOfDevices);
154 * This method is used by provisioning manager to close provisioning database.
156 * @return OC_STACK_OK in case of success and other value otherwise.
158 OCStackResult PDMClose();
161 * This method is used by provisioning manager free memory allocated to OCUuidList_t lists.
163 * @param[in] ptr start pointer of link list.
165 void PDMDestoryOicUuidLinkList(OCUuidList_t* ptr);
168 * This method is used by provisioning manager free memory allocated to Stalelist.
170 * @param[in] ptr start pointer of link list.
173 void PDMDestoryStaleLinkList(OCPairList_t* ptr);
176 * This method is used by provisioning manager to check does the link exists between
177 * two devices or not.
179 * @param[in] uuidOfDevice1 UUID of device1.
180 * @param[in] uuidOfDevice2 UUID of device2.
181 * @param[out] result true when link exists otherwise false.
183 * @return OC_STACK_OK in case of success and other value otherwise.
185 OCStackResult PDMIsLinkExists(const OicUuid_t* uuidOfDevice1, const OicUuid_t* uuidOfDevice2,
192 #endif //PROVISIONING_DATABASE_MANAGER_H