Files
allwpilib/wpilibc/src/main/native/cpp/hardware/pneumatic/PneumaticsBase.cpp

50 lines
1.9 KiB
C++
Raw Normal View History

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
2025-11-07 19:56:21 -05:00
#include "wpi/hardware/pneumatic/PneumaticsBase.hpp"
2024-09-20 17:43:39 -07:00
#include <memory>
2025-11-07 19:56:21 -05:00
#include "wpi/hal/REVPH.h"
#include "wpi/hardware/pneumatic/PneumaticHub.hpp"
#include "wpi/hardware/pneumatic/PneumaticsControlModule.hpp"
2025-11-07 19:57:55 -05:00
#include "wpi/system/Errors.hpp"
2025-11-07 19:56:21 -05:00
#include "wpi/util/SensorUtil.hpp"
using namespace frc;
static_assert(
static_cast<int>(CompressorConfigType::Disabled) ==
HAL_REVPHCompressorConfigType::HAL_REVPHCompressorConfigType_kDisabled);
static_assert(
static_cast<int>(CompressorConfigType::Digital) ==
HAL_REVPHCompressorConfigType::HAL_REVPHCompressorConfigType_kDigital);
static_assert(
static_cast<int>(CompressorConfigType::Analog) ==
HAL_REVPHCompressorConfigType::HAL_REVPHCompressorConfigType_kAnalog);
static_assert(
static_cast<int>(CompressorConfigType::Hybrid) ==
HAL_REVPHCompressorConfigType::HAL_REVPHCompressorConfigType_kHybrid);
std::shared_ptr<PneumaticsBase> PneumaticsBase::GetForType(
2025-02-25 19:07:01 -08:00
int busId, int module, PneumaticsModuleType moduleType) {
if (moduleType == PneumaticsModuleType::CTREPCM) {
2025-02-25 19:07:01 -08:00
return PneumaticsControlModule::GetForModule(busId, module);
} else if (moduleType == PneumaticsModuleType::REVPH) {
2025-02-25 19:07:01 -08:00
return PneumaticHub::GetForModule(busId, module);
}
throw FRC_MakeError(err::InvalidParameter, "{}",
static_cast<int>(moduleType));
}
int PneumaticsBase::GetDefaultForType(PneumaticsModuleType moduleType) {
if (moduleType == PneumaticsModuleType::CTREPCM) {
return SensorUtil::GetDefaultCTREPCMModule();
} else if (moduleType == PneumaticsModuleType::REVPH) {
return SensorUtil::GetDefaultREVPHModule();
}
throw FRC_MakeError(err::InvalidParameter, "{}",
static_cast<int>(moduleType));
}