supla-device
All Classes Functions Variables Pages
element.h
1/*
2 Copyright (C) AC SOFTWARE SP. Z O.O.
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17*/
18
19#ifndef SRC_SUPLA_ELEMENT_H_
20#define SRC_SUPLA_ELEMENT_H_
21
22#include <supla/protocol/supla_srpc.h>
23
24#include "channel.h"
25
27
28namespace Supla {
29
33class Element {
34 public:
35 Element();
36 virtual ~Element();
42 static Element *begin();
43
49 static Element *last();
50
58 static Element *getElementByChannelNumber(int channelNumber);
59
67 static Element *getOwnerOfSubDeviceId(int subDeviceId);
68
78 static bool IsAnyUpdatePending();
79
86 static void NotifyElementsAboutConfigChange(uint64_t fieldBit);
87
97 static bool IsInvalidPtrSet();
98
102 static void ClearInvalidPtr();
103
109 Element *next();
110
119 virtual void onLoadConfig(SuplaDeviceClass *sdc);
120
124 virtual void purgeConfig();
125
132 virtual void onLoadState();
133
140 virtual void onInit();
141
147 virtual void onSaveState();
148
154 virtual void onRegistered(Supla::Protocol::SuplaSrpc *suplaSrpc = nullptr);
155
162 virtual void iterateAlways();
163
172 virtual bool iterateConnected();
174 virtual bool iterateConnected(void *ptr);
175
183 virtual void onTimer();
184
192 virtual void onFastTimer();
193
197 virtual void onSoftReset();
198
204 virtual void onDeviceConfigChange(uint64_t fieldBit);
205
215 virtual int32_t handleNewValueFromServer(TSD_SuplaChannelNewValue *newValue);
216
223
224 // Handles "get channel state" request from server
225 // channelState is prefilled with network and device status informations
232 virtual void handleGetChannelState(TDSC_ChannelState *channelState);
233
242
243 // Returns SUPLA_RESULTCODE_
253 virtual uint8_t handleChannelConfig(TSD_ChannelConfig *newChannelConfig,
254 bool local = false);
255
268 virtual uint8_t handleWeeklySchedule(TSD_ChannelConfig *newWeeklySchedule,
269 bool altSchedule = false,
270 bool local = false);
271
272 // handleSetChannelConfigResult should handle both standard channel config
273 // and weekly schedule config
282 virtual void handleSetChannelConfigResult(
284
291 virtual void handleChannelConfigFinished();
292
299 int getChannelNumber() const;
300
307 int getSecondaryChannelNumber() const;
308
316 virtual bool isOwnerOfSubDeviceId(int subDeviceId) const;
317
323 virtual const Channel *getChannel() const;
324 virtual Channel *getChannel();
325
332 virtual const Channel *getSecondaryChannel() const;
333 virtual Channel *getSecondaryChannel();
334
344 virtual void generateKey(char *output, const char *key) const;
345
351 Element &disableChannelState();
352
358 bool isChannelStateEnabled() const;
359
365 virtual bool isAnyUpdatePending();
366
377 void setInitialCaption(const char *caption, bool secondaryChannel = false);
378
384 void setDefaultFunction(int32_t defaultFunction);
385
386 protected:
387 static Element *firstPtr;
388 static bool invalidatePtr;
389 Element *nextPtr = nullptr;
390};
391
392}; // namespace Supla
393
394#endif // SRC_SUPLA_ELEMENT_H_
Definition SuplaDevice.h:93
Definition channel.h:33
virtual uint8_t handleWeeklySchedule(TSD_ChannelConfig *newWeeklySchedule, bool altSchedule=false, bool local=false)
Handles "set channel config" with "weekly schedule" type request from server.
Definition element.cpp:264
static bool IsAnyUpdatePending()
Checks if any element has pending update for remote server.
Definition element.cpp:89
virtual void onDeviceConfigChange(uint64_t fieldBit)
Method called when device config is changed.
Definition element.cpp:295
void setDefaultFunction(int32_t defaultFunction)
Sets default channel's function.
Definition element.cpp:333
virtual void onTimer()
Method called on timer interupt.
Definition element.cpp:161
static Element * getOwnerOfSubDeviceId(int subDeviceId)
Returns Element which owns given subDeviceId.
Definition element.cpp:76
virtual uint8_t handleChannelConfig(TSD_ChannelConfig *newChannelConfig, bool local=false)
Handles "set channel config" request from server.
Definition element.cpp:256
virtual void onLoadState()
Second method called on element in SuplaDevice.begin().
Definition element.cpp:110
virtual bool isOwnerOfSubDeviceId(int subDeviceId) const
Returns true if element is owner of subDeviceId.
Definition element.cpp:340
virtual int handleCalcfgFromServer(TSD_DeviceCalCfgRequest *request)
Handles CALCFG requests from server.
Definition element.cpp:244
void setInitialCaption(const char *caption, bool secondaryChannel=false)
Sets initial caption.
Definition element.cpp:320
static bool IsInvalidPtrSet()
When "invalid pointer" is set, previously obtained Element pointer may be invalid.
Definition element.cpp:308
virtual const Channel * getSecondaryChannel() const
Returns pointer to secondary channel.
Definition element.cpp:196
virtual bool iterateConnected()
Method called on each SuplaDevice iteration when device is connected and registered to Supla server o...
Definition element.cpp:142
static void ClearInvalidPtr()
Clears "invalid pointer" flag.
Definition element.cpp:312
int getChannelNumber() const
Returns channel number.
Definition element.cpp:174
virtual void onSoftReset()
Method called when device soft restart is triggered.
Definition element.cpp:292
int getSecondaryChannelNumber() const
Returns secondary channel number.
Definition element.cpp:183
virtual void generateKey(char *output, const char *key) const
Generates key used for Config.
Definition element.cpp:288
bool isChannelStateEnabled() const
Returns true if channel state (i) function is enabled.
Definition element.cpp:128
static Element * getElementByChannelNumber(int channelNumber)
Returns Element by channel number.
Definition element.cpp:63
virtual int32_t handleNewValueFromServer(TSD_SuplaChannelNewValue *newValue)
Handles "new value" request from server.
Definition element.cpp:165
virtual void onLoadConfig(SuplaDeviceClass *sdc)
First method called on element in SuplaDevice.begin().
Definition element.cpp:106
Element & disableChannelState()
Disables channel state (i) function.
Definition element.cpp:249
static Element * begin()
Returns first Element (based on creation order)
Definition element.cpp:51
virtual void onRegistered(Supla::Protocol::SuplaSrpc *suplaSrpc=nullptr)
Method called each time when device successfully registers to Supla server.
Definition element.cpp:114
virtual void handleChannelConfigFinished()
Handles "channel config finished" message from server.
Definition element.cpp:282
static Element * last()
Returns last Element (based on creation order)
Definition element.cpp:55
virtual void onFastTimer()
Method called on fast timer interupt.
Definition element.cpp:163
Element * next()
Returns next Element from the list.
Definition element.cpp:100
virtual void onSaveState()
Method called periodically during SuplaDevice iteration.
Definition element.cpp:112
virtual void onInit()
Third method called on element in SuplaDevice.begin()
Definition element.cpp:104
virtual void handleSetChannelConfigResult(TSDS_SetChannelConfigResult *result)
Handles "set channel config" reply from server.
Definition element.cpp:275
virtual const Channel * getChannel() const
Returns pointer to main channel.
Definition element.cpp:192
static void NotifyElementsAboutConfigChange(uint64_t fieldBit)
Notifies all elements about device config change.
Definition element.cpp:299
virtual void handleGetChannelState(TDSC_ChannelState *channelState)
Handles "get channel state (i)" request from server.
Definition element.cpp:208
virtual void fillSuplaChannelNewValue(TSD_SuplaChannelNewValue *value)
Fills TSD_SuplaChannelNewValue based on current state.
Definition element.cpp:170
virtual void purgeConfig()
Removes all configration data related to the element from Storage::Config.
Definition element.cpp:108
virtual void iterateAlways()
Method called on each SuplaDevice iteration.
Definition element.cpp:135
virtual bool isAnyUpdatePending()
Returns true if any update is pending.
Definition element.cpp:316
Definition supla_srpc.h:55
Definition proto.h:2575
Definition proto.h:2928
Definition proto.h:2912
Definition proto.h:2246
Definition proto.h:1167