summaryrefslogtreecommitdiffstats
path: root/src/procedures.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/procedures.h')
-rw-r--r--src/procedures.h159
1 files changed, 150 insertions, 9 deletions
diff --git a/src/procedures.h b/src/procedures.h
index 79e23eb..44d1498 100644
--- a/src/procedures.h
+++ b/src/procedures.h
@@ -1,5 +1,5 @@
/*
- * eulogium_procedures, available procedures
+ * procedures, available procedures
*
* Copyright (c) 2015 Ultimaker B.V.
* Author: Olliver Schinagl <o.schinagl@ultimaker.com>
@@ -7,23 +7,164 @@
* SPDX-License-Identifier: AGPL-3.0+
*/
-#ifndef _EULOGIUM_PROCEDURES_H
-#define _EULOGIUM_PROCEDURES_H
+#ifndef _PROCEDURES_H
+#define _PROCEDURES_H
+#include <Ecore.h>
#include <Eina.h>
#include <Eldbus.h>
#include <stdint.h>
-#include "print_data.h"
+#include "gettext.h"
+
+#define LABEL_PROC_NONE N_("None")
+#define LABEL_PROC_BED_MOVE N_("Moving buildplate")
+#define LABEL_PROC_BED_HEATUP N_("Heating buildplate")
+#define LABEL_PROC_HOTEND_HEATUP_0 N_("Heating left hotend")
+#define LABEL_PROC_HOTEND_HEATUP_1 N_("Heating right hotend")
+#define LABEL_PROC_HOTEND_ACTIVE_SET N_("Switching active hotend")
+#define LABEL_PROC_PRINT_SPEED N_("Print speed")
+#define LABEL_PROC_FAN_SPEED N_("Fan speed")
+#define LABEL_PROC_FLOW_RATE N_("Flow rate")
+#define LABEL_PROC_RETRACTION_LENGTH N_("Retraction length")
+#define LABEL_PROC_RETRACTION_SPEED N_("Retraction speed")
+#define LABEL_PROC_RETRACTION_ZHOP N_("Retraction Z-Hop")
+#define LABEL_PROC_BED_LEVEL_AUTO N_("Autolevel buildplate")
+#define LABEL_PROC_BED_RAISE N_("Raise buildplate")
+#define LABEL_PROC_BED_HOME N_("Lower buildplate")
+#define LABEL_PROC_MATERIAL_MOVE_0 N_("Move material left")
+#define LABEL_PROC_MATERIAL_MOVE_1 N_("Move material right")
+#define LABEL_PROC_JERK_XY N_("Jerk X/Y")
+#define LABEL_PROC_JERK_Z N_("Jerk Z")
+#define LABEL_PROC_CURRENT_XY N_("Current X/Y")
+#define LABEL_PROC_CURRENT_Z N_("Current Z")
+#define LABEL_PROC_CURRENT_E N_("Current E")
+#define LABEL_PROC_PRINT N_("Printing")
+#define LABEL_PROC_FIRMWARE_UPDATE N_("Updating firmware")
+#define LABEL_PROC_LAST N_("Unknown")
+
+enum procedure_status {
+ PROC_READY,
+ PROC_ACTIVE,
+ PROC_FINISHED,
+};
+
+enum procedure_key {
+ PROC_NONE,
+ PROC_BED_MOVE,
+ PROC_BED_HEATUP,
+ PROC_HOTEND_HEATUP_0,
+ PROC_HOTEND_HEATUP_1,
+ PROC_HOTEND_ACTIVE_SET,
+ PROC_PRINT_SPEED,
+ PROC_FAN_SPEED,
+ PROC_FLOW_RATE,
+ PROC_RETRACTION_LENGTH,
+ PROC_RETRACTION_SPEED,
+ PROC_RETRACTION_ZHOP,
+ PROC_BED_LEVEL_AUTO,
+ PROC_BED_RAISE,
+ PROC_BED_HOME,
+ PROC_HEAD_HOME,
+ PROC_MATERIAL_MOVE_0,
+ PROC_MATERIAL_MOVE_1,
+ PROC_JERK_XY,
+ PROC_JERK_Z,
+ PROC_CURRENT_XY,
+ PROC_CURRENT_Z,
+ PROC_CURRENT_E,
+ PROC_PRINT,
+ PROC_FIRMWARE_UPDATE,
+ PROC_LAST, /* sentinel */
+};
+
+enum steps {
+ PROC_RUN_PRE_PRINT_SETUP,
+ STEP_PRINTING,
+ PROC_POST_PRINT,
+ PROC_WAIT_FOR_CLEANUP,
+ STEP_HEATING,
+ STEP_MOVING,
+ STEP_SPEEDING,
+ STEP_FLOWING,
+ STEP_HOMEING,
+ STEP_LENGTHENING,
+ STEP_HOPPING,
+ STEP_RAISING,
+ STEP_AUTOMATIC_BED_LEVELING,
+ STEP_CURRENTING,
+ STEP_JERKING,
+ STEP_WAITING,
+ STEP_SWITCHING,
+ STEP_FIRMWARE_UPDATE_CHECKING,
+ STEP_FIRMWARE_UPDATE_WRITING,
+ STEP_FIRMWARE_UPDATE_VERIFYING,
+};
+
+struct procedure_step {
+ const char *key;
+ const enum steps step;
+};
+
+enum msgs {
+ PROC_MSG_PRINTER_CLEANED,
+};
+
+struct procedure_msg {
+ const char *key;
+ const enum msgs msg;
+};
+
+enum meta_type {
+ PROC_META_NONE,
+ PROC_META_PRINT,
+ PROC_META_DIAL,
+};
+
+struct poll_data {
+ double in;
+ Ecore_Timer *timer;
+ int event;
+};
struct procedure_data {
- char *key;
- uint_fast16_t keylen;
+ const char *key;
+ enum procedure_status status;
+ const char *sig;
+ const char *para; /* TODO va_list to go with sig? */
Eina_Bool available;
Eina_Bool executable;
+ void (*parser)(void *data, const void *key, Eldbus_Message_Iter *variant);
+ void *meta; /* TODO every proc. has meta data, some needs to be periodically updated (print_data), others on signal changes. needs enum guard to identify which meta we have. */
+ const struct procedure_msg *msgs;
+ const struct procedure_step *_steps; /* TODO optional? maybe we don't even have to know the list */
+ const struct procedure_step *step_active;
+ struct poll_data poll;
};
-struct procedure_data *procedures_init(void);
-Eldbus_Pending *procedure_start_print(Eldbus_Proxy *proxy, struct print_data *print);
+struct eulogium_data; /* XXX remove later when struct eulogium gets refactored. */
+
+struct procedure_data *procedures_init(Eldbus_Proxy *proxy);
+void procedure_meta_getall(void);
+struct procedure_data *procedure_get(const char *key);
+const struct procedure_step *procedure_step_get(const struct procedure_data *proc, const char *key);
+void procedure_process_step(struct eulogium_data *eulogium, struct procedure_data *procedure);
+Eldbus_Pending *procedure_message(const struct procedure_data *proc, const struct procedure_msg *msg);
+
+struct print_data; /* XXX only here until print_start gets simplified */
+Eldbus_Pending *procedure_print_start(const struct print_data *print);
+Eldbus_Pending *procedure_print_printer_cleaned(void);
+Eldbus_Pending *procedure_print_progress_get(struct procedure_data *procedure);
+
+void *procedure_meta_get(struct procedure_data *procedure);
+void procedure_meta_set(struct procedure_data *procedure, void *data);
+
+Eldbus_Pending *procedure_start_simple(const enum procedure_key proc_key);
+Eldbus_Pending *procedure_metadata_get(const struct procedure_data *procedure);
+Eldbus_Pending *procedure_metadata_key_get(enum procedure_key proc_key);
+void procedure_metadata_poll(struct procedure_data *procedure, Eina_Bool polling);
+Eldbus_Pending *procedure_target_set(const enum procedure_key proc_key);
+
+void procedures_shutdown(void);
-#endif /* _EULOGIUM_PRIVATE_H */
+#endif /* _PROCEDURES_H */