summaryrefslogtreecommitdiffstats
path: root/src/eulogium.c
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/eulogium.c
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/eulogium.c')
-rw-r--r--src/eulogium.c61
1 files changed, 52 insertions, 9 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);