summaryrefslogtreecommitdiffstats
path: root/src/dbus_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dbus_common.c')
-rw-r--r--src/dbus_common.c54
1 files changed, 48 insertions, 6 deletions
diff --git a/src/dbus_common.c b/src/dbus_common.c
index dd3bae5..b05e9ea 100644
--- a/src/dbus_common.c
+++ b/src/dbus_common.c
@@ -12,20 +12,39 @@
#include "dbus_common.h"
#include "eulogium.h"
#include "eulogium_item_list.h"
+#include "procedures.h"
-void on_method_generic_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+void on_method_generic_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
{
+ const char *errname, *errmsg;
- struct list_item *item = data;
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg);
+ return;
+ }
+}
+
+void on_method_generic_bool_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
const char *errname, *errmsg;
- Eina_Bool state;
+ Eina_Bool ret;
if (eldbus_message_error_get(msg, &errname, &errmsg)) {
EINA_LOG_ERR("%s %s", errname, errmsg);
return;
}
+ if (!eldbus_message_arguments_get(msg, "b", &ret)) {
+ EINA_LOG_ERR("Signature mismatch, \"b\".");
+ return;
+ }
+ if (ret)
+ EINA_LOG_INFO("Ran %s successfully.", (char *)data);
+ else
+ EINA_LOG_WARN("%s failed to run.", (char *)data);
}
+#define _TECH_ETHERNET "ethernet"
+#define _TECH_WIFI "wifi"
void on_method_get_network_info_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
{
struct eulogium_data *eulogium = data; /* TODO replace this by making networks direct via ** */
@@ -60,10 +79,10 @@ void on_method_get_network_info_ret(void *data, const Eldbus_Message *msg, Eldbu
else
strncpy(networks[i].obj_path, obj_path, obj_pathsize);
- networks[i].tech = UNKNOWN;
- if (strcmp(tech, _TECH_ETHERNET))
+ networks[i].tech = TECH_UNKNOWN;
+ if (!strcmp(tech, _TECH_ETHERNET))
networks[i].tech = TECH_ETHERNET;
- if (strcmp(tech, _TECH_WIFI))
+ if (!strcmp(tech, _TECH_WIFI))
networks[i].tech = TECH_WIFI;
strncpy(networks[i].ipv4, ipv4, IPV4_MAX_LEN);
@@ -81,6 +100,29 @@ void on_signal_network_info_changed_ret(void *data, const Eldbus_Message *msg)
on_method_get_network_info_ret(data, msg, NULL);
}
+void on_method_get_procedure_metadata_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+ const struct procedure_data *proc = data;
+ const char *errname, *errmsg;
+ Eldbus_Message_Iter *array;
+
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg); /* XXX do these need to be free'ed? FIXME! YES! They do */
+ return;
+ }
+ if (!eldbus_message_arguments_get(msg, "a{sv}", &array)) {
+ EINA_LOG_ERR("Message content does not match expected \"a{sv}\" signature. (%s)", eldbus_message_signature_get(msg)); /* XXX this return value may need to be freed actually!! Yep they do.*/
+ return;
+ }
+ eldbus_message_iter_dict_iterate(array, "sv", proc->parser, proc->meta);
+}
+
+/* XXX we are likely not getting a signal, but will deal with this on procedure start and procedure finished. */
+void on_signal_procedure_metadata_changed_ret(void *data, const Eldbus_Message *msg)
+{
+ on_method_get_procedure_metadata_ret(data, msg, NULL);
+}
+
void on_method_is_network_powered_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
{
struct list_item *item = data;