summaryrefslogtreecommitdiffstats
path: root/src/procedures.c
diff options
context:
space:
mode:
authorOlliver Schinagl <o.schinagl@ultimaker.com>2015-07-30 13:31:59 (GMT)
committerOlliver Schinagl <o.schinagl@ultimaker.com>2015-07-30 13:31:59 (GMT)
commit98430e79bd1cb3884539b00e69b4e4915e9562fb (patch)
treebc8a92976a9b53f28fb60259c08164bd4fe9bafb /src/procedures.c
parent7d9482dfa3636633e50303ba22059dbdc42c6164 (diff)
downloadeulogium-98430e79bd1cb3884539b00e69b4e4915e9562fb.zip
eulogium-98430e79bd1cb3884539b00e69b4e4915e9562fb.tar.gz
eulogium-98430e79bd1cb3884539b00e69b4e4915e9562fb.tar.bz2
fix print progress procedures, untested is procedure finish
Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
Diffstat (limited to 'src/procedures.c')
-rw-r--r--src/procedures.c67
1 files changed, 47 insertions, 20 deletions
diff --git a/src/procedures.c b/src/procedures.c
index 21ef87e..38d320b 100644
--- a/src/procedures.c
+++ b/src/procedures.c
@@ -1,6 +1,6 @@
/*
* TODO: rename this to dbus_procedures.c
- * eulogium_procedures, available procedures
+ * procedures, available procedures
*
* Copyright (c) 2015 Ultimaker B.V.
* Author: Olliver Schinagl <o.schinagl@ultimaker.com>
@@ -277,12 +277,18 @@ void procedure_process_step(struct procedure_data *procedure, struct eulogium_da
/* XXX TODO build 'remember previous screen so we don't redraw the same' */
EINA_LOG_CRIT("processing key %s step %s", procedure->key, procedure->step_active->key);
if (procedure->step_active->step == STEP_FIRMWARE_UPDATE_WRITING) {
- procedure_metadata_poll(procedure, EINA_TRUE);
+ procedure_metadata_poll_start(procedure); /* Poll for progress information, no signal on these */
content = ui_widget_progress(eulogium->navi, procedure->meta, &procedure->event);
page_state = PAGE_FIRMWARE;
}
+// if (procedure->step_active->step == HEATUP_HOTEND) {
+// procedure_metadata_poll_start(procedure); /* Poll for progress information, no signal on these */
+// content = ui_widget_progress(eulogium->navi, procedure->meta, &procedure->event);
+// page_state = PAGE_PRINTING;
+// }
if (procedure->step_active->step == STEP_PRINTING) {
- content = eulogium_print_progress(eulogium->navi, eulogium, (struct print_data *)procedure->meta);
+ procedure_metadata_poll_start(procedure); /* Poll for progress information, no signal on these */
+ content = ui_widget_progress(eulogium->navi, procedure->meta, &procedure->event);
page_state = PAGE_PRINTING;
}
if (procedure->step_active->step == PROC_WAIT_FOR_CLEANUP) {
@@ -305,12 +311,18 @@ void procedure_process_finish(struct procedure_data *procedure, struct eulogium_
return;
EINA_LOG_CRIT("finishing key %s", procedure->key);
- if (procedure->proc_key == PROC_FIRMWARE_UPDATE) {
+ switch (procedure->proc_key) {
+ case PROC_FIRMWARE_UPDATE:
+ procedure_metadata_poll_stop(procedure);
ui_stack_page_invalidate(eulogium->navi, PAGE_FIRMWARE);
ui_stack_pop(eulogium->navi);
+ break;
+ case PROC_PRINT:
+ procedure_metadata_poll_stop(procedure);
+ break;
+ default:
+ break;
}
- if (procedure->proc_key == PROC_PRINT) {
- };
}
static struct procedure_msg print_msgs[] = {
@@ -533,7 +545,7 @@ static struct procedure_data procedures[] = {
.step_active = NULL,
.meta = NULL, /* struct print_data */
.event = {
- .in = 0.0,
+ .in = 0.5,
.timer = NULL,
.type = 0,
},
@@ -1089,20 +1101,35 @@ Eldbus_Pending *procedure_target_set(const enum procedure_key proc_key)
return eldbus_proxy_send(__proxy, msg, _on_start_dial_ret, dial_data->label, -1);
}
-void procedure_metadata_poll(struct procedure_data *procedure, Eina_Bool polling)
+static Eina_Bool _cb_timer_procedure_metadata_poll(void *data)
{
- if (polling)
- if (procedure->event.timer)
- return; /* Timer already running */
- // procedure->event.timer = ecore_timer_add(procedure->event.in, procedure->event.func, procedure);
- if (!procedure->event.timer) {
- EINA_LOG_CRIT("Unable to create metadata polling timer");
- } else {
- if (procedure->event.timer)
- ecore_timer_del(procedure->event.timer);
- else
- EINA_LOG_CRIT("Unable to delete non-existing timer");
+ struct procedure_data *procedure = data;
+
+ if (!procedure)
+ return ECORE_CALLBACK_CANCEL;
+
+ procedure_metadata_get(procedure);
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+void procedure_metadata_poll_start(struct procedure_data *procedure)
+{
+ if (procedure->event.timer) {
+ EINA_LOG_WARN("Starting poll timer when already running for procedure %s.", procedure->key);
+ return; /* Timer already running */
}
+ procedure->event.timer = ecore_timer_add(procedure->event.in, _cb_timer_procedure_metadata_poll, procedure);
+ if (!procedure->event.timer)
+ EINA_LOG_CRIT("Unable to create metadata polling timer for procedure %s.", procedure->key);
+}
+
+void procedure_metadata_poll_stop(struct procedure_data *procedure)
+{
+ if (procedure->event.timer)
+ ecore_timer_del(procedure->event.timer);
+ else
+ EINA_LOG_CRIT("Unable to delete metadata polling timer for procedure %s.", procedure->key);
}
Eldbus_Pending *procedure_metadata_get(const struct procedure_data *procedure)
@@ -1115,7 +1142,7 @@ Eldbus_Pending *procedure_metadata_key_get(enum procedure_key proc_key)
return eldbus_proxy_call(__proxy, "getProcedureMetaData", on_method_get_procedure_metadata_ret, &procedures[proc_key], -1, "s", procedures[proc_key].key);
}
-void procedure_meta_getall(void)
+void procedure_metadata_getall(void)
{
enum procedure_key i;