e/connman: Add security types to Connman_Service
SVN revision: 76048
This commit is contained in:
parent
2f3aac7e18
commit
e3a8e242bd
|
@ -58,6 +58,7 @@ struct Connman_Service
|
||||||
|
|
||||||
/* Properties */
|
/* Properties */
|
||||||
char *name;
|
char *name;
|
||||||
|
Eina_Array *security;
|
||||||
enum Connman_State state;
|
enum Connman_State state;
|
||||||
enum Connman_Service_Type type;
|
enum Connman_Service_Type type;
|
||||||
uint8_t strength;
|
uint8_t strength;
|
||||||
|
|
|
@ -25,6 +25,18 @@ EAPI int E_CONNMAN_EVENT_MANAGER_OUT;
|
||||||
|
|
||||||
/* utility functions */
|
/* utility functions */
|
||||||
|
|
||||||
|
static void _eina_str_array_clean(Eina_Array *array)
|
||||||
|
{
|
||||||
|
const char *item;
|
||||||
|
Eina_Array_Iterator itr;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
EINA_ARRAY_ITER_NEXT(array, i, item, itr)
|
||||||
|
eina_stringshare_del(item);
|
||||||
|
|
||||||
|
eina_array_clean(array);
|
||||||
|
}
|
||||||
|
|
||||||
static bool _dbus_bool_get(DBusMessageIter *itr)
|
static bool _dbus_bool_get(DBusMessageIter *itr)
|
||||||
{
|
{
|
||||||
dbus_bool_t val;
|
dbus_bool_t val;
|
||||||
|
@ -32,6 +44,47 @@ static bool _dbus_bool_get(DBusMessageIter *itr)
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _dbus_str_array_to_eina(DBusMessageIter *value, Eina_Array **old,
|
||||||
|
unsigned nelem)
|
||||||
|
{
|
||||||
|
DBusMessageIter itr;
|
||||||
|
Eina_Array *array;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(value);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(old);
|
||||||
|
|
||||||
|
EINA_SAFETY_ON_FALSE_RETURN(
|
||||||
|
dbus_message_iter_get_arg_type(value) == DBUS_TYPE_ARRAY);
|
||||||
|
|
||||||
|
dbus_message_iter_recurse(value, &itr);
|
||||||
|
|
||||||
|
array = *old;
|
||||||
|
if (array == NULL)
|
||||||
|
{
|
||||||
|
array = eina_array_new(nelem);
|
||||||
|
*old = array;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_eina_str_array_clean(array);
|
||||||
|
|
||||||
|
for (; dbus_message_iter_get_arg_type(&itr) != DBUS_TYPE_INVALID;
|
||||||
|
dbus_message_iter_next(&itr))
|
||||||
|
{
|
||||||
|
const char *s;
|
||||||
|
if (dbus_message_iter_get_arg_type(&itr) != DBUS_TYPE_STRING)
|
||||||
|
{
|
||||||
|
ERR("Unexpected D-Bus type %d",
|
||||||
|
dbus_message_iter_get_arg_type(&itr));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
dbus_message_iter_get_basic(&itr, &s);
|
||||||
|
eina_array_push(array, eina_stringshare_add(s));
|
||||||
|
DBG("Push %s", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
static enum Connman_State str_to_state(const char *s)
|
static enum Connman_State str_to_state(const char *s)
|
||||||
{
|
{
|
||||||
if (strcmp(s, "offline") == 0)
|
if (strcmp(s, "offline") == 0)
|
||||||
|
@ -144,6 +197,13 @@ static void _service_parse_prop_changed(struct Connman_Service *cs,
|
||||||
cs->strength = strength;
|
cs->strength = strength;
|
||||||
DBG("New strength: %d", strength);;
|
DBG("New strength: %d", strength);;
|
||||||
}
|
}
|
||||||
|
else if (strcmp(prop_name, "Security") == 0)
|
||||||
|
{
|
||||||
|
DBG("Old security count: %d",
|
||||||
|
cs->security ? eina_array_count(cs->security) : 0);
|
||||||
|
_dbus_str_array_to_eina(value, &cs->security, 2);
|
||||||
|
DBG("New security count: %d", eina_array_count(cs->security));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _service_prop_dict_changed(struct Connman_Service *cs,
|
static void _service_prop_dict_changed(struct Connman_Service *cs,
|
||||||
|
@ -198,6 +258,8 @@ static void _service_free(struct Connman_Service *cs)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
free(cs->name);
|
free(cs->name);
|
||||||
|
_eina_str_array_clean(cs->security);
|
||||||
|
eina_array_free(cs->security);
|
||||||
_connman_object_clear(&cs->obj);
|
_connman_object_clear(&cs->obj);
|
||||||
|
|
||||||
free(cs);
|
free(cs);
|
||||||
|
|
Loading…
Reference in New Issue