Apply tizen 3.0 based product patchsets 69/147969/1
authorDoHyun Pyun <dh79.pyun@samsung.com>
Wed, 6 Sep 2017 06:50:46 +0000 (15:50 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Wed, 6 Sep 2017 06:52:01 +0000 (15:52 +0900)
----------------------------------------------------
commit 5af925889097dd358930615e9035a36fd5e26c14
Author: DoHyun Pyun <dh79.pyun@samsung.com>
Date:   Thu Feb 23 08:37:46 2017 +0900

    Fix the build error for wearable and IVI profile
----------------------------------------------------

Change-Id: I971d222892de723806f342e52074220398984333
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
CMakeLists.txt
ag-agent/bluetooth-ag-agent.c [changed mode: 0755->0644]
ag-agent/bluetooth-ag-agent.h
ag-agent/bluetooth-ag-manager.c [changed mode: 0755->0644]
bt-ipsp/bt-ipsp.c
bt-ipsp/bt-ipsp.h
packaging/bluetooth-agent.spec
pb-agent/bluetooth_pb_agent.c
pb-agent/bluetooth_pb_vcard.h

index 86d8c7a..3da6309 100644 (file)
@@ -7,4 +7,5 @@ ADD_SUBDIRECTORY(hf-agent)
 ADD_SUBDIRECTORY(map-agent)
 ADD_SUBDIRECTORY(pb-agent)
 ADD_SUBDIRECTORY(ag-agent)
-ADD_SUBDIRECTORY(bt-ipsp)
\ No newline at end of file
+ADD_SUBDIRECTORY(bt-ipsp)
+ADD_SUBDIRECTORY(hid-agent)
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index d6f9bbb..2d7e7fc
@@ -1978,6 +1978,9 @@ static void __bt_ag_close_sco(bt_ag_info_t *hs)
 
        if (hs->sco_id)
                __bt_ag_agent_remove_watch(&hs->sco_id);
+
+       if (hs->sco_incoming_id)
+               __bt_ag_agent_remove_watch(&hs->sco_incoming_id);
 }
 
 static gboolean __bt_ag_sco_server_conn_cb(GIOChannel *chan,
@@ -1994,6 +1997,9 @@ static gboolean __bt_ag_sco_server_conn_cb(GIOChannel *chan,
                if (ag_info->sco_id)
                        __bt_ag_agent_remove_watch(&ag_info->sco_id);
 
+               if (ag_info->sco_incoming_id)
+                       __bt_ag_agent_remove_watch(&ag_info->sco_incoming_id);
+
                if (ag_info->watch_id)
                        _bt_ag_set_headset_state(ag_info, HEADSET_STATE_CONNECTED);
                return FALSE;
@@ -2055,7 +2061,7 @@ static gboolean __bt_ag_sco_server_cb(GIOChannel *chan,
        }
 
        ag_info->sco = sco_io;
-       ag_info->sco_id = g_io_add_watch(sco_io, G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+       ag_info->sco_incoming_id = g_io_add_watch(sco_io, G_IO_HUP | G_IO_ERR | G_IO_NVAL,
                                        __bt_ag_sco_server_conn_cb, ag_info);
 
        if (remote_dev_path)
@@ -2544,6 +2550,7 @@ static gboolean __bt_ag_event_handler(GIOChannel *channel,
        size_t available_buffer;
        int fd;
        bt_ag_info_t *bt_ag_info = (bt_ag_info_t *)user_data;
+       int err_return = 0;
 
 
        if (cond & G_IO_NVAL)
@@ -2571,7 +2578,7 @@ static gboolean __bt_ag_event_handler(GIOChannel *channel,
                goto failed;
        }
 
-       memcpy(&slconn->buffer[slconn->start], event_buf, len);
+       memcpy(&slconn->buffer[slconn->start + slconn->length], event_buf, len);
        slconn->length += len;
 
        slconn->buffer[slconn->start + slconn->length] = '\0';
@@ -2582,8 +2589,10 @@ static gboolean __bt_ag_event_handler(GIOChannel *channel,
                off_t cmd_len;
 
                get_cr = strchr(&slconn->buffer[slconn->start], '\r');
-               if (!get_cr)
+               if (!get_cr) {
+                       ERR("Broken AT command received, break");
                        break;
+               }
 
                cmd_len = 1 + (off_t) get_cr -
                        (off_t) &slconn->buffer[slconn->start];
@@ -2598,22 +2607,31 @@ static gboolean __bt_ag_event_handler(GIOChannel *channel,
                        err = 0;
                }
 
-               if (err == -EINVAL) {
-                       ERR("Unrecognized command: %s",
-                               &slconn->buffer[slconn->start]);
-                       err = _bt_ag_send_response(bt_ag_info,
-                                       HFP_STATE_MNGR_ERR_NOT_SUPPORTED);
-                       if (err < 0)
-                               goto failed;
-               } else if (err < 0)
+               if (err < 0) {
+                       switch (err) {
+                       case -EINVAL:
+                               err_return = HFP_STATE_MNGR_ERR_NOT_SUPPORTED;
+                               break;
+                       case -EACCES:
+                               err_return = HFP_STATE_MNGR_ERR_NOT_ALLOWED;
+                               break;
+                       default:
+                               err_return = HFP_STATE_MNGR_ERR_NOT_SUPPORTED;
+                               break;
+                       }
                        ERR("Error handling command %s: %s (%d)",
                                                &slconn->buffer[slconn->start],
                                                strerror(-err), -err);
+                       err = _bt_ag_send_response(bt_ag_info,
+                                       err_return);
+                       if (err < 0)
+                               goto failed;
+               }
 
                slconn->start += cmd_len;
                slconn->length -= cmd_len;
 
-               if (!slconn->length)
+               if (slconn->length <= 0)
                        slconn->start = 0;
        }
        return TRUE;
@@ -2824,7 +2842,6 @@ static gboolean __bt_ag_agent_connection_release(bt_ag_info_t *hs)
        if (hs->sco) {
                __bt_ag_close_sco(hs);
                _bt_ag_set_headset_state(hs, HEADSET_STATE_CONNECTED);
-               hs->sco = NULL;
        }
        __bt_ag_agent_remove_watch(&hs->watch_id);
 
@@ -3118,6 +3135,9 @@ static void __bt_ag_agent_method(GDBusConnection *connection,
 
                        g_free(codec);
                        g_free(nrec);
+               } else {
+                       ret = BT_HFP_AGENT_ERROR_NOT_CONNECTED;
+                       goto fail;
                }
        } else if (g_strcmp0(method_name, "Disconnect") == 0) {
                char hdset_address[18] = { 0, };
@@ -4258,7 +4278,6 @@ static void __bt_ag_agent_media_filter_cb(GDBusConnection *connection,
                                }
                        }
                        g_variant_iter_free(iter);
-                       g_variant_unref(dict_param);
                }
        } else if (strcasecmp(signal_name, "ProfileStateChanged") == 0) {
                char *profile_uuid = NULL;
index 7373db2..1a6dd35 100644 (file)
@@ -457,6 +457,7 @@ typedef struct {
        GIOChannel *rfcomm;
        GIOChannel *sco;
        guint sco_id;
+       guint sco_incoming_id;
        guint codec;
 
        gboolean auto_dc;
old mode 100755 (executable)
new mode 100644 (file)
index d909ea0..5ba4477
@@ -1226,11 +1226,11 @@ void _bt_hfp_terminate_call_request(void *t_device)
        } else if ((t_alert = __bt_hfp_get_call_with_status(
                                HFP_CALL_STATUS_CREATE))
                != NULL) {
-               t_error = __bt_bt_hfp_reject_call(t_alert);
+               t_error = __bt_hfp_release_call(t_alert);
        } else if ((t_alert = __bt_hfp_get_call_with_status(
                                HFP_CALL_STATUS_MO_ALERTING))
                != NULL) {
-               t_error = __bt_bt_hfp_reject_call(t_alert);
+               t_error = __bt_hfp_release_call(t_alert);
        } else if       ((t_alert =  __bt_hfp_get_call_with_status(
                        HFP_CALL_STATUS_COMING)) != NULL) {
                t_error = __bt_bt_hfp_reject_call(t_alert);
index abf6b39..246e36d 100644 (file)
@@ -212,7 +212,7 @@ gboolean __bt_ipsp_get_network_ipv6_address(const char *if_name, mobile_ap_ipv6_
                return FALSE;
        }
 
-       while (fscanf(fd, "%4s%4s%4s%4s%4s%4s%4s%4s %2x %d %d %2x %20s",
+       while (fscanf(fd, "%4s%4s%4s%4s%4s%4s%4s%4s %2x %d %d %2x %19s",
                                addr[0], addr[1], addr[2], addr[3],
                                addr[4], addr[5], addr[6], addr[7],
                                &if_idx, &prefix_len, &scope, &if_flag, name) != EOF) {
index c783c54..81a35d2 100644 (file)
@@ -92,4 +92,8 @@ extern "C" {
 #define IP_CMD         "/usr/sbin/ip"
 
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
index 73efaff..a6c56a6 100644 (file)
@@ -157,8 +157,10 @@ ln -sf %{_libdir}/systemd/system/bluetooth-pbap-agent.service %{_sysconfdir}/sys
 %license LICENSE
 %{_bindir}/bluetooth-hf-agent
 %{_bindir}/bluetooth-ag-agent
+%{_bindir}/bluetooth-hid-agent
 %{_datadir}/dbus-1/system-services/org.bluez.hf_agent.service
 %{_datadir}/dbus-1/system-services/org.bluez.ag_agent.service
+%{_datadir}/dbus-1/system-services/org.bluez.hid_agent.service
 %{_sysconfdir}/dbus-1/system.d/bluetooth-ag-agent.conf
 %{_sysconfdir}/dbus-1/system.d/bluetooth-hf-agent.conf
 %exclude %{_libdir}/systemd/system/bluetooth-map-agent.service
index 134b4d4..e132ee7 100644 (file)
@@ -478,7 +478,7 @@ static GVariant *__bt_pb_get_phonebook(PbAgentData *agent, const char *name,
        FN_START;
        GVariant *phonebook;
        PhoneBookType pb_type = TELECOM_NONE;
-       GVariantBuilder *vcards = g_variant_builder_new(G_VARIANT_TYPE("as"));
+       GVariantBuilder *vcards;
 
        INFO("name: %s filter: %lld format: %d max_list_count: %d list_start_offset: %d\n",
                        name, filter, format, max_list_count, list_start_offset);
@@ -493,6 +493,8 @@ static GVariant *__bt_pb_get_phonebook(PbAgentData *agent, const char *name,
                return NULL;
        }
 
+       vcards = g_variant_builder_new(G_VARIANT_TYPE("as"));
+
        if (max_list_count > 0) {
                __bluetooth_pb_get_vcards(agent, pb_type, filter, format,
                                max_list_count, list_start_offset, vcards);
@@ -564,7 +566,7 @@ static GVariant *__bt_pb_get_phonebook_list(PbAgentData *agent,
        GVariant *phonebook_list;
        PhoneBookType pb_type = TELECOM_NONE;
 
-       GVariantBuilder *builder = g_variant_builder_new(G_VARIANT_TYPE("a(ssu)"));
+       GVariantBuilder *builder;
 
        DBG_SECURE("name: %s\n", name);
 
@@ -578,6 +580,8 @@ static GVariant *__bt_pb_get_phonebook_list(PbAgentData *agent,
                return NULL;
        }
 
+       builder = g_variant_builder_new(G_VARIANT_TYPE("a(ssu)"));
+
        __bluetooth_pb_get_list(agent, pb_type, builder);
 
        INFO("pb_type[%d] / number of missed_call[%d]", pb_type,
@@ -593,8 +597,7 @@ static GVariant *__bt_pb_get_phonebook_list(PbAgentData *agent,
                phonebook_list = g_variant_new("(a(ssu)u)", builder, 0);
        }
 
-       if (builder)
-               g_variant_builder_unref(builder);
+       g_variant_builder_unref(builder);
 
        FN_END;
        return phonebook_list;
@@ -732,7 +735,7 @@ static GVariant *__bt_pb_get_phonebook_entries_at(PbAgentData *agent,
        FN_START;
        GVariant *phonebook_entries;
        PhoneBookType pb_type = TELECOM_NONE;
-       GVariantBuilder *builder = g_variant_builder_new(G_VARIANT_TYPE("a(ssu)"));
+       GVariantBuilder *builder;
 
        DBG("command: %s, start_index: %d, end_index: %d\n",
                        command, start_index, end_index);
@@ -747,12 +750,13 @@ static GVariant *__bt_pb_get_phonebook_entries_at(PbAgentData *agent,
                return NULL;
        }
 
+       builder = g_variant_builder_new(G_VARIANT_TYPE("a(ssu)"));
+
        __bluetooth_pb_get_list_number(agent, pb_type,
                        start_index, end_index, builder);
 
        phonebook_entries = g_variant_new("(a(ssu))", builder);
-       if (builder)
-               g_variant_builder_unref(builder);
+       g_variant_builder_unref(builder);
 
        FN_END;
        return phonebook_entries;
@@ -765,7 +769,7 @@ static GVariant *__bt_pb_get_phonebook_entries_find_at(PbAgentData *agent,
        FN_START;
        GVariant *phonebook_entries;
        PhoneBookType pb_type = TELECOM_NONE;
-       GVariantBuilder *builder = g_variant_builder_new(G_VARIANT_TYPE("a(ssu)"));
+       GVariantBuilder *builder;
 
        DBG("command: %s, find text: %s\n", command, find_text);
 
@@ -779,12 +783,13 @@ static GVariant *__bt_pb_get_phonebook_entries_find_at(PbAgentData *agent,
                return NULL;
        }
 
+       builder = g_variant_builder_new(G_VARIANT_TYPE("a(ssu)"));
+
        __bluetooth_pb_get_list_name(agent, pb_type, find_text, builder);
 
        phonebook_entries = g_variant_new("(a(ssu))", builder);
 
-       if (builder)
-               g_variant_builder_unref(builder);
+       g_variant_builder_unref(builder);
 
        FN_END;
        return phonebook_entries;
@@ -1176,6 +1181,13 @@ next:
 
        contacts_list_destroy(recordList, true);
 
+       if (is_first_condition) {
+               ERR("ADDRESSBOOK NOT FOUND");
+               contacts_filter_destroy(filter);
+               contacts_query_destroy(query);
+               return NULL;
+       }
+
        status = contacts_query_set_filter(query, filter);
        if (status != CONTACTS_ERROR_NONE)
                ERR("Could not Apply Filter");
@@ -1463,6 +1475,10 @@ static void __bluetooth_pb_get_vcards(PbAgentData *agent, PhoneBookType pb_type,
        }
        INFO("Limit is = %d and offset is =%d\n", limit, offset);
 
+       if (query == NULL) {
+               ERR("Query is NULL");
+               return;
+       }
        /* When limit is passed as ZERO to contacts_db_get_records_with_query
         * API then this API will provide all available contacts in its database
         * (unrestricted). Now consider a case when client requests for
@@ -1549,6 +1565,11 @@ static void __bluetooth_pb_get_contact_list(PbAgentData *agent,
                g_free(name);
        }
 
+       if (query == NULL) {
+               ERR("Query is NULL");
+               return;
+       }
+
        status = contacts_db_get_records_with_query(query, -1, -1,
                                                                &record_list);
 
@@ -1865,7 +1886,7 @@ static void __bluetooth_pb_get_list_number(PbAgentData *agent,
        DBG("type = %d", pb_type);
        switch (pb_type) {
        case TELECOM_PB:
-               query = __bluetooth_pb_query_person_number();
+               query = __bluetooth_pb_query_person(PBAP_ADDRESSBOOK_PHONE);
                __bluetooth_pb_get_contact_list_number(agent, query,
                                start_index, end_index, builder);
                break;
@@ -2100,7 +2121,7 @@ static void __bluetooth_pb_contact_changed(const gchar *view_uri,
 
        DBG("Received contact changed cb");
 
-       g_dbus_connection_emit_signal(conn, "org.bluez.pb_agent",
+       g_dbus_connection_emit_signal(conn, NULL,
                                "/org/bluez/pb_agent", "org.bluez.PbAgent",
                                "clear", NULL, NULL);
 
@@ -2361,7 +2382,7 @@ int main(void)
        if (contacts_disconnect() != CONTACTS_ERROR_NONE)
                ERR("contacts_disconnect failed \n");
 
-       g_dbus_connection_emit_signal(pb_dbus_conn, "org.bluez.pb_agent",
+       g_dbus_connection_emit_signal(pb_dbus_conn, NULL,
                                "/org/bluez/pb_agent", "org.bluez.PbAgent",
                                "clear", NULL, NULL);
 
index 6e1b644..97fb014 100644 (file)
@@ -26,7 +26,7 @@
 
 #include <glib.h>
 
-#define SIM_ADDRESSBOOK_PREFIX "http://tizen.samsung.com/addressbook/sim"
+#define SIM_ADDRESSBOOK_PREFIX "http://tizen.org/addressbook/sim"
 
 typedef enum {
        PBAP_ADDRESSBOOK_PHONE,