summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOlliver Schinagl <o.schinagl@ultimaker.com>2015-04-24 15:11:34 (GMT)
committerOlliver Schinagl <o.schinagl@ultimaker.com>2015-04-28 05:07:16 (GMT)
commit343f54aecc7109969d264a122b2fa722d25c9054 (patch)
tree8c46e4c47969335d258c6122b8eca7c91fbeeb02 /src
parent902b36c98d0a62080730cebc045033c36d671f57 (diff)
downloadeulogium-343f54aecc7109969d264a122b2fa722d25c9054.zip
eulogium-343f54aecc7109969d264a122b2fa722d25c9054.tar.gz
eulogium-343f54aecc7109969d264a122b2fa722d25c9054.tar.bz2
Initial dbus support
This patch adds initial dbus support for 3 interfaces for griffin; printer, led and harma. This interfaces are unused for now. Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
Diffstat (limited to 'src')
-rw-r--r--src/eulogium.c62
-rw-r--r--src/eulogium.h9
2 files changed, 70 insertions, 1 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index 1fe5ca4..781ec17 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -966,6 +966,65 @@ static void eulogium_setup(struct eulogium_data *eulogium)
eulogium_button_cb_data_set(&but_return, eulogium);
}
+/* TODO May need this later to change certain connections to objects */
+static void on_name_owner_changed(void *data EINA_UNUSED, const char *bus, const char *old_id, const char *new_id)
+{
+ printf("Bus=%s | old=%s | new=%s\n", bus, old_id, new_id);
+}
+
+static int eulogium_dbus_init(struct eulogium_data *eulogium)
+{
+ Eldbus_Object *obj;
+
+ eulogium->dbus.conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
+ if (!eulogium->dbus.conn) {
+ EINA_LOG_CRIT("Could not get system dbus.");
+ return -ECONNREFUSED;
+ }
+
+ /* TODO: Make nice loop that gets BUS/PATH from a predefined array */
+ obj = eldbus_object_get(eulogium->dbus.conn, "nl.ultimaker.harma", "/nl/ultimaker/harma");
+ if (!obj) {
+ EINA_LOG_WARN("Could not get nl.ultimaker.harma object.");
+ return -EFAULT;
+ }
+
+ eulogium->dbus.proxy[HARMA] = eldbus_proxy_get(obj, "nl.ultimaker");
+ if (!eulogium->dbus.proxy[HARMA]) {
+ EINA_LOG_WARN("Could not get dbus proxy.");
+ return -EFAULT;
+ }
+ eldbus_name_owner_changed_callback_add(eulogium->dbus.conn, "nl.ultimaker.harma", on_name_owner_changed, eulogium->dbus.conn, EINA_TRUE);
+
+ obj = eldbus_object_get(eulogium->dbus.conn, "nl.ultimaker.led", "/nl/ultimaker/led");
+ if (!obj) {
+ return -EFAULT;
+ EINA_LOG_WARN("Could not get nl.ultimaker.led object.");
+ }
+
+ eulogium->dbus.proxy[LED] = eldbus_proxy_get(obj, "nl.ultimaker");
+ if (!eulogium->dbus.proxy[LED]) {
+ EINA_LOG_WARN("Could not get dbus proxy.");
+ return -EFAULT;
+ }
+ eldbus_name_owner_changed_callback_add(eulogium->dbus.conn, "nl.ultimaker.led", on_name_owner_changed, eulogium->dbus.conn, EINA_TRUE);
+
+ obj = eldbus_object_get(eulogium->dbus.conn, "nl.ultimaker.printer", "/nl/ultimaker/printer");
+ if (!obj) {
+ EINA_LOG_WARN("Could not get nl.ultimaker.printer object.");
+ return -EFAULT;
+ }
+
+ eulogium->dbus.proxy[PRINTER] = eldbus_proxy_get(obj, "nl.ultimaker");
+ if (!eulogium->dbus.proxy[PRINTER]) {
+ EINA_LOG_WARN("Could not get dbus proxy.");
+ return -EFAULT;
+ }
+ eldbus_name_owner_changed_callback_add(eulogium->dbus.conn, "nl.ultimaker.printer", on_name_owner_changed, eulogium->dbus.conn, EINA_TRUE);
+
+ return 0;
+}
+
EAPI_MAIN int elm_main(int argc, char **argv)
{
Eina_Bool quit_option = EINA_FALSE;
@@ -1035,6 +1094,9 @@ EAPI_MAIN int elm_main(int argc, char **argv)
elm_config_focus_highlight_enabled_set(EINA_FALSE);
elm_config_focus_highlight_animate_set(EINA_FALSE);
+ if (eulogium_dbus_init(&eulogium))
+ EINA_LOG_CRIT("Griffin D-Bus initialization failed!");
+
window = elm_win_add(NULL, PACKAGE_NAME, ELM_WIN_BASIC);
if (!window)
return EXIT_FAILURE;
diff --git a/src/eulogium.h b/src/eulogium.h
index e5b8b9d..b8b7089 100644
--- a/src/eulogium.h
+++ b/src/eulogium.h
@@ -32,10 +32,17 @@ struct print_data {
float material;
};
+enum proxy_idx {
+ HARMA,
+ LED,
+ PRINTER,
+ LAST /* sentinel */
+};
+
struct dbus_data {
Eldbus_Connection *conn;
Eldbus_Pending *pending;
- Eldbus_Proxy *proxy;
+ Eldbus_Proxy *proxy[LAST];
};
struct eulogium_data {