52class RollerShutterInterface :
public ChannelElement,
public ActionHandler {
54 RollerShutterInterface();
56 RollerShutterInterface(
const RollerShutterInterface &) =
delete;
57 RollerShutterInterface &operator=(
const RollerShutterInterface &) =
delete;
60 void handleAction(
int event,
int action)
override;
63 bool local =
false)
override;
64 void fillChannelConfig(
void *channelConfig,
66 uint8_t configType)
override;
76 virtual void moveUp();
78 virtual void moveDown();
81 virtual void setTargetPosition(
int newPosition);
82 void setCurrentPosition(
int newPosition);
83 void setNotCalibrated();
87 void setCalibrationOngoing(
int calibrationTime = 1);
88 void setCalibrationFinished();
90 int getCurrentPosition()
const;
91 int getTargetPosition()
const;
94 int getCurrentDirection()
const;
96 void configComfortUpValue(uint8_t position);
97 void configComfortDownValue(uint8_t position);
107 uint32_t getClosingTimeMs()
const;
108 uint32_t getOpeningTimeMs()
const;
112 virtual void triggerCalibration();
113 void setCalibrationNeeded();
114 bool isCalibrationRequested()
const;
115 bool isCalibrated()
const;
117 void setRsConfigMotorUpsideDownEnabled(
bool enable);
118 void setRsConfigButtonsUpsideDownEnabled(
bool enable);
119 void setRsConfigTimeMarginEnabled(
bool enable);
121 void setRsConfigMotorUpsideDownValue(uint8_t value);
122 void setRsConfigButtonsUpsideDownValue(uint8_t value);
123 void setRsConfigTimeMarginValue(int8_t value);
125 uint8_t getMotorUpsideDown()
const;
126 uint8_t getButtonsUpsideDown()
const;
127 int8_t getTimeMargin()
const;
129 static void setRsStorageSaveDelay(
int delayMs);
131 virtual bool inMove();
132 virtual bool isCalibrationInProgress()
const;
133 bool isCalibrationFailed()
const;
134 bool isCalibrationLost()
const;
135 bool isMotorProblem()
const;
137 bool isFunctionSupported(int32_t channelFunction)
const;
138 bool isAutoCalibrationSupported()
const;
140 void setOpenCloseTime(uint32_t newClosingTimeMs, uint32_t newOpeningTimeMs);
142 void setCalibrationFailed(
bool value);
143 void setCalibrationLost(
bool value);
144 void setMotorProblem(
bool value);
147 bool lastDirectionWasOpen()
const;
148 bool lastDirectionWasClose()
const;
151 bool isTimeSettingAvailable()
const;
152 bool getCalibrate()
const;
153 void setCalibrate(
bool value);
155 void printConfig()
const;
156 void setupButtonActions();
157 uint32_t getTimeMarginValue(uint32_t fullTime)
const;
161 uint8_t comfortDownValue = 20;
162 uint8_t comfortUpValue = 80;
164 Directions currentDirection = Directions::STOP_DIR;
165 Directions lastDirection = Directions::STOP_DIR;
167 int8_t currentPosition = UNKNOWN_POSITION;
168 int8_t targetPosition = STOP_POSITION;
169 int8_t lastPositionBeforeMovement = UNKNOWN_POSITION;
170 bool newTargetPositionAvailable =
false;
172 RollerShutterConfig rsConfig;
177 uint32_t closingTimeMs = 0;
178 uint32_t openingTimeMs = 0;
182 uint32_t calibrationTime = 0;
183 uint32_t lastUpdateTime = 0;
185 static int16_t rsStorageSaveDelay;