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,
int *size)
override;
74 virtual void moveUp();
76 virtual void moveDown();
79 virtual void setTargetPosition(
int newPosition);
80 void setCurrentPosition(
int newPosition);
81 void setNotCalibrated();
85 void setCalibrationOngoing(
int calibrationTime = 1);
86 void setCalibrationFinished();
88 int getCurrentPosition()
const;
89 int getTargetPosition()
const;
92 int getCurrentDirection()
const;
94 void configComfortUpValue(uint8_t position);
95 void configComfortDownValue(uint8_t position);
105 uint32_t getClosingTimeMs()
const;
106 uint32_t getOpeningTimeMs()
const;
110 virtual void triggerCalibration();
111 void setCalibrationNeeded();
112 bool isCalibrationRequested()
const;
113 bool isCalibrated()
const;
115 void setRsConfigMotorUpsideDownEnabled(
bool enable);
116 void setRsConfigButtonsUpsideDownEnabled(
bool enable);
117 void setRsConfigTimeMarginEnabled(
bool enable);
119 void setRsConfigMotorUpsideDownValue(uint8_t value);
120 void setRsConfigButtonsUpsideDownValue(uint8_t value);
121 void setRsConfigTimeMarginValue(int8_t value);
123 uint8_t getMotorUpsideDown()
const;
124 uint8_t getButtonsUpsideDown()
const;
125 int8_t getTimeMargin()
const;
127 static void setRsStorageSaveDelay(
int delayMs);
129 virtual bool inMove();
130 virtual bool isCalibrationInProgress()
const;
131 bool isCalibrationFailed()
const;
132 bool isCalibrationLost()
const;
133 bool isMotorProblem()
const;
135 bool isFunctionSupported(int32_t channelFunction)
const;
136 bool isAutoCalibrationSupported()
const;
138 void setOpenCloseTime(uint32_t newClosingTimeMs, uint32_t newOpeningTimeMs);
140 void setCalibrationFailed(
bool value);
141 void setCalibrationLost(
bool value);
142 void setMotorProblem(
bool value);
145 bool lastDirectionWasOpen()
const;
146 bool lastDirectionWasClose()
const;
149 bool isTimeSettingAvailable()
const;
150 bool getCalibrate()
const;
151 void setCalibrate(
bool value);
153 void printConfig()
const;
154 void setupButtonActions();
155 uint32_t getTimeMarginValue(uint32_t fullTime)
const;
159 uint8_t comfortDownValue = 20;
160 uint8_t comfortUpValue = 80;
162 Directions currentDirection = Directions::STOP_DIR;
163 Directions lastDirection = Directions::STOP_DIR;
165 int8_t currentPosition = UNKNOWN_POSITION;
166 int8_t targetPosition = STOP_POSITION;
167 int8_t lastPositionBeforeMovement = UNKNOWN_POSITION;
168 bool newTargetPositionAvailable =
false;
170 RollerShutterConfig rsConfig;
175 uint32_t closingTimeMs = 0;
176 uint32_t openingTimeMs = 0;
180 uint32_t calibrationTime = 0;
181 uint32_t lastUpdateTime = 0;
183 static int16_t rsStorageSaveDelay;