summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOlliver Schinagl <o.schinagl@ultimaker.com>2015-06-02 14:20:41 (GMT)
committerOlliver Schinagl <o.schinagl@ultimaker.com>2015-06-12 05:30:15 (GMT)
commit07a57037464054da02a7e2528ad25a711137c6b1 (patch)
tree43067d28f511921e4ac1f611f1bc832ec30ff5df /src
parent4819a5dab4ffc2cf3def96a9b2ea665687560d8f (diff)
downloadeulogium-07a57037464054da02a7e2528ad25a711137c6b1.zip
eulogium-07a57037464054da02a7e2528ad25a711137c6b1.tar.gz
eulogium-07a57037464054da02a7e2528ad25a711137c6b1.tar.bz2
[griffin.display] Add more states based on the dummy printer
The dummy printer is giving us more states and allows for more advanced screens (for now). Update the progress screen with more information Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
Diffstat (limited to 'src')
-rw-r--r--src/eulogium.c61
-rw-r--r--src/eulogium.h12
2 files changed, 62 insertions, 11 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index ecf8f80..93c89b8 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -546,18 +546,33 @@ Evas_Object *eulogium_split_screen(Evas_Object *parent, Evas_Object *top, Evas_O
static void _on_get_progress_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
{
const char *errname, *errmsg;
- struct eulogium_data *eulogium = data;
+ double *progress = data;
if (eldbus_message_error_get(msg, &errname, &errmsg)) {
EINA_LOG_ERR("%s %s", errname, errmsg);
return;
}
- if (!eldbus_message_arguments_get(msg, "d", &eulogium->print.progress)) {
+ if (!eldbus_message_arguments_get(msg, "d", progress)) {
EINA_LOG_ERR("Failed to get print progress.");
return;
}
}
+static void _on_get_time_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+ const char *errname, *errmsg;
+ uint_fast32_t *time = data;
+
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg);
+ return;
+ }
+ if (!eldbus_message_arguments_get(msg, "u", time)) {
+ EINA_LOG_ERR("Failed to get remaining print time.");
+ return;
+ }
+}
+
static Eina_Bool _timer_progress_data_update_cb(void *data)
{
struct eulogium_data *eulogium = data;
@@ -565,10 +580,13 @@ static Eina_Bool _timer_progress_data_update_cb(void *data)
static double progress = 0;
static double time = -1;
- eldbus_proxy_call(eulogium->dbus.proxy[HARMA], "getProgress", _on_get_progress_ret, eulogium, -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, "");
if (eulogium->printer.status != status) {
elm_object_text_set(eulogium->status, griffin_print_status[eulogium->printer.status]);
+ if (eulogium->printer.status == COOLING)
+ elm_progressbar_inverted_set(eulogium->progress, EINA_TRUE);
status = eulogium->printer.status;
}
if (eulogium->print.progress != progress) {
@@ -1302,10 +1320,22 @@ static void eulogium_printer_status_set(struct eulogium_data *eulogium, struct _
break;
#endif
case (PAUSED): /* fall through TODO: make pause screen with resume/other button */
+ case (HEATING): /* fall through */
+ case (SLICING): /* fall through */
case (PRINTING): /* fall through */
- eldbus_proxy_call(eulogium->dbus.proxy[HARMA], "getPrintName", _on_get_print_name_ret, eulogium, -1, "");
- content = eulogium_print_progress(eulogium);
- break;
+ case (COOLING):
+ /* Check if the previous state was already one of the printing states.
+ * If the state was one of the various printing states, do nothing.
+ */
+ if (!((eulogium->printer.status == PAUSED) ||
+ (eulogium->printer.status == HEATING) ||
+ (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, "");
+ content = eulogium_print_progress(eulogium);
+ }
+ break;
case (WAIT_FOR_REMOVAL):
if (eulogium->printer.status != status->i) {
eulogium_print_data_clear(eulogium);
@@ -1393,15 +1423,27 @@ static void _on_get_status_ret(void *data, const Eldbus_Message *msg, Eldbus_Pen
} else if (!strncmp(state, "ERROR", 5)) {
status.i = ERROR;
status.s = griffin_print_status[ERROR];
+ } else if (!strncmp(state, "FIRST_RUN_WIZZARD", 17)) {
+ status.i = FIRST_RUN_WIZZARD;
+ status.s = griffin_print_status[FIRST_RUN_WIZZARD];
} else if (!strncmp(state, "IDLE", 4)) {
status.i = IDLE;
status.s = griffin_print_status[IDLE];
- } else if (!strncmp(state, "WAIT_FOR_REMOVAL", 16)) {
- status.i = WAIT_FOR_REMOVAL;
- status.s = griffin_print_status[WAIT_FOR_REMOVAL];
+ } else if (!strncmp(state, "SLICING", 7)) {
+ status.i = SLICING;
+ status.s = griffin_print_status[SLICING];
+ } else if (!strncmp(state, "HEATING", 7)) {
+ status.i = HEATING;
+ status.s = griffin_print_status[HEATING];
} else if (!strncmp(state, "PRINTING", 8)) {
status.i = PRINTING;
status.s = griffin_print_status[PRINTING];
+ } else if (!strncmp(state, "COOLING", 7)) {
+ status.i = COOLING;
+ status.s = griffin_print_status[COOLING];
+ } else if (!strncmp(state, "WAIT_FOR_REMOVAL", 16)) {
+ status.i = WAIT_FOR_REMOVAL;
+ status.s = griffin_print_status[WAIT_FOR_REMOVAL];
} else if (!strncmp(state, "PAUSED", 6)) {
status.i = PAUSED;
status.s = griffin_print_status[PAUSED];
@@ -1721,6 +1763,7 @@ static int eulogium_dbus_init(struct eulogium_data *eulogium)
/* TODO: put signal/method name strings in macro/LUT */
eldbus_proxy_call(eulogium->dbus.proxy[HARMA], "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);
diff --git a/src/eulogium.h b/src/eulogium.h
index ca9c1b6..39acd0b 100644
--- a/src/eulogium.h
+++ b/src/eulogium.h
@@ -19,9 +19,13 @@ enum printer_status {
UNKNOWN,
DISCONNECTED,
ERROR,
- WAIT_FOR_REMOVAL,
+ FIRST_RUN_WIZZARD,
IDLE,
+ SLICING,
+ HEATING,
PRINTING,
+ COOLING,
+ WAIT_FOR_REMOVAL,
PAUSED,
};
@@ -29,9 +33,13 @@ char *griffin_print_status[] = {
"Unknown",
"Disconnected",
"Error",
- "Wait for Removal",
+ "First Run Wizard",
"IDLE",
+ "Slicing",
+ "Heating",
"Printing:",
+ "Cooling down",
+ "Wait for Removal",
"Paused",
};