Bezel configuration prepared 99/189799/4
authorMichal Skorupinski <m.skorupinsk@samsung.com>
Thu, 20 Sep 2018 10:59:45 +0000 (12:59 +0200)
committerKrzysztof Wieclaw <k.wieclaw@samsung.com>
Thu, 4 Oct 2018 13:14:16 +0000 (15:14 +0200)
Change-Id: I9c33e7f176d9a76ccd2cdf4731891f7ca94fc9b0
Signed-off-by: Michal Skorupinski <m.skorupinsk@samsung.com>
inc/config.h [new file with mode: 0644]
inc/model/model_device_to_connection.h
inc/model/model_hw.h
src/config.c [new file with mode: 0644]
src/gear-racing-controller.c
src/model/model_device_to_connection.c
src/model/model_hw.c

diff --git a/inc/config.h b/inc/config.h
new file mode 100644 (file)
index 0000000..254021c
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Flora License, Version 1.1 (the License);
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an AS IS BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#ifndef CONFIG_H_
+#define CONFIG_H_
+
+void config_set_sensor_steering_bezel_velocity();
+void config_set_bezel_steering_sensor_velocity();
+
+#endif /* CONFIG_H_ */
index 28c5515..1a18898 100644 (file)
@@ -31,4 +31,6 @@ void model_device_to_connection_axis_y(float value);
 void model_device_to_connection_bezel(float value);
 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);
+
 #endif /* MODEL_DEVICE_TO_CONNECTION_H_ */
index dfc9b0b..eecc204 100644 (file)
@@ -32,4 +32,6 @@ 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);
 
+void model_hw_set_bezel_params(float step, float dead_zone, bool use_blocker, int blocker_count, bool set_to_zero_when_stop);
+
 #endif /* MODEL_HW_H_ */
diff --git a/src/config.c b/src/config.c
new file mode 100644 (file)
index 0000000..ccb6d39
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* Licensed under the Flora License, Version 1.1 (the License);
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://floralicense.org/license/
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an AS IS BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#include "model/model_hw.h"
+#include "model/model_device_to_connection.h"
+#include "gear-racing-controller.h"
+
+//void config_set_control_roles(e_device axis_x, e_device axis_y, e_device bezel, e_device buttons)
+//{
+//     model_device_to_connection_set_control_roles(axis_x, axis_y, bezel, buttons);
+//}
+//
+//void config_set_bezel_step(float step, float dead_zone, bool use_blocker, int blocker_count, bool set_to_zero_when_stop)
+//{
+//     model_hw_set_bezel_params(step, dead_zone, use_blocker, blocker_count, set_to_zero_when_stop);
+//}
+
+
+void config_set_sensor_steering_bezel_velocity()
+{
+       model_device_to_connection_set_control_roles(STERING_MODE_DIRETION, STERING_MODE_CAM_ELEVATION, STERING_MODE_THROTTLE, STERING_MODE_CAM_AZIMUTH);
+       model_hw_set_bezel_params(0.03f, 0.001f, true, 15, true);
+}
+
+void config_set_bezel_steering_sensor_velocity()
+{
+       model_device_to_connection_set_control_roles(STERING_MODE_CAM_AZIMUTH, STERING_MODE_THROTTLE, STERING_MODE_DIRETION, STERING_MODE_CAM_ELEVATION);
+       model_hw_set_bezel_params(-0.1f, 0.001f, false, 0, false);
+}
index 6861517..b613e57 100644 (file)
 #include "model/model_hw.h"
 #include "model/model_car_connection.h"
 #include "net-util.h"
+#include "config.h"
 
 static bool app_create(void *data)
 {
+       config_set_sensor_steering_bezel_velocity();
+
        model_sensors_init();
        model_hw_init();
        model_car_connection_init();
index cb8b357..fe47f46 100644 (file)
@@ -67,7 +67,7 @@ void model_device_to_connection_axis_y(float value)
 
 void model_device_to_connection_bezel(float value)
 {
-       _send_data(s_info.bezel, -value);
+       _send_data(s_info.bezel, value);
 }
 
 void model_device_to_connection_buttons(float value)
@@ -75,3 +75,11 @@ void model_device_to_connection_buttons(float value)
        _send_data(s_info.buttons, value);
 }
 
+void model_device_to_connection_set_control_roles(e_device axis_x, e_device axis_y, e_device bezel, e_device buttons)
+{
+       s_info.axis_x  = axis_x;
+       s_info.axis_y  = axis_y;
+       s_info.bezel   = bezel;
+       s_info.buttons = buttons;
+}
+
index 5078fe5..dbb1086 100644 (file)
 
 #include "log.h"
 
-#define THROTTLE_STEP 0.03
-#define THROTTLE_DEADZONE 0.001f
-
-#define USE_DIRECTION_BLOCKER
-
-#ifdef USE_DIRECTION_BLOCKER
-typedef enum _e_movement_direction {
-       DIR_FORWARD = 15,
-       DIR_STOP = 0,
-       DIR_BACKWARD = -15,
-} e_movement_direction;
-#endif
-
 typedef struct _s_model_hw {
        t_model_hw_update_cb hw_update_cb;
        float bezel_position;
        bool rotary_deactivated;
+
+       float bezel_step;
+       float bezel_dead_zone;
+       bool use_direction_blocker;
+       int blocker_count;
+       bool set_to_zero_when_stop;
 } s_model_hw;
 
 static s_model_hw s_info = { 0, };
 
-#ifdef USE_DIRECTION_BLOCKER
-static inline void _update_direction_blocker(e_movement_direction *last_movement_dir, int step, int direction, e_movement_direction new_dir)
+static inline void _update_direction_blocker(int *last_movement_dir, int step, int direction, int new_dir)
 {
-       if (*last_movement_dir * direction > DIR_STOP) {
+       if (*last_movement_dir * direction > 0) {
                *last_movement_dir += step;
                s_info.bezel_position = 0;
        } else {
                *last_movement_dir = new_dir;
        }
 }
-#endif
 
 static Eina_Bool _rotary_cb(void *data, Eext_Rotary_Event_Info *info)
 {
        static s_model_hw_cb_data cb_data = { 0, };
 
-#ifndef USE_DIRECTION_BLOCKER
-       float prev = s_info.bezel_position;
-#endif
-
        if (s_info.rotary_deactivated) {
                return true;
        }
 
+       float prev = s_info.bezel_position;
+
        if (info->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE) {
-               s_info.bezel_position += THROTTLE_STEP;
+               s_info.bezel_position += s_info.bezel_step;
        } else {
-               s_info.bezel_position -= THROTTLE_STEP;
+               s_info.bezel_position -= s_info.bezel_step;
        }
 
        if (s_info.bezel_position > 1) {
@@ -81,30 +70,29 @@ static Eina_Bool _rotary_cb(void *data, Eext_Rotary_Event_Info *info)
        }
 
 
-#ifdef USE_DIRECTION_BLOCKER
-       static e_movement_direction last_movement_dir = DIR_STOP;
+       if (s_info.use_direction_blocker) {
+               static int last_movement_dir = 0;
 
-       if (fabsf(s_info.bezel_position) < THROTTLE_DEADZONE) {
-               s_info.bezel_position = 0;
-       } if (s_info.bezel_position < 0.0f) {
-               _update_direction_blocker(&last_movement_dir, -1, 1, DIR_BACKWARD);
-       } else if(s_info.bezel_position > 0.0f) {
-               _update_direction_blocker(&last_movement_dir, 1, -1, DIR_FORWARD);
-       }
-#else
+               if (fabsf(s_info.bezel_position) < s_info.bezel_dead_zone) {
+                       s_info.bezel_position = 0;
+               } else if (s_info.bezel_position < 0.0f) {
+                       _update_direction_blocker(&last_movement_dir, -1, 1, -s_info.blocker_count);
+               } else if(s_info.bezel_position > 0.0f) {
+                       _update_direction_blocker(&last_movement_dir, 1, -1, s_info.blocker_count);
+               }
+       } else {
 
-       if (fabsf(s_info.bezel_position) < THROTTLE_DEADZONE) {
-               s_info.bezel_position = 0;
-       } else if (s_info.bezel_position * prev < 0.0f) {
-               s_info.bezel_position = 0;
+               if (fabsf(s_info.bezel_position) < s_info.bezel_dead_zone) {
+                       s_info.bezel_position = 0;
+               } else if (s_info.bezel_position * prev < 0.0f) {
+                       s_info.bezel_position = 0;
+               }
        }
 
-#endif
-
        cb_data.bezel_position = s_info.bezel_position;
        s_info.hw_update_cb(&cb_data);
 
-       _D("THROTTLE: %f", cb_data.bezel_position);
+       _D("BEZEL: %f", cb_data.bezel_position);
        model_device_to_connection_bezel(s_info.bezel_position);
 
        return true;
@@ -113,6 +101,11 @@ static Eina_Bool _rotary_cb(void *data, Eext_Rotary_Event_Info *info)
 void model_hw_deactivate_rotatry(bool deactivate)
 {
        static s_model_hw_cb_data cb_data = { 0, };
+
+       if (!s_info.set_to_zero_when_stop) {
+               return;
+       }
+
        s_info.rotary_deactivated = deactivate;
 
        s_info.bezel_position = 0;
@@ -137,3 +130,12 @@ void model_hw_unsubscirbe_event(void)
 {
        s_info.hw_update_cb = NULL;
 }
+
+void model_hw_set_bezel_params(float step, float dead_zone, bool use_blocker, int blocker_count, bool set_to_zero_when_stop)
+{
+       s_info.bezel_step = step;
+       s_info.bezel_dead_zone = dead_zone;
+       s_info.use_direction_blocker = use_blocker;
+       s_info.blocker_count = blocker_count;
+       s_info.set_to_zero_when_stop = set_to_zero_when_stop;
+}