49 static bool isSuplaSSLEnabled;
56 void onInit()
override;
57 bool onLoadConfig()
override;
58 bool verifyConfig()
override;
59 bool isEnabled()
override;
60 void disconnect()
override;
61 bool iterate(uint32_t _millis)
override;
62 bool isNetworkRestartRequested()
override;
63 uint32_t getConnectionFailTime()
override;
64 ConnectionError getConnectionError()
const override;
65 bool isRegisteredAndReady()
override;
68 void sendActionTrigger(uint8_t channelNumber, uint32_t actionId)
override;
69 void sendRegisterNotification(
71 bool sendNotification(
int context,
74 int soundId)
override;
76 void getUserLocaltime()
override;
77 void sendChannelValueChanged(uint8_t channelNumber,
80 uint32_t validityTimeSec)
override;
81 void sendExtendedChannelValueChanged(
84 void getChannelConfig(uint8_t channelNumber, uint8_t configType)
override;
85 bool setChannelConfig(uint8_t channelNumber,
86 _supla_int_t channelFunction,
89 uint8_t configType)
override;
92 bool setInitialCaption(uint8_t channelNumber,
const char *caption)
override;
93 void sendRemainingTimeValue(uint8_t channelNumber,
96 int32_t senderId)
override;
97 void sendRemainingTimeValue(uint8_t channelNumber,
98 uint32_t remainingTime,
99 unsigned char state[SUPLA_CHANNELVALUE_SIZE],
101 bool useSecondsInsteadOfMs)
override;
105 void onRegisterResultB(
107 void onDeviceSyncDone();
109 void setActivityTimeout(uint32_t activityTimeoutSec);
110 uint32_t getActivityTimeout();
111 void updateLastResponseTime();
112 void updateLastSentTime();
114 void sendChannelStateResult(int32_t receiverId, uint8_t channelNo)
override;
116 void setServerPort(
int value);
117 void setVersion(
int value);
118 bool hasWriteFailure()
const;
119 void markWriteFailure();
120 void setSuplaCACert(
const char *);
121 void setSupla3rdPartyCACert(
const char *);
122 const char *getSuplaCACert()
const;
123 const char *getSupla3rdPartyCACert()
const;
124 void setLowLevelDebugLogs(
bool value);
125 bool isUpdatePending()
override;
131 void sendPendingCalCfgResult(int16_t channelNo,
135 void *data =
nullptr);
136 void sendPendingCalCfgResultForCommand(int16_t channelNo,
138 int32_t pendingCommand,
139 int32_t responseCommand,
141 void *data =
nullptr);
142 void sendCalCfgResult(int32_t receiverId,
147 void *data =
nullptr);
149 void clearPendingCalCfgResult(int16_t channelNo, int32_t command = -1);
150 void clearPendingCalCfgTimeout(int16_t channelNo, int32_t command = -1);
152 static const char *configResultToCStr(
int result);
154 void setChannelConflictResolver(
157#if SUPLA_SRPC_PACKET_LOG_ENABLED && !defined(SUPLA_DISABLE_LOGS)
158 static void onPacketSent(
void *srpcHandle,
159 unsigned _supla_int_t callId,
161 unsigned _supla_int_t dataSize,
163 static void onPacketReceived(
void *srpcHandle,
164 unsigned _supla_int_t callId,
166 unsigned _supla_int_t dataSize,
168 void logSrpcPacket(
bool send,
int callId,
const uint8_t *buf,
size_t size);
169 static const char *callIdToName(
int callId);
170 static bool isSensitiveCallId(
int callId);
175 void scheduleReconnect(uint32_t now);
176 void initializeSrpc();
177 void deinitializeSrpc();
178 void addLastStateAdError(
char *buf);
179#ifndef ARDUINO_ARCH_AVR
180 bool autodiscover(uint32_t now);
184 uint8_t activityTimeoutS = 30;
185 uint8_t securityLevel = 0;
186 int8_t registered = 0;
187 bool requestNetworkRestart : 1;
189 bool setDeviceConfigReceivedAfterRegistration : 1;
190 bool deviceSyncDoneReceived : 1;
191 bool firstConnectionAttempt : 1;
192 bool adErrorLogged : 1;
193 bool writeFailure : 1;
194 bool ownsSelectedCertificate : 1;
197 bool versionErrorDisconnectPending : 1;
200 uint8_t autodiscoverRetryCounter = 0;
201 uint16_t connectionFailCounter = 0;
202 uint8_t reconnectAttemptCounter = 0;
204 uint32_t lastPingTimeMs = 0;
205 uint32_t waitForIterate = 0;
206 uint32_t lastIterateTime = 0;
207 uint32_t lastResponseMs = 0;
208 uint32_t lastSentMs = 0;
212 const char *suplaCACert =
nullptr;
213 const char *supla3rdPartyCACert =
nullptr;
214 const char *selectedCertificate =
nullptr;
215 void *srpc =
nullptr;
219 void releaseOwnedCertificate();
220 void handlePendingCalCfgTimeouts(uint32_t _millis);