Imported Upstream version 1.1.1
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / bt_le_adapter / tizen / caleclient.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 the functionalities of GATT Client. Functionalities
25  * like LE device discovery, connecting to the LE device with OIC service,
26  * registering to the service and there characteristics, registering to the
27  * change in the charateristics, setting the value of the characteristcs
28  * for the request and response will be done here.
29  */
30
31 #ifndef TZ_BLE_CLIENT_H_
32 #define TZ_BLE_CLIENT_H_
33
34 #include <bluetooth.h>
35 #include <bluetooth_type.h>
36 #include <bluetooth_type_internal.h>
37 #include <bluetooth_internal.h>
38
39 #include "cacommon.h"
40 #include "caadapterutils.h"
41 #include "caleutil.h"
42 #include "caadapterinterface.h"
43 #include "logger.h"
44 #include "cathreadpool.h"
45 #include "caleinterface.h"
46 #include "oic_malloc.h"
47
48
49 /**
50  * This callback is called when a characteristic value is changed by the GATT server.
51  *
52  * @param[in]  characteristic The attribute handle of characteristic.
53  * @param[in]  value          Value of the characteristics of a service.
54  * @param[in]  valueLen       Length of data.
55  * @param[in]  userData       The user data passed from the request function.
56  */
57 void CALEGattCharacteristicChangedCb(bt_gatt_h characteristic,
58                                      char *value, int valueLen, void *userData);
59 /**
60  * This callback will be called when the client write request is completed.
61  *
62  * @param[in]  result    Result of write value.
63  * @param[in]  reqHandle The request GATT handle.
64  * @param[in]  userData  User context
65  */
66 void CALEGattCharacteristicWriteCb(int result, bt_gatt_h reqHandle, void *userData);
67
68 /**
69  * This is the callback which will be called when LE advertisement is found.
70  *
71  * @param[in]  result         The result of Scanning
72  * @param[in]  scanInfo       Remote Device information.
73  * @param[in]  userData       The user data passed from the request function
74  */
75 void CALEAdapterScanResultCb(int result, bt_adapter_le_device_scan_result_info_s *scanInfo,
76                              void *userData);
77
78 /**
79  * This thread will be used to Start the timer for scanning.
80  *
81  * @param[in] data Currently it will be NULL(no parameter)
82  */
83 void CAStartTimerThread(void *data);
84
85 /**
86  * Used to initialize all required mutex variable for Gatt Client implementation.
87  *
88  * @return ::CA_STATUS_OK or Appropriate error code.
89  * @retval ::CA_STATUS_OK  Successful.
90  * @retval ::CA_STATUS_INVALID_PARAM  Invalid input arguments.
91  * @retval ::CA_STATUS_FAILED Operation failed.
92  */
93 CAResult_t CAInitGattClientMutexVariables();
94
95 /**
96  * Used to terminate all required mutex variable for Gatt Client implementation.
97  */
98 void CATerminateGattClientMutexVariables();
99
100 /**
101  * Used to register required callbacks to LE platform(connection, discovery, etc).
102  *
103  * @return ::CA_STATUS_OK or Appropriate error code.
104  * @retval ::CA_STATUS_OK  Successful.
105  * @retval ::CA_STATUS_INVALID_PARAM  Invalid input arguments.
106  * @retval ::CA_STATUS_FAILED Operation failed.
107  */
108 CAResult_t CALEGattSetCallbacks();
109
110 /**
111  * Used to unset all the registerd callbacks to BLE platform.
112  */
113 void CALEGattUnSetCallbacks();
114
115 /**
116  * Used to start LE Scanning.
117  *
118  * @return ::CA_STATUS_OK or Appropriate error code.
119  * @retval ::CA_STATUS_OK  Successful.
120  * @retval ::CA_STATUS_INVALID_PARAM  Invalid input arguments.
121  * @retval ::CA_STATUS_FAILED Operation failed.
122  */
123 CAResult_t CALEGattStartDeviceScanning();
124
125 /**
126  * Used to stop LE discovery for BLE  devices.
127  */
128 void CALEGattStopDeviceScanning();
129
130 /**
131  * This is the thread  which will be used for making gatt connection with
132  * remote devices.
133  * @param[in] remoteAddress MAC address of remote device to connect.
134  */
135 void CAGattConnectThread (void *remoteAddress);
136
137 /**
138  * Used to do connection with remote device.
139  *
140  * @param[in] remoteAddress Remote address inwhich we wants to connect with.
141  *
142  * @return ::CA_STATUS_OK or Appropriate error code.
143  * @retval ::CA_STATUS_OK  Successful.
144  * @retval ::CA_STATUS_INVALID_PARAM  Invalid input arguments.
145  * @retval ::CA_STATUS_FAILED Operation failed.
146  */
147 CAResult_t CALEGattConnect(const char *remoteAddress);
148
149 /**
150  * Used to do disconnection with remote device.
151  * @param[in] remoteAddress Remote address inwhich we wants to disconnect with.
152  *
153  * @return ::CA_STATUS_OK or Appropriate error code.
154  * @retval ::CA_STATUS_OK  Successful.
155  * @retval ::CA_STATUS_INVALID_PARAM  Invalid input arguments.
156  * @retval ::CA_STATUS_FAILED Operation failed.
157  */
158 CAResult_t CALEGattDisConnect(const char *remoteAddress);
159
160 /**
161  * This is thread which will be spawned for discovering ble services. Once
162  * called discover api, then it will be terminated.
163  * @param[in] remoteAddress Mac address of the remote device in which we
164  *                           want to search services.
165  */
166 void CADiscoverLEServicesThread (void *remoteAddress);
167
168 /**
169  * Used to discover the services and characteristics that is advertised by Gatt
170  * Server.
171  *
172  * @param[in] remoteAddress MAC address of remote device in which we want to discover
173  *                      the services and characteristics.
174  *
175  * @return ::CA_STATUS_OK or Appropriate error code.
176  * @retval ::CA_STATUS_OK  Successful.
177  * @retval ::CA_STATUS_INVALID_PARAM  Invalid input arguments.
178  * @retval ::CA_STATUS_FAILED Operation failed.
179  */
180 CAResult_t CALEGattDiscoverServices(const char *remoteAddress);
181 #endif /* TZ_BLE_CLIENT_H_ */