summaryrefslogtreecommitdiffstats
path: root/src/eulogium.c
diff options
context:
space:
mode:
authorOlliver Schinagl <o.schinagl@ultimaker.com>2015-06-16 06:47:06 (GMT)
committerOlliver Schinagl <o.schinagl@ultimaker.com>2015-06-16 06:47:06 (GMT)
commit58678161dffd48c7ecfaedf8aa8a49ec118defe4 (patch)
treec3522d8465c8e99870cd9912b02cbb0a62b81ad4 /src/eulogium.c
parent149f2a7cd778188f363260df5268e08fbdc43297 (diff)
downloadeulogium-58678161dffd48c7ecfaedf8aa8a49ec118defe4.zip
eulogium-58678161dffd48c7ecfaedf8aa8a49ec118defe4.tar.gz
eulogium-58678161dffd48c7ecfaedf8aa8a49ec118defe4.tar.bz2
[griffin.hmi] disable all dbus calls, add some very initial procedure dbus stuff
Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
Diffstat (limited to 'src/eulogium.c')
-rw-r--r--src/eulogium.c134
1 files changed, 104 insertions, 30 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index 70cff7c..9fe4d2c 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -16,6 +16,7 @@
#include "eulogium.h"
#include "eulogium_item_list.h"
#include "eulogium_private.h"
+#include "eulogium_procedures.h"
#include "gettext.h"
@@ -1306,7 +1307,7 @@ static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even
{
struct eulogium_data *eulogium = data;
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "abortPrint", _on_print_abort_ret, eulogium, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "abortPrint", _on_print_abort_ret, eulogium, -1, "");
}
static void _print_ignore_cb(void *data, Evas_Object *obj, void *event_info)
@@ -1899,8 +1900,8 @@ static Eina_Bool _timer_progress_data_update_cb(void *data)
static double progress = 0;
static double time = -1;
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getProgress", _on_get_progress_ret, &eulogium->print.progress, -1, "");
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getTime", _on_get_time_ret, &eulogium->print.time, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getProgress", _on_get_progress_ret, &eulogium->print.progress, 2, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getTime", _on_get_time_ret, &eulogium->print.time, 2, "");
if (eulogium->printer.status != status) {
elm_object_text_set(eulogium->status, _(griffin_print_status[eulogium->printer.status]));
@@ -1982,7 +1983,7 @@ static Eina_Bool _timer_print_unblock_cb(void *data)
eulogium->print.block = EINA_FALSE;
/* XXX: Cleanup eulogium structures? Right now they get overwritten. */
timeout = 10; /* TODO, use same configurable as above */
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getStatus", _on_get_status_ret, eulogium, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getStatus", _on_get_status_ret, eulogium, -1, "");
eulogium->progress_data_refresh = NULL;
return ECORE_CALLBACK_CANCEL;
}
@@ -2161,7 +2162,7 @@ static void _cleared_bed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *even
{
struct eulogium_data *eulogium = data;
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "clearedPrinter", _on_cleared_printer_ret, eulogium, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "clearedPrinter", _on_cleared_printer_ret, eulogium, -1, "");
}
Evas_Object *eulogium_clear_print_bed(struct eulogium_data *eulogium)
@@ -2214,8 +2215,8 @@ static void _cb_select_file(void *data, Evas_Object *obj EINA_UNUSED, void *even
menu_open_dir(eulogium, new_dir);
} else {
eulogium_print_data_set(eulogium, filepath);
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "startPrint", _on_start_print_ret, eulogium, -1, "sss",
- eulogium->print.name, eulogium->print.file, eulogium->print.flags);
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "startPrint", _on_start_print_ret, eulogium, -1, "sss",
+ // eulogium->print.name, eulogium->print.file, eulogium->print.flags);
}
}
}
@@ -2763,7 +2764,8 @@ static void eulogium_setup(struct eulogium_data *eulogium)
while (screen_data.screen[screen_data.count].type != END)
screen_data.count++;
- /* This is silly and will get fixed in the refactoring */
+ /* This is silly, barding redonkylous and will get fixed in the refactoring */
+ eulogium->procedures = procedures_init();
eulogium->mounts = NULL;
eulogium->progress_data_refresh = NULL;
eulogium->print.name = NULL;
@@ -2808,22 +2810,6 @@ static void on_name_owner_changed(void *data EINA_UNUSED, const char *bus, const
printf("Bus=%s | old=%s | new=%s\n", bus, old_id, new_id);
}
-static void _on_get_error_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
-{
- const char *errname, *errmsg, *errormsg;
-
- if (eldbus_message_error_get(msg, &errname, &errmsg)) {
- EINA_LOG_ERR("%s %s", errname, errmsg);
- return;
- }
- if (!eldbus_message_arguments_get(msg, "s", &errormsg)) {
- EINA_LOG_ERR("Message content does not match expected \"s\" signature. (%s)", eldbus_message_signature_get(msg));
- return;
- }
- EINA_LOG_ERR("%s", errormsg);
- /* TODO Call generic error screen in case of trouble here? */
-}
-
static void _on_get_print_name_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
{
struct eulogium_data *eulogium = data;
@@ -2872,7 +2858,7 @@ static void eulogium_printer_status_set(struct eulogium_data *eulogium, struct _
(eulogium->printer.status == SLICING) ||
(eulogium->printer.status == PRINTING) ||
(eulogium->printer.status == COOLING))) {
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getPrintName", _on_get_print_name_ret, eulogium, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getPrintName", _on_get_print_name_ret, eulogium, -1, "");
/* For griffin-0.1 this is technically a 'race' condition, as we may not have the name yet */
if (!eulogium->print.block_active) {
if (eulogium->print.block) {
@@ -2892,7 +2878,7 @@ static void eulogium_printer_status_set(struct eulogium_data *eulogium, struct _
break;
case (DISCONNECTED): /* fall through */
case (ERROR):
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getError", _on_get_error_ret, eulogium, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getError", _on_get_error_ret, eulogium, -1, "");
content = eulogium_generic_error(eulogium, 4);
break;
case (IDLE):
@@ -3189,6 +3175,90 @@ static void _on_unit_removed_ret(void *data, const Eldbus_Message *msg)
/* TODO: UI Stuff/signals */
}
+static void _on_get_available_procedures_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+ const char *errname, *errmsg;
+ struct eulogium_data *eulogium = data;
+ Eldbus_Message_Iter *array, *avail_proc_struct;
+ char *key;
+ Eina_Bool executable;
+
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg);
+ return;
+ }
+ if (!eldbus_message_arguments_get(msg, "a(sb)", &array)) {
+ EINA_LOG_ERR("Message content does not match expected \"a(sb)\" signature.");
+ return;
+ }
+ while (eldbus_message_iter_get_and_next(array, 'r', &avail_proc_struct)) {
+ if (eldbus_message_iter_arguments_get(avail_proc_struct, "sb", &key, &executable)) {
+ uint_fast16_t i;
+
+ for (i = 0; eulogium->procedures[i].key ; i++) {
+ if (strncmp(key, eulogium->procedures[i].key, eulogium->procedures[i].keylen)) {
+ eulogium->procedures[i].executable = executable;
+ eulogium->procedures[i].available = EINA_TRUE;
+ } else {
+ EINA_LOG_WARN("Procedure not found: '%s'", key);
+ }
+ }
+ }
+ }
+}
+
+static void _on_get_active_procedures_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+ const char *errname, *errmsg;
+ struct eulogium_data *eulogium = data;
+ Eldbus_Message_Iter *array, *act_proc_struct;
+ char *key, *step;
+
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg);
+ return;
+ }
+ if (!eldbus_message_arguments_get(msg, "a(ss)", &array)) {
+ EINA_LOG_ERR("Message content does not match expected \"a(ss)\" signature.");
+ return;
+ }
+ while (eldbus_message_iter_get_and_next(array, 'r', &act_proc_struct)) {
+ if (eldbus_message_iter_arguments_get(act_proc_struct, "ss", &key, &step)) {
+ uint_fast16_t i;
+
+ for (i = 0; eulogium->procedures[i].key ; i++) {
+ if (strncmp(key, eulogium->procedures[i].key, eulogium->procedures[i].keylen)) {
+ eulogium->procedures[i].step = step;
+ } else {
+ EINA_LOG_WARN("Procedure not found: '%s'", key);
+ }
+ }
+ }
+ }
+}
+
+static void _on_get_error_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+ const char *errname, *errmsg, *errormsg;
+
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg);
+ return;
+ }
+ if (!eldbus_message_arguments_get(msg, "s", &errormsg)) {
+ EINA_LOG_ERR("Message content does not match expected \"s\" signature. (%s)", eldbus_message_signature_get(msg));
+ return;
+ }
+ if (strlen(errormsg) > 0)
+ EINA_LOG_ERR("Printer Error '%s' received", errormsg);
+ /* TODO Call generic error screen in case of trouble here? */
+}
+
+static void _on_error_ret(void *data, const Eldbus_Message *msg)
+{
+ _on_get_error_ret(data, msg, NULL);
+}
+
static int eulogium_dbus_init(struct eulogium_data *eulogium)
{
Eldbus_Object *obj;
@@ -3244,10 +3314,14 @@ static int eulogium_dbus_init(struct eulogium_data *eulogium)
* and the statusChanged signal may not have been fired yet
*/
/* TODO: put signal/method name strings in macro/LUT */
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getFileHandlers", _on_get_file_handlers_ret, eulogium, -1, "");
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getStatus", _on_get_status_ret, eulogium, -1, "");
- eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getPrintName", _on_get_print_name_ret, eulogium, -1, "");
- eldbus_proxy_signal_handler_add(eulogium->dbus.proxy[PRINTER], "statusChanged", _on_status_changed_ret, eulogium);
+ eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getError", _on_get_error_ret, eulogium, -1, "");
+ eldbus_proxy_signal_handler_add(eulogium->dbus.proxy[PRINTER], "onError", _on_error_ret, eulogium);
+ eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getAvailableProcedures", _on_get_available_procedures_ret, eulogium, -1, "");
+ eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getActiveProcedures", _on_get_active_procedures_ret, eulogium, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getFileHandlers", _on_get_file_handlers_ret, eulogium, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getStatus", _on_get_status_ret, eulogium, -1, "");
+ //eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getPrintName", _on_get_print_name_ret, eulogium, -1, "");
+ //eldbus_proxy_signal_handler_add(eulogium->dbus.proxy[PRINTER], "statusChanged", _on_status_changed_ret, eulogium);
eldbus_proxy_signal_handler_add(proxy, "UnitNew", _on_unit_new_ret, eulogium);
eldbus_proxy_signal_handler_add(proxy, "UnitRemoved", _on_unit_removed_ret, eulogium);