1fe36e9d9c05a0b6d82b20956b2e129cb79f945f
[platform/upstream/iotivity.git] / resource / csdk / connectivity / inc / cainterfacecontroller.h
1 /* ****************************************************************
2  *
3  * Copyright 2014 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  *
24  * This file contains common utility function for CA transport adaptors.
25  */
26
27 #ifndef CA_INTERFACE_CONTROLLER_H_
28 #define CA_INTERFACE_CONTROLLER_H_
29
30 #include "caadapterinterface.h"
31 #include "cainterface.h"
32 #include "cautilinterface.h"
33
34 #ifndef SINGLE_THREAD
35 #include "cathreadpool.h" /* for thread pool */
36 #endif
37
38 #ifdef __cplusplus
39 extern "C"
40 {
41 #endif
42
43 #ifdef SINGLE_THREAD
44 /**
45  * Initializes different adapters based on the compilation flags.
46  */
47 void CAInitializeAdapters();
48 #else
49 /**
50  * Initializes different adapters based on the compilation flags.
51  * @param[in]   handle           thread pool handle created by message handler
52  *                               for different adapters.
53  */
54 void CAInitializeAdapters(ca_thread_pool_t handle);
55 #endif
56
57 /**
58  * Set the received packets callback for message handler.
59  * @param[in]   callback         message handler callback to receive packets
60  *                               from different adapters.
61  */
62 void CASetPacketReceivedCallback(CANetworkPacketReceivedCallback callback);
63
64 /**
65  * Set the error handler callback for message handler.
66  * @param[in]   errorCallback    error handler callback from adapters
67  */
68 void CASetErrorHandleCallback(CAErrorHandleCallback errorCallback);
69
70 /**
71  * Set the network status changed callback for CAUtil.
72  * @param[in]   adapterCB       CAUtil callback to receive adapter status changes.
73  * @param[in]   connCB          CAUtil callback to receive connection status changes.
74  */
75 void CASetNetworkMonitorCallbacks(CAAdapterStateChangedCB adapterCB,
76                                   CAConnectionStateChangedCB connCB);
77
78 /**
79  * Starting different connectivity adapters based on the network selection.
80  * @param[in]   transportType    interested network for starting.
81  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
82  */
83 CAResult_t CAStartAdapter(CATransportAdapter_t transportType);
84
85 /**
86  * Stopping different connectivity adapters based on the network un-selection.
87  * @param[in]   transportType    network type that want to stop.
88  */
89 void CAStopAdapter(CATransportAdapter_t transportType);
90
91 #ifdef RA_ADAPTER
92 /**
93  * Set Remote Access information for XMPP Client.
94  * @param[in]   caraInfo         remote access info..
95  *
96  * @return  CA_STATUS_OK
97  */
98 CAResult_t CASetAdapterRAInfo(const CARAInfo_t *caraInfo);
99 #endif
100
101 /**
102  * Get network information such as ipaddress and mac information.
103  * @param[out]   info           connectivity information
104  *                                  such as ipaddress and mac information.
105  * @param[out]   size           number of connectivity information structures.
106  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
107  */
108 CAResult_t CAGetNetworkInfo(CAEndpoint_t **info, uint32_t *size);
109
110 /**
111  * Sends unicast data to the remote endpoint.
112  * @param[in]   endpoint       endpoint information where the data has to be sent.
113  * @param[in]   data           data that needs to be sent.
114  * @param[in]   length         length of the data that needs to be sent.
115  * @param[in]   dataType       Data type which is REQUEST or RESPONSE.
116  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
117  */
118 CAResult_t CASendUnicastData(const CAEndpoint_t *endpoint, const void *data,
119                              uint32_t length, CADataType_t dataType);
120
121 /**
122  * Sends multicast data to all endpoints in the network.
123  * @param[in]   endpoint       endpoint information where the data has to be sent.
124  * @param[in]   data           data that needs to be sent.
125  * @param[in]   length         length of the data that needs to be sent.
126  * @param[in]   dataType       Data type which is REQUEST or RESPONSE.
127  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
128  */
129
130 CAResult_t CASendMulticastData(const CAEndpoint_t *endpoint, const void *data,
131                                uint32_t length, CADataType_t dataType);
132
133 /**
134  * Start listening servers to receive search requests from clients.
135  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
136  */
137 CAResult_t CAStartListeningServerAdapters();
138
139 /**
140  * Stop listening servers to receive search requests from clients.
141  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
142  */
143 CAResult_t CAStopListeningServerAdapters();
144
145 /**
146  * Start discovery servers to receive advertisements from server.
147  * @return  ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
148  */
149 CAResult_t CAStartDiscoveryServerAdapters();
150
151 /**
152  * Terminates the adapters which are initialized during the initialization.
153  */
154 void CATerminateAdapters();
155
156 #ifdef SINGLE_THREAD
157 /**
158  * Checks for available data and reads it.
159  * @return   ::CA_STATUS_OK or ERROR CODES (::CAResult_t error codes in cacommon.h).
160  */
161 CAResult_t CAReadData();
162 #endif
163
164 #ifdef __cplusplus
165 } /* extern "C" */
166 #endif
167
168 #endif /* CA_INTERFACE_CONTROLLER_H_ */
169