41103C 26/27
Documentation for 41103C 1/3 for the 2026/2027 Vex V5 Season Override
Loading...
Searching...
No Matches
hardware.hpp
1#pragma once
2#include "api.h"
3#include "helpers.hpp"
4#include "odom.hpp"
5#include "vex_macro.hpp"
6#include <memory>
7
9
10enum StandardPorts
11{ // Negative == reversed
12 motor_left_front = -14,
13 motor_left_rear = -15,
14
15 motor_right_front = 11,
16 motor_right_rear = 12,
17
18 imu = 5,
19 aivision = 6,
20
21 motor_intake_11W = -16,
22
23 motor_cascade_11WR = -19,
24 motor_cascade_11WL = 20,
25
26 motor_score_open = -1,
27 motor_score_roll = -2,
28
29 odom_vertical = 3,
30 odom_horizontal = -4,
31
32 distance = 7
33};
34
35enum Triports
36{
37
38};
39
40struct MotorWrapper
41{
42 std::unique_ptr<pros::Motor> motor;
43 pros_standard_port port;
44 pros::motor_gearset_e_t gearset;
45
46 MotorWrapper(void) : port(0), gearset(pros::E_MOTOR_GEAR_BLUE) {};
47 MotorWrapper(const pros_standard_port port, const pros::motor_gearset_e_t gearset = pros::E_MOTOR_GEAR_BLUE) : port(port), gearset(gearset) {};
48 ~MotorWrapper(void);
49
50 void MotorWrapper_Init() {
51 if (!motor) {
52 motor = std::make_unique<pros::Motor>(port);
53 motor->set_brake_mode(pros::MotorBrake::brake);
54 motor->set_gearing(gearset);
55 }
56 }
57
58 void operator=(pros::Motor m) {
59 this->motor = std::make_unique<pros::Motor>(m);
60 }
61
62 void set(int speed);
63};
64
65struct MotorGroupWrapper
66{
67 std::vector<MotorWrapper*> motors;
68
69 void set(int speed) {
70 for (MotorWrapper* m : motors) {
71 if (m)
72 m->set(speed);
73 }
74 }
75
76 MotorGroupWrapper(void) {};
77 MotorGroupWrapper(MotorWrapper* m1, MotorWrapper* m2, MotorWrapper* m3);
78};
79
80struct Hardware
81{
82public:
83 struct
84 {
85 MotorWrapper MOTOR_L1;
86 MotorWrapper MOTOR_L2;
87
88 MotorWrapper MOTOR_R1;
89 MotorWrapper MOTOR_R2;
90
91 MotorWrapper MOTOR_INTAKE_11W;
92 MotorWrapper MOTOR_CASCADE_11WR;
93 MotorWrapper MOTOR_CASCADE_11WL;
94 MotorWrapper MOTOR_SCORE_OPEN;
95 MotorWrapper MOTOR_SCORE_ROLL;
96 } Motors;
97
98 struct
99 {
100 MotorGroupWrapper MOTORGROUP_L;
101 MotorGroupWrapper MOTORGROUP_R;
102 MotorGroupWrapper MOTORGROUP_INTAKE;
103 } Motorgroups;
104
105 std::unique_ptr<pros::Controller> PRIMARY_CONTROLLER;
106
107 struct
108 {
109 } Pneumatics;
110
111 struct
112 {
113 std::unique_ptr<pros::Rotation> VerticalWheel;
114 } Odom;
115
116 struct
117 {
118 std::unique_ptr<pros::Imu> IMU;
119 } Sensors;
120
121 struct {
122 std::unique_ptr<FlipToggleHeight> flipToggleHeight;
123 } Macros;
124
125 Hardware(void);
126 ~Hardware(void);
127
128 void LoadPeripherals(void);
129
130
131private:
132 Hardware(const Hardware&) = delete;
133 Hardware& operator=(const Hardware&) = delete;
134};
135
136static Hardware robotHardware = Hardware();
Definition vex_macro.hpp:10
Definition hardware.hpp:81
Definition hardware.hpp:66
Definition hardware.hpp:41