Add doxygen comments to connectivity module
[iotivity.git] / resource / csdk / connectivity / util / src / camanager / camanagerutil.h
1 /******************************************************************
2  *
3  * Copyright 2016 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 /**
22  * @file
23  * This file contains common function for connection manager util
24  */
25
26 #ifndef CA_MANAGER_UTIL_H_
27 #define CA_MANAGER_UTIL_H_
28
29 #include "cacommon.h"
30
31 #ifdef __cplusplus
32 extern "C"
33 {
34 #endif
35 /**
36  * Information related to endpoint.
37  * Used for switching endpoint information.
38  */
39 typedef struct
40 {
41     CATransportAdapter_t adapter; /**< transport adapter */
42     CATransportFlags_t flags;     /**< transport flag */
43     char *addr;                   /**< address */
44     uint16_t udpPort;             /**< udp port information */
45     uint16_t tcpPort;             /**< tcp port information */
46 } CMIpInfo_t;
47
48 /**
49  * D2S, D2D information about specific di.
50  */
51 typedef struct
52 {
53     char *deviceId;     /**< device Id */
54     CMIpInfo_t d2dInfo; /**< device to device information */
55     CMIpInfo_t d2sInfo; /**< device to server information */
56 } CMDeviceInfo_t;
57
58 /**
59  * List structure for CMDeviceInfo_t.
60  */
61 typedef struct CMDeviceInfoList
62 {
63     CMDeviceInfo_t *deviceInfo;    /**< device information */
64     struct CMDeviceInfoList *next; /**< pointer to next node */
65 } CMDeviceInfoList_t;
66
67 /**
68  * This function is used to add the DeviceInfo structure to IP connection info table.
69  *
70  * @param[in,out] devInfoList   Pointer to IP connection info table which contains
71  *                              D2D,D2S ip related informaions.
72  * @param[in]     endpoint      remote Endpoint to be added in IP connection info table.
73  *
74  * @return :: CA_STATUS_OK or Appropriate error code.
75  * @retval :: CA_STATUS_OK  Successful.
76  * @retval :: CA_STATUS_FAILED Operation failed.
77  */
78 CAResult_t CAMgrUtilAddDevInfoToList(CMDeviceInfoList_t **devInfoList,
79                                      const CAEndpoint_t *endpoint);
80
81 /**
82  * This function is used to get the DeviceInfo which have specific device id
83  * from the table.
84  *
85  * @param[in]  devInfoList  Pointer to IP connection info table which contains
86  *                          D2D,D2S ip related informaions.
87  * @param[in]  deviceId     Unique remote device id to access IP connection info
88  *                          table.
89  * @param[out] devInfo      Table information obtained with a specific device id.
90  *
91  * @return :: CA_STATUS_OK or Appropriate error code.
92  * @retval :: CA_STATUS_OK  Successful.
93  * @retval :: CA_STATUS_FAILED Operation failed.
94  */
95 CAResult_t CAMgrUtilGetDevInfo(CMDeviceInfoList_t *devInfoList, const char *deviceId,
96                                CMDeviceInfo_t **devInfo);
97
98 /**
99  * This function is used to update IP connection table component which have specific device id.
100  *
101  * @param[in,out] devInfoList   Pointer to IP connection info table which contains
102  *                              D2D,D2S ip related informaions.
103  * @param[in]     endpoint      remote Endpoint to be updated in IP connection info table.
104  *
105  * @return :: CA_STATUS_OK or Appropriate error code.
106  * @retval :: CA_STATUS_OK  Successful.
107  * @retval :: CA_STATUS_FAILED Operation failed.
108  */
109 CAResult_t CAMgrUtilUpdateDevInfo(CMDeviceInfoList_t *devInfoList,
110                                   const CAEndpoint_t *endpoint);
111
112 /**
113  * This function is used to reset all D2D informations.
114  *
115  * @param[in,out] devInfoList   Pointer to IP connection info table which contains
116  *                              D2D,D2S ip related informaions.
117  *
118  * @return :: CA_STATUS_OK or Appropriate error code.
119  * @retval :: CA_STATUS_OK  Successful.
120  * @retval :: CA_STATUS_FAILED Operation failed.
121  */
122 CAResult_t CAMgrUtilResetDevInfo(CMDeviceInfoList_t *devInfoList);
123
124 /**
125  * This function is used to clear IP connection info table.
126  *
127  * @param[in,out] devInfoList   Pointer to IP connection info table which contains
128  *                              D2D,D2S ip related informaions.
129  */
130 void CAMgrUtilDestroyDevInfoList(CMDeviceInfoList_t *devInfoList);
131
132 /**
133  *  This function is used to get a device id from URI.
134  *
135  *  @param[in] uri
136  *
137  *  @return :: device id
138  */
139 char* CAMgrUtilGetDeviceId(char *uri);
140
141 #ifdef __cplusplus
142 } /* extern "C" */
143 #endif
144
145 #endif  // CA_MANAGER_UTIL_H_