Fix the 64bit build error
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / oal-device-mgr.c
index 33ee984..d0d9d35 100755 (executable)
@@ -52,7 +52,7 @@ oal_status_t device_query_attributes(bt_address_t *addr)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
        res = blued_api->get_remote_device_properties((bt_bdaddr_t *)addr);
        if (res != BT_STATUS_SUCCESS) {
@@ -72,7 +72,7 @@ oal_status_t device_query_services(bt_address_t * addr)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
        res = blued_api->get_remote_services((bt_bdaddr_t *)addr);
        if (res != BT_STATUS_SUCCESS) {
@@ -104,7 +104,7 @@ oal_status_t device_set_alias(bt_address_t * addr, char * alias)
        OAL_CHECK_PARAMETER(addr, return);
        OAL_CHECK_PARAMETER(alias, return);
 
-       API_TRACE("%s ->Alias: %s", bdt_bd2str(addr, &bdstr), alias);
+       API_TRACE("%s ->Alias: %s", bdt_bd2str(addr, &bdstr) + 12, alias);
 
        prop.type = BT_PROPERTY_REMOTE_FRIENDLY_NAME;
        prop.len = strlen(alias);
@@ -119,7 +119,7 @@ oal_status_t device_set_alias(bt_address_t * addr, char * alias)
        return OAL_STATUS_SUCCESS;
 }
 
-oal_status_t device_create_bond(bt_address_t *addr, connection_type_e transport)
+oal_status_t device_create_bond(bt_address_t *addr, oal_conn_type_e transport)
 {
        int res;
        bdstr_t bdstr;
@@ -128,7 +128,7 @@ oal_status_t device_create_bond(bt_address_t *addr, connection_type_e transport)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
        res = blued_api->create_bond((bt_bdaddr_t *)addr, transport);
        if (res != BT_STATUS_SUCCESS) {
@@ -148,7 +148,7 @@ oal_status_t device_destroy_bond(bt_address_t * addr)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
        res = blued_api->remove_bond((bt_bdaddr_t *)addr);
        if (res != BT_STATUS_SUCCESS) {
@@ -168,7 +168,7 @@ oal_status_t device_stop_bond(bt_address_t * addr)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
        res = blued_api->cancel_bond((bt_bdaddr_t *)addr);
        if (res != BT_STATUS_SUCCESS) {
@@ -179,6 +179,25 @@ oal_status_t device_stop_bond(bt_address_t * addr)
        return OAL_STATUS_SUCCESS;
 }
 
+oal_status_t device_get_ida(bt_address_t *device_address, bt_address_t *id_address)
+{
+       int res;
+
+       CHECK_OAL_INITIALIZED();
+
+       OAL_CHECK_PARAMETER(device_address, return);
+
+       API_TRACE();
+
+       res = blued_api->get_device_ida((bt_bdaddr_t*) device_address, (bt_bdaddr_t*) id_address);
+
+       if (res != BT_STATUS_SUCCESS)
+               BT_ERR("get_device_IDA failed: [%s]",status2string(res));
+
+       res = convert_to_oal_status(res);
+       return res;
+}
+
 oal_status_t device_accept_pin_request(bt_address_t * addr, const char * pin)
 {
        int res;
@@ -189,7 +208,7 @@ oal_status_t device_accept_pin_request(bt_address_t * addr, const char * pin)
        OAL_CHECK_PARAMETER(addr, return);
        OAL_CHECK_PARAMETER(pin, return);
 
-       API_TRACE("[%s] PIN: %s", bdt_bd2str(addr, &bdstr), pin);
+       API_TRACE("[%s] PIN: %s", bdt_bd2str(addr, &bdstr) + 12, pin);
 
        res = blued_api->pin_reply((bt_bdaddr_t *)addr, TRUE, strlen(pin), (bt_pin_code_t *)pin);
        if (res != BT_STATUS_SUCCESS) {
@@ -210,7 +229,7 @@ oal_status_t device_reject_pin_request(bt_address_t * addr)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
        res = blued_api->pin_reply((bt_bdaddr_t *)addr, FALSE, 0, NULL);
        if (res != BT_STATUS_SUCCESS) {
@@ -230,7 +249,7 @@ oal_status_t device_accept_passkey_entry(bt_address_t * addr, uint32_t passkey)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s] Passkey: %d", bdt_bd2str(addr, &bdstr), passkey);
+       API_TRACE("[%s] Passkey: %d", bdt_bd2str(addr, &bdstr) + 12, passkey);
 
        res = blued_api->ssp_reply((bt_bdaddr_t *)addr, BT_SSP_VARIANT_PASSKEY_ENTRY, TRUE, passkey);
        if (res != BT_STATUS_SUCCESS) {
@@ -252,7 +271,7 @@ oal_status_t device_reject_passkey_entry(bt_address_t * addr)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
        res = blued_api->ssp_reply((bt_bdaddr_t *)addr, BT_SSP_VARIANT_PASSKEY_ENTRY, FALSE, 0);
        if (res != BT_STATUS_SUCCESS) {
@@ -272,7 +291,7 @@ oal_status_t device_reply_passkey_confirmation(bt_address_t * addr, int accept)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s] accept: %d", bdt_bd2str(addr, &bdstr), accept);
+       API_TRACE("[%s] accept: %d", bdt_bd2str(addr, &bdstr) + 12, accept);
 
        res = blued_api->ssp_reply((bt_bdaddr_t *)addr, BT_SSP_VARIANT_PASSKEY_CONFIRMATION, accept, 0);
        if (res != BT_STATUS_SUCCESS) {
@@ -294,7 +313,7 @@ oal_status_t device_reply_ssp_consent(bt_address_t * addr, int accept)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s] %d", bdt_bd2str(addr, &bdstr), accept);
+       API_TRACE("[%s] %d", bdt_bd2str(addr, &bdstr) + 12, accept);
 
        res = blued_api->ssp_reply((bt_bdaddr_t *)addr, BT_SSP_VARIANT_CONSENT, accept, 0);
        if (res != BT_STATUS_SUCCESS) {
@@ -315,7 +334,7 @@ oal_status_t device_reply_auth_request(bt_address_t * addr, oal_service_t servic
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s] Accept: %d, always: %d, service_type: %d", bdt_bd2str(addr, &bdstr), accept, always, service_type);
+       API_TRACE("[%s] Accept: %d, always: %d, service_type: %d", bdt_bd2str(addr, &bdstr) + 12, accept, always, service_type);
 
        res = blued_api->authorize_response((bt_bdaddr_t *)addr, service_type, accept, always);
        if (res != BT_STATUS_SUCCESS) {
@@ -336,7 +355,7 @@ oal_status_t device_set_authorized(bt_address_t * addr, int authorize)
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s] %d", bdt_bd2str(addr, &bdstr), authorize);
+       API_TRACE("[%s] %d", bdt_bd2str(addr, &bdstr) + 12, authorize);
 
        res = blued_api->set_authorization((bt_bdaddr_t *)addr, authorize);
        if (res != BT_STATUS_SUCCESS) {
@@ -356,7 +375,7 @@ gboolean device_get_acl_conn_state(bt_address_t * addr)
        CHECK_OAL_INITIALIZED();
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
        res = blued_api->get_connection_state((bt_bdaddr_t *)addr);
        BT_ERR("get_connection_state returned: [%s]", res ? "TRUE" : "FALSE");
@@ -372,7 +391,7 @@ gboolean device_get_svc_conn_state(bt_address_t * addr, oal_service_t svc_id)
        CHECK_OAL_INITIALIZED();
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s] %d", bdt_bd2str(addr, &bdstr), svc_id);
+       API_TRACE("[%s] %d", bdt_bd2str(addr, &bdstr) + 12, svc_id);
 
 #ifdef TIZEN_BT_HAL
        res = blued_api->get_service_connection_state((bt_bdaddr_t *)addr, svc_id);
@@ -385,7 +404,43 @@ gboolean device_get_svc_conn_state(bt_address_t * addr, oal_service_t svc_id)
        return res;
 }
 
-oal_status_t device_set_osp_server(oal_osp_server_type_e type, int enable)
+oal_status_t device_register_osp_server(oal_osp_server_type_e type, char *uuid, char *path, int fd)
+{
+       int res;
+       uint32_t server_type;
+
+       CHECK_OAL_INITIALIZED();
+
+       API_TRACE("type: %d", type);
+
+#ifdef TIZEN_BT_HAL
+       switch (type) {
+       case OAL_OSP_SERVER_OBEX:
+               server_type = BT_OSP_SERVER_OBEX;
+               break;
+       case OAL_OSP_SERVER_RFCOMM:
+               server_type = BT_OSP_SERVER_RFCOMM;
+               break;
+       default:
+               BT_ERR("unknown type: %d", type);
+               return OAL_STATUS_INVALID_PARAM;
+       }
+
+       res = blued_api->register_agent_osp_server(server_type, uuid, path, fd);
+       if (res != BT_STATUS_SUCCESS) {
+               BT_ERR("register_agent_osp_server error: [%s]", status2string(res));
+               return convert_to_oal_status(res);
+       }
+
+       return OAL_STATUS_SUCCESS;
+#else
+       BT_ERR("Not supported");
+       res = OAL_STATUS_NOT_SUPPORT;
+       return res;
+#endif
+}
+
+oal_status_t device_unregister_osp_server(oal_osp_server_type_e type, char *uuid)
 {
        int res;
        uint32_t server_type;
@@ -399,14 +454,17 @@ oal_status_t device_set_osp_server(oal_osp_server_type_e type, int enable)
        case OAL_OSP_SERVER_OBEX:
                server_type = BT_OSP_SERVER_OBEX;
                break;
+       case OAL_OSP_SERVER_RFCOMM:
+               server_type = BT_OSP_SERVER_RFCOMM;
+               break;
        default:
                BT_ERR("unknown type: %d", type);
                return OAL_STATUS_INVALID_PARAM;
        }
 
-       res = blued_api->set_agent_osp_server(server_type, enable);
+       res = blued_api->unregister_agent_osp_server(server_type, uuid);
        if (res != BT_STATUS_SUCCESS) {
-               BT_ERR("set_agent_osp_server error: [%s]", status2string(res));
+               BT_ERR("unregister_agent_osp_server error: [%s]", status2string(res));
                return convert_to_oal_status(res);
        }
 
@@ -427,7 +485,7 @@ oal_status_t device_set_trust_profile(bt_address_t *addr, oal_trusted_profile_e
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
 #ifdef TIZEN_BT_HAL
        res = blued_api->set_trusted_profile((bt_bdaddr_t *)addr, profile, (trust ? 1 : 0));
@@ -453,7 +511,7 @@ oal_status_t device_get_trust_profile(bt_address_t *addr, oal_trusted_profile_e
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
 #ifdef TIZEN_BT_HAL
        res = blued_api->get_trusted_profile((bt_bdaddr_t *)addr, profile, trusted);
@@ -480,7 +538,7 @@ oal_status_t device_enable_rssi_monitoring(bt_address_t *addr, unsigned int link
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
 #ifdef TIZEN_BT_HAL
        res = blued_api->enable_rssi_monitoring((bt_bdaddr_t *)addr, link_type,
@@ -507,7 +565,7 @@ oal_status_t device_get_connected_link_rssi_strength(bt_address_t *addr, unsigne
 
        OAL_CHECK_PARAMETER(addr, return);
 
-       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr));
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
 
 #ifdef TIZEN_BT_HAL
        res = blued_api->get_connected_link_rssi_strength((bt_bdaddr_t *)addr, link_type);
@@ -547,6 +605,26 @@ oal_status_t device_enable_gap_auth_notifications(oal_gap_auth_type_e type, gboo
 #endif
 }
 
+oal_status_t device_disconnect(bt_address_t * addr)
+{
+       int res;
+       bdstr_t bdstr;
+
+       CHECK_OAL_INITIALIZED();
+
+       OAL_CHECK_PARAMETER(addr, return);
+
+       API_TRACE("[%s]", bdt_bd2str(addr, &bdstr) + 12);
+
+       res = blued_api->device_disconnect((bt_bdaddr_t *)addr);
+       if (res != BT_STATUS_SUCCESS) {
+               BT_ERR("device_disconnect error: [%s]", status2string(res));
+               return convert_to_oal_status(res);
+       }
+
+       return OAL_STATUS_SUCCESS;
+}
+
 void cb_device_properties(bt_status_t status, bt_bdaddr_t *bd_addr,
                int num_properties, bt_property_t *properties)
 {
@@ -557,7 +635,7 @@ void cb_device_properties(bt_status_t status, bt_bdaddr_t *bd_addr,
        gsize size = 0;
        bdstr_t bdstr;
 
-       BT_DBG("[%s]status: [%d] num properties [%d]", bdt_bd2str((bt_address_t*)bd_addr, &bdstr),
+       BT_DBG("[%s]status: [%d] num properties [%d]", bdt_bd2str((bt_address_t*)bd_addr, &bdstr) + 12,
                        status, num_properties);
 
        dev_info = g_new0(remote_device_t, 1);
@@ -591,13 +669,13 @@ void cb_device_properties(bt_status_t status, bt_bdaddr_t *bd_addr,
                case BT_PROPERTY_UUIDS: {
                        event_dev_services_t *services_info;
                        bt_uuid_t *uuids = (bt_uuid_t *) properties[0].val;
-                       BT_INFO("Properties len [%d] event structure size [%zu]", properties[0].len, sizeof(event_dev_services_t));
+                       BT_DBG("Properties len [%d] event structure size [%zu]", properties[0].len, sizeof(event_dev_services_t));
 
                        services_info = g_malloc(sizeof(event_dev_services_t) + properties[0].len);
                        services_info->address = dev_info->address;
                        memcpy(services_info->service_list, uuids, properties[0].len);
                        services_info->num = properties[0].len/sizeof(bt_uuid_t);
-                       BT_INFO("Number of UUID [%d]", services_info->num);
+                       BT_DBG("Number of UUID [%d]", services_info->num);
                        event = OAL_EVENT_DEVICE_SERVICES;
                        event_data = services_info;
                        size = sizeof(event_dev_services_t) + properties[0].len;
@@ -614,7 +692,7 @@ void cb_device_properties(bt_status_t status, bt_bdaddr_t *bd_addr,
                if (dev_info->type != DEV_TYPE_BREDR) {
                        int i;
 
-                       BT_INFO("BLE Device");
+                       BT_DBG("BLE Device");
                        /* BLE Single or DUAL mode found, so it should have Adv data */
                        dev_props_event->adv_len = adv_info.len;
                        if (dev_props_event->adv_len > 0)
@@ -622,12 +700,12 @@ void cb_device_properties(bt_status_t status, bt_bdaddr_t *bd_addr,
                                        adv_info.adv_data, adv_info.len);
 
                        for (i = 0; i < dev_props_event->adv_len; i++)
-                               BT_INFO("Adv Data[%d] = [0x%x]",
+                               BT_DBG("Adv Data[%d] = [0x%x]",
                                        i, dev_props_event->adv_data[i]);
                        memcpy(&dev_props_event->device_info,
                                dev_info, sizeof(remote_device_t));
                } else {
-                       BT_INFO("BREDR type Device");
+                       BT_DBG("BREDR type Device");
                        memcpy(&dev_props_event->device_info,
                                dev_info, sizeof(remote_device_t));
                }
@@ -684,14 +762,14 @@ void cb_device_acl_state_changed(bt_status_t status, bt_bdaddr_t *bd_addr,
                bt_acl_state_t state)
 {
        event_dev_conn_status_t * conn_status = g_new0(event_dev_conn_status_t, 1);
-       //bt_address_t * address = g_new0(bt_address_t, 1);
        oal_event_t event;
        gsize size = 0;
 
-       BT_DBG("ACL State:%d, state: %d", status, state);
-
        memcpy(conn_status->address.addr, bd_addr->address, 6);
 
+#ifdef TIZEN_BT_HAL
+       conn_status->status = status;
+#else
        if (BT_STATUS_SUCCESS != status) {
                /* At present only timeout will cause non-success status, later we can add more */
                conn_status->status = OAL_STATUS_CONN_TIMEOUT;
@@ -700,6 +778,10 @@ void cb_device_acl_state_changed(bt_status_t status, bt_bdaddr_t *bd_addr,
                conn_status->status = OAL_STATUS_SUCCESS;
 
        memcpy(conn_status->address.addr, bd_addr->address, 6);
+#endif
+
+       BT_INFO("[ACL] Status: %d, State: %d", conn_status->status, state);
+
        switch (state) {
        case BT_ACL_STATE_CONNECTED:
                event = OAL_EVENT_DEVICE_ACL_CONNECTED;
@@ -723,17 +805,12 @@ void cb_device_le_conn_state_changed(bt_status_t status, bt_bdaddr_t *bd_addr,
                bt_le_conn_state_t state)
 {
        event_dev_conn_status_t * conn_status = g_new0(event_dev_conn_status_t, 1);
-       //bt_address_t * address = g_new0(bt_address_t, 1);
        oal_event_t event;
        gsize size = 0;
 
-       BT_DBG("LE conn status:%d, state: %d", status, state);
        memcpy(conn_status->address.addr, bd_addr->address, 6);
-       if (BT_STATUS_SUCCESS != status)
-               /* At present only timeout will cause non-success status, later we can add more */
-               conn_status->status = OAL_STATUS_CONN_TIMEOUT;
-       else
-               conn_status->status = OAL_STATUS_SUCCESS;
+       conn_status->status = status;
+       BT_INFO("[LE ACL] Status: %d, State: %d", conn_status->status, state);
 
        switch (state) {
        case BT_LE_CONN_STATE_CONNECTED:
@@ -863,12 +940,15 @@ void cb_device_trust_state_changed(bt_bdaddr_t *bd_addr, bt_device_trust_state_t
 }
 
 #ifdef TIZEN_BT_HAL
-void cb_socket_conn_authorize_request(bt_bdaddr_t *bd_addr, bt_uuid_t *uuid)
+void cb_socket_conn_authorize_request(bt_bdaddr_t *bd_addr, bt_uuid_t *uuid, uint8_t *name, uint8_t *path, uint32_t fd)
 {
        event_socket_authorize_req_t *auth_req = g_new0(event_socket_authorize_req_t, 1);
 
        memcpy(auth_req->address.addr, bd_addr->address, 6);
        memcpy(auth_req->uuid.uuid, uuid->uu, 16);
+       memcpy(auth_req->name, name, sizeof(auth_req->name) - 1);
+       memcpy(auth_req->path, path, sizeof(auth_req->path) - 1);
+       auth_req->fd = fd;
 
        send_event_bda_trace(OAL_EVENT_SOCKET_AUTHORIZE_REQUEST, auth_req, sizeof(event_socket_authorize_req_t), (bt_address_t*)bd_addr);
 }
@@ -933,4 +1013,21 @@ void cb_raw_rssi_received(bt_bdaddr_t *bd_addr, int32_t link_type, int32_t rssi)
                        ev, sizeof(event_dev_rssi_info_t), (bt_address_t*)bd_addr);
        BT_DBG("-");
 }
+
+void cb_dbfw_plus_info_received(unsigned char *data, uint32_t length, uint8_t event_code)
+{
+       event_dev_dbfw_plus_info_t *dbfw_info;
+       int len = (length > 512)?512:length;
+
+       ret_if(data == NULL || length == 0);
+
+       dbfw_info = g_new0(event_dev_dbfw_plus_info_t, 1);
+       dbfw_info->event_code = event_code;
+       memcpy(dbfw_info->data, data, len);
+       dbfw_info->length = len;
+
+       send_event(OAL_EVENT_DEVICE_DBFW_PLUS_INFO,
+               dbfw_info, sizeof(event_dev_dbfw_plus_info_t));
+}
+
 #endif