diff options
Diffstat (limited to 'src/app.cpp')
-rw-r--r-- | src/app.cpp | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/src/app.cpp b/src/app.cpp index ac789ad..eaebd59 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -807,11 +807,6 @@ result<json_object *> App::api_get_area_info(char const *drawing_name) { return Err<json_object *>("Could not find layer for surface"); } - struct LayoutState &state = *o_state; - if ((state.main != *surface_id) && (state.sub != *surface_id)) { - return Err<json_object *>("Surface is inactive"); - } - // Set area rectangle compositor::rect area_info = this->area_info[*surface_id]; json_object *object = json_object_new_object(); @@ -823,6 +818,38 @@ result<json_object *> App::api_get_area_info(char const *drawing_name) { return Ok<json_object *>(object); } +result<json_object *> App::api_get_car_info(char const *label) { + HMI_DEBUG("wm", "called"); + + json_object *j_in = nullptr; + json_object *j_out = nullptr; + + if (0 == strcmp("parking_brake_status", label)) { + // Get parking brake status + json_bool val = this->crr_car_info_.parking_brake_stt; + j_in = json_object_new_boolean(val); + } + else if (0 == strcmp("accelerator.pedal.position", label)) { + // Get accelerator pedal position + double val = this->crr_car_info_.accel_pedal_pos; + j_in = json_object_new_double(val); + } + else if (0 == strcmp("car_state", label)) { + // Get car state + const char* val = this->crr_car_info_.car_stt; + j_in = json_object_new_string(val); + } + else { + return Err<json_object *>("Car info does not exist"); + } + + // Create output object + j_out = json_object_new_object(); + json_object_object_add(j_out, "value", j_in); + + return Ok<json_object *>(j_out); +} + void App::activate(int id) { auto ip = this->controller->sprops.find(id); if (ip != this->controller->sprops.end()) { |