From 320c2343d814f7b4d2d1d9d0a2a2dd5d6afeebb4 Mon Sep 17 00:00:00 2001 From: Michal Skorupinski Date: Fri, 21 Sep 2018 18:11:14 +0200 Subject: [PATCH] View widgets updated based on controls' setup Change-Id: I8e6d84be94836bcef1127f4df98c1f69c692af84 Signed-off-by: Michal Skorupinski --- inc/controller/controller_racing.h | 1 + inc/model/model_device_to_connection.h | 5 +++++ src/controller/controller_racing.c | 32 +++++++++++++++++++++++++++++--- src/model/model_device_to_connection.c | 23 +++++++++++++++++++++++ src/view/view_racing.c | 3 +++ 5 files changed, 61 insertions(+), 3 deletions(-) diff --git a/inc/controller/controller_racing.h b/inc/controller/controller_racing.h index 404f0c3..6ec17c5 100644 --- a/inc/controller/controller_racing.h +++ b/inc/controller/controller_racing.h @@ -24,6 +24,7 @@ typedef struct _s_controller_data { float throttle; float direction; float cam_elevation; + float cam_azimuth; } s_controller_data; void controller_racing_init(t_view_update_cb view_update_cb); diff --git a/inc/model/model_device_to_connection.h b/inc/model/model_device_to_connection.h index 1a18898..b4d7491 100644 --- a/inc/model/model_device_to_connection.h +++ b/inc/model/model_device_to_connection.h @@ -33,4 +33,9 @@ void model_device_to_connection_buttons(float value); void model_device_to_connection_set_control_roles(e_device axis_x, e_device axis_y, e_device bezel, e_device buttons); +const e_device model_device_to_connection_axis_x_get_function(); +const e_device model_device_to_connection_axis_y_get_function(); +const e_device model_device_to_connection_bezel_get_function(); +const e_device model_device_to_connection_buttons_get_function(); + #endif /* MODEL_DEVICE_TO_CONNECTION_H_ */ diff --git a/src/controller/controller_racing.c b/src/controller/controller_racing.c index 35eeeed..77b9c7b 100644 --- a/src/controller/controller_racing.c +++ b/src/controller/controller_racing.c @@ -42,16 +42,42 @@ static void _model_connected_cb(s_model_car_connection_cb_data *model_data) view_manager_set_view(VIEW_RESET); } +void _map_device_to_view(e_device device, float value) +{ + switch (device) { + case STERING_MODE_DIRETION: + s_info.controller_data.direction = value; + break; + case STERING_MODE_THROTTLE: + s_info.controller_data.throttle = value; + break; + case STERING_MODE_CAM_AZIMUTH: + s_info.controller_data.cam_azimuth = value; + break; + case STERING_MODE_CAM_ELEVATION: + s_info.controller_data.cam_elevation = value; + break; + default: + break; + } +} + static void _sensors_cb(s_model_sensors_cb_data *model_data) { - s_info.controller_data.direction = model_data->axis_x; - s_info.controller_data.throttle = model_data->axis_y; + e_device device = model_device_to_connection_axis_x_get_function(); + _map_device_to_view(device, model_data->axis_x); + + device = model_device_to_connection_axis_y_get_function(); + _map_device_to_view(device, model_data->axis_y); + s_info.base_controller.view_update_cb(&s_info.controller_data); } static void _hw_cb(s_model_hw_cb_data *model_data) { - s_info.controller_data.throttle = model_data->bezel_position; + e_device device = model_device_to_connection_bezel_get_function(); + _map_device_to_view(device, model_data->bezel_position); + s_info.base_controller.view_update_cb(&s_info.controller_data); } diff --git a/src/model/model_device_to_connection.c b/src/model/model_device_to_connection.c index fe47f46..05b2913 100644 --- a/src/model/model_device_to_connection.c +++ b/src/model/model_device_to_connection.c @@ -83,3 +83,26 @@ void model_device_to_connection_set_control_roles(e_device axis_x, e_device axis s_info.buttons = buttons; } +const e_device model_device_to_connection_axis_x_get_function() +{ + return s_info.axis_x; +} + +const e_device model_device_to_connection_axis_y_get_function() +{ + return s_info.axis_y; +} + +const e_device model_device_to_connection_bezel_get_function() +{ + return s_info.bezel; +} + +const e_device model_device_to_connection_buttons_get_function() +{ + return s_info.buttons; +} + + + + diff --git a/src/view/view_racing.c b/src/view/view_racing.c index 2e71df4..4b970c1 100644 --- a/src/view/view_racing.c +++ b/src/view/view_racing.c @@ -118,6 +118,9 @@ static void _controller_cb(void *data) angle = math_helper_range_map(controller_data->cam_elevation, 0, 1, 0, 90); view_base_set_angle(s_info.camera_elevation_indicator, 90 - angle, 180.0, 180.0); + angle = math_helper_range_map(controller_data->cam_azimuth, -1, 1, -90.0f, 90.0f); + view_base_set_angle(s_info.camera_azimuth_indicator, angle, 180.0, 180.0); + if (controller_data->throttle < 0) { evas_object_color_set(s_info.velocity, 0, 255, 255, 255); } else { -- 2.7.4