From 8cfeb0d4ba839d8dc3c0e7c4dd31822032e493ef Mon Sep 17 00:00:00 2001 From: barbieri Date: Wed, 30 Dec 2009 18:26:39 +0000 Subject: [PATCH] device and network "address_get" git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@44802 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/bin/e_dbus_connman_test.c | 46 +++++++++++++++++++++++++++++++++++++ src/bin/e_dbus_connman_test_api.c | 2 ++ src/lib/connman/E_Connman.h | 7 +++--- src/lib/connman/e_connman.c | 4 ++++ src/lib/connman/e_connman_device.c | 29 +++++++++++++++++++++++ src/lib/connman/e_connman_network.c | 29 +++++++++++++++++++++++ src/lib/connman/e_connman_private.h | 1 + 7 files changed, 115 insertions(+), 3 deletions(-) diff --git a/src/bin/e_dbus_connman_test.c b/src/bin/e_dbus_connman_test.c index a53f52e..4799270 100644 --- a/src/bin/e_dbus_connman_test.c +++ b/src/bin/e_dbus_connman_test.c @@ -401,6 +401,28 @@ _on_cmd_device_propose_scan(char *cmd, char *args) } static int +_on_cmd_device_get_address(char *cmd, char *args) +{ + const char *address, *path; + E_Connman_Element *e; + + if (!args) + { + fputs("ERROR: missing the device path\n", stderr); + return 1; + } + _tok(args); + path = args; + + e = e_connman_device_get(path); + if (e_connman_device_address_get(e, &address)) + printf(":::Device %s Address = \"%s\"\n", path, address); + else + fputs("ERROR: can't get device address\n", stderr); + return 1; +} + +static int _on_cmd_device_get_name(char *cmd, char *args) { const char *name, *path; @@ -734,6 +756,28 @@ _on_cmd_profile_get_services(char *cmd, char *args) /* Network Commands */ static int +_on_cmd_network_get_address(char *cmd, char *args) +{ + const char *address, *path; + E_Connman_Element *e; + + if (!args) + { + fputs("ERROR: missing the network path\n", stderr); + return 1; + } + _tok(args); + path = args; + + e = e_connman_network_get(path); + if (e_connman_network_address_get(e, &address)) + printf(":::Network %s Address = \"%s\"\n", path, address); + else + fputs("ERROR: can't get network address\n", stderr); + return 1; +} + +static int _on_cmd_network_get_name(char *cmd, char *args) { const char *name, *path; @@ -1583,6 +1627,7 @@ _on_input(void *data, Ecore_Fd_Handler *fd_handler) {"manager_get_offline_mode", _on_cmd_manager_get_offline_mode}, {"manager_set_offline_mode", _on_cmd_manager_set_offline_mode}, {"device_propose_scan", _on_cmd_device_propose_scan}, + {"device_get_address", _on_cmd_device_get_address}, {"device_get_name", _on_cmd_device_get_name}, {"device_get_type", _on_cmd_device_get_type}, {"device_get_interface", _on_cmd_device_get_interface}, @@ -1596,6 +1641,7 @@ _on_input(void *data, Ecore_Fd_Handler *fd_handler) {"profile_get_offline_mode", _on_cmd_profile_get_offline_mode}, {"profile_set_offline_mode", _on_cmd_profile_set_offline_mode}, {"profile_get_services", _on_cmd_profile_get_services}, + {"network_get_address", _on_cmd_network_get_address}, {"network_get_name", _on_cmd_network_get_name}, {"network_get_connected", _on_cmd_network_get_connected}, {"network_get_strength", _on_cmd_network_get_strength}, diff --git a/src/bin/e_dbus_connman_test_api.c b/src/bin/e_dbus_connman_test_api.c index 2e3f704..6b1c2ac 100644 --- a/src/bin/e_dbus_connman_test_api.c +++ b/src/bin/e_dbus_connman_test_api.c @@ -343,6 +343,7 @@ static const struct test_desc test_desc_manager[] = { }; static const struct test_desc test_desc_device[] = { + TEST_DESC_STRING_GET(e_connman_device_address_get, 0), TEST_DESC_STRING_GET(e_connman_device_name_get, 0), TEST_DESC_STRING_GET(e_connman_device_type_get, 0), TEST_DESC_STRING_GET(e_connman_device_interface_get, 0), @@ -364,6 +365,7 @@ static const struct test_desc test_desc_profile[] = { }; static const struct test_desc test_desc_network[] = { + TEST_DESC_STRING_GET(e_connman_network_address_get, 0), TEST_DESC_STRING_GET(e_connman_network_name_get, 0), TEST_DESC_BOOL_GET(e_connman_network_connected_get, 0), TEST_DESC_UCHAR_GET(e_connman_network_strength_get, 1), diff --git a/src/lib/connman/E_Connman.h b/src/lib/connman/E_Connman.h index 7100caf..186ec7d 100644 --- a/src/lib/connman/E_Connman.h +++ b/src/lib/connman/E_Connman.h @@ -236,6 +236,8 @@ extern "C" { EAPI bool e_connman_device_propose_scan(E_Connman_Element *device, E_DBus_Method_Return_Cb cb, const void *data) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT; + EAPI bool e_connman_device_address_get(const E_Connman_Element *device, const char **address); + EAPI bool e_connman_device_name_get(const E_Connman_Element *device, const char **name) EINA_ARG_NONNULL(1, 2) EINA_PURE EINA_WARN_UNUSED_RESULT; EAPI bool e_connman_device_type_get(const E_Connman_Element *device, const char **type) EINA_ARG_NONNULL(1, 2) EINA_PURE EINA_WARN_UNUSED_RESULT; @@ -252,8 +254,6 @@ extern "C" { EAPI bool e_connman_device_networks_get(const E_Connman_Element *device, unsigned int *count, E_Connman_Element ***p_elements) EINA_ARG_NONNULL(1, 2, 3) EINA_PURE EINA_WARN_UNUSED_RESULT; - // TODO: address_get - /* Network Methods: Low-Level API * @@ -262,6 +262,8 @@ extern "C" { */ EAPI E_Connman_Element *e_connman_network_get(const char *path) EINA_ARG_NONNULL(1) EINA_PURE EINA_WARN_UNUSED_RESULT; + EAPI bool e_connman_network_address_get(const E_Connman_Element *network, const char **address) EINA_ARG_NONNULL(1, 2) EINA_PURE EINA_WARN_UNUSED_RESULT; + EAPI bool e_connman_network_name_get(const E_Connman_Element *network, const char **name) EINA_ARG_NONNULL(1, 2) EINA_PURE EINA_WARN_UNUSED_RESULT; EAPI bool e_connman_network_connected_get(const E_Connman_Element *network, bool *connected) EINA_ARG_NONNULL(1, 2) EINA_PURE EINA_WARN_UNUSED_RESULT; @@ -278,7 +280,6 @@ extern "C" { EAPI bool e_connman_network_wifi_passphrase_get(const E_Connman_Element *network, const char **wifi_passphare) EINA_ARG_NONNULL(1, 2) EINA_PURE EINA_WARN_UNUSED_RESULT; - // TODO: address_get // TODO: wifi_channel_get (missing in their docs) // TODO: wifi_eap_get (missing in their docs, only if ieee8021x) // TODO: frequency_get (missing in their docs) diff --git a/src/lib/connman/e_connman.c b/src/lib/connman/e_connman.c index 9a1fecb..16619cb 100644 --- a/src/lib/connman/e_connman.c +++ b/src/lib/connman/e_connman.c @@ -36,6 +36,7 @@ const char *e_connman_prop_devices = NULL; const char *e_connman_prop_interface = NULL; const char *e_connman_prop_ipv4_address = NULL; const char *e_connman_prop_ipv4_method = NULL; +const char *e_connman_prop_address = NULL; const char *e_connman_prop_name = NULL; const char *e_connman_prop_network = NULL; const char *e_connman_prop_networks = NULL; @@ -290,6 +291,8 @@ e_connman_system_init(E_DBus_Connection *edbus_conn) e_connman_prop_ipv4_address = eina_stringshare_add("IPv4.Address"); if (e_connman_prop_ipv4_method == NULL) e_connman_prop_ipv4_method = eina_stringshare_add("IPv4.Method"); + if (e_connman_prop_address == NULL) + e_connman_prop_address = eina_stringshare_add("Address"); if (e_connman_prop_name == NULL) e_connman_prop_name = eina_stringshare_add("Name"); if (e_connman_prop_network == NULL) @@ -414,6 +417,7 @@ e_connman_system_shutdown(void) _stringshare_del(&e_connman_prop_interface); _stringshare_del(&e_connman_prop_ipv4_address); _stringshare_del(&e_connman_prop_ipv4_method); + _stringshare_del(&e_connman_prop_address); _stringshare_del(&e_connman_prop_name); _stringshare_del(&e_connman_prop_network); _stringshare_del(&e_connman_prop_networks); diff --git a/src/lib/connman/e_connman_device.c b/src/lib/connman/e_connman_device.c index 04be29d..1907747 100644 --- a/src/lib/connman/e_connman_device.c +++ b/src/lib/connman/e_connman_device.c @@ -43,6 +43,35 @@ e_connman_device_propose_scan(E_Connman_Element *device, E_DBus_Method_Return_Cb } /** + * Get property "Address" value. + * + * If this property isn't found then 0 is returned. + * If zero is returned, then this call failed and parameter-returned + * values shall be considered invalid. + * + * The device address (mac-address for ethernet, wifi...). + * + * This address can be used for directly displaying it in + * the application. It has pure informational purpose. + * + * @param device path to get property. + * @param address where to store the property value, must be a pointer + * to string (const char **), it will not be allocated or + * copied and references will be valid until element changes, + * so copy it if you want to use it later. + * + * @return 1 on success, 0 otherwise. + */ +bool +e_connman_device_address_get(const E_Connman_Element *device, const char **address) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(device, 0); + EINA_SAFETY_ON_NULL_RETURN_VAL(address, 0); + return e_connman_element_property_get_stringshared + (device, e_connman_prop_address, NULL, address); +} + +/** * Get property "Name" value. * * If this property isn't found then 0 is returned. diff --git a/src/lib/connman/e_connman_network.c b/src/lib/connman/e_connman_network.c index bb509b5..de17c3f 100644 --- a/src/lib/connman/e_connman_network.c +++ b/src/lib/connman/e_connman_network.c @@ -21,6 +21,35 @@ e_connman_network_get(const char *path) } /** + * Get property "Address" value. + * + * If this property isn't found then 0 is returned. + * If zero is returned, then this call failed and parameter-returned + * values shall be considered invalid. + * + * The network hardware address (mac-address for ethernet, wifi...). + * + * This address can be used for directly displaying it in + * the application. It has pure informational purpose. + * + * @param network path to get property. + * @param address where to store the property value, must be a pointer + * to string (const char **), it will not be allocated or + * copied and references will be valid until element changes, + * so copy it if you want to use it later. + * + * @return 1 on success, 0 otherwise. + */ +bool +e_connman_network_address_get(const E_Connman_Element *network, const char **address) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(network, 0); + EINA_SAFETY_ON_NULL_RETURN_VAL(address, 0); + return e_connman_element_property_get_stringshared + (network, e_connman_prop_address, NULL, address); +} + +/** * Get property "Name" value. * * If this property isn't found then 0 is returned. diff --git a/src/lib/connman/e_connman_private.h b/src/lib/connman/e_connman_private.h index aadb04c..3f65931 100644 --- a/src/lib/connman/e_connman_private.h +++ b/src/lib/connman/e_connman_private.h @@ -27,6 +27,7 @@ extern const char *e_connman_prop_devices; extern const char *e_connman_prop_interface; extern const char *e_connman_prop_ipv4_address; extern const char *e_connman_prop_ipv4_method; +extern const char *e_connman_prop_address; extern const char *e_connman_prop_name; extern const char *e_connman_prop_network; extern const char *e_connman_prop_networks; -- 2.7.4