/* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #pragma once #include "api.h" namespace ez { class Piston { public: /** * Piston used throughout. */ pros::ADIDigitalOut piston; /** * Piston constructor. This class keeps track of piston state. The starting position of your piston is FALSE. * * \param input_port * The ports of your pistons. * \param default_state * Starting state of your piston. */ Piston(int input_port, bool default_state = false); /** * Piston constructor in 3 wire expander. The starting position of your piston is FALSE. * * \param input_ports * The ports of your pistons. * \param default_state * Starting state of your piston. */ Piston(int input_port, int expander_smart_port, bool default_state = false); /** * Sets the piston to the input. * * \param input * True or false. True sets to the opposite of the starting position. */ void set(bool input); /** * Returns current piston state. */ bool get(); /** * One button toggle for the piston. * * \param toggle * An input button. */ void button_toggle(int toggle); /** * Two buttons trigger the piston. Active is enabled, deactive is disabled. * * \param active * Sets piston to true. * \param active * Sets piston to false. */ void buttons(int active, int deactive); private: bool reversed = false; bool current = false; int last_press = 0; }; }; // namespace ez