blob: 5f1dc679aba82f21a6a8bf2d193eb48ba0aff42b [file] [log] [blame]
Brian Silvermand8f403a2014-12-13 19:12:04 -05001#include "frc971/wpilib/buffered_pcm.h"
2
3#include <inttypes.h>
4
5#include "aos/common/logging/logging.h"
6
7namespace frc971 {
8namespace wpilib {
9
10::std::unique_ptr<BufferedSolenoid> BufferedPcm::MakeSolenoid(int number) {
11 return ::std::unique_ptr<BufferedSolenoid>(
12 new BufferedSolenoid(number, this));
13}
14
sabinaf5584322017-09-23 18:37:19 -070015void BufferedPcm::DoSet(int number, bool value) {
Brian Silvermand8f403a2014-12-13 19:12:04 -050016 if (value) {
17 values_ |= 1 << number;
18 } else {
19 values_ &= ~(1 << number);
20 }
21}
22
23void BufferedPcm::Flush() {
24 LOG(DEBUG, "sending solenoids 0x%" PRIx8 "\n", values_);
Brian Silvermane48dbc12017-02-04 20:06:29 -080025#ifdef WPILIB2017
Adam Snaidere0554ef2017-03-11 23:02:45 -080026 SolenoidBase::SetAll(values_, m_moduleNumber);
Austin Schuh68742882015-11-08 12:19:15 -080027#else
28 SolenoidBase::Set(values_, 0xFF, m_moduleNumber);
29#endif
Brian Silvermand8f403a2014-12-13 19:12:04 -050030}
31
32} // namespace wpilib
33} // namespace frc971