rework of connman module, a semi-functional display only module so far.

SVN revision: 44834
This commit is contained in:
Gustavo Sverzut Barbieri 2009-12-31 21:44:33 +00:00
parent 9436c022bc
commit 22580d466d
11 changed files with 1213 additions and 2996 deletions

View File

@ -411,6 +411,16 @@ fi
AC_SUBST(SOUND_CFLAGS)
AC_SUBST(SOUND_LIBS)
AM_CONDITIONAL(HAVE_ECONNMAN, false)
define([CHECK_MODULE_CONNMAN],
[
AC_E_CHECK_PKG(ECONNMAN, [edbus econnman],
[], [ECONNMAN=false])
])
AC_SUBST(ECONNMAN_CFLAGS)
AC_SUBST(ECONNMAN_LIBS)
AC_E_OPTIONAL_MODULE([ibar], true)
AC_E_OPTIONAL_MODULE([dropshadow], true)
AC_E_OPTIONAL_MODULE([clock], true)
@ -469,7 +479,7 @@ AC_E_OPTIONAL_MODULE([conf_interaction], true)
AC_E_OPTIONAL_MODULE([conf_scale], true)
AC_E_OPTIONAL_MODULE([gadman], true)
AC_E_OPTIONAL_MODULE([mixer], true, [CHECK_MODULE_MIXER])
AC_E_OPTIONAL_MODULE([connman], false)
AC_E_OPTIONAL_MODULE([connman], true, [CHECK_MODULE_CONNMAN])
AC_E_OPTIONAL_MODULE([illume], true)
AC_E_OPTIONAL_MODULE([syscon], true)
AC_E_OPTIONAL_MODULE([everything], true)

View File

@ -6888,98 +6888,199 @@ collections { /* begin the collection of edje groups that are in this file */
/////////////////////////////////////////////////////////////////////////////
/*** MOD: CONNMAN ***/
/* inactive module right now - doesnt work, so this is a placeholder */
group {
name: "e/modules/connman/main"; // for gadget
alias: "e/modules/connman/network"; // for icon in popup
max: 128 128;
min: 1 1;
// FIXME: do proper gadget and artwork
group { name: "e/modules/connman/main";
images {
image: "ball.png" COMP;
image: "connman-disconnect.png" COMP;
image: "connman-ethernet.png" COMP;
image: "connman-wifi.png" COMP;
}
//max: 128 128;
min: 16 16;
#if 0 // TODO: show strength in gadget
script {
public message(Msg_Type:type, id, ...) {
if ((type == MSG_INT_SET) && (id == 0)) {
new sig;
public message(Msg_Type:type, id, ...) {
if ((type == MSG_INT) && (id == 1)) {
new strength;
sig = getarg(2);
if (sig <= 0)
run_program(PROGRAM:"sig_none");
else if (sig < 33)
run_program(PROGRAM:"sig_low");
else if (sig < 66)
run_program(PROGRAM:"sig_medium");
else if (sig >= 66)
run_program(PROGRAM:"sig_high");
}
}
}
parts {
part { name: "base";
description { state: "default" 0.0;
aspect: 1 1;
aspect_preference: BOTH;
image.normal: "ball.png";
strength = getarg(2);
}
}
}
programs {
program { name: "sig_none";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sig_low";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sig_medium";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sig_high";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sec0";
signal: "e,state,security,open";
source: "e";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sec1";
signal: "e,state,security,wep";
source: "e";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sec2";
signal: "e,state,security,wpa";
source: "e";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sec3";
signal: "e,state,security,rsn";
source: "e";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sav0";
signal: "e,state,saved,on";
source: "e";
action: STATE_SET "default" 0.0;
target: "base";
}
program { name: "sav1";
signal: "e,state,saved,off";
source: "e";
action: STATE_SET "default" 0.0;
target: "base";
}
#endif
parts {
part {
name: "eventarea";
type: RECT;
mouse_events: 1;
description {
state: "default" 0.0;
color: 255 255 255 0;
}
}
part { name: "availability";
type: RECT;
mouse_events: 0;
description {
state: "default" 0.0;
color: 255 128 128 0;
visible: 0;
}
description {
state: "unavailable" 0.0;
inherit: "default" 0.0;
color: 255 128 128 255;
visible: 1;
}
}
programs {
program { name: "e,available";
signal: "e,available";
source: "e";
action: STATE_SET "default" 0.0;
target: "availability";
transition: LINEAR 0.2;
}
program { name: "e,unavailable";
signal: "e,unavailable";
source: "e";
action: STATE_SET "unavailable" 0.0;
target: "availability";
transition: LINEAR 0.2;
}
}
part { name: "state-clipper";
type: RECT;
mouse_events: 0;
description {
state: "default" 0.0;
color: 255 255 255 255;
}
description {
state: "pulse" 0.0;
color: 255 255 255 128;
}
}
programs {
program { name: "e,changed,state,ready";
signal: "e,changed,state,ready";
source: "e";
script {
stop_program(PROGRAM:"state,pulse,0");
stop_program(PROGRAM:"state,pulse,1");
}
after: "state,ready,apply";
}
program { name: "state,ready,apply";
action: STATE_SET "default" 0.0;
target: "state-clipper";
transition: LINEAR 0.1;
}
program { name: "e,changed,state,association";
signal: "e,changed,state,association";
source: "e";
after: "state,pulse,0";
}
program { name: "e,changed,state,configuration";
signal: "e,changed,state,configuration";
source: "e";
after: "state,pulse,0";
}
program { name: "state,pulse,0";
action: STATE_SET "default" 0.0;
target: "state-clipper";
transition: LINEAR 0.8;
after: "state,pulse,1";
}
program { name: "state,pulse,1";
action: STATE_SET "pulse" 0.0;
target: "state-clipper";
transition: LINEAR 0.8;
after: "state,pulse,0";
}
}
part { name: "technology";
type: IMAGE;
mouse_events: 0;
clip_to: "state-clipper";
description {
state: "default" 0.0;
aspect: 1.0 1.0;
aspect_preference: BOTH;
fixed: 1 1;
image.normal: "connman-disconnect.png";
}
description {
state: "ethernet" 0.0;
inherit: "default" 0.0;
image.normal: "connman-ethernet.png";
}
description {
state: "wifi" 0.0;
inherit: "default" 0.0;
image.normal: "connman-wifi.png";
}
// TODO: wimax, cellular, bluetooth
}
programs {
program { name: "e,changed,technology,none";
signal: "e,changed,technology,none";
source: "e";
action: STATE_SET "default" 0.0;
target: "technology";
}
program { name: "e,changed,technology,ethernet";
signal: "e,changed,technology,ethernet";
source: "e";
action: STATE_SET "ethernet" 0.0;
target: "technology";
}
program { name: "e,changed,technology,wifi";
signal: "e,changed,technology,wifi";
source: "e";
action: STATE_SET "wifi" 0.0;
target: "technology";
}
}
part {
name: "e.text.name";
type: TEXT;
mouse_events: 0;
effect: SOFT_SHADOW;
description {
state: "default" 0.0;
color: 224 224 224 255;
color3: 0 0 0 64;
align: 0.5 1.0;
rel1 {
relative: 0.0 1.0;
offset: 0 -20;
}
rel2 {
relative: 1.0 1.0;
offset: -1 -1;
}
text {
font: "Sans";
size: 8;
align: 0.5 1.0;
text: "";
min: 0 1;
}
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
/*** MOD: CONF_EDGEBINDINGS ***/
/* This group draws the edge and corners for the user to pick.

View File

@ -571,5 +571,8 @@ icon_efm_file_del.png \
exq-barglow.png \
exq-bar.png \
exq-bglight.png \
exq-logo.png
exq-logo.png \
connman-disconnect.png \
connman-ethernet.png \
connman-wifi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -15,18 +15,16 @@ INCLUDES = -I. \
-I$(top_srcdir)/src/bin \
-I$(top_srcdir)/src/lib \
-I$(top_srcdir)/src/modules \
@e_cflags@
@e_cflags@ @ECONNMAN_CFLAGS@
pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la
module_la_SOURCES = e_mod_main.h \
e_mod_main.c \
e_iface.h \
e_iface.c
e_mod_main.c
module_la_LIBADD = @e_libs@ @dlopen_libs@
module_la_LIBADD = @e_libs@ @dlopen_libs@ @ECONNMAN_LIBS@
module_la_LDFLAGS = -module -avoid-version
module_la_DEPENDENCIES = $(top_builddir)/config.h

File diff suppressed because it is too large Load Diff

View File

@ -1,118 +0,0 @@
#ifndef E_IFACE_H
#define E_IFACE_H
#include <Ecore.h>
#include <E_DBus.h>
#include <Evas.h>
#include <eina_stringshare.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
/* IFACE HEADER */
typedef enum _Interface_Event
{
IFACE_EVENT_ADD,
IFACE_EVENT_DEL,
IFACE_EVENT_IPV4_CHANGE,
IFACE_EVENT_NETWORK_SELECTION_CHANGE,
IFACE_EVENT_SCAN_NETWORK_ADD,
IFACE_EVENT_SCAN_NETWORK_DEL,
IFACE_EVENT_SCAN_NETWORK_CHANGE,
IFACE_EVENT_SIGNAL_CHANGE,
IFACE_EVENT_STATE_CHANGE,
IFACE_EVENT_POLICY_CHANGE,
} Interface_Event;
typedef struct _Interface_Network Interface_Network;
typedef struct _Interface_Properties Interface_Properties;
typedef struct _Interface_IPv4 Interface_IPv4;
typedef struct _Interface_Network_Selection Interface_Network_Selection;
typedef struct _Interface_Callback Interface_Callback;
typedef struct _Interface Interface;
struct _Interface_Network
{
const char *essid;
const char *bssid;
const char *security;
int signal_strength;
double last_seen_time;
};
struct _Interface_Properties
{
const char *product;
const char *vendor;
int signal_strength;
const char *driver;
const char *state;
const char *policy;
const char *type;
};
struct _Interface_IPv4
{
const char *method;
const char *address;
const char *gateway;
const char *netmask;
};
struct _Interface_Network_Selection
{
const char *id;
const char *pass;
};
struct _Interface_Callback
{
Interface_Event event;
void (*func) (void *data, Interface *iface, Interface_Network *ifnet);
void *data;
unsigned char delete_me : 1;
};
struct _Interface
{
/* public - read-only. look but don't touch */
const char *ifpath;
Interface_Properties prop;
Interface_IPv4 ipv4;
Interface_Network_Selection network_selection;
Eina_List *networks;
int signal_strength;
/* private - don't touch */
Eina_List *callbacks;
struct {
E_DBus_Signal_Handler *network_found;
E_DBus_Signal_Handler *signal_changed;
E_DBus_Signal_Handler *state_changed;
E_DBus_Signal_Handler *policy_changed;
E_DBus_Signal_Handler *network_changed;
E_DBus_Signal_Handler *ipv4_changed;
} sigh;
Ecore_Timer *network_timeout;
int ref;
unsigned char newif : 1;
};
/* IFACE PUBLIC API */
Interface *iface_add (const char *ifpath);
void iface_ref (Interface *iface);
void iface_unref (Interface *iface);
Interface *iface_find (const char *ifpath);
void iface_network_set (Interface *iface, const char *ssid, const char *pass);
void iface_policy_set (Interface *iface, const char *policy);
void iface_scan (Interface *iface, const char *policy);
void iface_ipv4_set (Interface *iface, const char *method, const char *address, const char *gateway, const char *netmask);
void iface_callback_add(Interface *iface, Interface_Event event, void (*func) (void *data, Interface *iface, Interface_Network *ifnet), void *data);
void iface_callback_del(Interface *iface, Interface_Event event, void (*func) (void *data, Interface *iface, Interface_Network *ifnet), void *data);
void iface_system_init (E_DBus_Connection *edbus_conn);
void iface_system_shutdown(void);
void iface_system_callback_add (Interface_Event event, void (*func) (void *data, Interface *iface, Interface_Network *ifnet), void *data);
void iface_system_callback_del (Interface_Event event, void (*func) (void *data, Interface *iface, Interface_Network *ifnet), void *data);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -4,8 +4,89 @@
#ifndef E_MOD_MAIN_H
#define E_MOD_MAIN_H
EAPI extern E_Module_Api e_modapi;
#include "config.h"
#include <e.h>
#include <E_Connman.h>
#define MOD_CONF_VERSION 2
typedef struct E_Connman_Instance E_Connman_Instance;
typedef struct E_Connman_Module_Context E_Connman_Module_Context;
typedef struct E_Connman_Service E_Connman_Service;
struct E_Connman_Instance
{
E_Connman_Module_Context *ctxt;
E_Gadcon_Client *gcc;
E_Gadcon_Popup *popup;
E_Menu *menu;
struct
{
Evas_Object *gadget;
Evas_Object *toggle_offline;
Evas_Object *button;
Evas_Object *table;
struct
{
Ecore_X_Window win;
Ecore_Event_Handler *mouse_up;
Ecore_Event_Handler *key_down;
} input;
} ui;
};
struct E_Connman_Service
{
EINA_INLIST;
E_Connman_Module_Context *ctxt;
E_Connman_Element *element;
const char *path;
const char *name;
const char *type;
const char *mode;
const char *state;
const char *error;
const char *security;
const char *ipv4_method;
const char *ipv4_address;
const char *ipv4_netmask;
unsigned char strength;
Eina_Bool favorite:1;
Eina_Bool auto_connect:1;
Eina_Bool pass_required:1;
};
struct E_Connman_Module_Context
{
Eina_List *instances;
struct st_connman_actions
{
E_Action *toggle_offline_mode;
} actions;
struct
{
Ecore_Event_Handler *manager_in;
Ecore_Event_Handler *manager_out;
} event;
struct
{
Ecore_Poller *default_service_changed;
Ecore_Poller *manager_changed;
} poller;
Eina_Bool has_manager:1;
Eina_Bool offline_mode;
const char *technology;
const E_Connman_Service *default_service;
Eina_Inlist *services;
};
EAPI extern E_Module_Api e_modapi;
EAPI void *e_modapi_init (E_Module *m);
EAPI int e_modapi_shutdown (E_Module *m);
EAPI int e_modapi_save (E_Module *m);