From 3a7504d10b0383de8afb5bafcbbaa5fc29484908 Mon Sep 17 00:00:00 2001 From: Michal Skorupinski Date: Wed, 29 Aug 2018 15:52:59 +0200 Subject: [PATCH] Update to emergency stop * Direction can be changed * Speed is set to 0 Change-Id: Iedb3322c76056fb8f10e534edcba8c306f21fc4f Signed-off-by: Michal Skorupinski --- inc/model/model_hw.h | 2 ++ src/controller/controller_racing.c | 2 ++ src/model/model_car_connection.c | 16 ++++++++-------- src/model/model_hw.c | 17 +++++++++++++++++ src/view/view_racing.c | 2 -- 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/inc/model/model_hw.h b/inc/model/model_hw.h index 8850a0f..fa2ab41 100644 --- a/inc/model/model_hw.h +++ b/inc/model/model_hw.h @@ -18,6 +18,7 @@ #ifndef MODEL_HW_H_ #define MODEL_HW_H_ +#include #include "model/model_base.h" typedef struct _s_model_hw_cb_data { @@ -29,5 +30,6 @@ typedef void (*t_model_hw_update_cb)(s_model_hw_cb_data *data); void model_hw_init(void); void model_hw_unsubscirbe_event(void); void model_hw_subscribe_event(t_model_hw_update_cb model_update_cb); +void model_hw_deactivate_rotatry(bool deactivate); #endif /* MODEL_HW_H_ */ diff --git a/src/controller/controller_racing.c b/src/controller/controller_racing.c index 20a217a..8f039ca 100644 --- a/src/controller/controller_racing.c +++ b/src/controller/controller_racing.c @@ -55,6 +55,8 @@ static void _hw_cb(s_model_hw_cb_data *model_data) void controller_racing_set_stop(bool stop) { model_car_connection_set_stop(stop); + model_hw_deactivate_rotatry(stop); + } void controller_racing_init(t_view_update_cb view_update_cb) diff --git a/src/model/model_car_connection.c b/src/model/model_car_connection.c index 51c0c0d..19c367a 100644 --- a/src/model/model_car_connection.c +++ b/src/model/model_car_connection.c @@ -187,10 +187,6 @@ static Eina_Bool _connection_wait_timer_cb(void *data) static Eina_Bool _send_timer_cb(void *data) { - if (s_info.stop) { - return ECORE_CALLBACK_RENEW; - } - _D("DATA: %f %f", s_info.direction, s_info.throttle); _send_data(MESSAGE_DRIVE, s_info.direction * -BASE_VALUE, s_info.throttle * 4095); @@ -283,7 +279,7 @@ void model_car_connection_end_connection(void) void model_car_connection_send_direction(float direction) { - if (!s_info.ready_to_drive || s_info.stop) { + if (!s_info.ready_to_drive) { return; } @@ -293,11 +289,15 @@ void model_car_connection_send_direction(float direction) void model_car_connection_send_throttle(float throttle) { - if (!s_info.ready_to_drive || s_info.stop) { + if (!s_info.ready_to_drive) { return; } - s_info.throttle = throttle; + if (s_info.stop) { + s_info.throttle = 0; + } else { + s_info.throttle = throttle; + } // _send_data(MESSAGE_DRIVE, s_info.direction * -BASE_VALUE, s_info.throttle * -BASE_VALUE); } @@ -306,7 +306,7 @@ void model_car_connection_set_stop(bool stop) s_info.stop = stop; if (stop) { - _send_data(MESSAGE_DRIVE, 0, 0); + s_info.throttle = 0; } } diff --git a/src/model/model_hw.c b/src/model/model_hw.c index f69561f..cdf8a1c 100644 --- a/src/model/model_hw.c +++ b/src/model/model_hw.c @@ -26,6 +26,7 @@ typedef struct _s_model_hw { t_model_hw_update_cb hw_update_cb; float throttle; + bool rotary_deactivated; } s_model_hw; static s_model_hw s_info = { 0, }; @@ -34,6 +35,10 @@ static Eina_Bool _rotary_cb(void *data, Eext_Rotary_Event_Info *info) { static s_model_hw_cb_data cb_data = { 0, }; + if (s_info.rotary_deactivated) { + return true; + } + if (info->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE) { s_info.throttle += THROTTLE_STEP; } else { @@ -55,6 +60,18 @@ static Eina_Bool _rotary_cb(void *data, Eext_Rotary_Event_Info *info) return true; } +void model_hw_deactivate_rotatry(bool deactivate) +{ + static s_model_hw_cb_data cb_data = { 0, }; + s_info.rotary_deactivated = deactivate; + + s_info.throttle = 0; + + if (s_info.hw_update_cb) { + s_info.hw_update_cb(&cb_data); + } +} + void model_hw_init(void) { Eina_Bool ret = eext_rotary_event_handler_add(_rotary_cb, NULL); diff --git a/src/view/view_racing.c b/src/view/view_racing.c index a883ba9..453fb76 100644 --- a/src/view/view_racing.c +++ b/src/view/view_racing.c @@ -100,7 +100,6 @@ static void _controller_cb(void *data) void _racing_screen_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) { evas_object_hide(s_info.velocity); - evas_object_hide(s_info.direction); controller_racing_set_stop(true); } @@ -122,7 +121,6 @@ void _stop_logpress_up(void *data, Evas_Object *obj, const char *emission, const if (!s_info.stop_longpress) { evas_object_show(s_info.velocity); - evas_object_show(s_info.direction); } s_info.stop_longpress = false; -- 2.7.4