.. _program_listing_file_src_app.h: Program Listing for File app.h ============================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/app.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // BSD 3-Clause License // // Copyright (c) 2023, Ekumen Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, this // list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // // 3. Neither the name of the copyright holder nor the names of its // contributors may be used to endorse or promote products derived from // this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #pragma once #include #include "digital_out_arduino.h" #include "encoder.h" #include "interrupt_in_arduino.h" #include "motor.h" #include "pid.h" #include "pwm_out_arduino.h" #include "serial_stream_arduino.h" #include "shell.h" namespace andino { class App { public: App() = delete; static void setup(); static void loop(); private: static void adjust_motors_speed(); static void stop_motors(); static void cmd_unknown_cb(int argc, char** argv); static void cmd_read_analog_gpio_cb(int argc, char** argv); static void cmd_read_digital_gpio_cb(int argc, char** argv); static void cmd_read_encoders_cb(int argc, char** argv); static void cmd_reset_encoders_cb(int argc, char** argv); static void cmd_set_motors_speed_cb(int argc, char** argv); static void cmd_set_motors_pwm_cb(int argc, char** argv); static void cmd_set_pid_tuning_gains_cb(int argc, char** argv); static void cmd_get_is_imu_connected_cb(int argc, char** argv); static void cmd_read_encoders_and_imu_cb(int argc, char** argv); static SerialStreamArduino serial_stream_; static Shell shell_; static DigitalOutArduino left_motor_enable_digital_out_; static PwmOutArduino left_motor_forward_pwm_out_; static PwmOutArduino left_motor_backward_pwm_out_; static Motor left_motor_; static DigitalOutArduino right_motor_enable_digital_out_; static PwmOutArduino right_motor_forward_pwm_out_; static PwmOutArduino right_motor_backward_pwm_out_; static Motor right_motor_; static InterruptInArduino left_encoder_channel_a_interrupt_in_; static InterruptInArduino left_encoder_channel_b_interrupt_in_; static Encoder left_encoder_; static InterruptInArduino right_encoder_channel_a_interrupt_in_; static InterruptInArduino right_encoder_channel_b_interrupt_in_; static Encoder right_encoder_; static Pid left_pid_controller_; static Pid right_pid_controller_; static Adafruit_BNO055 bno055_imu_; static unsigned long last_pid_computation_; static unsigned long last_set_motors_speed_cmd_; static bool is_imu_connected; }; } // namespace andino