diff --git a/src_main/io/pispi.cpp b/src_main/io/pispi.cpp index d90a553a..547966a4 100644 --- a/src_main/io/pispi.cpp +++ b/src_main/io/pispi.cpp @@ -40,6 +40,19 @@ void PISPI::setBits(uchar bits) { } +void PISPI::setParameter(PISPI::Parameters parameter, bool on) { + PIFlags cp = (PIFlags)spi_mode; + cp.setFlag(parameter, on); + spi_mode = (int)cp; +} + + +bool PISPI::isParameterSet(PISPI::Parameters parameter) const { + PIFlags cp = (PIFlags)spi_mode; + return cp[parameter]; +} + + bool PISPI::openDevice() { #ifndef WINDOWS int ret = 0; diff --git a/src_main/io/pispi.h b/src_main/io/pispi.h index 62349c87..4d5c21f5 100644 --- a/src_main/io/pispi.h +++ b/src_main/io/pispi.h @@ -13,9 +13,8 @@ public: //! \brief Parameters of PISPI enum Parameters { - ClockInverse /*! SPI clk polarity control check and generate */ = 0x1, - ParityOdd /*! Parity is odd instead of even */ = 0x2, - TwoStopBits /*! Two stop bits instead of one */ = 0x4 + ClockInverse /*! SPI clk polarity control*/ = 0x1, + ClockPhaseShift /*! SPI clk phase control */ = 0x2, }; void setSpeed(uint speed_hz); @@ -24,6 +23,19 @@ public: void setBits(uchar bits = 8); uchar bits() const {return spi_bits;} + //! Set parameters to "parameters_" + void setParameters(PIFlags parameters_) {spi_mode = (int)parameters_;} + + //! Set parameter "parameter" to "on" state + void setParameter(PISPI::Parameters parameter, bool on = true); + + //! Returns if parameter "parameter" is set + bool isParameterSet(PISPI::Parameters parameter) const; + + //! Returns parameters + PIFlags parameters() const {return spi_mode;} + + protected: bool openDevice(); bool closeDevice();