Imported Upstream version 1.0.0
[platform/upstream/iotivity.git] / resource / csdk / security / provisioning / include / internal / provisioningdatabasemanager.h
1 /* *****************************************************************
2  *
3  * Copyright 2015 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
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
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  * *****************************************************************/
20
21 #ifndef PROVISIONING_DATABASE_MANAGER_H
22 #define PROVISIONING_DATABASE_MANAGER_H
23 #include "securevirtualresourcetypes.h"
24 #include "ocstack.h"
25 #include "pmtypes.h"
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31
32 /**
33  * This method is used by provisioning manager to open provisioning database.
34  *
35  * @param[in] dbPath file path of the sqlite3 db
36  *
37  * @return OC_STACK_OK in case of success and other value otherwise.
38  */
39 OCStackResult PDMInit(const char* dbPath);
40
41 /**
42  * This method is used by provisioning manager to check duplication of device's Device ID with
43  * provisioning database.
44  *
45  * @param[in] uuidOfDevice information about the target device's uuid.
46  * @param[out] result true in case device UUID already exist otherwise false.
47  *
48  * @return OC_STACK_OK in case of success and other value otherwise.
49  */
50 OCStackResult PDMIsDuplicateDevice(const OicUuid_t* uuidOfDevice, bool* result);
51
52 /**
53  * This method is used by provisioning manager to add owned device's Device ID.
54  *
55  * @param[in] uuidOfDevice information about the owned device's uuid.
56  *
57  * @return OC_STACK_OK in case of success and other value otherwise.
58  */
59 OCStackResult PDMAddDevice(const OicUuid_t* uuidOfDevice);
60
61 /**
62  * This method is used by provisioning manager to update linked status of owned devices.
63  *
64  * @param[in] uuidOfDevice1 DeviceID which is going to be linked with uuid of device 2.
65  * @param[in] uuidOfDevice2 DeviceID which is going to be linked with uuid of device 1.
66  *
67  * @return OC_STACK_OK in case of success and other value otherwise.
68  */
69 OCStackResult PDMLinkDevices(const OicUuid_t *uuidOfDevice1, const OicUuid_t *uuidOfDevice2);
70
71 /**
72  * This method is used by provisioning manager to unlink pairwise devices.
73  *
74  * @param[in] uuidOfDevice1 DeviceID which is going to be unlinked with uuid of device 2.
75  * @param[in] uuidOfDevice2 DeviceID which is going to be unlinked with uuid of device 1.
76  *
77  * @return OC_STACK_OK in case of success and other value otherwise.
78  */
79 OCStackResult PDMUnlinkDevices(const OicUuid_t *uuidOfDevice1, const OicUuid_t *uuidOfDevice2);
80
81 /**
82  * This method is used by provisioning manager to delete owned device's Device ID.
83  *
84  * @param[in] uuidOfDevice information about the owned device's uuid to be deleted.
85  *
86  * @return OC_STACK_OK in case of success and other value otherwise.
87  */
88 OCStackResult PDMDeleteDevice(const OicUuid_t *uuidOfDevice);
89
90 /**
91  * This method is used by provisioning manager to get owned devices' Device IDs.
92  *
93  * @param[out] uuidList information about the list of owned devices' uuids.
94  * @param[out] numOfDevices total number of owned devices.
95  *
96  * @return OC_STACK_OK in case of success and other value otherwise.
97  */
98 OCStackResult PDMGetOwnedDevices(OCUuidList_t** uuidList, size_t* numOfDevices);
99
100 /**
101  * This method is used by provisioning manager to get linked devices' IDs.
102  *
103  * @param[in] uuidOfDevice a target device's uuid.
104  * @param[out] uuidList information about the list of linked devices' uuids.
105  * @param[out] numOfDevices total number of linked devices.
106  *
107  * @return OC_STACK_OK in case of success and other value otherwise.
108  */
109 OCStackResult PDMGetLinkedDevices(const OicUuid_t* uuidOfDevice, OCUuidList_t** uuidList,
110                                     size_t* numOfDevices);
111
112 /**
113  * This method is used by provisioning manager to update linked status as stale.
114  *
115  * @param[in] uuidOfDevice1 first id of stale link.
116  * @param[in] uuidOfDevice2 other id for stale link.
117  *
118  * @return OC_STACK_OK in case of success and other value otherwise.
119  */
120 OCStackResult PDMSetLinkStale(const OicUuid_t* uuidOfDevice1, const OicUuid_t* uuidOfDevice2);
121
122 /**
123  * This method is used by provisioning manager to get stale devices.
124  *
125  * @note in case of sqllite, the caller should set NULL for parameters.
126  *
127  * @param[out] staleDevices information about the list of "To be Removed" devices' uuid.
128  * @param[out] numOfDevices total number of devices to be removed.
129  *
130  * @return OC_STACK_OK in case of success and other value otherwise.
131  */
132 OCStackResult PDMGetToBeUnlinkedDevices(OCPairList_t** staleDevList, size_t* numOfDevices);
133
134 /**
135  * This method is used by provisioning manager to close provisioning database.
136  *
137  * @return  OC_STACK_OK in case of success and other value otherwise.
138  */
139 OCStackResult PDMClose();
140
141 /**
142  * This method is used by provisioning manager free memory allocated to OCUuidList_t lists.
143  *
144  * @param[in] ptr start pointer of link list.
145  */
146 void PDMDestoryOicUuidLinkList(OCUuidList_t* ptr);
147
148 /**
149  * This method is used by provisioning manager free memory allocated to Stalelist.
150  *
151  * @param[in] ptr start pointer of link list.
152  *
153  */
154 void PDMDestoryStaleLinkList(OCPairList_t* ptr);
155
156 /**
157  * This method is used by provisioning manager to check does the link exists between
158  * two devices or not.
159  *
160  * @param[in] uuidOfDevice1 UUID of device1.
161  * @param[in] uuidOfDevice2 UUID of device2.
162  * @param[out] result true when link exists otherwise false.
163  *
164  * @return OC_STACK_OK in case of success and other value otherwise.
165  */
166 OCStackResult PDMIsLinkExists(const OicUuid_t* uuidOfDevice1, const OicUuid_t* uuidOfDevice2,
167                                 bool *result );
168
169 #ifdef __cplusplus
170 }
171 #endif
172 #endif //PROVISIONING_DATABASE_MANAGER_H