c9d9339b687508e7c8ca1d329448adef8e42ecde
[platform/upstream/iotivity.git] / resource / csdk / connectivity / inc / caleinterface_singlethread.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 provides APIs for BLE modules.
25  */
26
27 #ifndef _CA_LE_INTERFACE_SINGLETHREAD_H_
28 #define _CA_LE_INTERFACE_SINGLETHREAD_H_
29
30 #include <stdbool.h>
31
32 #include "cacommon.h"
33 #include "caleadapter_singlethread.h"
34
35 #ifdef __cplusplus
36 extern "C"
37 {
38 #endif
39
40 /**
41  * @enum CALETransferType_t
42  * @brief Provide information about different mode of data transfer
43  *        This enum is used to differentiate between unicast and multicast data transfer.
44  */
45 typedef enum
46 {
47     LE_MULTICAST,    /**< When this enum is selected, data will be updated to all OIC servers. */
48     LE_UNICAST       /**< When this enum is selected, data will be updated to desired OIC Server. */
49 } CALETransferType_t;
50
51
52 /**
53  * @brief  Used to get the current state of the LE adapter.
54  *
55  * @return #CA_STATUS_OK or Appropriate error code
56  * @retval #CA_STATUS_OK  Successful
57  * @retval #CA_ADAPTER_NOT_ENABLED  adapter not enabled
58  * @retval #CA_STATUS_FAILED Operation failed
59  */
60 CAResult_t CAGetLEAdapterState();
61
62 /**
63  * @brief  Used to initialize the network monitor layer of the LE adapter.
64  *
65  * @return #CA_STATUS_OK or Appropriate error code
66  * @retval #CA_STATUS_OK  Successful
67  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
68  * @retval #CA_STATUS_FAILED Operation failed
69  */
70 CAResult_t CALEInitializeNetworkMonitor();
71
72 /**
73  * @brief  Used to terminate the network monitor layer of the LE adapter.
74  * @return NONE
75  */
76 void CALETerminateNetworkMonitor();
77
78 /**
79  * @brief  This function is used to set the callback for the Device state changes in the adapter.
80  *
81  * @param  callback  [IN]  Callback to notify the Device state change to the CA Layer
82  *
83  * @return #CA_STATUS_OK or Appropriate error code
84  * @retval #CA_STATUS_OK  Successful
85  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
86  * @retval #CA_STATUS_FAILED Operation failed
87  */
88 CAResult_t CASetLEAdapterStateChangedCb(CALEDeviceStateChangedCallback callback);
89
90 /**
91  * @brief  Provides the BD address of the local adapter.
92  * @param  local_address [IN] pointer to the location where bd address needs to be stored.
93  *
94  * @return NONE
95  */
96 void CAGetLEAddress(char **local_address);
97
98 /**
99  * @brief  Used to start Gatt Server thread for service creation and advertise ble service.
100  *
101  * @return #CA_STATUS_OK or Appropriate error code
102  * @retval #CA_STATUS_OK  Successful
103  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
104  * @retval #CA_STATUS_FAILED Operation failed
105  */
106 CAResult_t CAStartBleGattServer();
107
108 /**
109  * @brief  Used to stop BLE Gatt Service.
110  *
111  * @return #CA_STATUS_OK or Appropriate error code
112  * @retval #CA_STATUS_OK  Successful
113  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
114  * @retval #CA_STATUS_FAILED Operation failed
115  */
116 CAResult_t CAStopBleGattServer();
117
118 /**
119  * @brief  Used to store upper layer callback locally which will be used to send the data to
120  *         application
121  * @param  callback [IN] Callback function to pass the data to CA layer.
122  * @return NONE
123  */
124 void CASetBLEReqRespServerCallback(CABLEServerDataReceivedCallback callback);
125
126 /**
127  * @brief  Used to update characteristics(Read/Write) value that we want to send to particular
128  *         client. Both unicast and multicast will use the same api. In mulicast, we will be
129  *         sending in loop to all clients.
130  *
131  * @param  charValue     [IN] Data that we want to send to client(unicast)/clients(multicast)
132  * @param  charValueLen  [IN] Length of the data.
133  *
134  * @return #CA_STATUS_OK or Appropriate error code
135  * @retval #CA_STATUS_OK  Successful
136  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
137  * @retval #CA_STATUS_FAILED Operation failed
138  */
139 CAResult_t CAUpdateCharacteristicsInGattServer(const char *charValue,
140                                                uint32_t charValueLen);
141
142 /**
143  * @brief  Used to start CAStartBleGattClientThread for initializing Gatt Client
144  *
145  * @return #CA_STATUS_OK or Appropriate error code
146  * @retval #CA_STATUS_OK  Successful
147  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
148  * @retval #CA_STATUS_FAILED Operation failed
149  */
150 CAResult_t CAStartBLEGattClient();
151
152 /**
153  * @brief  Used to stop Gatt Client gracefully in turn it will call CATerminateBLEGattClient
154  *         function.
155  * @return #CA_STATUS_OK or Appropriate error code
156  * @retval #CA_STATUS_OK  Successful
157  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
158  * @retval #CA_STATUS_FAILED Operation failed
159  */
160 void CAStopBLEGattClient();
161
162 /**
163  * @brief  Used to unset all the callbacks and stop service discovery
164  * @return NONE
165  */
166 void CATerminateBLEGattClient();
167
168 /**
169  * @brief  Sets the value of characteristic and update the value to GATTServer(unicast).
170  *
171  * @param  remoteAddress [IN] The address of the remote device
172  * @param  data          [IN] The value of characteristic (byte array)
173  * @param  dataLen       [IN] The length of value
174  * @param  type          [IN] Type of the transfer(#CALETransferType_t)
175  * @param  position      [IN] The unique index of each ble server. Used for multicast feature.
176  *
177  * @return #CA_STATUS_OK or Appropriate error code
178  * @retval #CA_STATUS_OK  Successful
179  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
180  * @retval #CA_STATUS_FAILED Operation failed
181  */
182 CAResult_t  CAUpdateCharacteristicsToGattServer(const char *remoteAddress, const char  *data,
183                                                 const int32_t dataLen, CALETransferType_t type,
184                                                 const int32_t position);
185
186 /**
187  * @brief  Sets the value of characteristic and update the value to all registered
188  *         GATTServer -> Multicast
189  * @param  data     [IN] The value of characteristic (byte array)
190  * @param  dataLen  [IN] The length of value
191  *
192  * @return #CA_STATUS_OK or Appropriate error code
193  * @retval #CA_STATUS_OK  Successful
194  * @retval #CA_STATUS_INVALID_PARAM  Invalid input argumets
195  * @retval #CA_STATUS_FAILED Operation failed
196  */
197 CAResult_t  CAUpdateCharacteristicsToAllGattServers(const char  *data, int32_t dataLen);
198
199 /**
200  * @brief  Used to store upper layer callback locally which will be used to send the data to
201  *         application
202  * @param  callback  [IN] Callback function to pass the data to CA layer.
203  *
204  * @return  void
205  */
206 void CASetBLEReqRespClientCallback(CABLEClientDataReceivedCallback callback);
207
208 #ifdef __cplusplus
209 }
210 #endif
211
212 #endif //_CA_LE_INTERFACE_SINGLETHREAD_H_
213