Handle GATT operations for OTP
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-event-sender.c
old mode 100755 (executable)
new mode 100644 (file)
index 6f8656a..8ba8847
@@ -27,7 +27,7 @@
 static GDBusConnection *event_conn;
 static GDBusConnection *hf_local_term_event_conn;
 
-#ifdef HPS_FEATURE
+#ifdef TIZEN_FEATURE_BT_HPS
 int _bt_send_to_hps(void)
 {
        gboolean ret = FALSE;
@@ -58,7 +58,6 @@ int _bt_send_to_hps(void)
 
 int _bt_send_event(int event_type, int event, GVariant *param)
 {
-       BT_DBG("+");
        char *path;
        char *signal;
        GDBusMessage *msg1 = NULL;
@@ -80,6 +79,9 @@ int _bt_send_event(int event_type, int event, GVariant *param)
        case BT_HID_EVENT:
                path = BT_HID_PATH;
                break;
+       case BT_HID_DEVICE_EVENT:
+               path = BT_HID_DEVICE_PATH;
+               break;
        case BT_HEADSET_EVENT:
                path = BT_HEADSET_PATH;
                break;
@@ -98,6 +100,9 @@ int _bt_send_event(int event_type, int event, GVariant *param)
        case BT_OPP_SERVER_EVENT:
                path = BT_OPP_SERVER_PATH;
                break;
+       case BT_MAP_CLIENT_EVENT:
+               path = BT_MAP_CLIENT_PATH;
+               break;
        case BT_PBAP_CLIENT_EVENT:
                path = BT_PBAP_CLIENT_PATH;
                break;
@@ -107,9 +112,12 @@ int _bt_send_event(int event_type, int event, GVariant *param)
        case BT_RFCOMM_SERVER_EVENT:
                path = BT_RFCOMM_SERVER_PATH;
                break;
-        case BT_A2DP_SOURCE_EVENT:
-                path = BT_A2DP_SOURCE_PATH;
-                break;
+       case BT_A2DP_SOURCE_EVENT:
+               path = BT_A2DP_SOURCE_PATH;
+               break;
+       case BT_OTP_EVENT:
+               path = BT_OTP_PATH;
+               break;
        default:
                BT_ERR("Unknown event");
                return BLUETOOTH_ERROR_INTERNAL;
@@ -118,9 +126,11 @@ int _bt_send_event(int event_type, int event, GVariant *param)
        switch (event) {
        case BLUETOOTH_EVENT_ENABLED:
                signal = BT_ENABLED;
+               BT_INFO_C("### BT Enabled");
                break;
        case BLUETOOTH_EVENT_DISABLED:
                signal = BT_DISABLED;
+               BT_INFO_C("### BT Disabled");
                break;
        case BLUETOOTH_EVENT_LE_ENABLED:
                signal = BT_LE_ENABLED;
@@ -194,6 +204,9 @@ int _bt_send_event(int event_type, int event, GVariant *param)
        case BLUETOOTH_EVENT_RAW_RSSI:
                signal = BT_RAW_RSSI_EVENT;
                break;
+       case BLUETOOTH_EVENT_SUPPORTED_PROFILE_TRUSTED:
+               signal = BT_SUPPORTED_PROFILE_TRUSTED;
+               break;
        case BLUETOOTH_EVENT_KEYBOARD_PASSKEY_DISPLAY:
                signal = BT_KBD_PASSKEY_DISPLAY_REQ_RECEIVED;
                break;
@@ -217,6 +230,14 @@ int _bt_send_event(int event_type, int event, GVariant *param)
                signal = BT_INPUT_DISCONNECTED;
                BT_INFO_C("Disconnected [HID]");
                break;
+       case BLUETOOTH_HID_DEVICE_CONNECTED:
+               signal = BT_INPUT_HID_DEVICE_CONNECTED;
+               BT_INFO_C("Connected [HIDDevice]");
+               break;
+       case BLUETOOTH_HID_DEVICE_DISCONNECTED:
+               signal = BT_INPUT_HID_DEVICE_DISCONNECTED;
+               BT_INFO_C("Disconnected [HIDDevice]");
+               break;
        case BLUETOOTH_PBAP_CONNECTED:
                signal = BT_PBAP_CONNECTED;
                BT_INFO_C("Connected [PBAP Client]");
@@ -256,6 +277,14 @@ int _bt_send_event(int event_type, int event, GVariant *param)
                signal = BT_STEREO_HEADSET_DISCONNECTED;
                BT_INFO_C("Disconnected [A2DP]");
                break;
+       case BLUETOOTH_EVENT_AV_SOURCE_CONNECTED:
+               signal = BT_A2DP_SOURCE_CONNECTED;
+               BT_INFO_C("Connected [A2DP Source]");
+               break;
+       case BLUETOOTH_EVENT_AV_SOURCE_DISCONNECTED:
+               signal = BT_A2DP_SOURCE_DISCONNECTED;
+               BT_INFO_C("Disconnected [A2DP Source]");
+               break;
        case BLUETOOTH_EVENT_AG_AUDIO_CONNECTED:
                signal = BT_SCO_CONNECTED;
                BT_INFO_C("Connected [SCO]");
@@ -294,6 +323,34 @@ int _bt_send_event(int event_type, int event, GVariant *param)
                signal = BT_OPP_DISCONNECTED;
                BT_INFO_C("Disconnected [OPP]");
                break;
+       case BLUETOOTH_EVENT_MAP_CONNECTED:
+               signal = BT_MAP_CONNECTED;
+               BT_INFO_C("Connected [MAP]");
+               break;
+       case BLUETOOTH_EVENT_MAP_DISCONNECTED:
+               signal = BT_MAP_DISCONNECTED;
+               BT_INFO_C("Disconnected [MAP]");
+               break;
+       case BLUETOOTH_EVENT_MAP_LIST_FOLDERS_COMPLETE:
+               signal = BT_MAP_LIST_FOLDERS_COMPLETE;
+               BT_INFO_C("Completed list folders operation[MAP]");
+               break;
+       case BLUETOOTH_EVENT_MAP_LIST_FILTER_FIELD_COMPLETE:
+               signal = BT_MAP_FILTER_FIELDS_COMPLETE;
+               BT_INFO_C("Completed list filters field operation[MAP]");
+               break;
+       case BLUETOOTH_EVENT_MAP_LIST_MESSAGES_COMPLETE:
+               signal = BT_MAP_LIST_MESSAGES_COMPLETE;
+               BT_INFO_C("Completed list messages operation [MAP]");
+               break;
+       case BLUETOOTH_EVENT_MAP_GET_MESSAGE_COMPLETE:
+               signal = BT_MAP_GET_MESSAGE_COMPLETE;
+               BT_INFO_C("Completed get message operation [MAP]");
+               break;
+       case BLUETOOTH_EVENT_MAP_PUSH_MESSAGE_COMPLETE:
+               signal = BT_MAP_PUSH_MESSAGE_COMPLETE;
+               BT_INFO_C("Completed push message operation [MAP]");
+               break;
        case BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_CONNECTED:
                signal = BT_TRANSFER_CONNECTED;
                break;
@@ -337,14 +394,6 @@ int _bt_send_event(int event_type, int event, GVariant *param)
        case BLUETOOTH_EVENT_DEVICE_DISCONNECTED:
                signal = BT_DEVICE_DISCONNECTED;
                break;
-       case BLUETOOTH_EVENT_AV_SOURCE_CONNECTED:
-               signal = BT_A2DP_SOURCE_CONNECTED;
-               BT_INFO_C("Connected [A2DP Source]");
-               break;
-    case BLUETOOTH_EVENT_AV_SOURCE_DISCONNECTED:
-        signal = BT_A2DP_SOURCE_DISCONNECTED;
-        BT_INFO_C("Disconnected [A2DP Source]");
-        break;
        case BLUETOOTH_EVENT_AVRCP_CONNECTED:
        case BLUETOOTH_EVENT_AVRCP_CONTROL_CONNECTED:
                signal = BT_AVRCP_CONNECTED;
@@ -382,9 +431,14 @@ int _bt_send_event(int event_type, int event, GVariant *param)
                break;
        case BLUETOOTH_EVENT_GATT_CONNECTED:
                signal = BT_GATT_CONNECTED;
+               BT_INFO_C("### Connected [GATT]");
                break;
        case BLUETOOTH_EVENT_GATT_DISCONNECTED:
                signal = BT_GATT_DISCONNECTED;
+               BT_INFO_C("### Disconnected [GATT]");
+               break;
+       case BLUETOOTH_EVENT_GATT_ATT_MTU_CHANGED:
+               signal = BT_GATT_REQ_ATT_MTU_CHANGED;
                break;
        case BLUETOOTH_EVENT_IPSP_INIT_STATE_CHANGED:
                signal = BT_IPSP_INITIALIZED;
@@ -401,6 +455,12 @@ int _bt_send_event(int event_type, int event, GVariant *param)
        case BLUETOOTH_EVENT_LE_DATA_LENGTH_CHANGED:
                signal = BT_LE_DATA_LENGTH_CHANGED;
                break;
+       case BLUETOOTH_EVENT_PXP_PROPERTY_CHANGED:
+               signal = BT_PXP_PROPERTY_CHANGED;
+               break;
+       case BLUETOOTH_EVENT_OTP_SERVER_STATE_CHANGED:
+               signal = BT_OTP_SERVER_STATE_CHANGED;
+               break;
        default:
                BT_ERR("Unknown event");
                return BLUETOOTH_ERROR_INTERNAL;
@@ -411,13 +471,12 @@ int _bt_send_event(int event_type, int event, GVariant *param)
 
        msg1 = g_dbus_message_new_signal(path, BT_EVENT_SERVICE, signal);
        g_dbus_message_set_body(msg1, param);
-       if (!g_dbus_connection_send_message(event_conn, msg1,G_DBUS_SEND_MESSAGE_FLAGS_NONE, 0, NULL)) {
+       if (!g_dbus_connection_send_message(event_conn, msg1, G_DBUS_SEND_MESSAGE_FLAGS_NONE, 0, NULL))
                BT_ERR("Error while sending");
-       }
 
        g_object_unref(msg1);
 
-#ifdef HPS_FEATURE
+#ifdef TIZEN_FEATURE_BT_HPS
        if (g_strcmp0(signal, BT_LE_ENABLED) == 0)
                _bt_send_to_hps();
 #endif
@@ -428,14 +487,12 @@ int _bt_send_event(int event_type, int event, GVariant *param)
 int _bt_send_event_to_dest(const char* dest, int event_type,
                int event, GVariant *param)
 {
-       BT_DBG("+");
        char *path;
        char *signal;
        GError *error = NULL;
 
        retv_if(event_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
 
-       BT_DBG("dest : %s", dest);
        BT_DBG("event_type [%d], event [%d]", event_type, event);
 
        switch (event_type) {
@@ -446,7 +503,13 @@ int _bt_send_event_to_dest(const char* dest, int event_type,
                path = BT_LE_ADAPTER_PATH;
                break;
        case BT_DEVICE_EVENT:
-                path = BT_DEVICE_PATH;
+               path = BT_DEVICE_PATH;
+               break;
+       case BT_TDS_EVENT:
+               path = BT_TDS_PATH;
+               break;
+       case BT_OTP_EVENT:
+               path = BT_OTP_PATH;
                break;
        default:
                BT_ERR("Unknown event");
@@ -460,6 +523,9 @@ int _bt_send_event_to_dest(const char* dest, int event_type,
        case BLUETOOTH_EVENT_ADVERTISING_STOPPED:
                signal = BT_ADVERTISING_STOPPED;
                break;
+       case BLUETOOTH_EVENT_PASSKEY_NOTIFICATION:
+               signal = BT_PASSKEY_NOTIFICATION;
+               break;
        case BLUETOOTH_EVENT_LE_DISCOVERY_STARTED:
                signal = BT_LE_DISCOVERY_STARTED;
                break;
@@ -472,12 +538,32 @@ int _bt_send_event_to_dest(const char* dest, int event_type,
        case BLUETOOTH_EVENT_GATT_CHAR_VAL_CHANGED:
                signal = BT_GATT_CHAR_VAL_CHANGED;
                break;
+       case BLUETOOTH_EVENT_TDS_ACTIVATION_REQUESTED:
+               signal = BT_TDS_ACTIVATION_REQUESTED;
+               break;
+       case BLUETOOTH_EVENT_TDS_TRANSPORT_DATA_RECEIVED:
+               signal = BT_TDS_TRANSPORT_DATA_RECEIVED;
+               break;
+       case BLUETOOTH_EVENT_TDS_ACTIVATION_INDICATION:
+               signal = BT_TDS_ACTIVATION_INDICATION;
+               break;
+       case BLUETOOTH_EVENT_TDS_CONTROL_POINT_ENABLED:
+               signal = BT_TDS_CONTROL_POINT_ENABLED;
+               break;
+       case BLUETOOTH_EVENT_TDS_ACTIVATION_RESULT:
+               signal = BT_TDS_ACTIVATION_RESULT;
+               break;
+       case BLUETOOTH_EVENT_OTP_READ_CHAR_VAL:
+               signal = BT_OTP_READ_CHAR_VAL;
+               break;
+       case BLUETOOTH_EVENT_OTP_NOTIFICATION_ENABLED:
+               signal = BT_OTP_NOTIFICATION_ENABLED;
+               break;
        default:
                BT_ERR("Unknown event");
                return BLUETOOTH_ERROR_INTERNAL;
        }
 
-       BT_DBG("Path : %s", path);
        BT_INFO_C("Signal : %s", signal);
 
        if (!g_dbus_connection_emit_signal(event_conn, dest, path, BT_EVENT_SERVICE,
@@ -490,7 +576,6 @@ int _bt_send_event_to_dest(const char* dest, int event_type,
                }
        }
 
-       BT_DBG("-");
        return BLUETOOTH_ERROR_NONE;
 }
 
@@ -528,7 +613,7 @@ int _bt_init_service_event_sender(void)
        }
 
        conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err);
-       retv_if(conn == NULL, BLUETOOTH_ERROR_INTERNAL);
+
        if (conn == NULL) {
                BT_ERR("conn == NULL");
                if (err) {
@@ -563,7 +648,7 @@ int _bt_init_hf_local_term_event_sender(void)
        }
 
        conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &err);
-       retv_if(conn == NULL, BLUETOOTH_ERROR_INTERNAL);
+
        if (conn == NULL) {
                BT_ERR("conn == NULL");
                if (err) {
@@ -587,3 +672,27 @@ void _bt_deinit_hf_local_term_event_sender(void)
                hf_local_term_event_conn = NULL;
        }
 }
+
+int _bt_send_dump_signal(char *signal)
+{
+       GError *error = NULL;
+       int32_t pid = getpid();
+
+       retv_if(event_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
+
+       if (!g_dbus_connection_emit_signal(event_conn, NULL,
+                       BT_DUMP_SERVICE_PATH,
+                       BT_DUMP_SERVICE_INTERFACE,
+                       signal, g_variant_new("(i)", pid),
+                       &error)) {
+               BT_ERR("Error while sending Signal: %s", signal);
+               if (error) {
+                       BT_ERR("Error Code [%d], Error Message [%s]",
+                                       error->code, error->message);
+                       g_clear_error(&error);
+               }
+       }
+
+       return BLUETOOTH_ERROR_NONE;
+}
+