blob: bd9e033bda29d4c306fc8f594007955815fa641c [file] [log] [blame]
Austin Schuh812d0d12021-11-04 20:16:48 -07001// 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#include "frc/PneumaticsBase.h"
6
Austin Schuh75263e32022-02-22 18:05:32 -08007#include <hal/REVPH.h>
8
Austin Schuh812d0d12021-11-04 20:16:48 -07009#include "frc/Errors.h"
10#include "frc/PneumaticHub.h"
11#include "frc/PneumaticsControlModule.h"
12#include "frc/SensorUtil.h"
13
14using namespace frc;
15
Austin Schuh75263e32022-02-22 18:05:32 -080016static_assert(
17 static_cast<int>(CompressorConfigType::Disabled) ==
18 HAL_REVPHCompressorConfigType::HAL_REVPHCompressorConfigType_kDisabled);
19static_assert(
20 static_cast<int>(CompressorConfigType::Digital) ==
21 HAL_REVPHCompressorConfigType::HAL_REVPHCompressorConfigType_kDigital);
22static_assert(
23 static_cast<int>(CompressorConfigType::Analog) ==
24 HAL_REVPHCompressorConfigType::HAL_REVPHCompressorConfigType_kAnalog);
25static_assert(
26 static_cast<int>(CompressorConfigType::Hybrid) ==
27 HAL_REVPHCompressorConfigType::HAL_REVPHCompressorConfigType_kHybrid);
28
Austin Schuh812d0d12021-11-04 20:16:48 -070029std::shared_ptr<PneumaticsBase> PneumaticsBase::GetForType(
30 int module, PneumaticsModuleType moduleType) {
31 if (moduleType == PneumaticsModuleType::CTREPCM) {
32 return PneumaticsControlModule::GetForModule(module);
33 } else if (moduleType == PneumaticsModuleType::REVPH) {
34 return PneumaticHub::GetForModule(module);
35 }
Austin Schuh75263e32022-02-22 18:05:32 -080036 throw FRC_MakeError(err::InvalidParameter, "{}",
37 static_cast<int>(moduleType));
Austin Schuh812d0d12021-11-04 20:16:48 -070038}
39
40int PneumaticsBase::GetDefaultForType(PneumaticsModuleType moduleType) {
41 if (moduleType == PneumaticsModuleType::CTREPCM) {
42 return SensorUtil::GetDefaultCTREPCMModule();
43 } else if (moduleType == PneumaticsModuleType::REVPH) {
44 return SensorUtil::GetDefaultREVPHModule();
45 }
Austin Schuh75263e32022-02-22 18:05:32 -080046 throw FRC_MakeError(err::InvalidParameter, "{}",
47 static_cast<int>(moduleType));
Austin Schuh812d0d12021-11-04 20:16:48 -070048}