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 provides APIs for BLE modules.
27 #ifndef _CA_LE_INTERFACE_SINGLETHREAD_H_
28 #define _CA_LE_INTERFACE_SINGLETHREAD_H_
33 #include "caleadapter_singlethread.h"
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.
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. */
53 * @brief Used to get the current state of the LE adapter.
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
60 CAResult_t CAGetLEAdapterState();
63 * @brief Used to initialize the network monitor layer of the LE adapter.
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
70 CAResult_t CALEInitializeNetworkMonitor();
73 * @brief Used to terminate the network monitor layer of the LE adapter.
76 void CALETerminateNetworkMonitor();
79 * @brief This function is used to set the callback for the Device state changes in the adapter.
81 * @param callback [IN] Callback to notify the Device state change to the CA Layer
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
88 CAResult_t CASetLEAdapterStateChangedCb(CALEDeviceStateChangedCallback callback);
91 * @brief Provides the BD address of the local adapter.
92 * @param local_address [OUT] pointer to the location where bd address needs to be stored.
94 * @return #CA_STATUS_OK or Appropriate error code
95 * @retval #CA_STATUS_OK Successful
96 * @retval #CA_STATUS_INVALID_PARAM Invalid input argumets
97 * @retval #CA_STATUS_FAILED Operation failed
99 CAResult_t CAGetLEAddress(char **local_address);
102 * @brief Used to start Gatt Server thread for service creation and advertise ble service.
104 * @return #CA_STATUS_OK or Appropriate error code
105 * @retval #CA_STATUS_OK Successful
106 * @retval #CA_STATUS_INVALID_PARAM Invalid input argumets
107 * @retval #CA_STATUS_FAILED Operation failed
109 CAResult_t CAStartBleGattServer();
112 * @brief Used to stop BLE Gatt Service.
114 * @return #CA_STATUS_OK or Appropriate error code
115 * @retval #CA_STATUS_OK Successful
116 * @retval #CA_STATUS_INVALID_PARAM Invalid input argumets
117 * @retval #CA_STATUS_FAILED Operation failed
119 CAResult_t CAStopBleGattServer();
122 * @brief Used to store upper layer callback locally which will be used to send the data to
124 * @param callback [IN] Callback function to pass the data to CA layer.
127 void CASetBLEReqRespServerCallback(CABLEServerDataReceivedCallback callback);
130 * @brief Used to update characteristics(Read/Write) value that we want to send to particular
131 * client. Both unicast and multicast will use the same api. In mulicast, we will be
132 * sending in loop to all clients.
134 * @param charValue [IN] Data that we want to send to client(unicast)/clients(multicast)
135 * @param charValueLen [IN] Length of the data.
137 * @return #CA_STATUS_OK or Appropriate error code
138 * @retval #CA_STATUS_OK Successful
139 * @retval #CA_STATUS_INVALID_PARAM Invalid input argumets
140 * @retval #CA_STATUS_FAILED Operation failed
142 CAResult_t CAUpdateCharacteristicsToAllGattClients(const char *charValue,
143 uint8_t charValueLen);
146 * @brief Used to start CAStartBleGattClientThread for initializing Gatt Client
148 * @return #CA_STATUS_OK or Appropriate error code
149 * @retval #CA_STATUS_OK Successful
150 * @retval #CA_STATUS_INVALID_PARAM Invalid input argumets
151 * @retval #CA_STATUS_FAILED Operation failed
153 CAResult_t CAStartBLEGattClient();
156 * @brief Used to stop Gatt Client gracefully in turn it will call CATerminateBLEGattClient
158 * @return #CA_STATUS_OK or Appropriate error code
159 * @retval #CA_STATUS_OK Successful
160 * @retval #CA_STATUS_INVALID_PARAM Invalid input argumets
161 * @retval #CA_STATUS_FAILED Operation failed
163 void CAStopBLEGattClient();
166 * @brief Used to unset all the callbacks and stop service discovery
169 void CATerminateBLEGattClient();
172 * @brief Sets the value of characteristic and update the value to GATTServer(unicast).
174 * @param remoteAddress [IN] The address of the remote device
175 * @param data [IN] The value of characteristic (byte array)
176 * @param dataLen [IN] The length of value
177 * @param type [IN] Type of the transfer(#CALETransferType_t)
178 * @param position [IN] The unique index of each ble server. Used for multicast feature.
180 * @return #CA_STATUS_OK or Appropriate error code
181 * @retval #CA_STATUS_OK Successful
182 * @retval #CA_STATUS_INVALID_PARAM Invalid input argumets
183 * @retval #CA_STATUS_FAILED Operation failed
185 CAResult_t CAUpdateCharacteristicsToGattServer(const char *remoteAddress, const char *data,
186 const uint32_t dataLen, CALETransferType_t type,
187 const int32_t position);
190 * @brief Sets the value of characteristic and update the value to all registered
191 * GATTServer -> Multicast
192 * @param data [IN] The value of characteristic (byte array)
193 * @param dataLen [IN] The length of value
195 * @return #CA_STATUS_OK or Appropriate error code
196 * @retval #CA_STATUS_OK Successful
197 * @retval #CA_STATUS_INVALID_PARAM Invalid input argumets
198 * @retval #CA_STATUS_FAILED Operation failed
200 CAResult_t CAUpdateCharacteristicsToAllGattServers(const char *data, uint32_t dataLen);
203 * @brief Used to store upper layer callback locally which will be used to send the data to
205 * @param callback [IN] Callback function to pass the data to CA layer.
209 void CASetBLEReqRespClientCallback(CABLEClientDataReceivedCallback callback);
215 #endif //_CA_LE_INTERFACE_SINGLETHREAD_H_