static GList *seek_list;
-static void _supplicant_signal_cb(GDBusConnection *connection,
- const gchar *sender, const gchar *object_path, const gchar *interface,
- const gchar *signal, GVariant *parameters, gpointer user_data);
-
-static void _p2pdevice_signal_cb(GDBusConnection *connection,
- const gchar *sender, const gchar *object_path, const gchar *interface,
- const gchar *signal, GVariant *parameters, gpointer user_data);
-
-static void _group_signal_cb(GDBusConnection *connection,
- const gchar *sender, const gchar *object_path, const gchar *interface,
- const gchar *signal, GVariant *parameters, gpointer user_data);
-
-static void _interface_signal_cb(GDBusConnection *connection,
- const gchar *sender, const gchar *object_path, const gchar *interface,
- const gchar *signal, GVariant *parameters, gpointer user_data);
-
static int __ws_txt_to_mac(unsigned char *txt, unsigned char *mac)
{
int i = 0;
return 0;
}
-static void _supplicant_signal_cb(GDBusConnection *connection,
+static void _ws_process_interface_removed(GDBusConnection *connection,
const gchar *sender, const gchar *object_path, const gchar *interface,
const gchar *signal, GVariant *parameters, gpointer user_data)
{
+ __WDP_LOG_FUNC_ENTER__;
+ static char interface_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
+ const char *path = NULL;
+
DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
if (!g_pd) {
- WDP_LOGE("ws_dbus_plugin_data_s is not created yet");
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
return;
}
- if (!g_strcmp0(signal, "InterfaceAdded")) {
- WDP_LOGD("InterfaceAdded");
-
- } else if (!g_strcmp0(signal, "InterfaceRemoved")) {
- WDP_LOGD("InterfaceRemoved");
- static char interface_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
- const char *path = NULL;
-
- g_variant_get(parameters, "(&o)", &path);
- g_strlcpy(interface_path, path, DBUS_OBJECT_PATH_MAX);
-
- WDP_LOGD("Retrive removed path [%s]", interface_path);
+ g_variant_get(parameters, "(&o)", &path);
+ g_strlcpy(interface_path, path, DBUS_OBJECT_PATH_MAX);
- if (!g_strcmp0(g_pd->group_iface_path, interface_path)) {
+ WDP_LOGD("Retrive removed path [%s]", interface_path);
- WDP_LOGD("p2p group interface removed");
- memset(g_pd->group_iface_path, 0x0, DBUS_OBJECT_PATH_MAX);
- }
+ if (!g_strcmp0(g_pd->group_iface_path, interface_path)) {
+ WDP_LOGD("p2p group interface removed");
+ memset(g_pd->group_iface_path, 0x0, DBUS_OBJECT_PATH_MAX);
+ }
#if defined(TIZEN_WLAN_CONCURRENT_ENABLE) && defined(TIZEN_PROFILE_MOBILE)
- else if (!g_strcmp0(g_pd->iface_path, interface_path)) {
+ else if (!g_strcmp0(g_pd->iface_path, interface_path)) {
- WDP_LOGD("p2p interface removed");
- wfd_oem_event_s event;
+ WDP_LOGD("p2p interface removed");
+ wfd_oem_event_s event;
- ws_deactivate(1);
+ ws_deactivate(1);
- memset(&event, 0x0, sizeof(wfd_oem_event_s));
- event.event_id = WFD_OEM_EVENT_DEACTIVATED;
- G_PD_CALLBACK(g_pd->user_data, &event);
+ memset(&event, 0x0, sizeof(wfd_oem_event_s));
+ event.event_id = WFD_OEM_EVENT_DEACTIVATED;
+ G_PD_CALLBACK(g_pd->user_data, &event);
- memset(g_pd->iface_path, 0x0, DBUS_OBJECT_PATH_MAX);
- }
-#endif /* TIZEN_WLAN_CONCURRENT_ENABLE && TIZEN_PROFILE_MOBILE */
- } else if (!g_strcmp0(signal, "PropertiesChanged")) {
- WDP_LOGD("PropertiesChanged");
+ memset(g_pd->iface_path, 0x0, DBUS_OBJECT_PATH_MAX);
}
+#endif /* TIZEN_WLAN_CONCURRENT_ENABLE && TIZEN_PROFILE_MOBILE */
+ __WDP_LOG_FUNC_EXIT__;
}
+static struct {
+ int sub_id;
+ const char *interface;
+ const char *member;
+ void (*function) (GDBusConnection *connection,
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data);
+} ws_supplicant_signal_map[] = {
+ {
+ 0,
+ SUPPLICANT_INTERFACE,
+ "InterfaceRemoved",
+ _ws_process_interface_removed
+ },
+ {
+ 0,
+ NULL,
+ NULL,
+ NULL
+ }
+};
+
static void __ws_get_peer_property(const char *key, GVariant *value, void *user_data)
{
__WDP_LOG_FUNC_ENTER__;
return;
}
+static void __ws_parse_peer_joined(char *peer_path,
+ unsigned char *dev_addr, unsigned char *ip_addr, GVariant *parameter)
+{
+ __WDP_LOG_FUNC_ENTER__;
+
+ GVariantIter *iter;
+ static unsigned char peer_dev[WS_MACSTR_LEN] = {'\0',};
+ const char *path = NULL;
+ char *loc = NULL;
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ int i = 0;
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
+
+ g_variant_get(parameter, "(&oay)", &path, &iter);
+ g_strlcpy(peer_path, path, DBUS_OBJECT_PATH_MAX);
+ WDP_LOGD("Retrive Added path [%s]", peer_path);
+
+ loc = strrchr(peer_path, '/');
+ if (loc != NULL)
+ __ws_mac_compact_to_normal(loc + 1, peer_dev);
+ __ws_txt_to_mac(peer_dev, dev_addr);
+ WDP_LOGD("peer mac [" MACSTR "]", MAC2STR(dev_addr));
+#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
+ for (i = 0; i < OEM_IPADDR_LEN; i++)
+ g_variant_iter_loop(iter, "y", &ip_addr[i]);
+ g_variant_iter_free(iter);
+
+ WDP_LOGD("peer ip [" IPSTR "]", IP2STR(ip_addr));
+#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
+
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+}
+
+static void _ws_process_peer_joined(GDBusConnection *connection,
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
+{
+ __WDP_LOG_FUNC_ENTER__;
+ wfd_oem_event_s event;
+ wfd_oem_dev_data_s *edata = NULL;
+ static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
+
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
+ edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
+ if (!edata) {
+ WDP_LOGF("Failed to allocate memory for event. [%s]",
+ strerror(errno));
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+ memset(&event, 0x0, sizeof(wfd_oem_event_s));
+
+ event.edata = (void*) edata;
+ event.edata_type = WFD_OEM_EDATA_TYPE_DEVICE;
+ event.event_id = WFD_OEM_EVENT_STA_CONNECTED;
+
+ __ws_parse_peer_joined(peer_path, event.dev_addr, event.ip_addr_peer, parameters);
+
+ dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
+ __ws_peer_property, event.edata);
+
+ g_pd->callback(g_pd->user_data, &event);
+ is_peer_joined_notified = 1;
+
+ g_free(edata);
+ __WDP_LOG_FUNC_EXIT__;
+}
+
+static void _ws_process_peer_disconnected(GDBusConnection *connection,
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
+{
+ __WDP_LOG_FUNC_ENTER__;
+ wfd_oem_event_s event;
+ static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
+
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
+ memset(&event, 0x0, sizeof(wfd_oem_event_s));
+
+ event.edata_type = WFD_OEM_EDATA_TYPE_NONE;
+ event.event_id = WFD_OEM_EVENT_STA_DISCONNECTED;
+
+ __ws_path_to_addr(peer_path, event.dev_addr, parameters);
+
+ g_pd->callback(g_pd->user_data, &event);
+ is_peer_disconnected_notified = 1;
+ __WDP_LOG_FUNC_EXIT__;
+}
+
+static struct {
+ int sub_id;
+ const char *interface;
+ const char *member;
+ void (*function) (GDBusConnection *connection,
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data);
+} ws_group_signal_map[] = {
+ {
+ 0,
+ SUPPLICANT_P2P_GROUP,
+ "PeerJoined",
+ _ws_process_peer_joined
+ },
+ {
+ 0,
+ SUPPLICANT_P2P_GROUP,
+ "PeerDisconnected",
+ _ws_process_peer_disconnected
+ },
+ {
+ 0,
+ NULL,
+ NULL,
+ NULL
+ }
+};
+
void __ws_extract_group_details(const char *key, GVariant *value, void *user_data)
{
__WDP_LOG_FUNC_ENTER__;
} else if (g_strcmp0(key, "group_object") == 0) {
static char group_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
const char *g_path;
+ int i = 0;
g_variant_get(value, "&o", &g_path);
g_strlcpy(group_path, g_path, DBUS_OBJECT_PATH_MAX);
dbus_property_get_all(group_path, g_pd->g_dbus, SUPPLICANT_P2P_GROUP,
__ws_group_property, event);
- g_pd->group_sub_id =
- g_dbus_connection_signal_subscribe(
- g_pd->g_dbus,
- SUPPLICANT_SERVICE, /* bus name */
- SUPPLICANT_P2P_GROUP, /* interface */
- NULL, /* member */
- group_path, /* object path */
- NULL, /* arg0 */
- G_DBUS_SIGNAL_FLAGS_NONE,
- _group_signal_cb,
- NULL, NULL);
- WDP_LOGD("Subscribed group iface signal: [%d]", g_pd->group_sub_id);
+ for (i = 0; ws_group_signal_map[i].member != NULL; i++) {
+ ws_group_signal_map[i].sub_id =
+ g_dbus_connection_signal_subscribe(g_pd->g_dbus,
+ SUPPLICANT_SERVICE, /* bus name */
+ ws_group_signal_map[i].interface, /* interface */
+ ws_group_signal_map[i].member, /* member */
+ group_path, /* object path */
+ NULL, /* arg0 */
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ ws_group_signal_map[i].function,
+ NULL, NULL);
+ WDP_LOGD("Subscribed Group iface signal [%s]", ws_group_signal_map[i].member);
+ }
}
__WDP_LOG_FUNC_EXIT__;
return;
#endif /* TIZEN_FEATURE_ASP */
static void _ws_process_device_found_properties(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
GVariantIter *iter = NULL;
const char *path = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
ws_get_advertise_service(peer_path, (GList **)&(event.asp_services));
#endif /* TIZEN_FEATURE_ASP */
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
#if defined(TIZEN_FEATURE_ASP)
if (event.asp_services != NULL) {
GList *l;
}
static void _ws_process_device_lost(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
event.edata_type = WFD_OEM_EDATA_TYPE_NONE;
__ws_path_to_addr(peer_path, event.dev_addr, parameters);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_find_stoppped(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
event.edata_type = WFD_OEM_EDATA_TYPE_NONE;
event.event_id = WFD_OEM_EVENT_DISCOVERY_FINISHED;
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_prov_disc_req_display_pin(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
-
wfd_oem_event_s event;
wfd_oem_dev_data_s *edata = NULL;
-
static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
static unsigned char peer_dev[OEM_MACSTR_LEN] = {'\0',};
const char *path = NULL;
const char *pin = NULL;
char *loc = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
__ws_peer_property, event.edata);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_prov_disc_resp_display_pin(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
-
wfd_oem_event_s event;
wfd_oem_dev_data_s *edata = NULL;
-
static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
static unsigned char peer_dev[OEM_MACSTR_LEN] = {'\0',};
const char *path = NULL;
const char *pin = NULL;
char *loc = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
__ws_peer_property, event.edata);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_prov_disc_req_enter_pin(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
wfd_oem_dev_data_s *edata = NULL;
static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
__ws_peer_property, event.edata);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_prov_disc_resp_enter_pin(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
wfd_oem_dev_data_s *edata = NULL;
static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
__ws_peer_property, event.edata);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_prov_disc_pbc_req(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
wfd_oem_dev_data_s *edata = NULL;
static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
__ws_peer_property, event.edata);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_prov_disc_pbc_resp(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
wfd_oem_dev_data_s *edata = NULL;
static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
__ws_peer_property, event.edata);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
#if defined(TIZEN_FEATURE_ASP)
static void _ws_process_prov_disc_failure(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
wfd_oem_asp_prov_s *edata;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_asp_prov_s *) g_try_malloc0(sizeof(wfd_oem_asp_prov_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
WDP_LOGE("No Properties");
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
if (event.edata_type == WFD_OEM_EDATA_TYPE_ASP_PROV)
g_free(edata->session_information);
}
#else
static void _ws_process_prov_disc_failure(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
int prov_status = 0;
char *loc = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
event.edata_type = WFD_OEM_EDATA_TYPE_DEVICE;
__ws_txt_to_mac(peer_dev, event.dev_addr);
WDP_LOGE("peer mac [" MACSTR "]", MAC2STR(event.dev_addr));
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_group_started(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
wfd_oem_group_data_s *edata = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_group_data_s*)calloc(1, sizeof(wfd_oem_group_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
WDP_LOGE("No properties");
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_go_neg_success(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
wfd_oem_conn_data_s *edata = NULL;
- edata = (wfd_oem_conn_data_s*)calloc(1, sizeof(wfd_oem_conn_data_s));
- if (!edata) {
- WDP_LOGF("Failed to allocate memory for event. [%s]",
- strerror(errno));
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
+ edata = (wfd_oem_conn_data_s*)calloc(1, sizeof(wfd_oem_conn_data_s));
+ if (!edata) {
+ WDP_LOGF("Failed to allocate memory for event. [%s]",
+ strerror(errno));
__WDP_LOG_FUNC_EXIT__;
return;
}
WDP_LOGE("No properties");
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_go_neg_failure(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
wfd_oem_conn_data_s *edata = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_conn_data_s *) g_try_malloc0(sizeof(wfd_oem_conn_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
WDP_LOGE("No properties");
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_go_neg_request(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
static unsigned char peer_dev[OEM_MACSTR_LEN] = {'\0',};
const char *path = NULL;
char * loc = NULL;
-
int dev_passwd_id = 0;
int device_go_intent = 0;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
__ws_peer_property, event.edata);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_invitation_received(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
wfd_oem_invite_data_s *edata = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_invite_data_s *) g_try_malloc0(sizeof(wfd_oem_invite_data_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
}
memcpy(&(event.dev_addr), edata->sa, OEM_MACADDR_LEN);
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_invitation_result(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
+
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_group_finished(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
+ int i = 0;
+
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
memset(&event, 0x0, sizeof(wfd_oem_event_s));
event.event_id = WFD_OEM_EVENT_GROUP_DESTROYED;
event.edata_type = WFD_OEM_EDATA_TYPE_NONE;
- g_dbus_connection_signal_unsubscribe(g_pd->g_dbus, g_pd->group_sub_id);
+ for (i = 0; ws_group_signal_map[i].member != NULL; i++) {
+ g_dbus_connection_signal_unsubscribe(g_pd->g_dbus, ws_group_signal_map[i].sub_id);
+ ws_group_signal_map[i].sub_id = 0;
+ }
memset(g_pd->group_iface_path, 0x0, DBUS_OBJECT_PATH_MAX);
_ws_flush();
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
#ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
static void _ws_process_service_discovery_response(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
event.event_id = WFD_OEM_EVENT_SERV_DISC_RESP;
WDP_LOGE("No Properties");
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
if (event.edata_type == WFD_OEM_EDATA_TYPE_NEW_SERVICE)
g_list_free((GList*) event.edata);
#if defined(TIZEN_FEATURE_ASP)
static void _ws_process_service_asp_response(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_asp_service_s *service = NULL;
wfd_oem_asp_service_s *tmp = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
service = (wfd_oem_asp_service_s *) g_try_malloc0(sizeof(wfd_oem_asp_service_s));
if (!service) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
GLIST_ITER_END()
if (tmp != NULL && tmp->service_info != NULL)
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
else
WDP_LOGD("service info is not required, don't notify to user");
#endif /* TIZEN_FEATURE_ASP */
static void _ws_process_persistent_group_added(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
+
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_persistent_group_removed(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
+
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_wps_failed(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
const char *name = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
event.event_id = WFD_OEM_EVENT_WPS_FAIL;
g_variant_iter_free(iter);
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_group_formation_failure(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
event.event_id = WFD_OEM_EVENT_GROUP_FORMATION_FAILURE;
event.edata_type = WFD_OEM_EDATA_TYPE_NONE;
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_invitation_accepted(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
memset(&event, 0x0, sizeof(wfd_oem_event_s));
event.event_id = WFD_OEM_EVENT_INVITATION_ACCEPTED;
}
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
#if defined(TIZEN_FEATURE_ASP)
static void _ws_process_asp_provision_start(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
wfd_oem_asp_prov_s *edata;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_asp_prov_s *) g_try_malloc0(sizeof(wfd_oem_asp_prov_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
WDP_LOGE("No Properties");
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
if (event.edata_type == WFD_OEM_EDATA_TYPE_ASP_PROV)
g_free(edata->session_information);
}
static void _ws_process_asp_provision_done(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
GVariantIter *iter = NULL;
wfd_oem_event_s event;
wfd_oem_asp_prov_s *edata;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
edata = (wfd_oem_asp_prov_s *) g_try_malloc0(sizeof(wfd_oem_asp_prov_s));
if (!edata) {
WDP_LOGF("Failed to allocate memory for event. [%s]",
WDP_LOGE("No Properties");
}
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
g_free(edata);
__WDP_LOG_FUNC_EXIT__;
#endif /* TIZEN_FEATURE_ASP */
static struct {
+ int sub_id;
const char *interface;
const char *member;
- void (*function) (GDBusConnection *connection, const gchar *object_path,
- GVariant *parameters);
+ void (*function) (GDBusConnection *connection,
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data);
} ws_p2pdevice_signal_map[] = {
{
+ 0,
SUPPLICANT_P2PDEVICE,
"DeviceFoundProperties",
_ws_process_device_found_properties
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"DeviceLost",
_ws_process_device_lost
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"FindStopped",
_ws_process_find_stoppped
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ProvisionDiscoveryRequestDisplayPin",
_ws_process_prov_disc_req_display_pin
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ProvisionDiscoveryResponseDisplayPin",
_ws_process_prov_disc_resp_display_pin
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ProvisionDiscoveryRequestEnterPin",
_ws_process_prov_disc_req_enter_pin
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ProvisionDiscoveryResponseEnterPin",
_ws_process_prov_disc_resp_enter_pin
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ProvisionDiscoveryPBCRequest",
_ws_process_prov_disc_pbc_req
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ProvisionDiscoveryPBCResponse",
_ws_process_prov_disc_pbc_resp
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ProvisionDiscoveryFailure",
_ws_process_prov_disc_failure
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"GroupStarted",
_ws_process_group_started
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"GONegotiationSuccess",
_ws_process_go_neg_success
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"GONegotiationFailure",
_ws_process_go_neg_failure
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"GONegotiationRequest",
_ws_process_go_neg_request
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"InvitationReceived",
_ws_process_invitation_received
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"InvitationResult",
_ws_process_invitation_result
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"GroupFinished",
_ws_process_group_finished
},
#ifdef TIZEN_FEATURE_SERVICE_DISCOVERY
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ServiceDiscoveryResponse",
_ws_process_service_discovery_response
#endif /* TIZEN_FEATURE_SERVICE_DISCOVERY */
#if defined(TIZEN_FEATURE_ASP)
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ServiceASPResponse",
_ws_process_service_asp_response
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ASPProvisionStart",
_ws_process_asp_provision_start
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"ASPProvisionDone",
_ws_process_asp_provision_done
},
#endif /* TIZEN_FEATURE_ASP */
{
+ 0,
SUPPLICANT_P2PDEVICE,
"PersistentGroupAdded",
_ws_process_persistent_group_added
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"PersistentGroupRemoved",
_ws_process_persistent_group_removed
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"WpsFailed",
_ws_process_wps_failed
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"GroupFormationFailure",
_ws_process_group_formation_failure
},
{
+ 0,
SUPPLICANT_P2PDEVICE,
"InvitationAccepted",
_ws_process_invitation_accepted
},
{
+ 0,
NULL,
NULL,
NULL
}
};
-static void _p2pdevice_signal_cb(GDBusConnection *connection,
+static void _ws_process_sta_authorized(GDBusConnection *connection,
const gchar *sender, const gchar *object_path, const gchar *interface,
const gchar *signal, GVariant *parameters, gpointer user_data)
{
- int i = 0;
+ __WDP_LOG_FUNC_ENTER__;
+ wfd_oem_event_s event;
+ const gchar* mac_str = NULL;
+
DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
- if (!g_pd) {
- WDP_LOGE("ws_dbus_plugin_data_s is not created yet");
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
return;
}
- for (i = 0; ws_p2pdevice_signal_map[i].member != NULL; i++) {
- if (!g_strcmp0(signal, ws_p2pdevice_signal_map[i].member) &&
- ws_p2pdevice_signal_map[i].function != NULL)
- ws_p2pdevice_signal_map[i].function(connection, object_path, parameters);
- }
-}
-
-
-static void _ws_process_sta_authorized(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
-{
- __WDP_LOG_FUNC_ENTER__;
- wfd_oem_event_s event;
- const gchar* mac_str = NULL;
-
if (is_peer_joined_notified) {
is_peer_joined_notified = 0;
__WDP_LOG_FUNC_EXIT__;
event.event_id = WFD_OEM_EVENT_STA_CONNECTED;
event.edata_type = WFD_OEM_EDATA_TYPE_NONE;
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
static void _ws_process_sta_deauthorized(GDBusConnection *connection,
- const gchar *object_path, GVariant *parameters)
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data)
{
__WDP_LOG_FUNC_ENTER__;
wfd_oem_event_s event;
const gchar* mac_str = NULL;
+ DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
+
+ if (!g_pd || !g_pd->callback) {
+ WDP_LOGD("Ignoring event");
+ __WDP_LOG_FUNC_EXIT__;
+ return;
+ }
+
if (is_peer_disconnected_notified) {
is_peer_disconnected_notified = 0;
__WDP_LOG_FUNC_EXIT__;
event.event_id = WFD_OEM_EVENT_STA_DISCONNECTED;
event.edata_type = WFD_OEM_EDATA_TYPE_NONE;
- G_PD_CALLBACK(g_pd->user_data, &event);
+ g_pd->callback(g_pd->user_data, &event);
__WDP_LOG_FUNC_EXIT__;
}
static struct {
+ int sub_id;
const char *interface;
const char *member;
- void (*function) (GDBusConnection *connection, const gchar *object_path,
- GVariant *parameters);
+ void (*function) (GDBusConnection *connection,
+ const gchar *sender, const gchar *object_path, const gchar *interface,
+ const gchar *signal, GVariant *parameters, gpointer user_data);
} ws_interface_signal_map[] = {
{
+ 0,
SUPPLICANT_INTERFACE,
"StaAuthorized",
_ws_process_sta_authorized
},
{
+ 0,
SUPPLICANT_INTERFACE,
"StaDeauthorized",
_ws_process_sta_deauthorized
},
{
+ 0,
NULL,
NULL,
NULL
}
};
-static void _interface_signal_cb(GDBusConnection *connection,
- const gchar *sender, const gchar *object_path, const gchar *interface,
- const gchar *signal, GVariant *parameters, gpointer user_data)
-{
- int i = 0;
- DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
-
- if (!g_pd) {
- WDP_LOGE("ws_dbus_plugin_data_s is not created yet");
- __WDP_LOG_FUNC_EXIT__;
- return;
- }
-
- for (i = 0; ws_interface_signal_map[i].member != NULL; i++) {
- if (!g_strcmp0(signal, ws_interface_signal_map[i].member) &&
- ws_interface_signal_map[i].function != NULL)
- ws_interface_signal_map[i].function(connection, object_path, parameters);
- }
-}
-
-
-static void __ws_parse_peer_joined(char *peer_path,
- unsigned char *dev_addr, unsigned char *ip_addr, GVariant *parameter)
-{
- __WDP_LOG_FUNC_ENTER__;
-
- GVariantIter *iter;
- static unsigned char peer_dev[WS_MACSTR_LEN] = {'\0',};
- const char *path = NULL;
- char *loc = NULL;
-#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
- int i = 0;
-#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
-
- g_variant_get(parameter, "(&oay)", &path, &iter);
- g_strlcpy(peer_path, path, DBUS_OBJECT_PATH_MAX);
- WDP_LOGD("Retrive Added path [%s]", peer_path);
-
- loc = strrchr(peer_path, '/');
- if (loc != NULL)
- __ws_mac_compact_to_normal(loc + 1, peer_dev);
- __ws_txt_to_mac(peer_dev, dev_addr);
- WDP_LOGD("peer mac [" MACSTR "]", MAC2STR(dev_addr));
-#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
- for (i = 0; i < OEM_IPADDR_LEN; i++)
- g_variant_iter_loop(iter, "y", &ip_addr[i]);
- g_variant_iter_free(iter);
-
- WDP_LOGD("peer ip [" IPSTR "]", IP2STR(ip_addr));
-#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
-
- __WDP_LOG_FUNC_EXIT__;
- return;
-}
-
-
-static void _group_signal_cb(GDBusConnection *connection,
- const gchar *sender, const gchar *object_path, const gchar *interface,
- const gchar *signal, GVariant *parameters, gpointer user_data)
-{
- DEBUG_SIGNAL(sender, object_path, interface, signal, parameters);
-
- if (!g_pd) {
- WDP_LOGE("ws_dbus_plugin_data_s is not created yet");
- return;
- }
-
- if (!g_strcmp0(signal, "PeerJoined")) {
-
- wfd_oem_event_s event;
- wfd_oem_dev_data_s *edata = NULL;
-
- static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
-
- edata = (wfd_oem_dev_data_s *) g_try_malloc0(sizeof(wfd_oem_dev_data_s));
- if (!edata) {
- WDP_LOGF("Failed to allocate memory for event. [%s]",
- strerror(errno));
- __WDP_LOG_FUNC_EXIT__;
- return;
- }
- memset(&event, 0x0, sizeof(wfd_oem_event_s));
-
- event.edata = (void*) edata;
- event.edata_type = WFD_OEM_EDATA_TYPE_DEVICE;
- event.event_id = WFD_OEM_EVENT_STA_CONNECTED;
-
- __ws_parse_peer_joined(peer_path, event.dev_addr, event.ip_addr_peer, parameters);
-
- dbus_property_get_all(peer_path, g_pd->g_dbus, SUPPLICANT_P2P_PEER,
- __ws_peer_property, event.edata);
-
- G_PD_CALLBACK(g_pd->user_data, &event);
- is_peer_joined_notified = 1;
-
- g_free(edata);
-
- } else if (!g_strcmp0(signal, "PeerDisconnected")) {
-
- wfd_oem_event_s event;
-
- static char peer_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
-
- memset(&event, 0x0, sizeof(wfd_oem_event_s));
-
- event.edata_type = WFD_OEM_EDATA_TYPE_NONE;
- event.event_id = WFD_OEM_EVENT_STA_DISCONNECTED;
-
- __ws_path_to_addr(peer_path, event.dev_addr, parameters);
-
- G_PD_CALLBACK(g_pd->user_data, &event);
- is_peer_disconnected_notified = 1;
- }
-}
-
static void __register_p2pdevice_signal(GVariant *value, void *user_data)
{
__WDP_LOG_FUNC_ENTER__;
ws_dbus_plugin_data_s * pd_data;
static char interface_path[DBUS_OBJECT_PATH_MAX] = {'\0',};
const char *path = NULL;
+ int i = 0;
if (!g_pd) {
WDP_LOGE("ws_dbus_plugin_data_s is not created yet");
WDP_LOGD("interface object path [%s]", interface_path);
/* subscribe Interface iface signal */
- pd_data->iface_sub_id = g_dbus_connection_signal_subscribe(
- pd_data->g_dbus,
- SUPPLICANT_SERVICE, /* bus name */
- SUPPLICANT_IFACE, /* interface */
- NULL, /* member */
- NULL, /* object path */
- NULL, /* arg0 */
- G_DBUS_SIGNAL_FLAGS_NONE,
- _interface_signal_cb,
- NULL, NULL);
- WDP_LOGD("Subscribed Interface iface signal: [%d]", pd_data->iface_sub_id);
+ for (i = 0; ws_interface_signal_map[i].member != NULL; i++) {
+ ws_interface_signal_map[i].sub_id =
+ g_dbus_connection_signal_subscribe(pd_data->g_dbus,
+ SUPPLICANT_SERVICE, /* bus name */
+ ws_interface_signal_map[i].interface, /* interface */
+ ws_interface_signal_map[i].member, /* member */
+ pd_data->iface_path, /* object path */
+ NULL, /* arg0 */
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ ws_interface_signal_map[i].function,
+ NULL, NULL);
+ WDP_LOGD("Subscribed Interface iface signal [%s]", ws_interface_signal_map[i].member);
+ }
/* subscribe P2PDevice iface signal */
- pd_data->p2pdevice_sub_id = g_dbus_connection_signal_subscribe(
- pd_data->g_dbus,
- SUPPLICANT_SERVICE, /* bus name */
- SUPPLICANT_P2PDEVICE, /* interface */
- NULL, /* member */
- NULL, /* object path */
- NULL, /* arg0 */
- G_DBUS_SIGNAL_FLAGS_NONE,
- _p2pdevice_signal_cb,
- NULL, NULL);
- WDP_LOGD("Subscribed P2PDevice iface signal: [%d]", pd_data->p2pdevice_sub_id);
+ for (i = 0; ws_p2pdevice_signal_map[i].member != NULL; i++) {
+ ws_p2pdevice_signal_map[i].sub_id =
+ g_dbus_connection_signal_subscribe(pd_data->g_dbus,
+ SUPPLICANT_SERVICE, /* bus name */
+ ws_p2pdevice_signal_map[i].interface, /* interface */
+ ws_p2pdevice_signal_map[i].member, /* member */
+ pd_data->iface_path, /* object path */
+ NULL, /* arg0 */
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ ws_p2pdevice_signal_map[i].function,
+ NULL, NULL);
+ WDP_LOGD("Subscribed P2PDevice iface signal [%s]", ws_p2pdevice_signal_map[i].member);
+ }
+
__WDP_LOG_FUNC_EXIT__;
}
GDBusConnection *conn = NULL;
GError *error = NULL;
int res = 0;
+ int i = 0;
if (!g_pd) {
WDP_LOGE("ws_dbus_plugin_data_s is not created yet");
g_pd->g_dbus = conn;
- /* subscribe supplicant signal */
- g_pd->supp_sub_id = g_dbus_connection_signal_subscribe(
- g_pd->g_dbus,
- SUPPLICANT_SERVICE, /* bus name */
- SUPPLICANT_INTERFACE, /* interface */
- NULL, /* member */
- SUPPLICANT_PATH, /* object path */
- NULL, /* arg0 */
- G_DBUS_SIGNAL_FLAGS_NONE,
- _supplicant_signal_cb,
- NULL, NULL);
- WDP_LOGD("Subscribed supplicant iface signal: [%d]", g_pd->supp_sub_id);
+ for (i = 0; ws_supplicant_signal_map[i].member != NULL; i++) {
+ ws_supplicant_signal_map[i].sub_id =
+ g_dbus_connection_signal_subscribe(g_pd->g_dbus,
+ SUPPLICANT_SERVICE, /* bus name */
+ ws_supplicant_signal_map[i].interface, /* interface */
+ ws_supplicant_signal_map[i].member, /* member */
+ SUPPLICANT_PATH, /* object path */
+ NULL, /* arg0 */
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ ws_supplicant_signal_map[i].function,
+ NULL, NULL);
+ WDP_LOGD("Subscribed supplicant iface signal [%s]", ws_supplicant_signal_map[i].member);
+ }
#if defined(TIZEN_PROFILE_MOBILE) && (TIZEN_WLAN_BOARD_SPRD)
if (_ws_get_interface(COMMON_IFACE_NAME, NULL, NULL) < 0)
static int _ws_deinit_dbus_connection(void)
{
GDBusConnection *g_dbus = NULL;
+ int i = 0;
if (!g_pd) {
WDP_LOGE("Invalid parameter");
return -1;
}
- g_dbus_connection_signal_unsubscribe(g_dbus, g_pd->supp_sub_id);
- g_dbus_connection_signal_unsubscribe(g_dbus, g_pd->iface_sub_id);
- g_dbus_connection_signal_unsubscribe(g_dbus, g_pd->p2pdevice_sub_id);
- g_dbus_connection_signal_unsubscribe(g_dbus, g_pd->group_sub_id);
+ for (i = 0; ws_supplicant_signal_map[i].member != NULL; i++) {
+ g_dbus_connection_signal_unsubscribe(g_dbus, ws_supplicant_signal_map[i].sub_id);
+ ws_supplicant_signal_map[i].sub_id = 0;
+ }
+
+ for (i = 0; ws_interface_signal_map[i].member != NULL; i++) {
+ g_dbus_connection_signal_unsubscribe(g_dbus, ws_interface_signal_map[i].sub_id);
+ ws_interface_signal_map[i].sub_id = 0;
+ }
+
+ for (i = 0; ws_p2pdevice_signal_map[i].member != NULL; i++) {
+ g_dbus_connection_signal_unsubscribe(g_dbus, ws_p2pdevice_signal_map[i].sub_id);
+ ws_p2pdevice_signal_map[i].sub_id = 0;
+ }
+
+ for (i = 0; ws_group_signal_map[i].member != NULL; i++) {
+ g_dbus_connection_signal_unsubscribe(g_dbus, ws_group_signal_map[i].sub_id);
+ ws_group_signal_map[i].sub_id = 0;
+ }
- g_pd->group_iface_sub_id = 0;
- g_pd->iface_sub_id = 0;
- g_pd->p2pdevice_sub_id = 0;
- g_pd->group_sub_id = 0;
memset(g_pd->group_iface_path, 0x0, DBUS_OBJECT_PATH_MAX);
memset(g_pd->iface_path, 0x0, DBUS_OBJECT_PATH_MAX);