WPILibC++ 2024.1.1-beta-4
PowerDistribution.h
Go to the documentation of this file.
1// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5#pragma once
6
7#include <hal/Types.h>
10
11namespace frc {
12
13/**
14 * Class for getting voltage, current, temperature, power and energy from the
15 * CTRE Power Distribution Panel (PDP) or REV Power Distribution Hub (PDH).
16 */
18 public wpi::SendableHelper<PowerDistribution> {
19 public:
20 static constexpr int kDefaultModule = -1;
21 enum class ModuleType { kCTRE = 1, kRev = 2 };
22
23 /**
24 * Constructs a PowerDistribution object.
25 *
26 * Detects the connected PDP/PDH using the default CAN ID (0 for CTRE and 1
27 * for REV).
28 */
30
31 /**
32 * Constructs a PowerDistribution object.
33 *
34 * @param module The CAN ID of the PDP/PDH
35 * @param moduleType The type of module
36 */
37 PowerDistribution(int module, ModuleType moduleType);
38
42
43 /**
44 * Query the input voltage of the PDP/PDH.
45 *
46 * @return The input voltage in volts
47 */
48 double GetVoltage() const;
49
50 /**
51 * Query the temperature of the PDP/PDH.
52 *
53 * @return The temperature in degrees Celsius
54 */
55 double GetTemperature() const;
56
57 /**
58 * Query the current of a single channel of the PDP/PDH.
59 *
60 * @param channel the channel to query (0-15 for PDP, 0-23 for PDH)
61 * @return The current of the channel in Amperes
62 */
63 double GetCurrent(int channel) const;
64
65 /**
66 * Query the total current of all monitored PDP/PDH channels.
67 *
68 * @return The total current drawn from all channels in Amperes
69 */
70 double GetTotalCurrent() const;
71
72 /**
73 * Query the total power drawn from all monitored PDP/PDH channels.
74 *
75 * @return The total power drawn in Watts
76 */
77 double GetTotalPower() const;
78
79 /**
80 * Query the total energy drawn from the monitored PDP/PDH channels.
81 *
82 * @return The total energy drawn in Joules
83 */
84 double GetTotalEnergy() const;
85
86 /**
87 * Reset the total energy drawn from the PDP/PDH.
88 *
89 * @see PowerDistribution#GetTotalEnergy
90 */
92
93 /**
94 * Remove all of the fault flags on the PDP/PDH.
95 */
97
98 /**
99 * Gets module number (CAN ID).
100 */
101 int GetModule() const;
102
103 /**
104 * Gets module type.
105 */
107
108 /**
109 * Gets whether the PDH switchable channel is turned on or off. Returns false
110 * with the CTRE PDP.
111 *
112 * @return The output state of the PDH switchable channel
113 */
115
116 /**
117 * Sets the PDH switchable channel on or off. Does nothing with the CTRE PDP.
118 *
119 * @param enabled Whether to turn the PDH switchable channel on or off
120 */
121 void SetSwitchableChannel(bool enabled);
122
123 struct Version {
126 uint32_t FirmwareFix;
129 uint32_t UniqueId;
130 };
131
133
134 struct Faults {
159 uint32_t Brownout : 1;
160 uint32_t CanWarning : 1;
161 uint32_t HardwareFault : 1;
162 };
163
165
191 uint32_t Brownout : 1;
192 uint32_t CanWarning : 1;
193 uint32_t CanBusOff : 1;
194 uint32_t HasReset : 1;
195 };
196
198
199 void InitSendable(wpi::SendableBuilder& builder) override;
200
201 private:
203 int m_module;
204};
205
206} // namespace frc
Class for getting voltage, current, temperature, power and energy from the CTRE Power Distribution Pa...
Definition: PowerDistribution.h:18
void ClearStickyFaults()
Remove all of the fault flags on the PDP/PDH.
double GetTotalCurrent() const
Query the total current of all monitored PDP/PDH channels.
double GetTemperature() const
Query the temperature of the PDP/PDH.
ModuleType GetType() const
Gets module type.
void SetSwitchableChannel(bool enabled)
Sets the PDH switchable channel on or off.
StickyFaults GetStickyFaults() const
double GetTotalPower() const
Query the total power drawn from all monitored PDP/PDH channels.
ModuleType
Definition: PowerDistribution.h:21
Version GetVersion() const
PowerDistribution(PowerDistribution &&)=default
PowerDistribution()
Constructs a PowerDistribution object.
PowerDistribution & operator=(PowerDistribution &&)=default
double GetCurrent(int channel) const
Query the current of a single channel of the PDP/PDH.
PowerDistribution(int module, ModuleType moduleType)
Constructs a PowerDistribution object.
Faults GetFaults() const
double GetTotalEnergy() const
Query the total energy drawn from the monitored PDP/PDH channels.
~PowerDistribution() override
static constexpr int kDefaultModule
Definition: PowerDistribution.h:20
void ResetTotalEnergy()
Reset the total energy drawn from the PDP/PDH.
int GetModule() const
Gets module number (CAN ID).
bool GetSwitchableChannel() const
Gets whether the PDH switchable channel is turned on or off.
double GetVoltage() const
Query the input voltage of the PDP/PDH.
void InitSendable(wpi::SendableBuilder &builder) override
Initializes this Sendable object.
Definition: SendableBuilder.h:18
A helper class for use with objects that add themselves to SendableRegistry.
Definition: SendableHelper.h:19
Interface for Sendable objects.
Definition: Sendable.h:16
Definition: AprilTagPoseEstimator.h:15
Definition: PowerDistribution.h:134
uint32_t Channel4BreakerFault
Definition: PowerDistribution.h:139
uint32_t Channel18BreakerFault
Definition: PowerDistribution.h:153
uint32_t Channel2BreakerFault
Definition: PowerDistribution.h:137
uint32_t Brownout
Definition: PowerDistribution.h:159
uint32_t CanWarning
Definition: PowerDistribution.h:160
uint32_t Channel13BreakerFault
Definition: PowerDistribution.h:148
uint32_t Channel19BreakerFault
Definition: PowerDistribution.h:154
uint32_t Channel9BreakerFault
Definition: PowerDistribution.h:144
uint32_t Channel17BreakerFault
Definition: PowerDistribution.h:152
uint32_t Channel0BreakerFault
Definition: PowerDistribution.h:135
uint32_t Channel21BreakerFault
Definition: PowerDistribution.h:156
uint32_t Channel7BreakerFault
Definition: PowerDistribution.h:142
uint32_t Channel23BreakerFault
Definition: PowerDistribution.h:158
uint32_t Channel20BreakerFault
Definition: PowerDistribution.h:155
uint32_t Channel12BreakerFault
Definition: PowerDistribution.h:147
uint32_t Channel6BreakerFault
Definition: PowerDistribution.h:141
uint32_t Channel10BreakerFault
Definition: PowerDistribution.h:145
uint32_t Channel1BreakerFault
Definition: PowerDistribution.h:136
uint32_t Channel8BreakerFault
Definition: PowerDistribution.h:143
uint32_t HardwareFault
Definition: PowerDistribution.h:161
uint32_t Channel11BreakerFault
Definition: PowerDistribution.h:146
uint32_t Channel16BreakerFault
Definition: PowerDistribution.h:151
uint32_t Channel14BreakerFault
Definition: PowerDistribution.h:149
uint32_t Channel22BreakerFault
Definition: PowerDistribution.h:157
uint32_t Channel15BreakerFault
Definition: PowerDistribution.h:150
uint32_t Channel3BreakerFault
Definition: PowerDistribution.h:138
uint32_t Channel5BreakerFault
Definition: PowerDistribution.h:140
Definition: PowerDistribution.h:166
uint32_t Brownout
Definition: PowerDistribution.h:191
uint32_t Channel8BreakerFault
Definition: PowerDistribution.h:175
uint32_t Channel18BreakerFault
Definition: PowerDistribution.h:185
uint32_t Channel23BreakerFault
Definition: PowerDistribution.h:190
uint32_t Channel20BreakerFault
Definition: PowerDistribution.h:187
uint32_t Channel1BreakerFault
Definition: PowerDistribution.h:168
uint32_t Channel4BreakerFault
Definition: PowerDistribution.h:171
uint32_t Channel12BreakerFault
Definition: PowerDistribution.h:179
uint32_t Channel22BreakerFault
Definition: PowerDistribution.h:189
uint32_t Channel10BreakerFault
Definition: PowerDistribution.h:177
uint32_t Channel7BreakerFault
Definition: PowerDistribution.h:174
uint32_t Channel19BreakerFault
Definition: PowerDistribution.h:186
uint32_t Channel17BreakerFault
Definition: PowerDistribution.h:184
uint32_t Channel6BreakerFault
Definition: PowerDistribution.h:173
uint32_t Channel14BreakerFault
Definition: PowerDistribution.h:181
uint32_t Channel0BreakerFault
Definition: PowerDistribution.h:167
uint32_t Channel11BreakerFault
Definition: PowerDistribution.h:178
uint32_t Channel15BreakerFault
Definition: PowerDistribution.h:182
uint32_t Channel2BreakerFault
Definition: PowerDistribution.h:169
uint32_t Channel16BreakerFault
Definition: PowerDistribution.h:183
uint32_t Channel13BreakerFault
Definition: PowerDistribution.h:180
uint32_t HasReset
Definition: PowerDistribution.h:194
uint32_t CanBusOff
Definition: PowerDistribution.h:193
uint32_t Channel21BreakerFault
Definition: PowerDistribution.h:188
uint32_t Channel9BreakerFault
Definition: PowerDistribution.h:176
uint32_t CanWarning
Definition: PowerDistribution.h:192
uint32_t Channel3BreakerFault
Definition: PowerDistribution.h:170
uint32_t Channel5BreakerFault
Definition: PowerDistribution.h:172
Definition: PowerDistribution.h:123
uint32_t HardwareMajor
Definition: PowerDistribution.h:128
uint32_t FirmwareMajor
Definition: PowerDistribution.h:124
uint32_t HardwareMinor
Definition: PowerDistribution.h:127
uint32_t FirmwareFix
Definition: PowerDistribution.h:126
uint32_t FirmwareMinor
Definition: PowerDistribution.h:125
uint32_t UniqueId
Definition: PowerDistribution.h:129