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