add autobuild tree
[apps/agl-service-navigation.git] / libnavi / src / JsonRequestGenerator.cpp
1 // Copyright 2017 AW SOFTWARE CO.,LTD
2 // Copyright 2017 AISIN AW CO.,LTD
3
4 #include <json-c/json.h>
5 #include <traces.h>
6 #include "JsonRequestGenerator.h"
7
8 /**
9  *  @brief Generate request for navicore_getposition
10  *  @param valuesToReturn Key information you want to obtain
11  *  @return json string
12  */
13 std::string JsonRequestGenerator::CreateRequestGetPosition(const std::vector< int32_t >& valuesToReturn)
14 {
15         std::vector< int32_t >::const_iterator itr;
16
17         struct json_object* request_json = json_object_new_object();
18         struct json_object* json_array = json_object_new_array();
19
20         for (itr = valuesToReturn.begin(); itr != valuesToReturn.end(); itr++)
21         {
22                 json_object_array_add(json_array, json_object_new_int(*itr));
23         }
24
25         json_object_object_add(request_json, "valuesToReturn", json_array);
26         TRACE_DEBUG("CreateRequestGetPosition request_json:\n%s\n", json_object_to_json_string(request_json));
27     
28         return std::string( json_object_to_json_string( request_json ) );
29 }
30
31 /**
32  *  @brief Generate request for navicore_getallroutes
33  *  @return json strin
34  */
35 std::string JsonRequestGenerator::CreateRequestGetAllRoutes()
36 {
37         // Request is empty and OK
38         struct json_object* request_json = json_object_new_object();
39         TRACE_DEBUG("CreateRequestGetAllRoutes request_json:\n%s\n", json_object_to_json_string(request_json));
40
41         return std::string( json_object_to_json_string( request_json ) );
42 }
43
44 /**
45  *  @brief Generate request for navicore_createroute
46  *  @param sessionHandle session handle
47  *  @return json string
48  */
49 std::string JsonRequestGenerator::CreateRequestCreateRoute(const uint32_t* sessionHandle)
50 {
51         struct json_object* request_json = json_object_new_object();
52         json_object_object_add(request_json, "sessionHandle", json_object_new_int(*sessionHandle));
53         TRACE_DEBUG("CreateRequestCreateRoute request_json:\n%s\n", json_object_to_json_string(request_json));
54
55         return std::string( json_object_to_json_string( request_json ) );
56 }
57
58 /**
59  *  @brief Generate request for navicore_pausesimulation
60  *  @param sessionHandle session handle
61  *  @return json string
62  */
63 std::string JsonRequestGenerator::CreateRequestPauseSimulation(const uint32_t* sessionHandle)
64 {
65         struct json_object* request_json = json_object_new_object();
66         // sessionHandle
67         json_object_object_add(request_json, "sessionHandle", json_object_new_int(*sessionHandle));
68         TRACE_DEBUG("CreateRequestPauseSimulation request_json:\n%s\n", json_object_to_json_string(request_json));
69
70         return std::string( json_object_to_json_string( request_json ) );
71 }
72
73 /**
74  *  @brief Generate request for navicore_pausesimulation
75  *  @param sessionHandle session handle
76  *  @param active Simulation state
77  *  @return json string
78  */
79 std::string JsonRequestGenerator::CreateRequestSetSimulationMode(const uint32_t* sessionHandle, const bool* activate)
80 {
81         struct json_object* request_json = json_object_new_object();
82
83         // "sessionHandle"
84         json_object_object_add(request_json, "sessionHandle", json_object_new_int(*sessionHandle));
85
86         // "simulationMode"
87         json_object_object_add(request_json, "simulationMode", json_object_new_boolean(*activate));
88         TRACE_DEBUG("CreateRequestSetSimulationMode request_json:\n%s\n", json_object_to_json_string(request_json));
89
90         return std::string( json_object_to_json_string( request_json ) );
91 }
92
93 /**
94  *  @brief Generate request for navicore_pausesimulation
95  *  @param sessionHandle session handle
96  *  @param routeHandle route handle
97  *  @return json string
98  */
99 std::string JsonRequestGenerator::CreateRequestCancelRouteCalculation(const uint32_t* sessionHandle, const uint32_t* routeHandle)
100 {
101         struct json_object* request_json = json_object_new_object();
102     
103         // "sessionHandle"
104         json_object_object_add(request_json, "sessionHandle", json_object_new_int(*sessionHandle));
105
106         // "route"
107         json_object_object_add(request_json, "route", json_object_new_int(*routeHandle));
108         TRACE_DEBUG("CreateRequestCancelRouteCalculation request_json:\n%s\n", json_object_to_json_string(request_json));
109
110         return std::string( json_object_to_json_string( request_json ) );
111 }
112
113 /**
114  *  @brief Generate request for navicore_setwaypoints
115  *  @param sessionHandle session handle
116  *  @param routeHandle route handle
117  *  @return json string
118  */
119 std::string JsonRequestGenerator::CreateRequestSetWaypoints(const uint32_t* sessionHandle, const uint32_t* routeHandle, 
120                 const bool* startFromCurrentPosition, const std::vector<naviapi::Waypoint>* waypointsList)
121 {
122         naviapi::Waypoint destWp;
123     
124         struct json_object* request_json = json_object_new_object();
125         struct json_object* json_array = json_object_new_array();
126
127         // "sessionHandle"
128         json_object_object_add(request_json, "sessionHandle", json_object_new_int(*sessionHandle));
129
130         // "route"
131         json_object_object_add(request_json, "route", json_object_new_int(*routeHandle));
132
133         // "startFromCurrentPosition"
134         json_object_object_add(request_json, "startFromCurrentPosition", json_object_new_boolean(*startFromCurrentPosition));
135
136         // "latitude", "longitude"
137         std::vector<naviapi::Waypoint>::const_iterator it;
138         for (it = waypointsList->begin(); it != waypointsList->end(); ++it)
139         {
140                 struct json_object* destpoint = json_object_new_object();
141
142                 double latitude = std::get<0>(*it);
143                 json_object_object_add(destpoint, "latitude", json_object_new_double(latitude));
144
145                 double longitude = std::get<1>(*it);
146                 json_object_object_add(destpoint, "longitude", json_object_new_double(longitude));
147         
148                 json_object_array_add(json_array, destpoint);
149         }
150
151         json_object_object_add(request_json, "", json_array);
152         TRACE_DEBUG("CreateRequestSetWaypoints request_json:\n%s\n", json_object_to_json_string(request_json));
153
154         return std::string( json_object_to_json_string( request_json ) );
155 }
156
157 /**
158  *  @brief Generate request for navicore_calculateroute
159  *  @param sessionHandle session handle
160  *  @param routeHandle route handle
161  *  @return json string
162  */
163 std::string JsonRequestGenerator::CreateRequestCalculateroute(const uint32_t* sessionHandle, const uint32_t* routeHandle)
164 {
165         struct json_object* request_json = json_object_new_object();
166         // "sessionHandle"
167         json_object_object_add(request_json, "sessionHandle", json_object_new_int(*sessionHandle));
168
169         // "route"
170         json_object_object_add(request_json, "route", json_object_new_int(*routeHandle));
171         TRACE_DEBUG("CreateRequestCalculateroute request_json:\n%s\n", json_object_to_json_string(request_json));
172
173         return std::string( json_object_to_json_string( request_json ) );
174 }
175
176 /**
177  *  @brief Generate request for navicore_getallsessions
178  *  @return json string
179  */
180 std::string JsonRequestGenerator::CreateRequestGetAllSessions()
181 {
182         // Request is empty and OK
183         struct json_object* request_json = json_object_new_object();
184         TRACE_DEBUG("CreateRequestGetAllSessions request_json:\n%s\n", json_object_to_json_string(request_json));
185
186         return std::string( json_object_to_json_string( request_json ) );
187 }
188