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 duplication of device's Device ID with
43 * provisioning database.
45 * @param[in] uuidOfDevice information about the target device's uuid.
47 * @return false when non-duplication and true when duplication or uuidOfDevicea is NULL .
49 bool PDMIsDuplicateDevice(const OicUuid_t* uuidOfDevice);
52 * This method is used by provisioning manager to add owned device's Device ID.
54 * @param[in] uuidOfDevice information about the owned device's uuid.
56 * @return OC_STACK_OK in case of success and other value otherwise.
58 OCStackResult PDMAddDevice(const OicUuid_t* uuidOfDevice);
61 * This method is used by provisioning manager to update linked status of owned devices.
63 * @param[in] uuidOfDevice1 DeviceID which is going to be linked with uuid of device 2.
64 * @param[in] uuidOfDevice2 DeviceID which is going to be linked with uuid of device 1.
66 * @return OC_STACK_OK in case of success and other value otherwise.
68 OCStackResult PDMLinkDevices(const OicUuid_t *uuidOfDevice1, const OicUuid_t *uuidOfDevice2);
71 * This method is used by provisioning manager to unlink pairwise devices.
73 * @param[in] uuidOfDevice1 DeviceID which is going to be unlinked with uuid of device 2.
74 * @param[in] uuidOfDevice2 DeviceID which is going to be unlinked with uuid of device 1.
76 * @return OC_STACK_OK in case of success and other value otherwise.
78 OCStackResult PDMUnlinkDevices(const OicUuid_t *uuidOfDevice1, const OicUuid_t *uuidOfDevice2);
81 * This method is used by provisioning manager to delete owned device's Device ID.
83 * @param[in] uuidOfDevice information about the owned device's uuid to be deleted.
85 * @return OC_STACK_OK in case of success and other value otherwise.
87 OCStackResult PDMDeleteDevice(const OicUuid_t *uuidOfDevice);
90 * This method is used by provisioning manager to get owned devices' Device IDs.
92 * @param[out] uuidList information about the list of owned devices' uuids.
93 * @param[out] numOfDevices total number of owned devices.
95 * @return OC_STACK_OK in case of success and other value otherwise.
97 OCStackResult PDMGetOwnedDevices(OCUuidList_t** uuidList, size_t* numOfDevices);
100 * This method is used by provisioning manager to get linked devices' IDs.
102 * @param[in] uuidOfDevice a target device's uuid.
103 * @param[out] uuidList information about the list of linked devices' uuids.
104 * @param[out] numOfDevices total number of linked devices.
106 * @return OC_STACK_OK in case of success and other value otherwise.
108 OCStackResult PDMGetLinkedDevices(const OicUuid_t* uuidOfDevice, OCUuidList_t** uuidList,
109 size_t* numOfDevices);
112 * This method is used by provisioning manager to update linked status as stale.
114 * @param[in] uuidOfDevice1 first id of stale link.
115 * @param[in] uuidOfDevice2 other id for stale link.
117 * @return OC_STACK_OK in case of success and other value otherwise.
119 OCStackResult PDMSetLinkStale(const OicUuid_t* uuidOfDevice1, const OicUuid_t* uuidOfDevice2);
122 * This method is used by provisioning manager to get stale devices.
124 * @note in case of sqllite, the caller should set NULL for parameters.
126 * @param[out] staleDevices information about the list of "To be Removed" devices' uuid.
127 * @param[out] numOfDevices total number of devices to be removed.
129 * @return OC_STACK_OK in case of success and other value otherwise.
131 OCStackResult PDMGetToBeUnlinkedDevices(OCPairList_t** staleDevList, size_t* numOfDevices);
134 * This method is used by provisioning manager to close provisioning database.
136 * @return OC_STACK_OK in case of success and other value otherwise.
138 OCStackResult PDMClose();
141 * This method is used by provisioning manager free memory allocated to OicUuidList lists.
143 * @param[in] ptr start pointer of link list.
144 * @return OC_STACK_OK in case of success and other value otherwise.
146 OCStackResult PDMDestoryOicUuidLinkList(OCUuidList_t* ptr);
149 * This method is used by provisioning manager free memory allocated to Stalelist.
151 * @param[in] ptr start pointer of link list.
152 * @return OC_STACK_OK in case of success and other value otherwise.
154 OCStackResult PDMDestoryStaleLinkList(OCPairList_t* ptr);
159 #endif //PROVISIONING_DATABASE_MANAGER_H