diff options
author | Olliver Schinagl <o.schinagl@ultimaker.com> | 2015-07-30 13:31:59 (GMT) |
---|---|---|
committer | Olliver Schinagl <o.schinagl@ultimaker.com> | 2015-07-30 13:31:59 (GMT) |
commit | 98430e79bd1cb3884539b00e69b4e4915e9562fb (patch) | |
tree | bc8a92976a9b53f28fb60259c08164bd4fe9bafb /src/procedures.c | |
parent | 7d9482dfa3636633e50303ba22059dbdc42c6164 (diff) | |
download | eulogium-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.c | 67 |
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; |