2 * Copyright (c) 2018 Samsung Electronics Co., Ltd.
4 * Licensed under the Flora License, Version 1.1 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "gear-racing-controller.h"
18 #include "model/model_car_connection.h"
19 #include "model/model_sensors.h"
20 #include "model/model_hw.h"
21 #include "controller/controller_racing.h"
22 #include "view_manager/view_manager.h"
24 typedef struct _s_racing_controller {
25 s_controller base_controller;
26 s_controller_data controller_data;
27 } s_racing_controller;
29 static s_racing_controller s_info = { { 0, } };
31 void controller_racing_destroy(void)
33 model_sensors_unsubscirbe_event();
34 model_car_connection_unsubscirbe_event();
35 model_hw_unsubscirbe_event();
38 static void _model_connected_cb(s_model_car_connection_cb_data *model_data)
40 view_manager_set_view(VIEW_RESET);
43 static void _sensors_cb(s_model_sensors_cb_data *model_data)
45 s_info.controller_data.direction = model_data->direction;
46 s_info.base_controller.view_update_cb(&s_info.controller_data);
49 static void _hw_cb(s_model_hw_cb_data *model_data)
51 s_info.controller_data.throttle = model_data->throttle;
52 s_info.base_controller.view_update_cb(&s_info.controller_data);
55 void controller_racing_set_stop(bool stop)
57 model_car_connection_set_stop(stop);
58 model_hw_deactivate_rotatry(stop);
62 void controller_racing_init(t_view_update_cb view_update_cb)
64 s_info.base_controller.view_update_cb = view_update_cb;
66 model_car_connection_subscribe_event(_model_connected_cb);
67 model_sensors_subscribe_event(_sensors_cb);
68 model_hw_subscribe_event(_hw_cb);
70 model_sensors_set_initial_values();
71 model_car_connection_ready_to_drive(true);
74 void controller_racing_back(void)
76 controller_racing_destroy();
79 void controller_racing_next()
81 model_car_connection_ready_to_drive(false);
82 model_car_connection_model_state_change();