1 /* 2 * Copyright (C) 2017-2018 Team Kodi 3 * This file is part of Kodi - https://kodi.tv 4 * 5 * SPDX-License-Identifier: GPL-2.0-or-later 6 * See LICENSES/README.md for more information. 7 */ 8 9 #include "JoystickUtils.h" 10 11 #include "JoystickTranslator.h" 12 #include "utils/StringUtils.h" 13 14 using namespace KODI; 15 using namespace JOYSTICK; 16 MakeKeyName(const FeatureName & feature)17std::string CJoystickUtils::MakeKeyName(const FeatureName& feature) 18 { 19 return feature; 20 } 21 MakeKeyName(const FeatureName & feature,ANALOG_STICK_DIRECTION dir)22std::string CJoystickUtils::MakeKeyName(const FeatureName& feature, ANALOG_STICK_DIRECTION dir) 23 { 24 std::string keyName = feature; 25 26 if (dir != ANALOG_STICK_DIRECTION::NONE) 27 keyName += CJoystickTranslator::TranslateAnalogStickDirection(dir); 28 29 return keyName; 30 } 31 MakeKeyName(const FeatureName & feature,WHEEL_DIRECTION dir)32std::string CJoystickUtils::MakeKeyName(const FeatureName& feature, WHEEL_DIRECTION dir) 33 { 34 ANALOG_STICK_DIRECTION stickDir = ANALOG_STICK_DIRECTION::NONE; 35 36 switch (dir) 37 { 38 case WHEEL_DIRECTION::LEFT: 39 stickDir = ANALOG_STICK_DIRECTION::LEFT; 40 break; 41 case WHEEL_DIRECTION::RIGHT: 42 stickDir = ANALOG_STICK_DIRECTION::RIGHT; 43 break; 44 default: 45 break; 46 } 47 48 return MakeKeyName(feature, stickDir); 49 } 50 MakeKeyName(const FeatureName & feature,THROTTLE_DIRECTION dir)51std::string CJoystickUtils::MakeKeyName(const FeatureName& feature, THROTTLE_DIRECTION dir) 52 { 53 ANALOG_STICK_DIRECTION stickDir = ANALOG_STICK_DIRECTION::NONE; 54 55 switch (dir) 56 { 57 case THROTTLE_DIRECTION::UP: 58 stickDir = ANALOG_STICK_DIRECTION::UP; 59 break; 60 case THROTTLE_DIRECTION::DOWN: 61 stickDir = ANALOG_STICK_DIRECTION::DOWN; 62 break; 63 default: 64 break; 65 } 66 67 return MakeKeyName(feature, stickDir); 68 } 69 GetAnalogStickDirections()70const std::vector<ANALOG_STICK_DIRECTION>& CJoystickUtils::GetAnalogStickDirections() 71 { 72 static std::vector<ANALOG_STICK_DIRECTION> directions; 73 if (directions.empty()) 74 { 75 directions.push_back(ANALOG_STICK_DIRECTION::UP); 76 directions.push_back(ANALOG_STICK_DIRECTION::DOWN); 77 directions.push_back(ANALOG_STICK_DIRECTION::RIGHT); 78 directions.push_back(ANALOG_STICK_DIRECTION::LEFT); 79 } 80 return directions; 81 } 82 GetWheelDirections()83const std::vector<WHEEL_DIRECTION>& CJoystickUtils::GetWheelDirections() 84 { 85 static std::vector<WHEEL_DIRECTION> directions; 86 if (directions.empty()) 87 { 88 directions.push_back(WHEEL_DIRECTION::RIGHT); 89 directions.push_back(WHEEL_DIRECTION::LEFT); 90 } 91 return directions; 92 } 93 GetThrottleDirections()94const std::vector<THROTTLE_DIRECTION>& CJoystickUtils::GetThrottleDirections() 95 { 96 static std::vector<THROTTLE_DIRECTION> directions; 97 if (directions.empty()) 98 { 99 directions.push_back(THROTTLE_DIRECTION::UP); 100 directions.push_back(THROTTLE_DIRECTION::DOWN); 101 } 102 return directions; 103 } 104