add new wireless module/gadget

this is the successor to the connman module/gadget. it does not use
or depend on econnman.
This commit is contained in:
Mike Blumenkrantz 2016-03-02 16:58:27 -05:00
parent f527e6c8fb
commit 24fe43d735
10 changed files with 3317 additions and 0 deletions

View File

@ -924,6 +924,7 @@ AC_E_OPTIONAL_MODULE([wl_weekeyboard], $have_wayland, [CHECK_MODULE_WL_WEEKEYBOA
AC_E_OPTIONAL_MODULE([policy_mobile], true)
AC_E_OPTIONAL_MODULE([geolocation], true)
AC_E_OPTIONAL_MODULE([xwayland], $have_wayland, [CHECK_MODULE_XWAYLAND])
AC_E_OPTIONAL_MODULE([wireless], true)
if test "x${HAVE_WL_X11}" != "xyes" && test "x${have_wayland}" = "xyes" && test "x${HAVE_XWAYLAND}" != "xyes"; then
AC_DEFINE_UNQUOTED([HAVE_WAYLAND_ONLY],[1],[enable wayland-only version of enlightenment])
@ -1125,6 +1126,7 @@ src/modules/tiling/module.desktop
src/modules/music-control/module.desktop
src/modules/packagekit/module.desktop
src/modules/wl_desktop_shell/module.desktop
src/modules/wireless/module.desktop
data/xsession/enlightenment.desktop
data/etc/sysactions.conf
data/units/enlightenment.service

View File

@ -1025,6 +1025,7 @@ _e_module_whitelist_check(void)
"temperature",
"tiling",
"winlist",
"wireless",
"wizard",
"wl_desktop_shell",
"wl_x11",

View File

@ -127,3 +127,5 @@ include src/modules/Makefile_wl_weekeyboard.mk
include src/modules/Makefile_policy_mobile.mk
include src/modules/Makefile_geolocation.mk
include src/modules/Makefile_wireless.mk

View File

@ -0,0 +1,27 @@
EXTRA_DIST += \
src/modules/wireless/module.desktop.in \
src/modules/wireless/e-module-wireless.edj
if USE_MODULE_WIRELESS
wirelessdir = $(MDIR)/wireless
wireless_DATA = \
src/modules/wireless/module.desktop \
src/modules/wireless/e-module-wireless.edj
wirelesspkgdir = $(MDIR)/wireless/$(MODULE_ARCH)
wirelesspkg_LTLIBRARIES = src/modules/wireless/module.la
src_modules_wireless_module_la_LDFLAGS = $(MOD_LDFLAGS)
src_modules_wireless_module_la_SOURCES = \
src/modules/wireless/connman.c \
src/modules/wireless/mod.c \
src/modules/wireless/wireless.c \
src/modules/wireless/wireless.h
src_modules_wireless_module_la_CPPFLAGS = $(MOD_CPPFLAGS)
src_modules_wireless_module_la_LIBADD = $(MOD_LIBS)
PHONIES += wireless install-wireless
wireless: $(wirelesspkg_LTLIBRARIES) $(wireless_DATA)
install-wireless: install-wirelessDATA install-wirelesspkgLTLIBRARIES
endif

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,33 @@
#include "e.h"
EINTERN void wireless_gadget_init(void);
EINTERN void wireless_gadget_shutdown(void);
EINTERN void connman_init(void);
EINTERN void connman_shutdown(void);
EINTERN Eldbus_Connection *dbus_conn;
E_API E_Module_Api e_modapi =
{
E_MODULE_API_VERSION,
"Wireless"
};
E_API void *
e_modapi_init(E_Module *m)
{
dbus_conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
connman_init();
wireless_gadget_init();
return m;
}
E_API int
e_modapi_shutdown(E_Module *m EINA_UNUSED)
{
wireless_gadget_shutdown();
connman_shutdown();
E_FREE_FUNC(dbus_conn, eldbus_connection_unref);
return 1;
}

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Encoding=UTF-8
Type=Link
Name=Wireless
GenericName=Wireless
Comment=Manage wifi connections
Icon=e-module-wireless
X-Enlightenment-ModuleType=system

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,134 @@
#ifndef E_WIRELESS_H
# define E_WIRELESS_H
#include "e.h"
typedef enum
{
WIRELESS_SERVICE_TYPE_NONE = -1,
WIRELESS_SERVICE_TYPE_ETHERNET,
WIRELESS_SERVICE_TYPE_WIFI,
WIRELESS_SERVICE_TYPE_BLUETOOTH,
WIRELESS_SERVICE_TYPE_CELLULAR,
WIRELESS_SERVICE_TYPE_LAST,
} Wireless_Service_Type;
typedef enum
{
WIRELESS_NETWORK_STATE_NONE,
WIRELESS_NETWORK_STATE_CONFIGURING,
WIRELESS_NETWORK_STATE_CONNECTED,
WIRELESS_NETWORK_STATE_ONLINE,
WIRELESS_NETWORK_STATE_FAILURE,
} Wireless_Network_State;
typedef enum
{
WIRELESS_NETWORK_SECURITY_NONE = 0,
WIRELESS_NETWORK_SECURITY_WEP = (1 << 0),
WIRELESS_NETWORK_SECURITY_PSK = (1 << 1),
WIRELESS_NETWORK_SECURITY_IEEE8021X = (1 << 2),
WIRELESS_NETWORK_SECURITY_WPS = (1 << 3),
} Wireless_Network_Security;
typedef enum
{
WIRELESS_NETWORK_IPV4_METHOD_OFF,
WIRELESS_NETWORK_IPV4_METHOD_MANUAL,
WIRELESS_NETWORK_IPV4_METHOD_DHCP,
WIRELESS_NETWORK_IPV4_METHOD_FIXED,
} Wireless_Network_IPv4_Method;
typedef enum
{
WIRELESS_NETWORK_IPV6_METHOD_OFF,
WIRELESS_NETWORK_IPV6_METHOD_MANUAL,
WIRELESS_NETWORK_IPV6_METHOD_AUTO,
WIRELESS_NETWORK_IPV6_METHOD_6TO4,
WIRELESS_NETWORK_IPV6_METHOD_FIXED,
} Wireless_Network_IPv6_Method;
typedef enum
{
WIRELESS_NETWORK_IPV6_PRIVACY_DISABLED,
WIRELESS_NETWORK_IPV6_PRIVACY_ENABLED,
WIRELESS_NETWORK_IPV6_PRIVACY_PREFERRED,
} Wireless_Network_IPv6_Privacy;
typedef enum
{
WIRELESS_PROXY_TYPE_DIRECT,
WIRELESS_PROXY_TYPE_MANUAL,
WIRELESS_PROXY_TYPE_AUTO,
} Wireless_Proxy_Type;
typedef struct Wireless_Network Wireless_Network;
typedef Eina_Bool (*Wireless_Network_Connect_Cb)(Wireless_Network *);
struct Wireless_Network
{
Eina_Stringshare *path;//dbus path
Eina_Stringshare *name;
Wireless_Network_Security security;
Wireless_Network_State state;
Wireless_Service_Type type;
uint8_t strength;
Wireless_Network_Connect_Cb connect_cb;
};
typedef struct Wireless_Connection
{
Wireless_Network *wn;
unsigned int method;
Eina_Stringshare *address;
Eina_Stringshare *gateway;
union
{
struct
{
Eina_Stringshare *netmask;
} v4;
struct
{
Eina_Stringshare *prefixlength;
Wireless_Network_IPv6_Privacy privacy;
} v6;
} ip;
Eina_Array *domain_servers;
Eina_Array *name_servers;
Eina_Array *time_servers;
Wireless_Proxy_Type proxy_type;
Eina_Stringshare *proxy_url;
Eina_Array *proxy_servers;
Eina_Array *proxy_excludes;
Eina_Bool ipv6 : 1;
Eina_Bool favorite : 1;
} Wireless_Connection;
typedef void (*Wireless_Auth_Cb)(void *data, const Eina_Array *fields);
extern Eldbus_Connection *dbus_conn;
EINTERN void wireless_service_type_available_set(Eina_Bool *avail);
EINTERN void wireless_service_type_enabled_set(Eina_Bool *enabled);
EINTERN void wireless_wifi_current_networks_set(Wireless_Connection **current);
EINTERN Eina_Array *wireless_networks_set(Eina_Array *networks);
EINTERN void wireless_airplane_mode_set(Eina_Bool enabled);
EINTERN void wireless_authenticate(const Eina_Array *fields, Wireless_Auth_Cb cb, void *data);
EINTERN void wireless_authenticate_cancel(void);
EINTERN void wireless_authenticate_external(Wireless_Network *wn, const char *url);
static inline void
array_clear(Eina_Array *arr)
{
if (arr)
while (eina_array_count(arr))
eina_stringshare_del(eina_array_pop(arr));
eina_array_free(arr);
}
#endif