1 /* ****************************************************************
3 * Copyright 2014 Samsung Electronics All Rights Reserved.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 ******************************************************************/
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.
31 #ifndef TZ_BLE_CLIENT_H_
32 #define TZ_BLE_CLIENT_H_
34 #include <bluetooth.h>
35 #include <bluetooth_type.h>
36 #include <bluetooth_type_internal.h>
37 #include <bluetooth_internal.h>
40 #include "caadapterutils.h"
42 #include "caadapterinterface.h"
44 #include "cathreadpool.h"
45 #include "caleinterface.h"
46 #include "oic_malloc.h"
50 * This callback is called when a characteristic value is changed by the GATT server.
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.
57 void CALEGattCharacteristicChangedCb(bt_gatt_h characteristic,
58 char *value, int valueLen, void *userData);
60 * This callback will be called when the client write request is completed.
62 * @param[in] result Result of write value.
63 * @param[in] reqHandle The request GATT handle.
64 * @param[in] userData User context
66 void CALEGattCharacteristicWriteCb(int result, bt_gatt_h reqHandle, void *userData);
69 * This is the callback which will be called when LE advertisement is found.
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
75 void CALEAdapterScanResultCb(int result, bt_adapter_le_device_scan_result_info_s *scanInfo,
79 * This thread will be used to Start the timer for scanning.
81 * @param[in] data Currently it will be NULL(no parameter)
83 void CAStartTimerThread(void *data);
86 * Used to initialize all required mutex variable for Gatt Client implementation.
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.
93 CAResult_t CAInitGattClientMutexVariables();
96 * Used to terminate all required mutex variable for Gatt Client implementation.
98 void CATerminateGattClientMutexVariables();
101 * Used to register required callbacks to LE platform(connection, discovery, etc).
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.
108 CAResult_t CALEGattSetCallbacks();
111 * Used to unset all the registerd callbacks to BLE platform.
113 void CALEGattUnSetCallbacks();
116 * Used to start LE Scanning.
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.
123 CAResult_t CALEGattStartDeviceScanning();
126 * Used to stop LE discovery for BLE devices.
128 void CALEGattStopDeviceScanning();
131 * This is the thread which will be used for making gatt connection with
133 * @param[in] remoteAddress MAC address of remote device to connect.
135 void CAGattConnectThread (void *remoteAddress);
138 * Used to do connection with remote device.
140 * @param[in] remoteAddress Remote address inwhich we wants to connect with.
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.
147 CAResult_t CALEGattConnect(const char *remoteAddress);
150 * Used to do disconnection with remote device.
151 * @param[in] remoteAddress Remote address inwhich we wants to disconnect with.
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.
158 CAResult_t CALEGattDisConnect(const char *remoteAddress);
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.
166 void CADiscoverLEServicesThread (void *remoteAddress);
169 * Used to discover the services and characteristics that is advertised by Gatt
172 * @param[in] remoteAddress MAC address of remote device in which we want to discover
173 * the services and characteristics.
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.
180 CAResult_t CALEGattDiscoverServices(const char *remoteAddress);
181 #endif /* TZ_BLE_CLIENT_H_ */