forked from enlightenment/enlightenment
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:
parent
f527e6c8fb
commit
24fe43d735
|
@ -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
|
||||
|
|
|
@ -1025,6 +1025,7 @@ _e_module_whitelist_check(void)
|
|||
"temperature",
|
||||
"tiling",
|
||||
"winlist",
|
||||
"wireless",
|
||||
"wizard",
|
||||
"wl_desktop_shell",
|
||||
"wl_x11",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
@ -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;
|
||||
}
|
|
@ -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
|
@ -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
|
Loading…
Reference in New Issue