diff options
Diffstat (limited to 'src/procedures.c')
-rw-r--r-- | src/procedures.c | 222 |
1 files changed, 131 insertions, 91 deletions
diff --git a/src/procedures.c b/src/procedures.c index 916367f..21ef87e 100644 --- a/src/procedures.c +++ b/src/procedures.c @@ -120,7 +120,14 @@ static void _container_dict_basic_variant_append(Eldbus_Message_Iter *array, int eldbus_message_iter_container_close(array, dict); /* } */ } -static void _get_meta_progress(void *data, const void *key, Eldbus_Message_Iter *var) +void _meta_progress_free(void *meta EINA_UNUSED, void *data EINA_UNUSED) +{ + /* This is a dummy function, we dont' need to free anything, as there was no malloced data. + * If however we do not supply this function to ecore_event_add() ecore tries to free + * the meta that's not free-able */ +} + +static void _meta_progress_get(void *data, const void *key, Eldbus_Message_Iter *var) { struct procedure_data *procedure = data; struct print_data *progress = procedure->meta; /* XXX rename to progress data | check meta_type if it is the correct type. */ @@ -170,11 +177,10 @@ static void _get_meta_progress(void *data, const void *key, Eldbus_Message_Iter } free(var_sig); - - ecore_event_add(procedure->poll.event, NULL, NULL, NULL); + ecore_event_add(procedure->event.type, procedure->meta, &_meta_progress_free, NULL); } -static void _get_meta_cur_tar(void *data, const void *key, Eldbus_Message_Iter *var) +static void _meta_cur_tar_get(void *data, const void *key, Eldbus_Message_Iter *var) { struct procedure_data *procedure = data; struct settings_dial_data *dial_data = procedure->meta; @@ -201,7 +207,7 @@ static void _get_meta_cur_tar(void *data, const void *key, Eldbus_Message_Iter * } free(var_sig); -// ecore_event_add(procedure->poll.event, dial_data, NULL, NULL); +// ecore_event_add(procedure->event.type, dial_data, NULL, NULL); } static void _on_start_print_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED) @@ -269,10 +275,10 @@ void procedure_process_step(struct procedure_data *procedure, struct eulogium_da return; /* XXX TODO build 'remember previous screen so we don't redraw the same' */ - EINA_LOG_CRIT("%s", procedure->step_active->key); + 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); - content = ui_widget_progress(eulogium->navi, procedure); + content = ui_widget_progress(eulogium->navi, procedure->meta, &procedure->event); page_state = PAGE_FIRMWARE; } if (procedure->step_active->step == STEP_PRINTING) { @@ -280,7 +286,7 @@ void procedure_process_step(struct procedure_data *procedure, struct eulogium_da page_state = PAGE_PRINTING; } if (procedure->step_active->step == PROC_WAIT_FOR_CLEANUP) { - ui_stack_page_invalidate(eulogium->navi, PAGE_PRINTING); + ui_stack_page_invalidate(eulogium->navi, PAGE_PRINTING); /* XXX Probably move to process_finished */ content = eulogium_clean_print_bed(eulogium); } @@ -288,16 +294,23 @@ void procedure_process_step(struct procedure_data *procedure, struct eulogium_da return; navi_item = elm_naviframe_item_simple_push(eulogium->navi, content); - elm_object_item_data_set(navi_item, (void *)page_state); + elm_object_item_data_set(navi_item, (void *)page_state); /* TODO remove? why is this still here */ if (page_state == PAGE_PRINTING) elm_naviframe_item_pop_cb_set(navi_item, _print_progress_cleanup, eulogium); } -void procedure_procedure_finish(struct procedure_data *procedure, struct eulogium_data *eulogium) +void procedure_process_finish(struct procedure_data *procedure, struct eulogium_data *eulogium) { if (!procedure) return; - + + EINA_LOG_CRIT("finishing key %s", procedure->key); + if (procedure->proc_key == PROC_FIRMWARE_UPDATE) { + ui_stack_page_invalidate(eulogium->navi, PAGE_FIRMWARE); + ui_stack_pop(eulogium->navi); + } + if (procedure->proc_key == PROC_PRINT) { + }; } static struct procedure_msg print_msgs[] = { @@ -493,245 +506,261 @@ static struct procedure_step steps_material_change[] = { static struct procedure_data procedures[] = { [PROC_FIRMWARE_UPDATE] = { .key = _PROC_FIRMWARE_UPDATE, + .proc_key = PROC_FIRMWARE_UPDATE, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_progress, + .parser = _meta_progress_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_firmware_update, .step_active = NULL, .meta = NULL, /* struct progress_data */ - .poll = { + .event = { .in = 0.5, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_PRINT] = { .key = _PROC_PRINT, + .proc_key = PROC_PRINT, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_progress, + .parser = _meta_progress_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_print, .step_active = NULL, .meta = NULL, /* struct print_data */ - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_BED_HEATUP] = { .key = _PROC_BED_HEATUP, + .proc_key = PROC_BED_HEATUP, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_bed_temp_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_HOTEND_HEATUP_0] = { .key = _PROC_HOTEND_HEATUP_0, + .proc_key = PROC_HOTEND_HEATUP_0, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_hotend_temp_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL }, }, [PROC_HOTEND_HEATUP_1] = { .key = _PROC_HOTEND_HEATUP_1, + .proc_key = PROC_HOTEND_HEATUP_1, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_hotend_temp_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_HOTEND_ACTIVE_SET] = { .key = _PROC_HOTEND_ACTIVE_SET, + .proc_key = PROC_HOTEND_ACTIVE_SET, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_hotend_active_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_PRINT_SPEED] = { .key = _PROC_PRINT_SPEED, + .proc_key = PROC_PRINT_SPEED, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_print_speed_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_FAN_SPEED] = { .key = _PROC_FAN_SPEED, + .proc_key = PROC_FAN_SPEED, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_fan_speed_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_FLOW_RATE] = { .key = _PROC_FLOW_RATE, + .proc_key = PROC_FLOW_RATE, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_flow_rate_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_RETRACTION_LENGTH] = { .key = _PROC_RETRACTION_LENGTH, + .proc_key = PROC_RETRACTION_LENGTH, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_retraction_length_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_RETRACTION_SPEED] = { .key = _PROC_RETRACTION_SPEED, + .proc_key = PROC_RETRACTION_SPEED, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_retraction_speed_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_RETRACTION_ZHOP] = { .key = _PROC_RETRACTION_ZHOP, + .proc_key = PROC_RETRACTION_ZHOP, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_retraction_zhop_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_BED_LEVEL_AUTO] = { .key = _PROC_BED_LEVEL_AUTO, + .proc_key = PROC_BED_LEVEL_AUTO, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_bed_level_auto, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_BED_RAISE] = { .key = _PROC_BED_RAISE, + .proc_key = PROC_BED_RAISE, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_bed_raise, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_BED_HOME] = { .key = _PROC_BED_HOME, + .proc_key = PROC_BED_HOME, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_bed_home, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_BED_MOVE] = { .key = _PROC_BED_MOVE, + .proc_key = PROC_BED_MOVE, .wizard = EINA_FALSE, .status = PROC_READY, .parser = NULL, @@ -740,30 +769,32 @@ static struct procedure_data procedures[] = { ._steps = steps_move, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_HEAD_HOME] = { .key = _PROC_HEAD_HOME, + .proc_key = PROC_HEAD_HOME, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_head_home, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_MATERIAL_MOVE_0] = { .key = _PROC_MATERIAL_MOVE_0, + .proc_key = PROC_MATERIAL_MOVE_0, .wizard = EINA_FALSE, .status = PROC_READY, .parser = NULL, @@ -772,14 +803,15 @@ static struct procedure_data procedures[] = { ._steps = steps_move, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_MATERIAL_MOVE_1] = { .key = _PROC_MATERIAL_MOVE_1, + .proc_key = PROC_MATERIAL_MOVE_1, .wizard = EINA_FALSE, .status = PROC_READY, .parser = NULL, @@ -788,94 +820,100 @@ static struct procedure_data procedures[] = { ._steps = steps_move, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_JERK_XY] = { .key = _PROC_JERK_XY, + .proc_key = PROC_JERK_XY, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_jerk_xyz_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_JERK_Z] = { .key = _PROC_JERK_Z, + .proc_key = PROC_JERK_Z, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_jerk_xyz_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_CURRENT_XY] = { .key = _PROC_CURRENT_XY, + .proc_key = PROC_CURRENT_XY, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_current_xyze_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_CURRENT_Z] = { .key = _PROC_CURRENT_Z, + .proc_key = PROC_CURRENT_Z, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_current_xyze_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_CURRENT_E] = { .key = _PROC_CURRENT_E, + .proc_key = PROC_CURRENT_E, .wizard = EINA_FALSE, .status = PROC_READY, - .parser = _get_meta_cur_tar, + .parser = _meta_cur_tar_get, .executable = EINA_FALSE, .available = EINA_FALSE, ._steps = steps_current_xyze_set, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_MATERIAL_UNLOAD] = { .key = _PROC_MATERIAL_UNLOAD, + .proc_key = PROC_MATERIAL_UNLOAD, .wizard = EINA_TRUE, .status = PROC_READY, .parser = NULL, @@ -884,14 +922,15 @@ static struct procedure_data procedures[] = { ._steps = steps_material_unload, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_MATERIAL_LOAD] = { .key = _PROC_MATERIAL_LOAD, + .proc_key = PROC_MATERIAL_LOAD, .wizard = EINA_TRUE, .status = PROC_READY, .parser = NULL, @@ -900,14 +939,15 @@ static struct procedure_data procedures[] = { ._steps = steps_material_load, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, [PROC_MATERIAL_CHANGE] = { .key = _PROC_MATERIAL_CHANGE, + .proc_key = PROC_MATERIAL_CHANGE, .wizard = EINA_TRUE, .status = PROC_READY, .parser = NULL, @@ -916,10 +956,10 @@ static struct procedure_data procedures[] = { ._steps = steps_material_change, .step_active = NULL, .meta = NULL, - .poll = { + .event = { .in = 0.0, .timer = NULL, - .event = 0, + .type = 0, }, }, }; @@ -1052,14 +1092,14 @@ Eldbus_Pending *procedure_target_set(const enum procedure_key proc_key) void procedure_metadata_poll(struct procedure_data *procedure, Eina_Bool polling) { if (polling) - if (procedure->poll.timer) + if (procedure->event.timer) return; /* Timer already running */ - // procedure->poll.timer = ecore_timer_add(procedure->poll.in, procedure->poll.func, procedure); - if (!procedure->poll.timer) { + // 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->poll.timer) - ecore_timer_del(procedure->poll.timer); + if (procedure->event.timer) + ecore_timer_del(procedure->event.timer); else EINA_LOG_CRIT("Unable to delete non-existing timer"); } @@ -1092,7 +1132,7 @@ struct procedure_data *procedures_init(Eldbus_Proxy *proxy) for (i = PROC_NONE; i < PROC_LAST; i++) { if (procedures[i].key) - procedures[i].poll.event = ecore_event_type_new(); + procedures[i].event.type = ecore_event_type_new(); } /* TODO: we probably should do something here to prepare all procedures and their meta data |