.. _program_listing_file_src_tap_control_remote_map_state.hpp: Program Listing for File remote_map_state.hpp ============================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/tap/control/remote_map_state.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * Copyright (c) 2020-2021 Advanced Robotics at the University of Washington * * This file is part of Taproot. * * Taproot is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Taproot is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Taproot. If not, see . */ #ifndef TAPROOT_REMOTE_MAP_STATE_HPP_ #define TAPROOT_REMOTE_MAP_STATE_HPP_ #include #include #include "tap/communication/serial/remote.hpp" namespace tap { namespace control { class RemoteMapState { public: enum class MouseButton { LEFT, RIGHT }; RemoteMapState() = default; RemoteMapState( tap::communication::serial::Remote::SwitchState leftss, tap::communication::serial::Remote::SwitchState rightss, const std::list &keySet, const std::list &negKeySet, bool mouseButtonLeftPressed, bool mouseButtonRightPressed); RemoteMapState( tap::communication::serial::Remote::Switch swh, tap::communication::serial::Remote::SwitchState switchState); RemoteMapState( tap::communication::serial::Remote::SwitchState leftss, tap::communication::serial::Remote::SwitchState rightss); RemoteMapState( const std::list &keySet, const std::list &negKeySet = {}); RemoteMapState( RemoteMapState::MouseButton button, const std::list &keySet, const std::list &negKeySet = {}); RemoteMapState(MouseButton button); void initLSwitch(tap::communication::serial::Remote::SwitchState ss); void initRSwitch(tap::communication::serial::Remote::SwitchState ss); void initKeys(uint16_t keys); void initNegKeys(uint16_t negKeys); void initKeys(const std::list &keySet); void initNegKeys(const std::list &negKeySet); void initLMouseButton(); void initRMouseButton(); bool stateSubsetOf(const RemoteMapState &other) const; bool friend operator==(const RemoteMapState &rms1, const RemoteMapState &rms2); bool friend operator!=(const RemoteMapState &rms1, const RemoteMapState &rms2); uint16_t getNegKeys() const { return negKeys; } bool getNegKeysUsed() const { return negKeys != 0; } uint16_t getKeys() const { return keys; } bool getLMouseButton() const { return lMouseButton; } bool getRMouseButton() const { return rMouseButton; } tap::communication::serial::Remote::SwitchState getLSwitch() const { return lSwitch; } tap::communication::serial::Remote::SwitchState getRSwitch() const { return rSwitch; } private: tap::communication::serial::Remote::SwitchState lSwitch = tap::communication::serial::Remote::SwitchState::UNKNOWN; tap::communication::serial::Remote::SwitchState rSwitch = tap::communication::serial::Remote::SwitchState::UNKNOWN; uint16_t keys = 0; uint16_t negKeys = 0; // if certain keys are pressed, the remote map will not do mapping bool lMouseButton = false; bool rMouseButton = false; }; // class RemoteState } // namespace control } // namespace tap #endif // TAPROOT_REMOTE_MAP_STATE_HPP_