summaryrefslogtreecommitdiff
path: root/src/tripcomputer
diff options
context:
space:
mode:
authorMartin Schaller <martin.schaller@it-schaller.de>2014-05-09 23:39:32 -0700
committerMartin Schaller <martin.schaller@it-schaller.de>2014-05-09 23:39:32 -0700
commit0187f78d5956c87eef088da1d6e66888610fe112 (patch)
tree89b26681a660a77210d7f79dcbe5f764260c661d /src/tripcomputer
parent71165992c63bac80acb6b4f781fec17aa3883cd0 (diff)
downloadnavigation-0187f78d5956c87eef088da1d6e66888610fe112.tar.gz
Added more functionality
Diffstat (limited to 'src/tripcomputer')
-rw-r--r--src/tripcomputer/tripcomputer.cpp78
1 files changed, 45 insertions, 33 deletions
diff --git a/src/tripcomputer/tripcomputer.cpp b/src/tripcomputer/tripcomputer.cpp
index 3f52126..fe182ca 100644
--- a/src/tripcomputer/tripcomputer.cpp
+++ b/src/tripcomputer/tripcomputer.cpp
@@ -6,10 +6,9 @@
#include "constants.h"
#include "amb.h"
-static DBus::Glib::BusDispatcher dispatcher,amb_dispatcher;
-static DBus::Connection *conn,*amb_conn;
+static DBus::Glib::BusDispatcher dispatcher;
+static DBus::Connection *conn;
static class TripComputer *server;
-static class AutomotiveMessageBroker *amb;
static GMainLoop *loop;
static DBus::Variant
@@ -81,6 +80,17 @@ class TripComputer
TripComputer(DBus::Connection &connection)
: DBus::ObjectAdaptor(connection, "/org/genivi/demonstrator/TripComputer")
{
+ amb_dispatcher.attach(NULL);
+ amb_conn = new DBus::Connection(DBus::Connection::SessionBus());
+ amb_conn->setup(&amb_dispatcher);
+ amb=new AutomotiveMessageBroker(*amb_conn);
+
+ fuel = amb->FindObject("Fuel");
+ odometer = amb->FindObject("Odometer");
+ printf("%d %d\n",fuel.size(), odometer.size());
+
+ fuel_properties=new Properties(*amb_conn,fuel[0]);
+ odometer_properties=new Properties(*amb_conn,odometer[0]);
}
::DBus::Struct< uint16_t, uint16_t, uint16_t, std::string >
@@ -116,33 +126,9 @@ class TripComputer
void ResetTripData(const uint8_t& number)
{
}
-};
-
-
-
-int main(int argc, char **argv)
-{
- loop=g_main_loop_new(NULL, false);
- dispatcher.attach(NULL);
- DBus::default_dispatcher = &dispatcher;
- conn = new DBus::Connection(DBus::Connection::SessionBus());
- conn->setup(&dispatcher);
- conn->request_name("org.genivi.demonstrator.TripComputer");
- server=new TripComputer(*conn);
-
- amb_dispatcher.attach(NULL);
- amb_conn = new DBus::Connection(DBus::Connection::SessionBus());
- amb_conn->setup(&amb_dispatcher);
- amb=new AutomotiveMessageBroker(*amb_conn);
-
- std::vector< ::DBus::Path > fuel = amb->FindObject("Fuel");
- std::vector< ::DBus::Path > odometer = amb->FindObject("Odometer");
- printf("%d %d\n",fuel.size(), odometer.size());
-
- Properties *fuel_properties=new Properties(*amb_conn,fuel[0]);
- Properties *odometer_properties=new Properties(*amb_conn,odometer[0]);
-#if 0
- for (;;) {
+
+ void update_data()
+ {
DBus::Variant variant=fuel_properties->Get("org.automotive.Fuel","Level");
DBus::MessageIter it=variant.reader();
uint16_t res;
@@ -157,10 +143,36 @@ int main(int argc, char **argv)
uint32_t res2;
it >> res2;
printf("%d\n",res2);
- sleep(1);
}
-#endif
-
+ private:
+ DBus::Glib::BusDispatcher amb_dispatcher;
+ DBus::Connection *amb_conn;
+ AutomotiveMessageBroker *amb;
+ std::vector< ::DBus::Path > fuel;
+ std::vector< ::DBus::Path > odometer;
+ Properties *fuel_properties;
+ Properties *odometer_properties;
+};
+
+static gboolean
+update_data(gpointer user_data)
+{
+ TripComputer *tc=(TripComputer *)user_data;
+ tc->update_data();
+ return TRUE;
+}
+
+int main(int argc, char **argv)
+{
+ loop=g_main_loop_new(NULL, false);
+ dispatcher.attach(NULL);
+ DBus::default_dispatcher = &dispatcher;
+ conn = new DBus::Connection(DBus::Connection::SessionBus());
+ conn->setup(&dispatcher);
+ conn->request_name("org.genivi.demonstrator.TripComputer");
+ server=new TripComputer(*conn);
+
+ g_timeout_add(1000, update_data, server);
g_main_loop_run(loop);
}