blob: 743e13851ade360f32ef89f687a81b54680fb984 [file] [log] [blame]
Brian Silvermanc2065732015-11-28 22:55:30 +00001#include "aos/input/joystick_input.h"
Brian Silvermanba3de7e2013-05-08 16:18:15 -07002
3#include <string.h>
Austin Schuhb58ceb62017-02-05 14:21:57 -08004#include <atomic>
Brian Silvermanba3de7e2013-05-08 16:18:15 -07005
John Park33858a32018-09-28 23:05:48 -07006#include "aos/logging/logging.h"
Alex Perrycb7da4b2019-08-28 19:35:56 -07007#include "aos/robot_state/robot_state_generated.h"
Brian Silvermanba3de7e2013-05-08 16:18:15 -07008
9namespace aos {
10namespace input {
11
Alex Perrycb7da4b2019-08-28 19:35:56 -070012void JoystickInput::HandleData(const ::aos::JoystickState *joystick_state) {
Austin Schuh3e45c752019-02-02 12:19:11 -080013 data_.Update(joystick_state);
14
Alex Perrycb7da4b2019-08-28 19:35:56 -070015 mode_ = static_cast<int>(joystick_state->switch_left()) |
16 (static_cast<int>(joystick_state->scale_left()) << 1);
Austin Schuh3e45c752019-02-02 12:19:11 -080017
18 {
19 using driver_station::JoystickFeature;
20 using driver_station::ButtonLocation;
21 for (int joystick = 1; joystick <= JoystickFeature::kJoysticks;
22 ++joystick) {
23 for (int button = 1; button <= ButtonLocation::kButtons; ++button) {
24 ButtonLocation location(joystick, button);
25 if (data_.PosEdge(location)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070026 AOS_LOG(INFO, "PosEdge(%d, %d)\n", joystick, button);
Austin Schuh3e45c752019-02-02 12:19:11 -080027 }
28 if (data_.NegEdge(location)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070029 AOS_LOG(INFO, "NegEdge(%d, %d)\n", joystick, button);
Austin Schuh3e45c752019-02-02 12:19:11 -080030 }
31 }
32 if (data_.GetPOV(joystick) != data_.GetOldPOV(joystick)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070033 AOS_LOG(INFO, "POV %d %d->%d\n", joystick, data_.GetOldPOV(joystick),
34 data_.GetPOV(joystick));
Austin Schuh3e45c752019-02-02 12:19:11 -080035 }
36 }
37 }
38 {
39 using driver_station::ControlBit;
40 if (data_.PosEdge(ControlBit::kFmsAttached)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070041 AOS_LOG(INFO, "PosEdge(kFmsAttached)\n");
Austin Schuh3e45c752019-02-02 12:19:11 -080042 }
43 if (data_.NegEdge(ControlBit::kFmsAttached)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070044 AOS_LOG(INFO, "NegEdge(kFmsAttached)\n");
Austin Schuh3e45c752019-02-02 12:19:11 -080045 }
46 if (data_.PosEdge(ControlBit::kAutonomous)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070047 AOS_LOG(INFO, "PosEdge(kAutonomous)\n");
Austin Schuh3e45c752019-02-02 12:19:11 -080048 }
49 if (data_.NegEdge(ControlBit::kAutonomous)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070050 AOS_LOG(INFO, "NegEdge(kAutonomous)\n");
Austin Schuh3e45c752019-02-02 12:19:11 -080051 }
52 if (data_.PosEdge(ControlBit::kEnabled)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070053 AOS_LOG(INFO, "PosEdge(kEnabled)\n");
Austin Schuh3e45c752019-02-02 12:19:11 -080054 }
55 if (data_.NegEdge(ControlBit::kEnabled)) {
Austin Schuhf257f3c2019-10-27 21:00:43 -070056 AOS_LOG(INFO, "NegEdge(kEnabled)\n");
Austin Schuh3e45c752019-02-02 12:19:11 -080057 }
58 }
59
60 RunIteration(data_);
Brian Silvermanba3de7e2013-05-08 16:18:15 -070061}
62
63} // namespace input
64} // namespace aos