1
#ifndef LOCATION_SERVICE_COM_UBUNTU_LOCATION_SERVICE_SESSION_INTERFACE_H_
2
#define LOCATION_SERVICE_COM_UBUNTU_LOCATION_SERVICE_SESSION_INTERFACE_H_
4
#include "com/ubuntu/location/channel.h"
5
#include "com/ubuntu/location/heading.h"
6
#include "com/ubuntu/location/position.h"
7
#include "com/ubuntu/location/provider.h"
8
#include "com/ubuntu/location/update.h"
9
#include "com/ubuntu/location/velocity.h"
11
#include <org/freedesktop/dbus/codec.h>
12
#include <org/freedesktop/dbus/service.h>
13
#include <org/freedesktop/dbus/traits/service.h>
14
#include <org/freedesktop/dbus/types/object_path.h>
31
typedef com::ubuntu::location::service::session::Interface Interface;
33
inline static const std::string& name()
35
static const std::string s
42
typedef void ResultType;
44
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
49
typedef com::ubuntu::location::service::session::Interface Interface;
51
inline static const std::string& name()
53
static const std::string s
60
typedef void ResultType;
62
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
67
typedef com::ubuntu::location::service::session::Interface Interface;
69
inline static const std::string& name()
71
static const std::string s
78
typedef void ResultType;
80
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
83
struct StartPositionUpdates
85
typedef com::ubuntu::location::service::session::Interface Interface;
87
inline static const std::string& name()
89
static const std::string s
91
"StartPositionUpdates"
96
typedef void ResultType;
98
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
101
struct StopPositionUpdates
103
typedef com::ubuntu::location::service::session::Interface Interface;
105
inline static const std::string& name()
107
static const std::string s
109
"StopPositionUpdates"
114
typedef void ResultType;
116
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
119
struct StartVelocityUpdates
121
typedef com::ubuntu::location::service::session::Interface Interface;
123
inline static const std::string& name()
125
static const std::string s
127
"StartVelocityUpdates"
132
typedef void ResultType;
134
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
137
struct StopVelocityUpdates
139
typedef com::ubuntu::location::service::session::Interface Interface;
141
inline static const std::string& name()
143
static const std::string s
145
"StopVelocityUpdates"
150
typedef void ResultType;
152
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
155
struct StartHeadingUpdates
157
typedef com::ubuntu::location::service::session::Interface Interface;
159
inline static const std::string& name()
161
static const std::string s
163
"StartHeadingUpdates"
168
typedef void ResultType;
170
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
173
struct StopHeadingUpdates
175
typedef com::ubuntu::location::service::session::Interface Interface;
177
inline static const std::string& name()
179
static const std::string s
186
typedef void ResultType;
188
inline static const std::chrono::milliseconds default_timeout() { return std::chrono::seconds{1}; }
193
struct ErrorParsingUpdate { inline static std::string name() { return "com.ubuntu.location.Service.Session.ErrorParsingUpdate"; } };
194
struct ErrorStartingUpdate { inline static std::string name() { return "com.ubuntu.location.Service.Session.ErrorStartingUpdate"; } };
197
typedef std::shared_ptr<Interface> Ptr;
199
Interface(const Interface&) = delete;
200
Interface& operator=(const Interface&) = delete;
201
virtual ~Interface() noexcept;
203
virtual const org::freedesktop::dbus::types::ObjectPath& path() const = 0;
205
ChannelConnection install_position_updates_handler(std::function<void(const Update<Position>&)> handler);
206
ChannelConnection install_velocity_updates_handler(std::function<void(const Update<Velocity>&)> handler);
207
ChannelConnection install_heading_updates_handler(std::function<void(const Update<Heading>&)> handler);
209
virtual void start_position_updates() = 0;
210
virtual void stop_position_updates() noexcept = 0;
211
virtual void start_velocity_updates() = 0;
212
virtual void stop_velocity_updates() noexcept = 0;
213
virtual void start_heading_updates() = 0;
214
virtual void stop_heading_updates() noexcept = 0;
217
Interface() = default;
219
Channel<Update<Position>>& access_position_updates_channel();
220
Channel<Update<Heading>>& access_heading_updates_channel();
221
Channel<Update<Velocity>>& access_velocity_updates_channel();
224
Channel<Update<Position>> position_updates_channel;
225
Channel<Update<Heading>> heading_updates_channel;
226
Channel<Update<Velocity>> velocity_updates_channel;
235
namespace freedesktop
242
struct Service<com::ubuntu::location::service::session::Interface>
244
static const std::string& interface_name()
246
static const std::string s
248
"com.ubuntu.location.Service.Session"
258
#include "com/ubuntu/location/codec.h"
260
#endif // LOCATION_SERVICE_COM_UBUNTU_LOCATION_SERVICE_SESSION_INTERFACE_H_