/* Forward declarations */
oal_status_t convert_to_oal_status(bt_status_t status);
static gboolean retry_enable_adapter(gpointer data);
+#ifdef TIZEN_BT_HAL
+static gboolean retry_enable_le(gpointer data);
+#endif
oal_status_t oal_mgr_init_internal(void);
extern void cb_device_trust_state_changed(bt_bdaddr_t *remote_bd_addr, bt_device_trust_state_t trusted);
#ifdef TIZEN_BT_HAL
extern void cb_socket_conn_authorize_request(bt_bdaddr_t *remote_bd_addr, bt_uuid_t *uuid);
+static void cb_ble_state_change(bt_state_t status);
#endif
static bt_callbacks_t callbacks = {
cb_device_trust_state_changed,
#ifdef TIZEN_BT_HAL
cb_socket_conn_authorize_request,
+ cb_ble_state_change,
#endif
};
return OAL_STATUS_SUCCESS;
}
-oal_status_t adapter_start_inquiry(void)
+oal_status_t le_enable(void)
+{
+ int ret = BT_STATUS_SUCCESS;
+
+ API_TRACE();
+ CHECK_OAL_INITIALIZED();
+
+#ifdef TIZEN_BT_HAL
+ if (OAL_STATUS_SUCCESS != hw_is_module_ready()) {
+ g_timeout_add(200, retry_enable_le, NULL);
+ return OAL_STATUS_PENDING;
+ }
+
+ ret = blued_api->le_enable();
+
+ if (ret != BT_STATUS_SUCCESS) {
+ BT_ERR("Enable failed: [%s]", status2string(ret));
+ return convert_to_oal_status(ret);
+ }
+#else
+ BT_INFO("Not Supported");
+ ret = OAL_STATUS_NOT_SUPPORT;
+#endif
+
+ return ret;
+}
+
+oal_status_t le_disable(void)
+{
+ int ret;
+
+ API_TRACE();
+
+ CHECK_OAL_INITIALIZED();
+
+#ifdef TIZEN_BT_HAL
+ ret = blued_api->le_disable();
+
+ if (ret != BT_STATUS_SUCCESS) {
+ BT_ERR("Disable failed: [%s]", status2string(ret));
+ return convert_to_oal_status(ret);
+ }
+#else
+ BT_INFO("Not Supported");
+ ret = OAL_STATUS_NOT_SUPPORT;
+#endif
+ return ret;
+}
+
+oal_status_t adapter_start_custom_inquiry(discovery_type_t disc_type)
+{
+ int ret;
+
+ API_TRACE();
+
+ CHECK_OAL_INITIALIZED();
+ BT_INFO("Custom Discovery Type [0x%x]", disc_type);
+
+#ifdef TIZEN_BT_HAL
+ ret = blued_api->start_custom_discovery(disc_type);
+ if (ret != BT_STATUS_SUCCESS) {
+ BT_ERR("start_custom_discovery failed: [%s]", status2string(ret));
+ return convert_to_oal_status(ret);
+ }
+#else
+ BT_INFO("Not Supported");
+ ret = OAL_STATUS_NOT_SUPPORT;
+#endif
+ return ret;
+}
+
+oal_status_t adapter_reset(void)
+{
+ int ret;
+
+ API_TRACE();
+
+ CHECK_OAL_INITIALIZED();
+ BT_INFO("Adapter Reset");
+
+#ifdef TIZEN_BT_HAL
+ ret = blued_api->reset();
+ if (ret != BT_STATUS_SUCCESS) {
+ BT_ERR("Adapter Reset failed: [%s]", status2string(ret));
+ return convert_to_oal_status(ret);
+ }
+#else
+ BT_INFO("Not Supported");
+ ret = OAL_STATUS_NOT_SUPPORT;
+#endif
+ return ret;
+}
+
+oal_status_t adapter_start_inquiry(unsigned short duration)
{
int ret;
send_event(event, NULL, 0);
}
+#ifdef TIZEN_BT_HAL
+/* Callbacks from Stack */
+static void cb_ble_state_change(bt_state_t status)
+{
+ BT_DBG("+");
+ oal_event_t event;
+
+ event = (BT_STATE_ON == status)?OAL_EVENT_BLE_ENABLED:OAL_EVENT_BLE_DISABLED;
+
+ send_event(event, NULL, 0);
+}
+#endif
+
static gboolean retry_enable_adapter(gpointer data)
{
adapter_enable();
return FALSE;
}
+#ifdef TIZEN_BT_HAL
+static gboolean retry_enable_le(gpointer data)
+{
+ le_enable();
+ return FALSE;
+}
+#endif
oal_status_t adapter_get_properties(void)
{
int ret;
/* Application has requested this property SET/GET hence send EVENT */
send_event(OAL_EVENT_ADAPTER_PROPERTY_SERVICES,
- uuids_event, (num_uuid * sizeof(bt_uuid_t)));
+ uuids_event, (sizeof(event_adapter_services_t) + num_uuid * sizeof(bt_uuid_t)));
}
break;
}
memcpy(event_data->devices[j].addr, bonded_addr_list[j].address, 6);
send_event(OAL_EVENT_ADAPTER_BONDED_DEVICE_LIST,
- event_data, (num_bonded * sizeof(bt_bdaddr_t)));
+ event_data, (sizeof(event_device_list_t) + num_bonded * sizeof(bt_bdaddr_t)));
break;
}
default: