ADD_DEFINITIONS(-DTIZEN_PROFILE_COMMON)
ENDIF(TIZEN_PROFILE_COMMON)
-IF(TIZEN_FEATURE_ASP)
- ADD_DEFINITIONS(-DTIZEN_FEATURE_ASP)
-ENDIF(TIZEN_FEATURE_ASP)
-
IF(TIZEN_PROFILE_MOBILE)
ADD_DEFINITIONS(-DTIZEN_PROFILE_MOBILE)
ENDIF(TIZEN_PROFILE_MOBILE)
${CMAKE_SOURCE_DIR}/src/wifi-direct-session.c
${CMAKE_SOURCE_DIR}/src/wifi-direct-event.c
${CMAKE_SOURCE_DIR}/src/wifi-direct-service.c
+ ${CMAKE_SOURCE_DIR}/src/wifi-direct-asp.c
${CMAKE_SOURCE_DIR}/src/wifi-direct-util.c
${CMAKE_SOURCE_DIR}/src/wifi-direct-dbus.c
${CMAKE_SOURCE_DIR}/src/wifi-direct-error.c
${CMAKE_SOURCE_DIR}/oem/wifi-direct-oem.c
)
-IF(TIZEN_FEATURE_ASP)
- SET(SRCS ${SRCS} ${CMAKE_SOURCE_DIR}/src/wifi-direct-asp.c)
-ENDIF(TIZEN_FEATURE_ASP)
-
IF(TIZEN_ENABLE_PRD)
SET(SRCS ${SRCS} ${CMAKE_SOURCE_DIR}/prd/src/wifi-direct-prd.c)
ENDIF(TIZEN_ENABLE_PRD)
ASP_CONNECT_STATUS_GROUP_FORMATION_FAILED, /**< group formation failed*/
} asp_connect_status_e;
+bool wfd_asp_is_asp_session(wfd_session_s *session);
void wfd_asp_session_request(wfd_oem_asp_prov_s *prov_param);
void wfd_asp_session_config_request(unsigned int session_id, int get_pin, char *pin);
void wfd_asp_connect_status(unsigned char *session_mac,
#define DBUS_INTERFACE "org.freedesktop.DBus"
#define DBUS_PATH "/org/freedesktop/DBus"
#endif /* TIZEN_FEATURE_WIFI_DIRECT_ON_DEMAND */
-#if defined(TIZEN_FEATURE_ASP)
#define WFD_MANAGER_ASP_INTERFACE WFD_MANAGER_SERVICE ".asp"
-#endif
#define WFD_MANAGER_DBUS_REPLY_TIMEOUT 10 * 1000
#define WFD_MANAGER_DBUS_REPLY_TIMEOUT_SYNC 10 * 1000
WFD_WPS_MODE_PBC = 0x1,
WFD_WPS_MODE_DISPLAY = 0x2,
WFD_WPS_MODE_KEYPAD = 0x4,
-#if defined(TIZEN_FEATURE_ASP)
WFD_WPS_MODE_P2PS = 0x8,
-#endif /* TIZEN_FEATURE_ASP */
} wfd_wps_mode_e;
typedef enum {
int wfd_manager_start_discovery(wfd_manager_s *manager, int mode, int timeout,
const char* type, int channel, int frequency);
int wfd_manager_cancel_discovery(wfd_manager_s *manager);
-#if defined(TIZEN_FEATURE_ASP)
wfd_device_s *wfd_manager_get_connected_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr);
int wfd_manager_asp_connect_session(wfd_manager_s *manager, void *params);
int wfd_manager_asp_confirm_session(wfd_manager_s *manager, void *params, int confirmed);
-#endif /* TIZEN_FEATURE_ASP */
#ifdef TIZEN_FEATURE_WIFI_DIRECT_ON_DEMAND
void wfd_manager_free_active_client_list(void);
void wfd_manager_add_active_client(const char *client_id);
SESSION_TYPE_INVITE,
SESSION_TYPE_JOIN,
SESSION_TYPE_MULTI,
-#if defined(TIZEN_FEATURE_ASP)
SESSION_TYPE_ASP,
-#endif /* TIZEN_FEATURE_ASP */
} session_type_e;
typedef enum {
int go_intent;
int freq;
char wps_pin[PINSTR_LEN+1];
-#if defined(TIZEN_FEATURE_ASP)
unsigned int session_id;
unsigned char service_mac[MACADDR_LEN];
unsigned char session_mac[MACADDR_LEN];
-#endif /* TIZEN_FEATURE_ASP */
} wfd_session_s;
wfd_session_s *wfd_create_session(void *data, unsigned char *peer_addr, int wps_mode, int direction);
int wfd_session_timer(wfd_session_s *session, int start);
int wfd_session_process_event(wfd_manager_s *manager, wfd_oem_event_s *event);
-#if defined(TIZEN_FEATURE_ASP)
int wfd_session_asp_session_start(wfd_session_s *session, wfd_oem_asp_prov_s *params);
int wfd_session_asp_connect(wfd_session_s *session, int role);
int wfd_session_asp_persistent_connect(wfd_session_s *session, int persist_group_id);
-#endif /* TIZEN_FEATURE_ASP */
#endif /* __WIFI_DIRECT_SESSION_H__ */
return ops->refresh();
}
-#if defined(TIZEN_FEATURE_ASP)
+
int wfd_oem_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service, int replace)
{
if (!ops || !ops->advertise_service)
return ops->asp_prov_disc_req(params);
}
-#endif /* TIZEN_FEATURE_ASP */
int wfd_oem_add_vsie(wfd_oem_ops_s *ops, wfd_oem_vsie_frames_e frame_id,
const char* vsie)
#define OEM_QUERY_ID_LEN 15
#define OEM_SERVICE_MAX_LEN 1024
-#if defined(TIZEN_FEATURE_ASP)
/* Referring to Wi-Fi Peer-to-Peer Services Technical Specification v1.1
* The default P2Ps PIN is 12345670. Any device decided to be GO will use
* that as device password
*/
#define OEM_DEFAULT_P2PS_PIN "12345670"
-#endif /* TIZEN_FEATURE_ASP */
#define OEM_MAX_PEER_NUM 8
WFD_OEM_SC_FAIL_BOTH_GO_INTENT_15 = 9,
WFD_OEM_SC_FAIL_INCOMPATIBLE_PROV_METHOD = 10,
WFD_OEM_SC_FAIL_REJECTED_BY_USER = 11,
-#if defined(TIZEN_FEATURE_ASP)
WFD_OEM_SC_SUCCESS_ACCEPTED_BY_USER = 12,
-#endif /* TIZEN_FEATURE_ASP */
} wfd_oem_status_code_e;
typedef enum {
WFD_OEM_WPA_STATE_MAX,
} ws_wpa_state_type_e;
-#if defined(TIZEN_FEATURE_ASP)
typedef enum {
WFD_OEM_ASP_WPS_TYPE_NONE = 0x00, /**< No WPS type */
WFD_OEM_ASP_WPS_TYPE_DEFAULT = 0x00, /**< Default WPS type both P2PS and PIN */
WFD_OEM_ASP_SESSION_ROLE_CLIENT = 0x02, /**< Session network role client */
WFD_OEM_ASP_SESSION_ROLE_GO = 0x04, /**< Session network role GO */
} wfd_oem_asp_network_role_e;
-#endif /* TIZEN_FEATURE_ASP */
typedef enum {
WFD_OEM_EVENT_NONE,
WFD_OEM_EVENT_GROUP_FORMATION_FAILURE,
WFD_OEM_EVENT_INVITATION_ACCEPTED,
-#if defined(TIZEN_FEATURE_ASP)
+
WFD_OEM_EVENT_ASP_SERV_RESP,
WFD_OEM_EVENT_ASP_PROV_START,
WFD_OEM_EVENT_ASP_PROV_DONE,
-#endif /* TIZEN_FEATURE_ASP */
WFD_OEM_EVENT_MAX,
} wfd_oem_event_e;
int max_tput;
} wfd_oem_display_s;
-#if defined(TIZEN_FEATURE_ASP)
typedef struct {
unsigned int adv_id;
unsigned int config_method;
unsigned char instance_name_length;
char *instance_name;
} wfd_oem_advertise_service_s;
-#endif /* TIZEN_FEATURE_ASP */
typedef struct {
int age;
int device_go_intent;
wfd_oem_display_s display;
unsigned char p2p_go_addr[OEM_MACADDR_LEN];
-#if defined(TIZEN_FEATURE_ASP)
int has_asp_services;
int has_asp2_services;
-#endif /* TIZEN_FEATURE_ASP */
int rssi;
} wfd_oem_dev_data_s;
unsigned char ip_addr_peer[OEM_IPADDR_LEN];
int edata_type;
void *edata;
-#if defined(TIZEN_FEATURE_ASP)
void *asp_services;
void *asp2_services;
-#endif /* TIZEN_FEATURE_ASP */
} wfd_oem_event_s;
typedef enum {
WFD_OEM_EDATA_TYPE_GROUP,
WFD_OEM_EDATA_TYPE_SERVICE,
WFD_OEM_EDATA_TYPE_NEW_SERVICE,
-#if defined(TIZEN_FEATURE_ASP)
WFD_OEM_EDATA_TYPE_ASP_SERVICE,
WFD_OEM_EDATA_TYPE_ASP_PROV,
-#endif /* TIZEN_FEATURE_ASP */
} ws_event_type_e;
typedef enum {
WFD_OEM_WPS_MODE_PBC = 0x1,
WFD_OEM_WPS_MODE_DISPLAY = 0x2,
WFD_OEM_WPS_MODE_KEYPAD = 0x4,
-#if defined(TIZEN_FEATURE_ASP)
WFD_OEM_WPS_MODE_P2PS = 0x8,
-#endif /* TIZEN_FEATURE_ASP */
} wfd_oem_wps_mode_e;
#define WFD_OEM_GROUP_FLAG_GROUP_OWNER 0x1
int scan_type;
int freq;
int refresh;
-#if defined(TIZEN_FEATURE_ASP)
char *seek;
-#endif /* TIZEN_FEATURE_ASP */
} wfd_oem_scan_param_s;
typedef struct {
WFD_OEM_PERSISTENT_MODE_GO = 0x3,
} wfd_oem_persistent_mode_e;
-#if defined(TIZEN_FEATURE_ASP)
typedef enum {
WFD_OEM_TYPE_ADVERTISE,
WFD_OEM_TYPE_SEEK,
char wps_pin[OEM_PINSTR_LEN+1];
unsigned char ip_addr[OEM_IPADDR_LEN];
} wfd_oem_asp_prov_s;
-#endif /* TIZEN_FEATURE_ASP */
+
typedef struct {
int network_id;
char ssid[OEM_DEV_NAME_LEN + 1];
void (*group_formation_failure_cb) (wfd_oem_event_s *event);
void (*invitation_accepted_cb) (wfd_oem_event_s *event);
-#if defined(TIZEN_FEATURE_ASP)
void (*asp_serv_resp_cb) (wfd_oem_event_s *event);
void (*asp_prov_start_cb) (wfd_oem_event_s *event);
void (*asp_prov_done_cb) (wfd_oem_event_s *event);
-#endif /* TIZEN_FEATURE_ASP */
void *extra_data;
} wfd_oem_event_cbs_s;
int (*remove_all_network)(void);
int (*get_wpa_status)(int *wpa_status);
-#if defined(TIZEN_FEATURE_ASP)
int (*advertise_service)(wfd_oem_asp_service_s *service, int replace);
int (*cancel_advertise_service)(wfd_oem_asp_service_s *service);
int (*seek_service)(wfd_oem_asp_service_s *service);
int (*cancel_seek_service)(wfd_oem_asp_service_s *service);
int (*asp_prov_disc_req)(wfd_oem_asp_prov_s *params);
-#endif /* TIZEN_FEATURE_ASP */
int (*add_vsie)(wfd_oem_vsie_frames_e frame_id, const char* vsie);
int (*get_vsie)(wfd_oem_vsie_frames_e frame_id, char **vsie);
int wfd_oem_set_display(wfd_oem_ops_s *ops, wfd_oem_display_s *wifi_display);
int wfd_oem_refresh(wfd_oem_ops_s *ops);
-#if defined(TIZEN_FEATURE_ASP)
+
int wfd_oem_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service, int replace);
int wfd_oem_cancel_advertise_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
int wfd_oem_seek_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
int wfd_oem_cancel_seek_service(wfd_oem_ops_s *ops, wfd_oem_asp_service_s *service);
int wfd_oem_asp_prov_disc_req(wfd_oem_ops_s *ops, wfd_oem_asp_prov_s *params);
-#endif /* TIZEN_FEATURE_ASP */
int wfd_oem_add_vsie(wfd_oem_ops_s *ops, wfd_oem_vsie_frames_e frame_id,
const char* vsie);
Name: wifi-direct-manager
Summary: Wi-Fi Direct manger
-Version: 1.2.231
+Version: 1.2.232
Release: 1
Group: Network & Connectivity/Wireless
License: Apache-2.0
-DTIZEN_FEATURE_IP_OVER_EAPOL=1 \
-DTIZEN_DEBUG_DBUS_VALUE=1 \
-DTIZEN_PROFILE_MOBILE=1 \
- -DTIZEN_FEATURE_ASP=1 \
%if "%{?_lib}" == "lib64"
-DTIZEN_ARCH_64=1 \
%endif
-DTIZEN_FEATURE_IP_OVER_EAPOL=1 \
-DTIZEN_DEBUG_DBUS_VALUE=1 \
-DTIZEN_PROFILE_MOBILE=1 \
- -DTIZEN_FEATURE_ASP=1 \
%if "%{?_lib}" == "lib64"
-DTIZEN_ARCH_64=1 \
%endif
# define DEFAULT_LISTEN_CHANNEL 1
# define DEFAULT_OPER_REG_CLASS 81
# define DEFAULT_OPER_CHANNEL 1
-#if !defined(TIZEN_FEATURE_ASP)
-# define DEFAULT_CONFIG_METHOD "display push_button keypad"
-#else
# define DEFAULT_CONFIG_METHOD "display push_button keypad p2ps"
-#endif
# define DEFAULT_NO_GROUP_IFACE 0
#endif /* TIZEN_PROFILE_MOBILE */
#define WS_CONFIG_METHOD_DISPLAY 0x0008
#define WS_CONFIG_METHOD_PUSHBUTTON 0x0080
#define WS_CONFIG_METHOD_KEYPAD 0x0100
-#if defined(TIZEN_FEATURE_ASP)
#define WS_CONFIG_METHOD_P2PS 0x1000
-#endif /* TIZEN_FEATURE_ASP */
#define WS_DBUS_STR_PBC "pbc"
#define WS_DBUS_STR_DISPLAY "display"
#define WS_DBUS_STR_KEYPAD "keypad"
-#if defined(TIZEN_FEATURE_ASP)
#define WS_DBUS_STR_P2PS "p2ps"
-#endif /* TIZEN_FEATURE_ASP */
#define WS_DBUS_STR_JOIN "join"
#define WS_DBUS_STR_AUTH "auth"
#define WS_DBUS_STR_PERSISTENT "persistent"
* "Identity" attribute in M1. */
WS_DEV_PASSWD_ID_REGISTRAR_SPECIFIED = 0x0005, /* ENTER-PIN */
-#if defined(TIZEN_FEATURE_ASP)
WS_DEV_PASSWD_ID_P2PS = 0x0008,
-#endif /* TIZEN_FEATURE_ASP */
} ws_dev_passwd_id_e;
typedef enum {
int ws_remove_all_network(void);
int ws_get_wpa_status(int *wpa_status);
-#if defined(TIZEN_FEATURE_ASP)
int ws_advertise_service(wfd_oem_asp_service_s *service, int replace);
int ws_cancel_advertise_service(wfd_oem_asp_service_s *service);
int ws_seek_service(wfd_oem_asp_service_s *service);
int ws_cancel_seek_service(wfd_oem_asp_service_s *service);
int ws_asp_prov_disc_req(wfd_oem_asp_prov_s *asp_params);
-#endif /* TIZEN_FEATURE_ASP */
int ws_add_vsie(wfd_oem_vsie_frames_e frame_id, const char* vsie);
int ws_get_vsie(wfd_oem_vsie_frames_e frame_id, char **vsie);
#include "dbus/wfd-plugin-supplicant-dbus.h"
#include "wfd-plugin-wpasupplicant.h"
-#if defined(TIZEN_FEATURE_ASP)
#define GLIST_ITER_START(arg_list, elem)\
GList *temp = NULL;\
temp = g_list_first(arg_list);\
temp = g_list_next(temp);\
#define GLIST_ITER_END() }
-#endif
#define NETCONFIG_SERVICE "net.netconfig"
#define NETCONFIG_WIFI_INTERFACE "net.netconfig.wifi"
.remove_all_network = ws_remove_all_network,
.get_wpa_status = ws_get_wpa_status,
-#if defined(TIZEN_FEATURE_ASP)
.advertise_service = ws_advertise_service,
.cancel_advertise_service = ws_cancel_advertise_service,
.seek_service = ws_seek_service,
.cancel_seek_service = ws_cancel_seek_service,
.asp_prov_disc_req = ws_asp_prov_disc_req,
-#endif /* TIZEN_FEATURE_ASP */
.add_vsie = ws_add_vsie,
.get_vsie = ws_get_vsie,
return WS_DBUS_STR_DISPLAY;
case WFD_OEM_WPS_MODE_KEYPAD:
return WS_DBUS_STR_KEYPAD;
-#if defined(TIZEN_FEATURE_ASP)
case WFD_OEM_WPS_MODE_NONE:
case WFD_OEM_WPS_MODE_P2PS:
return WS_DBUS_STR_P2PS;
-#endif /* TIZEN_FEATURE_ASP */
default:
return "";
}
if (!ISZEROMACADDR(go_dev_addr))
peer->dev_role = WFD_OEM_DEV_ROLE_GC;
-#if defined(TIZEN_FEATURE_ASP)
} else if (g_strcmp0(key, "AdvertiseService") == 0) {
if (value != NULL && g_variant_get_size(value) != 0)
peer->has_asp_services = 1;
else
peer->has_asp2_services = 0;
-#endif /* TIZEN_FEATURE_ASP */
} else {
WDP_LOGD("Unknown value");
}
__WDP_LOG_FUNC_EXIT__;
}
-#if defined(TIZEN_FEATURE_ASP)
static void __ws_extract_serviceaspresponse_details(const char *key, GVariant *value, void *user_data)
{
__WDP_LOG_FUNC_ENTER__;
}
__WDP_LOG_FUNC_EXIT__;
}
-#endif /* TIZEN_FEATURE_ASP */
static int _ws_flush(void)
{
return 0;
}
-#if defined(TIZEN_FEATURE_ASP)
int ws_get_advertise_service(const char *peer_path, GList **asp_services)
{
__WDP_LOG_FUNC_ENTER__;
__WDP_LOG_FUNC_EXIT__;
return res;
}
-#endif /* TIZEN_FEATURE_ASP */
static void _ws_process_device_found_properties(GDBusConnection *connection,
const gchar *sender, const gchar *object_path, const gchar *interface,
g_variant_iter_free(iter);
}
-#if defined(TIZEN_FEATURE_ASP)
if (edata->has_asp_services)
ws_get_advertise_service(peer_path, (GList **)&(event.asp_services));
if (edata->has_asp2_services)
ws_get_advertise_asp_service(peer_path, (GList **)&(event.asp2_services));
-#endif /* TIZEN_FEATURE_ASP */
if (g_pd->callback->peer_found_cb)
g_pd->callback->peer_found_cb(&event);
-#if defined(TIZEN_FEATURE_ASP)
if (event.asp_services != NULL) {
GList *l;
wfd_oem_advertise_service_s *service;
g_free(service);
}
}
-#endif /* TIZEN_FEATURE_ASP */
g_free(event.edata);
__WDP_LOG_FUNC_EXIT__;
__WDP_LOG_FUNC_EXIT__;
}
-#if defined(TIZEN_FEATURE_ASP)
static void _ws_process_prov_disc_failure(GDBusConnection *connection,
const gchar *sender, const gchar *object_path, const gchar *interface,
const gchar *signal, GVariant *parameters, gpointer user_data)
__WDP_LOG_FUNC_EXIT__;
}
-#else
-static void _ws_process_prov_disc_failure(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',};
- static unsigned char peer_dev[OEM_MACSTR_LEN] = {'\0',};
- const char *path = NULL;
- 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;
- event.event_id = WFD_OEM_EVENT_PROV_DISC_FAIL;
-
- g_variant_get(parameters, "(&oi)", &path, &prov_status);
- g_strlcpy(peer_path, path, DBUS_OBJECT_PATH_MAX);
- WDP_LOGD("Retrive Added path [%s]", peer_path);
- WDP_LOGD("Retrive Failure stateus [%d]", prov_status);
-
- loc = strrchr(peer_path, '/');
- if (loc != NULL)
- __ws_mac_compact_to_normal(loc + 1, peer_dev);
- __ws_txt_to_mac(peer_dev, event.dev_addr);
- WDP_LOGE("peer mac [" MACSTR "]", MAC2STR(event.dev_addr));
-
- if (g_pd->callback->prov_disc_fail_cb)
- g_pd->callback->prov_disc_fail_cb(&event);
-
- __WDP_LOG_FUNC_EXIT__;
-}
-#endif /* TIZEN_FEATURE_ASP */
-
static void _ws_process_group_started(GDBusConnection *connection,
const gchar *sender, const gchar *object_path, const gchar *interface,
__WDP_LOG_FUNC_EXIT__;
}
-#if defined(TIZEN_FEATURE_ASP)
static void _ws_process_service_asp_response(GDBusConnection *connection,
const gchar *sender, const gchar *object_path, const gchar *interface,
const gchar *signal, GVariant *parameters, gpointer user_data)
__WDP_LOG_FUNC_EXIT__;
}
-#endif /* TIZEN_FEATURE_ASP */
static void _ws_process_persistent_group_added(GDBusConnection *connection,
const gchar *sender, const gchar *object_path, const gchar *interface,
__WDP_LOG_FUNC_EXIT__;
}
-#if defined(TIZEN_FEATURE_ASP)
static void _ws_process_asp_provision_start(GDBusConnection *connection,
const gchar *sender, const gchar *object_path, const gchar *interface,
const gchar *signal, GVariant *parameters, gpointer user_data)
__WDP_LOG_FUNC_EXIT__;
}
-#endif /* TIZEN_FEATURE_ASP */
static struct {
int sub_id;
"ServiceDiscoveryResponse",
_ws_process_service_discovery_response
},
-#if defined(TIZEN_FEATURE_ASP)
{
0,
SUPPLICANT_P2PDEVICE,
"ASPProvisionDone",
_ws_process_asp_provision_done
},
-#endif /* TIZEN_FEATURE_ASP */
{
0,
SUPPLICANT_P2PDEVICE,
int ws_deactivate(int concurrent)
{
__WDP_LOG_FUNC_ENTER__;
-#if defined(TIZEN_FEATURE_ASP)
wfd_oem_asp_service_s *data = NULL;
-#endif /* TIZEN_FEATURE_ASP */
int res = 0;
if (!g_pd) {
}
g_pd->activated = FALSE;
-#if defined(TIZEN_FEATURE_ASP)
GLIST_ITER_START(seek_list, data)
if (data) {
}
GLIST_ITER_END()
-#endif /* TIZEN_FEATURE_ASP */
__WDP_LOG_FUNC_EXIT__;
return 0;
}
}
#endif
-#if defined(TIZEN_FEATURE_ASP)
static void __ws_add_seek_params(GVariantBuilder *builder)
{
GVariantBuilder *outter = NULL;
return;
}
-#endif /* TIZEN_FEATURE_ASP */
int ws_start_scan(wfd_oem_scan_param_s *param)
{
if (param->scan_type == WFD_OEM_SCAN_TYPE_SOCIAL)
g_variant_builder_add(builder, "{sv}", "DiscoveryType",
g_variant_new_string("social"));
-#if defined(TIZEN_FEATURE_ASP)
if (seek_list != NULL)
__ws_add_seek_params(builder);
-#endif /* TIZEN_FEATURE_ASP */
value = g_variant_new("(a{sv})", builder);
g_variant_builder_unref(builder);
return 0;
}
-#if defined(TIZEN_FEATURE_ASP)
int ws_advertise_service(wfd_oem_asp_service_s *service, int replace)
{
__WDP_LOG_FUNC_ENTER__;
__WDP_LOG_FUNC_EXIT__;
return res;
}
-#endif /* TIZEN_FEATURE_ASP */
int ws_add_vsie(wfd_oem_vsie_frames_e frame_id, const char* vsie)
{
int ws_remove_all_network(void);
int ws_get_wpa_status(int *wpa_status);
-#if defined(TIZEN_FEATURE_ASP)
int ws_advertise_service(wfd_oem_asp_service_s *service, int replace);
int ws_cancel_advertise_service(wfd_oem_asp_service_s *service);
int ws_seek_service(wfd_oem_asp_service_s *service);
int ws_cancel_seek_service(wfd_oem_asp_service_s *service);
int ws_asp_prov_disc_req(wfd_oem_asp_prov_s *asp_params);
-#endif /* TIZEN_FEATURE_ASP */
int ws_add_vsie(wfd_oem_vsie_frames_e frame_id, const char* vsie);
int ws_get_vsie(wfd_oem_vsie_frames_e frame_id, char **vsie);
.remove_all_network = ws_remove_all_network,
.get_wpa_status = ws_get_wpa_status,
-#if defined(TIZEN_FEATURE_ASP)
.advertise_service = ws_advertise_service,
.cancel_advertise_service = ws_cancel_advertise_service,
.seek_service = ws_seek_service,
.cancel_seek_service = ws_cancel_seek_service,
.asp_prov_disc_req = ws_asp_prov_disc_req,
-#endif /* TIZEN_FEATURE_ASP */
.add_vsie = ws_add_vsie,
.get_vsie = ws_get_vsie,
return -1;
}
-#if defined(TIZEN_FEATURE_ASP)
int ws_advertise_service(wfd_oem_asp_service_s *service, int replace)
{
__WDP_LOG_FUNC_ENTER__;
__WDP_LOG_FUNC_EXIT__;
return -1;
}
-#endif /* TIZEN_FEATURE_ASP */
int ws_add_vsie(wfd_oem_vsie_frames_e frame_id, const char* vsie)
{
#include "wifi-direct-manager.h"
#include "wifi-direct-oem.h"
#include "wifi-direct-util.h"
+#include "wifi-direct-session.h"
#include "wifi-direct-asp.h"
+bool wfd_asp_is_asp_session(wfd_session_s *session)
+{
+ wfd_manager_s * manager = wfd_get_manager();
+ if (!manager || !session)
+ return false;
+
+ return manager->is_asp_supported && !ISZEROMACADDR(session->session_mac);
+}
+
void wfd_asp_session_request(wfd_oem_asp_prov_s *prov_param)
{
GVariantBuilder *builder = NULL;
#include "wifi-direct-error.h"
#include "wifi-direct-log.h"
#include "wifi-direct-dbus.h"
-#if defined(TIZEN_FEATURE_ASP)
#include "wifi-direct-asp.h"
-#endif /* TIZEN_FEATURE_ASP */
static int _wfd_event_update_peer(wfd_manager_s *manager, wfd_oem_dev_data_s *data)
{
g_variant_new("(s)", peer_mac_address));
}
-#if defined(TIZEN_FEATURE_ASP)
+ if (manager->is_asp_supported) {
+ GList *list;
+ GVariantBuilder *builder = NULL;
+ GVariant *params = NULL;
+ wfd_oem_advertise_service_s *service;
+
+ for (list = (GList *)event->asp_services; list != NULL; list = list->next) {
+ service = (wfd_oem_advertise_service_s *)list->data;
+
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+ g_variant_builder_add(builder, "{sv}", "search_id", g_variant_new("t", service->search_id));
+ g_variant_builder_add(builder, "{sv}", "service_mac", g_variant_new("s", peer_mac_address));
+ g_variant_builder_add(builder, "{sv}", "device_name", g_variant_new("s", edata->name));
+ g_variant_builder_add(builder, "{sv}", "advertisement_id", g_variant_new("u", service->adv_id));
+ g_variant_builder_add(builder, "{sv}", "config_method", g_variant_new("u", service->config_method));
+ if (service->service_type)
+ g_variant_builder_add(builder, "{sv}", "service_type", g_variant_new("s", service->service_type));
+ params = g_variant_new("(a{sv})", builder);
+ g_variant_builder_unref(builder);
+
+ wfd_manager_dbus_emit_signal(WFD_MANAGER_ASP_INTERFACE,
+ "SearchResult",
+ params);
+ }
- GList *list;
- GVariantBuilder *builder = NULL;
- GVariant *params = NULL;
- wfd_oem_advertise_service_s *service;
-
- for (list = (GList *)event->asp_services; list != NULL; list = list->next) {
- service = (wfd_oem_advertise_service_s *)list->data;
-
- builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
- g_variant_builder_add(builder, "{sv}", "search_id", g_variant_new("t", service->search_id));
- g_variant_builder_add(builder, "{sv}", "service_mac", g_variant_new("s", peer_mac_address));
- g_variant_builder_add(builder, "{sv}", "device_name", g_variant_new("s", edata->name));
- g_variant_builder_add(builder, "{sv}", "advertisement_id", g_variant_new("u", service->adv_id));
- g_variant_builder_add(builder, "{sv}", "config_method", g_variant_new("u", service->config_method));
- if (service->service_type)
- g_variant_builder_add(builder, "{sv}", "service_type", g_variant_new("s", service->service_type));
- params = g_variant_new("(a{sv})", builder);
- g_variant_builder_unref(builder);
-
- wfd_manager_dbus_emit_signal(WFD_MANAGER_ASP_INTERFACE,
- "SearchResult",
- params);
- }
-
- for (list = (GList *)event->asp2_services; list != NULL; list = list->next) {
- service = (wfd_oem_advertise_service_s *)list->data;
-
- builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
- g_variant_builder_add(builder, "{sv}", "search_id", g_variant_new("t", service->search_id));
- g_variant_builder_add(builder, "{sv}", "service_mac", g_variant_new("s", peer_mac_address));
- g_variant_builder_add(builder, "{sv}", "device_name", g_variant_new("s", edata->name));
- g_variant_builder_add(builder, "{sv}", "advertisement_id", g_variant_new("u", service->adv_id));
- g_variant_builder_add(builder, "{sv}", "config_method", g_variant_new("u", service->config_method));
- if (service->service_type)
- g_variant_builder_add(builder, "{sv}", "service_type", g_variant_new("s", service->service_type));
- if (service->instance_name)
- g_variant_builder_add(builder, "{sv}", "instance_name", g_variant_new("s", service->instance_name));
- params = g_variant_new("(a{sv})", builder);
- g_variant_builder_unref(builder);
-
- wfd_manager_dbus_emit_signal(WFD_MANAGER_ASP_INTERFACE,
- "SearchResult",
- params);
+ for (list = (GList *)event->asp2_services; list != NULL; list = list->next) {
+ service = (wfd_oem_advertise_service_s *)list->data;
+
+ builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+ g_variant_builder_add(builder, "{sv}", "search_id", g_variant_new("t", service->search_id));
+ g_variant_builder_add(builder, "{sv}", "service_mac", g_variant_new("s", peer_mac_address));
+ g_variant_builder_add(builder, "{sv}", "device_name", g_variant_new("s", edata->name));
+ g_variant_builder_add(builder, "{sv}", "advertisement_id", g_variant_new("u", service->adv_id));
+ g_variant_builder_add(builder, "{sv}", "config_method", g_variant_new("u", service->config_method));
+ if (service->service_type)
+ g_variant_builder_add(builder, "{sv}", "service_type", g_variant_new("s", service->service_type));
+ if (service->instance_name)
+ g_variant_builder_add(builder, "{sv}", "instance_name", g_variant_new("s", service->instance_name));
+ params = g_variant_new("(a{sv})", builder);
+ g_variant_builder_unref(builder);
+
+ wfd_manager_dbus_emit_signal(WFD_MANAGER_ASP_INTERFACE,
+ "SearchResult",
+ params);
+ }
}
-#endif
__WDS_LOG_FUNC_EXIT__;
return;
}
return;
}
+static bool __asp_prov_disc_deferred(wfd_session_s *session, void *event_data)
+{
+ wfd_oem_asp_prov_s *prov_params = (wfd_oem_asp_prov_s *)event_data;
+ bool is_deferred = false;
+
+ if (prov_params && !ISZEROMACADDR(session->session_mac)) {
+ /* This connection is for ASP session */
+ if (prov_params->status == WFD_OEM_SC_FAIL_INVALID_PARAMS) {
+ WDS_LOGD("ASP prov disc deferred. wait response.");
+ wfd_asp_connect_status(session->session_mac,
+ session->session_id,
+ ASP_CONNECT_STATUS_REQUEST_DEFERRED,
+ NULL);
+ is_deferred = true;
+ }
+ }
+ __WDS_LOG_FUNC_EXIT__;
+ return is_deferred;
+}
+
void wfd_event_prov_disc_fail(wfd_oem_event_s *event)
{
__WDS_LOG_FUNC_ENTER__;
wfd_session_s *session = NULL;
unsigned char *peer_addr = NULL;
char peer_mac_address[MACSTR_LEN+1] = {0, };
-#if defined(TIZEN_FEATURE_ASP)
- wfd_oem_asp_prov_s *prov_params = NULL;
- prov_params = (wfd_oem_asp_prov_s *)event->edata;
-#endif
session = (wfd_session_s*) manager->session;
if (!session) {
__WDS_LOG_FUNC_EXIT__;
return;
}
-#if defined(TIZEN_FEATURE_ASP)
- if (!ISZEROMACADDR(session->session_mac)) {
- /* This connection is for ASP session */
- if (prov_params->status == WFD_OEM_SC_FAIL_INVALID_PARAMS) {
- wfd_oem_scan_param_s param;
- WDS_LOGD("ASP prov disc deferred. wait response.");
- wfd_asp_connect_status(session->session_mac,
- session->session_id,
- ASP_CONNECT_STATUS_REQUEST_DEFERRED,
- NULL);
+ if (manager->is_asp_supported) {
+ if (__asp_prov_disc_deferred(session, event->edata)) {
/* start listen to wait for provision discovery request from peer */
+ wfd_oem_scan_param_s param;
memset(¶m, 0x0, sizeof(wfd_oem_scan_param_s));
param.scan_mode = WFD_OEM_SCAN_MODE_PASSIVE;
wfd_oem_start_scan(manager->oem_ops, ¶m);
return;
}
}
-#endif
+
snprintf(peer_mac_address, MACSTR_LEN, MACSTR, MAC2STR(peer_addr));
wfd_manager_dbus_emit_signal(WFD_MANAGER_MANAGE_INTERFACE,
"Connection",
WIFI_DIRECT_ERROR_CONNECTION_FAILED,
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
- WDS_LOGD("ASP prov disc failed. remove session.");
- wfd_asp_connect_status(session->session_mac,
- session->session_id,
- ASP_CONNECT_STATUS_REQUEST_FAILED,
- NULL);
-#endif
+ if (wfd_asp_is_asp_session(session)) {
+ WDS_LOGD("ASP prov disc failed. remove session.");
+ wfd_asp_connect_status(session->session_mac,
+ session->session_id,
+ ASP_CONNECT_STATUS_REQUEST_FAILED,
+ NULL);
+ }
if (manager->local->dev_role == WFD_DEV_ROLE_GO) {
wfd_group_s *group = (wfd_group_s*) manager->group;
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
- if (!ISZEROMACADDR(session->session_mac))
+ if (wfd_asp_is_asp_session(session)) {
wfd_asp_connect_status(session->session_mac,
- session->session_id,
- ASP_CONNECT_STATUS_GROUP_FORMATION_FAILED,
- NULL);
-#endif
+ session->session_id,
+ ASP_CONNECT_STATUS_GROUP_FORMATION_FAILED,
+ NULL);
+ }
wfd_state_set(manager, WIFI_DIRECT_STATE_ACTIVATED);
wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_ACTIVATED);
WIFI_DIRECT_ERROR_CONNECTION_FAILED,
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
- if (!ISZEROMACADDR(session->session_mac))
+ if (wfd_asp_is_asp_session(session)) {
wfd_asp_connect_status(session->session_mac,
session->session_id,
ASP_CONNECT_STATUS_GROUP_FORMATION_STARTED,
NULL);
-#endif
+ }
+
if (manager->local->dev_role == WFD_DEV_ROLE_GO) {
wfd_group_s *group = (wfd_group_s*) manager->group;
if (group && !group->member_count &&
WIFI_DIRECT_ERROR_CONNECTION_FAILED,
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
- if (!ISZEROMACADDR(session->session_mac))
+ if (wfd_asp_is_asp_session(session)) {
wfd_asp_connect_status(session->session_mac,
session->session_id,
ASP_CONNECT_STATUS_GROUP_FORMATION_STARTED,
NULL);
-#endif
+ }
+
if (manager->local->dev_role == WFD_DEV_ROLE_GO) {
wfd_group_s *group = (wfd_group_s*) manager->group;
if (group && !group->member_count &&
g_variant_new("(iis)", WIFI_DIRECT_ERROR_NONE,
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
- if (!ISZEROMACADDR(session->session_mac)) {
- wfd_asp_connect_status(session->session_mac,
- session->session_id,
- ASP_CONNECT_STATUS_GROUP_FORMATION_COMPLETED,
- NULL);
- wfd_asp_session_peer_ip(session->session_mac, session->session_id,
- session->service_mac, peer->ip_addr);
- }
-#endif
+ if (wfd_asp_is_asp_session(session)) {
+ wfd_asp_connect_status(session->session_mac,
+ session->session_id,
+ ASP_CONNECT_STATUS_GROUP_FORMATION_COMPLETED,
+ NULL);
+ wfd_asp_session_peer_ip(session->session_mac, session->session_id,
+ session->service_mac, peer->ip_addr);
+ }
wfd_state_set(manager, WIFI_DIRECT_STATE_CONNECTED);
wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_CONNECTED);
g_variant_new("(iis)", WIFI_DIRECT_ERROR_CONNECTION_FAILED,
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
wfd_session_s *session = manager->session;
- if (!ISZEROMACADDR(session->session_mac))
+ if (wfd_asp_is_asp_session(session)) {
wfd_asp_connect_status(session->session_mac,
session->session_id,
ASP_CONNECT_STATUS_GROUP_FORMATION_FAILED,
NULL);
-#endif
+ }
} else if (manager->state >= WIFI_DIRECT_STATE_CONNECTED) {
if (manager->local->dev_role != WFD_DEV_ROLE_GO) {
wfd_manager_dbus_emit_signal(WFD_MANAGER_MANAGE_INTERFACE,
"PeerIPAssigned",
g_variant_new("(ss)", peer_mac_address,
assigned_ip_address));
-#if defined(TIZEN_FEATURE_ASP)
- if (!ISZEROMACADDR(session->session_mac)) {
- wfd_asp_connect_status(session->session_mac,
- session->session_id,
- ASP_CONNECT_STATUS_GROUP_FORMATION_COMPLETED,
- NULL);
+ if (wfd_asp_is_asp_session(session)) {
+ wfd_asp_connect_status(session->session_mac,
+ session->session_id,
+ ASP_CONNECT_STATUS_GROUP_FORMATION_COMPLETED,
+ NULL);
- wfd_asp_session_peer_ip(session->session_mac, session->session_id,
- session->service_mac, peer->ip_addr);
- }
-#endif
+ wfd_asp_session_peer_ip(session->session_mac, session->session_id,
+ session->service_mac, peer->ip_addr);
+ }
} else
#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
wfd_util_dhcps_wait_ip_leased(peer);
g_variant_new("(iis)", WIFI_DIRECT_ERROR_CONNECTION_FAILED,
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
wfd_session_s *session = manager->session;
- if (session && !ISZEROMACADDR(session->session_mac))
+ if (wfd_asp_is_asp_session(session)) {
wfd_asp_connect_status(session->session_mac,
session->session_id,
ASP_CONNECT_STATUS_GROUP_FORMATION_FAILED,
NULL);
-#endif
+ }
} else {
WDS_LOGE("Unexpected Peer State. Ignore it");
__WDS_LOG_FUNC_EXIT__;
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
- if (!ISZEROMACADDR(session->session_mac))
+ if (wfd_asp_is_asp_session(session)) {
wfd_asp_connect_status(session->session_mac,
session->session_id,
ASP_CONNECT_STATUS_GROUP_FORMATION_FAILED,
NULL);
-#endif
+ }
wfd_state_set(manager, WIFI_DIRECT_STATE_ACTIVATED);
wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_ACTIVATED);
}
-#if defined(TIZEN_FEATURE_ASP)
void wfd_event_asp_serv_resp(wfd_oem_event_s *event)
{
__WDS_LOG_FUNC_ENTER__;
+ wfd_manager_s *manager = wfd_get_manager();
wfd_oem_asp_service_s *service = NULL;
GVariantBuilder *builder = NULL;
GVariant *params = NULL;
+ if (manager && !manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+ }
+
service = (wfd_oem_asp_service_s *)event->edata;
if (service == NULL) {
WDS_LOGE("P2P service found event has NULL information");
__WDS_LOG_FUNC_EXIT__;
return res;
}
+
void wfd_event_asp_prov_start(wfd_oem_event_s *event)
{
__WDS_LOG_FUNC_ENTER__;
wfd_oem_asp_prov_s *prov_params = NULL;
int res = 0;
- if (event == NULL || event->edata == NULL) {
+ if (manager == NULL || event == NULL || event->edata == NULL) {
WDS_LOGE("Invalid parameter");
__WDS_LOG_FUNC_EXIT__;
return;
}
+ if (!manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+ }
+
prov_params = (wfd_oem_asp_prov_s *)event->edata;
res = __wfd_handle_asp_prov(manager, event);
session = (wfd_session_s *)manager->session;
wfd_oem_asp_prov_s *prov_params;
int res = 0;
- if (event == NULL || event->edata == NULL) {
+ if (manager == NULL || event == NULL || event->edata == NULL) {
WDS_LOGE("Invalid parameter");
__WDS_LOG_FUNC_EXIT__;
return;
}
+ if (!manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+ }
+
prov_params = (wfd_oem_asp_prov_s *)event->edata;
/* Incomming Session, auto_accept = TRUE emit request Received */
/* generate SessionConfigRequest if event->wps_mode is not P2PS and return*/
__WDS_LOG_FUNC_EXIT__;
return;
}
-#endif /* TIZEN_FEATURE_ASP */
void wfd_event_init(wfd_oem_event_cbs_s *event_cbs)
{
event_cbs->group_formation_failure_cb = wfd_event_group_formation_failure;
event_cbs->invitation_accepted_cb = wfd_event_invitation_accepted;
-#if defined(TIZEN_FEATURE_ASP)
event_cbs->asp_serv_resp_cb = wfd_event_asp_serv_resp;
event_cbs->asp_prov_start_cb = wfd_event_asp_prov_start;
event_cbs->asp_prov_done_cb = wfd_event_asp_prov_done;
-#endif /* TIZEN_FEATURE_ASP */
event_cbs->extra_data = NULL;
#include "wifi-direct-state.h"
#include <vconf.h>
#include "wifi-direct-service.h"
-#ifdef TIZEN_FEATURE_ASP
#include "wifi-direct-asp.h"
-#endif /* TIZEN_FEATURE_ASP */
#define WFD_DBUS_REPLY_ERROR_NONE(invocation) \
g_dbus_method_invocation_return_value((invocation), g_variant_new("(i)", WIFI_DIRECT_ERROR_NONE))
"<arg type='i' name='result' direction='out'/>"
"</method>"
"</interface>"
-#if defined(TIZEN_FEATURE_ASP)
"<interface name='net.wifidirect.asp'>"
"<method name='AdvertiseService'>"
"<arg type='a{sv}' name='parameters' direction='in'/>"
"<arg type='a{sv}' name='parameters'/>"
"</signal>"
"</interface>"
-#endif
"</node>"
};
+static bool __is_discovery_available(wfd_manager_s *manager)
+{
+ return manager->state != WIFI_DIRECT_STATE_ACTIVATED &&
+ manager->state != WIFI_DIRECT_STATE_DISCOVERING &&
+ manager->state != WIFI_DIRECT_STATE_GROUP_OWNER;
+}
static void __wfd_manager_manage_iface_handler(const gchar *method_name,
GVariant *parameters,
}
g_variant_iter_free(iter);
- if (manager->state != WIFI_DIRECT_STATE_ACTIVATED &&
- manager->state != WIFI_DIRECT_STATE_DISCOVERING &&
- manager->state != WIFI_DIRECT_STATE_GROUP_OWNER) {
+ if (__is_discovery_available(manager)) {
WDS_LOGE("Wi-Fi Direct is not available status for scanning.");
ret = WIFI_DIRECT_ERROR_NOT_PERMITTED;
goto failed;
const char *peer_mac_address = NULL;
unsigned char mac_addr[MACADDR_LEN] = {0, };
- if (manager->state != WIFI_DIRECT_STATE_ACTIVATED &&
- manager->state != WIFI_DIRECT_STATE_DISCOVERING &&
- manager->state != WIFI_DIRECT_STATE_GROUP_OWNER) {
+ if (__is_discovery_available(manager)) {
ret = WIFI_DIRECT_ERROR_NOT_PERMITTED;
goto failed;
}
"IsWfdDevice",
g_variant_new_boolean(peer->is_wfd_device));
-#ifdef TIZEN_FEATURE_ASP
wfd_device_s *connected_peer = NULL;
connected_peer = wfd_group_find_member_by_addr(manager->group, mac_addr);
if (connected_peer) {
"IPAddress",
wfd_manager_dbus_pack_ay(connected_peer->ip_addr, IPADDR_LEN));
}
-#endif /* TIZEN_FEATURE_ASP */
ret = WIFI_DIRECT_ERROR_NONE;
return_parameters = g_variant_new("(ia{sv})", ret, builder_peer);
g_clear_error(&err);
return;
}
-#if defined(TIZEN_FEATURE_ASP)
static void __g_variant_to_txt_record(GVariant *variant, char **txt_record)
{
return;
}
+static void __get_asp_advertise_params(GVariantIter *iter, wfd_oem_asp_service_s *service, int *replace)
+{
+ gchar *key = NULL;
+ GVariant *var = NULL;
+
+ while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
+ if (!g_strcmp0(key, "adv_id"))
+ g_variant_get(var, "u", &(service->adv_id));
+ else if (!g_strcmp0(key, "discovery_tech"))
+ g_variant_get(var, "i", &(service->discovery_tech));
+ else if (!g_strcmp0(key, "preferred_connection"))
+ g_variant_get(var, "y", &(service->preferred_connection));
+ else if (!g_strcmp0(key, "auto_accept"))
+ g_variant_get(var, "i", &(service->auto_accept));
+ else if (!g_strcmp0(key, "status"))
+ g_variant_get(var, "y", &(service->status));
+ else if (!g_strcmp0(key, "role"))
+ g_variant_get(var, "y", &(service->role));
+ else if (!g_strcmp0(key, "replace"))
+ g_variant_get(var, "i", replace);
+ else if (!g_strcmp0(key, "config_method"))
+ g_variant_get(var, "u", &(service->config_method));
+ else if (!g_strcmp0(key, "instance_name"))
+ g_variant_get(var, "&s", &(service->instance_name));
+ else if (!g_strcmp0(key, "service_type"))
+ g_variant_get(var, "&s", &(service->service_type));
+ else if (!g_strcmp0(key, "service_info"))
+ __g_variant_to_txt_record(var, &(service->service_info));
+ else if (!g_strcmp0(key, "rsp_info"))
+ g_variant_get(var, "&s", &(service->rsp_info));
+ else
+ ;/* Do Nothing */
+ }
+ return;
+}
+
+
+static void __get_asp_seek_params(GVariantIter *iter, wfd_oem_asp_service_s *service)
+{
+ gchar *key = NULL;
+ GVariant *var = NULL;
+
+ while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
+ if (!g_strcmp0(key, "discovery_tech"))
+ g_variant_get(var, "i", &(service->discovery_tech));
+ else if (!g_strcmp0(key, "search_id"))
+ g_variant_get(var, "t", &(service->asp_search_id));
+ else if (!g_strcmp0(key, "preferred_connection"))
+ g_variant_get(var, "y", &(service->preferred_connection));
+ else if (!g_strcmp0(key, "service_type"))
+ g_variant_get(var, "&s", &(service->service_type));
+ else if (!g_strcmp0(key, "service_info"))
+ __g_variant_to_seek_info(var, &(service->service_info));
+ else
+ ;/* Do Nothing */
+ }
+ return;
+}
+
+static void __get_asp_connect_params(GVariantIter *iter, wfd_oem_asp_prov_s *prov_params)
+{
+ gchar *key = NULL;
+ GVariant *var = NULL;
+ const char *mac_str = NULL;
+ unsigned char role = 0;
+ unsigned int config = 0;
+
+ while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
+
+ if (!g_strcmp0(key, "service_mac")) {
+ g_variant_get(var, "&s", &mac_str);
+ if (mac_str == NULL)
+ memset(prov_params->session_mac, 0, sizeof(prov_params->service_mac));
+ else
+ macaddr_atoe(mac_str, prov_params->service_mac);
+ } else if (!g_strcmp0(key, "adv_id")) {
+ g_variant_get(var, "u", &(prov_params->adv_id));
+ } else if (!g_strcmp0(key, "session_mac")) {
+ g_variant_get(var, "&s", &mac_str);
+ if (mac_str == NULL)
+ memset(prov_params->session_mac, 0, sizeof(prov_params->session_mac));
+ else
+ macaddr_atoe(mac_str, prov_params->session_mac);
+ } else if (!g_strcmp0(key, "session_id")) {
+ g_variant_get(var, "u", &(prov_params->session_id));
+ } else if (!g_strcmp0(key, "role")) {
+ g_variant_get(var, "y", &(role));
+ prov_params->network_role = (int)role;
+ } else if (!g_strcmp0(key, "config_method")) {
+ g_variant_get(var, "u", &(config));
+ prov_params->network_config = (int)config;
+ } else if (!g_strcmp0(key, "session_info")) {
+ g_variant_get(var, "&s", &(prov_params->session_information));
+ } else {
+ ;/* Do Nothing */
+ }
+ }
+
+ return;
+}
+
+
+static void __get_asp_confirm_params(GVariantIter *iter, wfd_oem_asp_prov_s *prov_params, int *confirmed)
+{
+ gchar *key = NULL;
+ GVariant *var = NULL;
+ const char *mac_str = NULL;
+ const char *pin = NULL;
+
+ while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
+
+ if (!g_strcmp0(key, "service_mac")) {
+ g_variant_get(var, "&s", &mac_str);
+ if (mac_str == NULL)
+ memset(prov_params->session_mac, 0, sizeof(prov_params->service_mac));
+ else
+ macaddr_atoe(mac_str, prov_params->service_mac);
+ } else if (!g_strcmp0(key, "adv_id")) {
+ g_variant_get(var, "u", &(prov_params->adv_id));
+ } else if (!g_strcmp0(key, "session_mac")) {
+ g_variant_get(var, "&s", &mac_str);
+ if (mac_str == NULL)
+ memset(prov_params->session_mac, 0, sizeof(prov_params->session_mac));
+ else
+ macaddr_atoe(mac_str, prov_params->session_mac);
+ } else if (!g_strcmp0(key, "session_id")) {
+ g_variant_get(var, "u", &(prov_params->session_id));
+ } else if (!g_strcmp0(key, "confirm")) {
+ g_variant_get(var, "i", confirmed);
+ } else if (!g_strcmp0(key, "pin")) {
+ g_variant_get(var, "&s", &(pin));
+ g_strlcpy(prov_params->wps_pin, pin, PINSTR_LEN);
+ } else {
+ ;/* Do Nothing */
+ }
+ }
+
+ return;
+}
+
static void __wfd_manager_asp_iface_handler(const gchar *method_name,
GVariant *parameters,
GDBusMethodInvocation *invocation)
int ret = WIFI_DIRECT_ERROR_OPERATION_FAILED;
wfd_manager_s *manager = wfd_get_manager();
GVariant *return_parameters = NULL;
+ GVariantIter *iter = NULL;
GError *err = NULL;
WDS_LOGD("%s", method_name);
+ if (!manager) {
+ WDS_LOGD("manager is not initialized.");
+ ret = WIFI_DIRECT_ERROR_OPERATION_FAILED;
+ goto failed;
+ }
+
if (!g_strcmp0(method_name, "AdvertiseService")) {
wfd_oem_asp_service_s service;
- GVariantIter *iter = NULL;
- gchar *key = NULL;
- GVariant *var = NULL;
int replace = 0;
+ if (!manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ ret = WIFI_DIRECT_ERROR_NOT_SUPPORTED;
+ goto failed;
+ }
+
if (manager->state != WIFI_DIRECT_STATE_ACTIVATED &&
manager->state != WIFI_DIRECT_STATE_DISCOVERING &&
manager->state >= WIFI_DIRECT_STATE_CONNECTED) {
memset(&service, 0, sizeof(wfd_oem_asp_service_s));
g_variant_get(parameters, "(a{sv})", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
- if (!g_strcmp0(key, "adv_id"))
- g_variant_get(var, "u", &(service.adv_id));
- else if (!g_strcmp0(key, "discovery_tech"))
- g_variant_get(var, "i", &(service.discovery_tech));
- else if (!g_strcmp0(key, "preferred_connection"))
- g_variant_get(var, "y", &(service.preferred_connection));
- else if (!g_strcmp0(key, "auto_accept"))
- g_variant_get(var, "i", &(service.auto_accept));
- else if (!g_strcmp0(key, "status"))
- g_variant_get(var, "y", &(service.status));
- else if (!g_strcmp0(key, "role"))
- g_variant_get(var, "y", &(service.role));
- else if (!g_strcmp0(key, "replace"))
- g_variant_get(var, "i", &(replace));
- else if (!g_strcmp0(key, "config_method"))
- g_variant_get(var, "u", &(service.config_method));
- else if (!g_strcmp0(key, "instance_name"))
- g_variant_get(var, "&s", &(service.instance_name));
- else if (!g_strcmp0(key, "service_type"))
- g_variant_get(var, "&s", &(service.service_type));
- else if (!g_strcmp0(key, "service_info"))
- __g_variant_to_txt_record(var, &(service.service_info));
- else if (!g_strcmp0(key, "rsp_info"))
- g_variant_get(var, "&s", &(service.rsp_info));
- else
- ;/* Do Nothing */
- }
-
+ __get_asp_advertise_params(iter, &service, &replace);
ret = wfd_oem_advertise_service(manager->oem_ops, &service, replace);
if (ret < 0) {
WDS_LOGE("Failed to add service");
wfd_oem_asp_service_s service;
memset(&service, 0, sizeof(wfd_oem_asp_service_s));
+ if (!manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ ret = WIFI_DIRECT_ERROR_NOT_SUPPORTED;
+ goto failed;
+ }
+
if (manager->state < WIFI_DIRECT_STATE_ACTIVATED) {
ret = WIFI_DIRECT_ERROR_NOT_PERMITTED;
goto failed;
wfd_oem_asp_service_s service;
GVariantIter *iter = NULL;
- gchar *key = NULL;
- GVariant *var = NULL;
+
+ if (!manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ ret = WIFI_DIRECT_ERROR_NOT_SUPPORTED;
+ goto failed;
+ }
if (manager->state != WIFI_DIRECT_STATE_ACTIVATED &&
manager->state != WIFI_DIRECT_STATE_DISCOVERING &&
memset(&service, 0, sizeof(wfd_oem_asp_service_s));
g_variant_get(parameters, "(a{sv})", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
- if (!g_strcmp0(key, "discovery_tech"))
- g_variant_get(var, "i", &(service.discovery_tech));
- else if (!g_strcmp0(key, "search_id"))
- g_variant_get(var, "t", &(service.asp_search_id));
- else if (!g_strcmp0(key, "preferred_connection"))
- g_variant_get(var, "y", &(service.preferred_connection));
- else if (!g_strcmp0(key, "service_type"))
- g_variant_get(var, "&s", &(service.service_type));
- else if (!g_strcmp0(key, "service_info"))
- __g_variant_to_seek_info(var, &(service.service_info));
- else
- ;/* Do Nothing */
- }
-
+ __get_asp_seek_params(iter, &service);
ret = wfd_oem_seek_service(manager->oem_ops, &service);
if (ret < 0) {
WDS_LOGE("Failed to seek service");
wfd_oem_asp_service_s service;
memset(&service, 0, sizeof(wfd_oem_asp_service_s));
+ if (!manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ ret = WIFI_DIRECT_ERROR_NOT_SUPPORTED;
+ goto failed;
+ }
+
if (manager->state < WIFI_DIRECT_STATE_ACTIVATED) {
WDS_LOGE("Wi-Fi Direct is not activated.");
ret = WIFI_DIRECT_ERROR_NOT_PERMITTED;
} else if (!g_strcmp0(method_name, "ConnectSession")) {
GVariantIter *iter = NULL;
- gchar *key = NULL;
- GVariant *var = NULL;
wfd_oem_asp_prov_s prov_params;
- const char *mac_str = NULL;
- unsigned char role = 0;
- unsigned int config = 0;
- int status = 0;
- if (manager->state != WIFI_DIRECT_STATE_ACTIVATED &&
- manager->state != WIFI_DIRECT_STATE_DISCOVERING &&
- manager->state != WIFI_DIRECT_STATE_GROUP_OWNER) {
+ if (manager && !manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ ret = WIFI_DIRECT_ERROR_NOT_SUPPORTED;
+ goto failed;
+ }
+
+ if (__is_discovery_available(manager)) {
ret = WIFI_DIRECT_ERROR_NOT_PERMITTED;
goto failed;
}
memset(&prov_params, 0, sizeof(wfd_oem_asp_prov_s));
g_variant_get(parameters, "(a{sv})", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
-
- if (!g_strcmp0(key, "service_mac")) {
- g_variant_get(var, "&s", &mac_str);
- if (mac_str == NULL) {
- ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER;
- g_variant_iter_free(iter);
- goto failed;
- }
- macaddr_atoe(mac_str, prov_params.service_mac);
- } else if (!g_strcmp0(key, "adv_id")) {
- g_variant_get(var, "u", &(prov_params.adv_id));
- } else if (!g_strcmp0(key, "session_mac")) {
- g_variant_get(var, "&s", &mac_str);
- if (mac_str == NULL) {
- ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER;
- g_variant_iter_free(iter);
- goto failed;
- }
- macaddr_atoe(mac_str, prov_params.session_mac);
- } else if (!g_strcmp0(key, "session_id")) {
- g_variant_get(var, "u", &(prov_params.session_id));
- } else if (!g_strcmp0(key, "role")) {
- g_variant_get(var, "y", &(role));
- prov_params.network_role = (int)role;
- } else if (!g_strcmp0(key, "config_method")) {
- g_variant_get(var, "u", &(config));
- prov_params.network_config = (int)config;
- } else if (!g_strcmp0(key, "session_info")) {
- g_variant_get(var, "&s", &(prov_params.session_information));
- } else {
- ;/* Do Nothing */
- }
- }
+ __get_asp_connect_params(iter, &prov_params);
if (ISZEROMACADDR(prov_params.service_mac) ||
ISZEROMACADDR(prov_params.session_mac)) {
wfd_group_s *group = (wfd_group_s*) manager->group;
if (group && group->member_count >= manager->max_station) {
- status = ASP_CONNECT_STATUS_NOMORE_CONNECT;
wfd_asp_connect_status(prov_params.session_mac,
prov_params.session_id,
- status,
+ ASP_CONNECT_STATUS_NOMORE_CONNECT,
NULL);
g_variant_iter_free(iter);
__WDS_LOG_FUNC_EXIT__;
} else if (!g_strcmp0(method_name, "ConfirmSession")) {
GVariantIter *iter = NULL;
- gchar *key = NULL;
- GVariant *var = NULL;
wfd_oem_asp_prov_s prov_params;
- const char *mac_str = NULL;
- const char *pin = NULL;
int confirmed = 0;
+ if (manager && !manager->is_asp_supported) {
+ WDS_LOGD("ASP is not supported.");
+ ret = WIFI_DIRECT_ERROR_NOT_SUPPORTED;
+ goto failed;
+ }
+
if (manager->state != WIFI_DIRECT_STATE_CONNECTING) {
ret = WIFI_DIRECT_ERROR_NOT_PERMITTED;
goto failed;
memset(&prov_params, 0, sizeof(wfd_oem_asp_prov_s));
g_variant_get(parameters, "(a{sv})", &iter);
- while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
-
- if (!g_strcmp0(key, "service_mac")) {
- g_variant_get(var, "&s", &mac_str);
- if (mac_str == NULL) {
- ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER;
- g_variant_iter_free(iter);
- goto failed;
- }
- macaddr_atoe(mac_str, prov_params.service_mac);
- } else if (!g_strcmp0(key, "adv_id")) {
- g_variant_get(var, "u", &(prov_params.adv_id));
- } else if (!g_strcmp0(key, "session_mac")) {
- g_variant_get(var, "&s", &mac_str);
- if (mac_str == NULL) {
- ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER;
- g_variant_iter_free(iter);
- goto failed;
- }
- macaddr_atoe(mac_str, prov_params.session_mac);
- } else if (!g_strcmp0(key, "session_id")) {
- g_variant_get(var, "u", &(prov_params.session_id));
- } else if (!g_strcmp0(key, "confirm")) {
- g_variant_get(var, "i", &(confirmed));
- } else if (!g_strcmp0(key, "pin")) {
- g_variant_get(var, "&s", &(pin));
- g_strlcpy(prov_params.wps_pin, pin, PINSTR_LEN);
- } else {
- ;/* Do Nothing */
- }
- }
+ __get_asp_confirm_params(iter, &prov_params, &confirmed);
if (ISZEROMACADDR(prov_params.session_mac)) {
ret = WIFI_DIRECT_ERROR_INVALID_PARAMETER;
__WDS_LOG_FUNC_EXIT__;
return;
}
-#endif
static struct {
guint reg_id;
WFD_MANAGER_DISPLAY_INTERFACE,
__wfd_manager_display_iface_handler
},
-#if defined(TIZEN_FEATURE_ASP)
{
0,
WFD_MANAGER_ASP_INTERFACE,
__wfd_manager_asp_iface_handler
},
-#endif
{
0,
NULL,
return WIFI_DIRECT_ERROR_NONE;
}
-#if defined(TIZEN_FEATURE_ASP)
int wfd_manager_asp_connect_session(wfd_manager_s *manager, void *params)
{
__WDS_LOG_FUNC_ENTER__;
__WDS_LOG_FUNC_EXIT__;
return WIFI_DIRECT_ERROR_NONE;
}
-#endif
int wfd_manager_accept_connection(wfd_manager_s *manager, unsigned char *peer_addr)
{
return count;
}
-#ifdef TIZEN_FEATURE_ASP
wfd_device_s *wfd_manager_get_connected_peer_by_addr(wfd_manager_s *manager, unsigned char *peer_addr)
{
__WDS_LOG_FUNC_ENTER__;
__WDS_LOG_FUNC_EXIT__;
return peer;
}
-#endif /* TIZEN_FEATURE_ASP */
#if 0
wfd_device_s *wfd_manager_find_connected_peer(wfd_manager_s *manager, unsigned char *peer_addr)
#include "wifi-direct-error.h"
#include "wifi-direct-log.h"
#include "wifi-direct-dbus.h"
-#ifdef TIZEN_FEATURE_ASP
#include "wifi-direct-asp.h"
-#endif /* TIZEN_FEATURE_ASP */
static gboolean _session_timeout_cb(gpointer *user_data)
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
- if (!ISZEROMACADDR(session->session_mac)) {
+ if (wfd_asp_is_asp_session(session)) {
if (session->state < SESSION_STATE_GO_NEG)
wfd_asp_connect_status(session->session_mac,
session->session_id,
ASP_CONNECT_STATUS_GROUP_FORMATION_FAILED,
NULL);
}
-#endif
wfd_session_cancel(session, peer_addr);
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
+
+
wfd_session_s *session = manager->session;
- if (session && !ISZEROMACADDR(session->session_mac))
+ if (wfd_asp_is_asp_session(session)) {
wfd_asp_connect_status(session->session_mac,
session->session_id,
ASP_CONNECT_STATUS_GROUP_FORMATION_STARTED,
NULL);
-#endif
+ }
if (manager->local->dev_role == WFD_DEV_ROLE_GO) {
wfd_state_set(manager, WIFI_DIRECT_STATE_GROUP_OWNER);
session->wps_mode = WFD_WPS_MODE_KEYPAD;
else if (wps_mode == WFD_WPS_MODE_KEYPAD)
session->wps_mode = WFD_WPS_MODE_DISPLAY;
-#if defined(TIZEN_FEATURE_ASP)
else if (wps_mode == WFD_WPS_MODE_P2PS)
session->wps_mode = WFD_WPS_MODE_P2PS;
-#endif /* TIZEN_FEATURE_ASP */
else
session->wps_mode = wps_mode;
session->direction = direction;
return 0;
}
-#if defined(TIZEN_FEATURE_ASP)
int wfd_session_asp_session_start(wfd_session_s *session, wfd_oem_asp_prov_s *params)
{
__WDS_LOG_FUNC_ENTER__;
__WDS_LOG_FUNC_EXIT__;
return 0;
}
-#endif /* TIZEN_FEATURE_ASP */
#if 0
int wfd_session_stop(wfd_session_s *session)
return 0;
}
-#if defined(TIZEN_FEATURE_ASP)
/* In case of incomming session, when user accept connection request, this function should be called.
* In case of outgoing session, when prov_disc response arrived, this function should be called.
* Even though peer is GO, we can use this function, which can decide using join itself.
__WDS_LOG_FUNC_EXIT__;
return 0;
}
-#endif /* TIZEN_FEATURE_ASP */
wfd_device_s *wfd_session_get_peer(wfd_session_s *session)
{
}
}
break;
-#if defined(TIZEN_FEATURE_ASP)
case WFD_OEM_EVENT_ASP_PROV_START:
{
int req_wps_mode = WFD_WPS_MODE_NONE;
}
}
break;
-#endif /* TIZEN_FEATURE_ASP */
if (res < 0)
_wfd_notify_session_failed(manager, event->dev_addr);
break;
#include "wifi-direct-error.h"
#include "wifi-direct-log.h"
#include "wifi-direct-dbus.h"
-#if defined(TIZEN_FEATURE_ASP)
#include "wifi-direct-asp.h"
-#endif
#include <linux/unistd.h>
#include <asm/types.h>
WFD_EVENT_CONNECTION_RSP,
peer_mac_address));
-#if defined(TIZEN_FEATURE_ASP)
wfd_session_s *session = manager->session;
- if (session && !ISZEROMACADDR(session->session_mac))
+ if (wfd_asp_is_asp_session(session)) {
wfd_asp_connect_status(session->session_mac,
session->session_id,
ASP_CONNECT_STATUS_GROUP_FORMATION_COMPLETED,
NULL);
-#endif
+ }
wfd_state_set(manager, WIFI_DIRECT_STATE_CONNECTED);
wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_CONNECTED);