Hello,
I am writing a program and it has gotten so large and full of functions it has become a bit unwieldy. So I have started to transfer functions to a library (I should have done this a while ago when it wasn’t so complicated and intertwined but now it is too late).
I had a global variable called bool shutterState that I use to do several checks. I moved that variable into a library where it is set. I had the variable as a public var but I couldn’t figure out how to access it via my main program. So I made it a private variable and created a function to return the state. Now I get the error below which makes no sense to me.
IRIS_ESP32_Controller_Temp:599:24: error: cannot convert 'Shutter::state' from type 'bool (Shutter::)()' to type 'bool'
if (shutter.state) {
^
IRIS_ESP32_Controller_Temp:602:20: error: cannot convert 'Shutter::state' from type 'bool (Shutter::)()' to type 'bool'
if (!shutter.state) {
^
IRIS_ESP32_Controller_Temp:602:20: error: in argument to unary !
this is where is I use it in my main()
if (inByte == 'm') {
shutter.toggle();
if (shutter.state) {
Serial.print("Opening");
}
if (!shutter.state) {
Serial.print("Closing");
}
Serial.println(" Shutter...");
}
this is my shutter.h file
#ifndef Shutter_h
#define Shutter_h
#include "Arduino.h"
#include <EEPROM.h>
class Shutter
{
public:
Shutter(int posPin, int negPin, int reg);
void setup();
void open();
void close();
void toggle();
void setState(bool state);
bool getState();
bool state();
private:
int _posPin;
int _negPin;
int _reg;
bool _state;
};
#endif
this is my shutter.cpp file
#include "Shutter.h"
Shutter::Shutter(int posPin, int negPin, int reg)
{
pinMode(posPin, OUTPUT);
pinMode(negPin,OUTPUT);
_posPin = posPin;
_negPin = negPin;
_reg = reg;
}
void Shutter::setup()
{
pinMode(_posPin, OUTPUT);
pinMode(_negPin, OUTPUT);
}
void Shutter::open()
{
digitalWrite(_posPin, HIGH);
digitalWrite(_negPin, LOW);
setState(_state);
}
void Shutter::close()
{
digitalWrite(_posPin, LOW);
digitalWrite(_negPin, HIGH);
setState(_state);
}
void Shutter::toggle()
{
_state = !_state;
digitalWrite(_posPin, _state);
digitalWrite(_negPin, !_state);
setState(_state);
}
void Shutter::setState(bool _state)
{
EEPROM.write(_reg, _state);
EEPROM.commit();
if (_state == 1){
stateText = "OPEN";
}
if (_state == 0){
stateText = "CLOSED";
}
}
bool Shutter::getState()
{
_state = -1;
_state = EEPROM.read(_reg);
Serial.print("getState = "); Serial.println(_state);
if (_state == 0 || _state == 1){
return true;
} else {
return false;
}
}
bool Shutter::state()
{
return _state;
}
I don’t understand why it is saying I am trying to convert type ‘bool (Shutter::)()’ to type ‘bool’.
Any help would be greatly appreciated. Thanks.