#pragma once
#include <memory>
#include "frc/PneumaticsBase.h"
#include "frc/simulation/CallbackStore.h"
#include "frc/simulation/PneumaticsBaseSim.h"
namespace frc {
class Compressor;
namespace sim {
class REVPHSim : public PneumaticsBaseSim {
public:
REVPHSim();
explicit REVPHSim(int module);
explicit REVPHSim(const PneumaticsBase& pneumatics);
~REVPHSim() override = default;
[[nodiscard]]
std::unique_ptr<CallbackStore> RegisterInitializedCallback(
NotifyCallback callback, bool initialNotify) override;
bool GetInitialized() const override;
void SetInitialized(bool solenoidInitialized) override;
[[nodiscard]]
std::unique_ptr<CallbackStore> RegisterSolenoidOutputCallback(
int channel, NotifyCallback callback, bool initialNotify) override;
bool GetSolenoidOutput(int channel) const override;
void SetSolenoidOutput(int channel, bool solenoidOutput) override;
[[nodiscard]]
std::unique_ptr<CallbackStore> RegisterCompressorOnCallback(
NotifyCallback callback, bool initialNotify) override;
bool GetCompressorOn() const override;
void SetCompressorOn(bool compressorOn) override;
[[nodiscard]]
std::unique_ptr<CallbackStore> RegisterCompressorConfigTypeCallback(
NotifyCallback callback, bool initialNotify);
int GetCompressorConfigType() const;
void SetCompressorConfigType(int compressorConfigType);
[[nodiscard]]
std::unique_ptr<CallbackStore> RegisterPressureSwitchCallback(
NotifyCallback callback, bool initialNotify) override;
bool GetPressureSwitch() const override;
void SetPressureSwitch(bool pressureSwitch) override;
[[nodiscard]]
std::unique_ptr<CallbackStore> RegisterCompressorCurrentCallback(
NotifyCallback callback, bool initialNotify) override;
double GetCompressorCurrent() const override;
void SetCompressorCurrent(double compressorCurrent) override;
uint8_t GetAllSolenoidOutputs() const override;
void SetAllSolenoidOutputs(uint8_t outputs) override;
void ResetData() override;
};
} }