Initial check in
[apps/agl-service-navigation.git] / libnavi / include / libnavicore.hpp
1 // Copyright 2017 AISIN AW CO.,LTD
2
3 #pragma once
4
5 #include <map>
6 #include <string>
7 #include <tuple>
8 #include <vector>
9
10 #include <stdint.h>
11
12 namespace naviapi {
13
14 static const uint32_t NAVICORE_TIMESTAMP = 0x0010;
15 static const uint32_t NAVICORE_LATITUDE = 0x00a0;
16 static const uint32_t NAVICORE_LONGITUDE = 0x00a1;
17 static const uint32_t NAVICORE_HEADING = 0x00a3;
18 static const uint32_t NAVICORE_SPEED = 0x00a4;
19 static const uint32_t NAVICORE_SIMULATION_MODE = 0x00e3;
20
21 typedef union
22 {
23         bool _bool;
24         int32_t _int32_t;
25         uint32_t _uint32_t;
26         double _double;
27 } variant;
28
29 typedef std::tuple<double, double> Waypoint;
30
31 class NavicoreListener
32 {
33 public:
34         NavicoreListener();
35         virtual ~NavicoreListener();
36
37         virtual void getAllSessions_reply(const std::map< uint32_t, std::string >& allSessions);
38         virtual void getPosition_reply(std::map< int32_t, variant > position);
39         virtual void getAllRoutes_reply(std::vector< uint32_t > allRoutes);
40         virtual void createRoute_reply(uint32_t routeHandle);
41 }; // class NavicoreListener
42
43 class Navicore
44 {
45 private:
46         NavicoreListener* mListener;
47
48 public:
49         Navicore();
50         virtual ~Navicore();
51
52         bool connect(int argc, char *argv[], NavicoreListener* listener);
53         void disconnect();
54
55         void getAllSessions();
56         void getPosition(std::vector<int32_t> params);
57         void getAllRoutes();
58         void createRoute(uint32_t session);
59
60         void pauseSimulation(uint32_t session);
61         void setSimulationMode(uint32_t session, bool activate);
62         void cancelRouteCalculation(uint32_t session, uint32_t routeHandle);
63         void setWaypoints(uint32_t session, uint32_t routeHandle, bool flag, std::vector<Waypoint>);
64         void calculateRoute(uint32_t session, uint32_t routeHandle);
65
66 }; // class Navicore
67
68 }; // namespace naviapi
69