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_mid = -15,
14 motor_left_rear = -13,
15
16 motor_right_front = 11,
17 motor_right_mid = 12,
18 motor_right_rear = 14,
19
20 imu = 5,
21
22 motor_intake_11W = -16,
23 motor_intake_5W5_L = -19,
24 motor_intake_5W5_U = 20,
25
26 motor_score_open = -1,
27 motor_score_roll = -2,
28
29 odom_rear = 9,
30 odom_left = 4,
31 odom_right = 3,
32
33 distance = 3,
34};
35
36enum Triports
37{
38
39};
40
41struct MotorWrapper
42{
43 std::unique_ptr<pros::Motor> motor;
44 pros_standard_port port;
45 pros::motor_gearset_e_t gearset;
46
47 MotorWrapper(void) : port(0), gearset(pros::E_MOTOR_GEAR_BLUE) {};
48 MotorWrapper(const pros_standard_port port, const pros::motor_gearset_e_t gearset = pros::E_MOTOR_GEAR_BLUE) : port(port), gearset(gearset) {};
49 ~MotorWrapper(void);
50
51 void MotorWrapper_Init() {
52 if (!motor) {
53 motor = std::make_unique<pros::Motor>(port);
54 motor->set_brake_mode(pros::MotorBrake::brake);
55 motor->set_gearing(gearset);
56 }
57 }
58
59 void operator=(pros::Motor m) {
60 this->motor = std::make_unique<pros::Motor>(m);
61 }
62
63 void set(int speed);
64};
65
66struct MotorGroupWrapper
67{
68 std::vector<MotorWrapper*> motors;
69
70 void set(int speed) {
71 for (MotorWrapper* m : motors) {
72 if (m)
73 m->set(speed);
74 }
75 }
76
77 MotorGroupWrapper(void) {};
78 MotorGroupWrapper(MotorWrapper* m1, MotorWrapper* m2, MotorWrapper* m3);
79};
80
81struct Hardware
82{
83public:
84 struct
85 {
86 MotorWrapper MOTOR_L1;
87 MotorWrapper MOTOR_L2;
88 MotorWrapper MOTOR_L3;
89
90 MotorWrapper MOTOR_R1;
91 MotorWrapper MOTOR_R2;
92 MotorWrapper MOTOR_R3;
93
94 MotorWrapper MOTOR_INTAKE_11W;
95 MotorWrapper MOTOR_INTAKE_5W5_LOWER;
96 MotorWrapper MOTOR_INTAKE_5W5_UPPER;
97 MotorWrapper MOTOR_SCORE_OPEN;
98 MotorWrapper MOTOR_SCORE_ROLL;
99 } Motors;
100
101 struct
102 {
103 MotorGroupWrapper MOTORGROUP_L;
104 MotorGroupWrapper MOTORGROUP_R;
105 MotorGroupWrapper MOTORGROUP_INTAKE;
106 } Motorgroups;
107
108 std::unique_ptr<pros::Controller> PRIMARY_CONTROLLER;
109
110 struct
111 {
112 std::unique_ptr<pros::Rotation> VerticalWheel;
113 std::unique_ptr<pros::Rotation> HorizontalWheel;
114
115 std::unique_ptr<pros::Distance> distance;
116 } Odom;
117
118 struct {
119 std::unique_ptr<FlipToggleHeight> flipToggleHeight;
120 } Macros;
121
122 Hardware(void);
123 ~Hardware(void);
124
125 void LoadPeripherals(void);
126
127
128private:
129 Hardware(const Hardware&) = delete;
130 Hardware& operator=(const Hardware&) = delete;
131};
132
133static Hardware robotHardware = Hardware();
Definition vex_macro.hpp:10
Definition hardware.hpp:82
Definition hardware.hpp:67
Definition hardware.hpp:42