Add list of available technologies
Add E_Connman_Technology struct and create a list inside E_Connman_Module_Context which will keep track of all available technologies. By: Lucas De Marchi <lucas.demarchi@profusion.mobi> SVN revision: 45811
This commit is contained in:
parent
0384befb49
commit
c99d8c8100
|
@ -662,6 +662,20 @@ _connman_services_free(E_Connman_Module_Context *ctxt)
|
|||
}
|
||||
}
|
||||
|
||||
E_Connman_Technology *
|
||||
_connman_technology_find(E_Connman_Module_Context *ctxt, const char* name)
|
||||
{
|
||||
E_Connman_Technology *t;
|
||||
|
||||
EINA_INLIST_FOREACH(ctxt->technologies, t)
|
||||
{
|
||||
if (!strcmp(t->name, name))
|
||||
return t;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
_connman_services_element_exists(const E_Connman_Module_Context *ctxt, const E_Connman_Element *element)
|
||||
{
|
||||
|
@ -674,6 +688,60 @@ _connman_services_element_exists(const E_Connman_Module_Context *ctxt, const E_C
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
_connman_technology_exists(const E_Connman_Module_Context *ctxt, const char* name)
|
||||
{
|
||||
const E_Connman_Technology *t;
|
||||
|
||||
EINA_INLIST_FOREACH(ctxt->technologies, t)
|
||||
{
|
||||
if (t->name == name)
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_connman_technologies_free(E_Connman_Module_Context *ctxt)
|
||||
{
|
||||
while (ctxt->technologies)
|
||||
{
|
||||
E_Connman_Technology *t = (E_Connman_Technology *) ctxt->technologies;
|
||||
eina_stringshare_del(t->name);
|
||||
ctxt->technologies = eina_inlist_remove(ctxt->technologies, EINA_INLIST_GET(t));
|
||||
E_FREE(t);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_connman_technologies_load(E_Connman_Module_Context *ctxt)
|
||||
{
|
||||
const char **names;
|
||||
int count, i;
|
||||
|
||||
if (!e_connman_manager_technologies_available_get(&count, &names))
|
||||
return;
|
||||
|
||||
printf("DBG CONNMAN technologies = %d\n", count);
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
const char *name = eina_stringshare_add(names[i]);
|
||||
E_Connman_Technology *t;
|
||||
|
||||
if ((name == NULL) || _connman_technology_exists(ctxt, name))
|
||||
{
|
||||
eina_stringshare_del(name);
|
||||
continue;
|
||||
}
|
||||
t = E_NEW(E_Connman_Technology, 1);
|
||||
t->name = name;
|
||||
printf("DBG CONNMAN added technology: %s\n", t->name);
|
||||
ctxt->technologies = eina_inlist_append(ctxt->technologies, EINA_INLIST_GET(t));
|
||||
}
|
||||
free(names);
|
||||
}
|
||||
|
||||
static void
|
||||
_connman_services_load(E_Connman_Module_Context *ctxt)
|
||||
{
|
||||
|
@ -1533,6 +1601,7 @@ _connman_manager_changed_do(void *data)
|
|||
{
|
||||
E_Connman_Module_Context *ctxt = data;
|
||||
|
||||
_connman_technologies_load(ctxt);
|
||||
_connman_services_reload(ctxt);
|
||||
|
||||
ctxt->poller.manager_changed = NULL;
|
||||
|
@ -1644,6 +1713,8 @@ e_modapi_init(E_Module *m)
|
|||
if (!ctxt)
|
||||
return NULL;
|
||||
|
||||
ctxt->technologies = NULL;
|
||||
|
||||
_connman_actions_register(ctxt);
|
||||
e_gadcon_provider_register(&_gc_class);
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
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;
|
||||
typedef struct E_Connman_Technology E_Connman_Technology;
|
||||
|
||||
struct E_Connman_Instance
|
||||
{
|
||||
|
@ -66,6 +67,13 @@ struct E_Connman_Service
|
|||
Eina_Bool pass_required:1;
|
||||
};
|
||||
|
||||
struct E_Connman_Technology
|
||||
{
|
||||
EINA_INLIST;
|
||||
const char *name;
|
||||
bool enabled;
|
||||
};
|
||||
|
||||
struct E_Connman_Module_Context
|
||||
{
|
||||
Eina_List *instances;
|
||||
|
@ -94,6 +102,7 @@ struct E_Connman_Module_Context
|
|||
const char *technology;
|
||||
const E_Connman_Service *default_service;
|
||||
Eina_Inlist *services;
|
||||
Eina_Inlist *technologies;
|
||||
};
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
@ -101,4 +110,5 @@ EAPI void *e_modapi_init (E_Module *m);
|
|||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
|
||||
E_Connman_Technology *_connman_technology_find(E_Connman_Module_Context *ctxt, const char* name);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue