[Bluetooth][OTP] Add base code for OTP server role
[platform/core/connectivity/bluetooth-frwk.git] / bt-api / bt-event-handler.c
index 8f7a64a..a354dce 100644 (file)
@@ -3018,6 +3018,45 @@ static void __bt_tds_event_filter(GDBusConnection *connection,
        BT_DBG("-");
 }
 
+static void __bt_otp_event_filter(GDBusConnection *connection,
+               const gchar *sender_name,
+               const gchar *object_path,
+               const gchar *interface_name,
+               const gchar *signal_name,
+               GVariant *parameters,
+               gpointer user_data)
+{
+       bt_event_info_t *event_info;
+       event_info = (bt_event_info_t *)user_data;
+       int result = BLUETOOTH_ERROR_NONE;
+
+       ret_if(event_info == NULL);
+
+       if (strcasecmp(object_path, BT_OTP_PATH) != 0)
+               return;
+       if (strcasecmp(interface_name, BT_EVENT_SERVICE) != 0)
+               return;
+
+       ret_if(signal_name == NULL);
+
+       BT_DBG("+");
+
+       if (strcasecmp(signal_name, BT_OTP_SERVER_STATE_CHANGED) == 0) {
+               BT_DBG("OTP Server State Changed Event");
+               bool status = FALSE;
+
+               /* Extract data from DBUS params */
+               g_variant_get(parameters, "(ib)", &result, &status);
+               BT_DBG("Result [%d]", result);
+               BT_DBG("Status  [%s]", status ? "enabled" : "disabled");
+
+               _bt_common_event_cb(BLUETOOTH_EVENT_OTP_SERVER_STATE_CHANGED,
+                               result, &status, event_info->cb, event_info->user_data);
+       }
+
+       BT_DBG("-");
+}
+
 static void __bt_remove_all_events(void)
 {
        bt_event_info_t *info;
@@ -3244,6 +3283,11 @@ int _bt_register_event(int event_type, void *event_cb, void *user_data)
                event_func = __bt_tds_event_filter;
                path = BT_TDS_PATH;
                break;
+       case BT_OTP_EVENT:
+               BT_DBG("BT_OTP_EVENT");
+               event_func = __bt_otp_event_filter;
+               path = BT_OTP_PATH;
+               break;
        default:
                BT_ERR("Unknown event");
                return BLUETOOTH_ERROR_INTERNAL;