18
18
#include "program_options.h"
20
#include "com/ubuntu/location/service/stub.h"
20
#include <com/ubuntu/location/service/stub.h>
22
22
#include <core/dbus/resolver.h>
23
23
#include <core/dbus/asio/executor.h>
27
27
namespace cul = com::ubuntu::location;
28
28
namespace culs = com::ubuntu::location::service;
29
namespace culss = com::ubuntu::location::service::session;
29
30
namespace dbus = core::dbus;
31
32
int main(int argc, char** argv)
53
54
{"system", dbus::WellKnownBus::system},
56
core::dbus::Bus::Ptr bus
58
new core::dbus::Bus{lut.at(options.value_for_key<std::string>("bus"))}
59
new dbus::Bus{lut.at(options.value_for_key<std::string>("bus"))}
60
bus->install_executor(core::dbus::asio::make_executor(bus));
61
bus->install_executor(dbus::asio::make_executor(bus));
61
62
std::thread t{[bus](){bus->run();}};
63
64
auto location_service =
64
core::dbus::resolve_service_on_bus<culs::Interface, culs::Stub>(bus);
66
auto s1 = location_service->create_session_for_criteria(com::ubuntu::location::Criteria{});
68
s1->install_position_updates_handler(
69
[&](const com::ubuntu::location::Update<com::ubuntu::location::Position>& new_position) {
65
dbus::resolve_service_on_bus<culs::Interface, culs::Stub>(bus);
67
auto s1 = location_service->create_session_for_criteria(cul::Criteria{});
69
s1->updates().position.changed().connect(
70
[&](const cul::Update<cul::Position>& new_position) {
70
71
std::cout << "On position updated: " << new_position << std::endl;
72
s1->install_velocity_updates_handler(
73
[&](const com::ubuntu::location::Update<com::ubuntu::location::Velocity>& new_velocity) {
73
s1->updates().velocity.changed().connect(
74
[&](const cul::Update<cul::Velocity>& new_velocity) {
74
75
std::cout << "On velocity_changed " << new_velocity << std::endl;
76
s1->install_heading_updates_handler(
77
[&](const com::ubuntu::location::Update<com::ubuntu::location::Heading>& new_heading) {
77
s1->updates().heading.changed().connect(
78
[&](const cul::Update<cul::Heading>& new_heading) {
78
79
std::cout << "On heading changed: " << new_heading << std::endl;
81
s1->start_position_updates();
82
s1->start_velocity_updates();
83
s1->start_heading_updates();
82
s1->updates().position_status = culss::Interface::Updates::Status::enabled;
83
s1->updates().heading_status = culss::Interface::Updates::Status::enabled;
84
s1->updates().velocity_status = culss::Interface::Updates::Status::enabled;