2 * Open Adaptation Layer (OAL)
4 * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #ifndef _OAL_ADAPTER_MGR_H_
21 #define _OAL_ADAPTER_MGR_H_
24 #include <sys/types.h>
26 #include <oal-manager.h>
33 #define OAL_BT_ADDRESS_STRING_SIZE 18
37 * @brief Enable BT chip for usage.
39 * @remarks Other API can only be used after successful event. \n
41 * @details EVENT: OAL_EVENT_ADAPTER_ENABLED/OAL_EVENT_ADAPTER_DISABLED
43 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
44 * @retval #OAL_STATUS_SUCCESS Successful
46 * @pre OAL API must be initialized with oal_bt_init().
48 * @see adapter_disable()
50 oal_status_t adapter_enable(void);
54 * @brief Disable Adapter.
56 * @remarks Disables the BT stack and chip. After this, no OAL API is valid except "adapter_enable()"
58 * @details EVENT: OAL_EVENT_ADAPTER_DISABLED
60 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
61 * @retval #OAL_STATUS_SUCCESS Successful
63 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
65 * @see adapter_enable()
67 oal_status_t adapter_disable(void);
72 * @brief Enable LE Mode BT chip for usage.
74 * @remarks Other API can only be used after successful event. \n
76 * @details EVENT: OAL_EVENT_LE_ENABLED/OAL_EVENT_LE_DISABLED
78 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
79 * @retval #OAL_STATUS_SUCCESS Successful
81 * @pre OAL API must be initialized with oal_bt_init().
85 oal_status_t le_enable(void);
88 * @brief Disable LE Adapter.
90 * @remarks Disables the LE mode in the chip. After this, no OAL API is valid except "le_enable()"
92 * @details EVENT: OAL_EVENT_LE_DISABLED
94 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
95 * @retval #OAL_STATUS_SUCCESS Successful
97 * @pre LE Adapter must be enabled with le_enable() followed by OAL_EVENT_LE_ENABLED
101 oal_status_t le_disable(void);
105 * @brief init LE Adapter.
107 * @remarks Initilizes LE Advertisement slot list
109 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
110 * @retval #OAL_STATUS_SUCCESS Successful
112 * @pre LE Adapter must be enabled with le_enable() followed by OAL_EVENT_LE_ENABLED
116 oal_status_t le_init(void);
120 * @brief deinit LE Adapter.
122 * @remarks free LE Advertisement slot list
124 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
125 * @retval #OAL_STATUS_SUCCESS Successful
127 * @pre LE Adapter must be enabled with le_enable() followed by OAL_EVENT_LE_ENABLED and Initilized using le_init()
131 oal_status_t le_deinit(void);
136 * @brief Start Custom Discovery.
138 * @remarks Based on discovery type, it either starts BREDR, LE or DUAL discovery in Adapter
140 * @details For each device found either OAL_EVENT_ADAPTER_INQUIRY_RESULT_BREDR_ONLY
141 * or OAL_EVENT_ADAPTER_INQUIRY_RESULT_BLE will be generated.
143 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
144 * @retval #OAL_STATUS_SUCCESS Successful
146 * @see adapter_stop_inquiry()
147 * @see OAL_EVENT_ADAPTER_INQUIRY_STARTED
148 * @see OAL_EVENT_ADAPTER_INQUIRY_RESULT_BREDR_ONLY
149 * @see OAL_EVENT_ADAPTER_INQUIRY_RESULT_BLE
150 * @see OAL_EVENT_ADAPTER_INQUIRY_FINISHED
152 oal_status_t adapter_start_custom_inquiry(discovery_type_t disc_type);
156 * @brief Get Adapter Powered state.
158 * @remarks It is possible that stack is up but BT hardware interface is still not enabled.
159 * Application can call this API to explicitly check for Powered state
161 * @details If API returns OAL_STATUS_FAIL, then adapter can be considered Powered Down.
162 * If API returns OAL_STATUS_SUCCESS, then application needs to check powered status. It can be either
163 * true or false depending on real status of the BT hardware.
165 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
166 * @retval #OAL_STATUS_SUCCESS Successful
169 oal_status_t adapter_get_powered_status(gboolean *status);
172 * @brief Reset Adapter.
174 * @remarks Disables the BT stack and chip.
176 * @details EVENT: OAL_EVENT_ADAPTER_DISABLED
178 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
179 * @retval #OAL_STATUS_SUCCESS Successful
181 * @see adapter_enable()
183 oal_status_t adapter_reset(void);
186 * @brief Start device discovery
188 * @details For each device found either OAL_EVENT_ADAPTER_INQUIRY_RESULT_BREDR_ONLY
189 * or OAL_EVENT_ADAPTER_INQUIRY_RESULT_BLE will be generated.
191 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
192 * @retval #OAL_STATUS_SUCCESS Successful
194 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
196 * @see adapter_stop_inquiry()
197 * @see OAL_EVENT_ADAPTER_INQUIRY_STARTED
198 * @see OAL_EVENT_ADAPTER_INQUIRY_RESULT_BREDR_ONLY
199 * @see OAL_EVENT_ADAPTER_INQUIRY_RESULT_BLE
200 * @see OAL_EVENT_ADAPTER_INQUIRY_FINISHED
202 oal_status_t adapter_start_inquiry(unsigned short duration);
205 * @brief Stop device discovery
207 * @details OAL_EVENT_ADAPTER_INQUIRY_FINISHED will be generated by OAL
208 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
209 * @retval #OAL_STATUS_SUCCESS Successful
211 * @pre Discovery must be in progress by calling adapter_start_inquiry()
213 * @see adapter_start_inquiry()
214 * @see OAL_EVENT_ADAPTER_INQUIRY_FINISHED
216 oal_status_t adapter_stop_inquiry(void);
219 * @brief Get local adapter properties
221 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
222 * @retval #OAL_STATUS_SUCCESS Successful
224 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
226 oal_status_t adapter_get_properties(void);
229 * @brief Get local BT chip address
231 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
232 * @retval #OAL_STATUS_SUCCESS Successful
234 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
236 * @see OAL_EVENT_ADAPTER_PROPERTY_ADDRESS
238 oal_status_t adapter_get_address(void);
241 * @brief Get local BT version
243 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
244 * @retval #OAL_STATUS_SUCCESS Successful
246 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
248 * @see OAL_EVENT_ADAPTER_PROPERTY_VERSION
250 oal_status_t adapter_get_version(void);
253 * @brief Get local BT chip name
255 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
256 * @retval #OAL_STATUS_SUCCESS Successful
258 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
260 * @see OAL_EVENT_ADAPTER_PROPERTY_NAME
262 oal_status_t adapter_get_name(void);
265 * @brief Set local BT chip name
267 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
268 * @retval #OAL_STATUS_SUCCESS Successful
270 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
272 * @see OAL_EVENT_ADAPTER_PROPERTY_NAME
274 oal_status_t adapter_set_name(char * name);
277 * @brief Sets output variable to TRUE if adapter is discoverable & connectable.
279 oal_status_t adapter_is_discoverable(int *p_discoverable);
282 * @brief Sets output variable to TRUE if adapter is either discoverable or connectable.
284 oal_status_t adapter_is_connectable(int *p_connectable);
287 * @brief Sets output variable to value of current discoverable timeout.
289 oal_status_t adapter_get_discoverable_timeout(int *p_timeout);
292 * @brief Get List of UUIDs for services supported
294 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
295 * @retval #OAL_STATUS_SUCCESS Successful
297 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
299 * @see OAL_EVENT_ADAPTER_PROPERTY_SERVICES
301 oal_status_t adapter_get_service_uuids(void);
304 * @brief Get list of bonded devices
306 * @remarks A list of bt_address_t is provided in the event data.
308 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
309 * @retval #OAL_STATUS_SUCCESS Successful
311 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
313 * @see OAL_EVENT_ADAPTER_BONDED_DEVICE_LIST
315 oal_status_t adapter_get_bonded_devices(void);
318 * @brief Set connectability of adapter
320 * @remarks If enabled, after success event, device can connected from remote device.
321 * If disabled, after success event, device cannot be connected from remote device;
322 * neither can be found in discoveries.
324 * @details EVENT: OAL_EVENT_ADAPTER_MODE_CONNECTABLE/OAL_EVENT_ADAPTER_MODE_NON_CONNECTABLE
326 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
327 * @retval #OAL_STATUS_SUCCESS Successful
329 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
331 * @see adapter_is_connectable()
332 * @see OAL_EVENT_ADAPTER_MODE_CONNECTABLE
333 * @see OAL_EVENT_ADAPTER_MODE_NON_CONNECTABLE
335 oal_status_t adapter_set_connectable(int connectable);
338 * @brief Make adapter discoverable
340 * @remarks This device appears in inquiries and can be connected by remote device.
342 * @details If operation successful OAL_EVENT_ADAPTER_MODE_DISCOVERABLE is generated
344 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
345 * @retval #OAL_STATUS_SUCCESS Successful
347 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
349 * @see adapter_is_discoverable()
350 * @see OAL_EVENT_ADAPTER_MODE_DISCOVERABLE
352 oal_status_t adapter_set_discoverable(void);
355 * @brief Set discoverable timeout
357 * @param timeout Timeout in seconds after which device cannot be found in discoveries
359 * @details Event OAL_EVENT_ADAPTER_MODE_DISCOVERABLE_TIMEOUT will be generated.
361 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
362 * @retval #OAL_STATUS_SUCCESS Successful
364 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
366 * @see adapter_is_discoverable()
367 * @see OAL_EVENT_ADAPTER_MODE_DISCOVERABLE_TIMEOUT
369 oal_status_t adapter_set_discoverable_timeout(int timeout);
372 * @brief Set Advertising data on specific Instance ID
374 * @param instance_id Multi advertising slot ID initialized by stack
376 * @details Event OAL_EVENT_BLE_MULTI_ADVERTISING_SET_INST_DATA will be generated.
378 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
379 * @retval #OAL_STATUS_SUCCESS Successful
381 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
383 * @see gatts_multi_adv_set_inst_data()
385 oal_status_t adapter_ble_multi_adv_set_inst_data(int instance_id, oal_ble_multi_adv_param_setup_t *adv_param_setup);
388 * @brief Set Advertising parameters on specific Instance ID
390 * @param instance_id Multi advertising slot ID initialized by stack
392 * @details Event OAL_EVENT_BLE_MULTI_ADVERTISING_UPDATE event will be generated.
394 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
395 * @retval #OAL_STATUS_SUCCESS Successful
397 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
399 * @see gatts_multi_adv_set_inst_data()
401 oal_status_t adapter_ble_multi_adv_update(int Ins_id, int min_intv, int max_intv,
402 int adv_type, int chnl_map, int tx_power, int timeout_s);
405 * @brief Enable Multi Advertising on specific Instance ID
407 * @param instance_id Multi advertising slot ID initialized by stack
409 * @details Event OAL_EVENT_BLE_MULTI_ADVERTISING_ENABLE will be generated.
411 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
412 * @retval #OAL_STATUS_SUCCESS Successful
414 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
416 oal_status_t adapter_ble_multi_adv_enable(int instance_id);
419 * @brief Disable Multi Advertising on specific Instance ID
421 * @param instance_id Multi advertising slot ID initialized by stack
423 * @details Event OAL_EVENT_BLE_MULTI_ADVERTISING_DISABLE will be generated.
425 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
426 * @retval #OAL_STATUS_SUCCESS Successful
428 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
430 oal_status_t adapter_ble_multi_adv_disable(int instance_id);
433 * @brief Check if the advertising is enable
437 * @details check from the LE adv list if the Advertising is enabled on the server created.
439 * @return OAL_STATUS_SUCCESS on success, otherwise a non-zero error value.
440 * @retval #OAL_STATUS_SUCCESS Successful
442 * @pre Adapter must be enabled with adapter_enable() followed by OAL_EVENT_ADAPTER_ENABLED
444 oal_status_t is_advertising(void);
447 #endif /* __cplusplus */
448 #endif /*_OAL_ADAPTER_MGR_H_*/