48 static bool isSuplaSSLEnabled;
55 void onInit()
override;
56 bool onLoadConfig()
override;
57 bool verifyConfig()
override;
58 bool isEnabled()
override;
59 void disconnect()
override;
60 bool iterate(uint32_t _millis)
override;
61 bool isNetworkRestartRequested()
override;
62 uint32_t getConnectionFailTime()
override;
63 ConnectionError getConnectionError()
const override;
64 bool isRegisteredAndReady()
override;
67 void sendActionTrigger(uint8_t channelNumber, uint32_t actionId)
override;
68 void sendRegisterNotification(
70 bool sendNotification(
int context,
73 int soundId)
override;
75 void getUserLocaltime()
override;
76 void sendChannelValueChanged(uint8_t channelNumber,
79 uint32_t validityTimeSec)
override;
80 void sendExtendedChannelValueChanged(
83 void getChannelConfig(uint8_t channelNumber, uint8_t configType)
override;
84 bool setChannelConfig(uint8_t channelNumber,
85 _supla_int_t channelFunction,
88 uint8_t configType)
override;
91 bool setInitialCaption(uint8_t channelNumber,
const char *caption)
override;
92 void sendRemainingTimeValue(uint8_t channelNumber,
95 int32_t senderId)
override;
96 void sendRemainingTimeValue(uint8_t channelNumber,
97 uint32_t remainingTime,
98 unsigned char state[SUPLA_CHANNELVALUE_SIZE],
100 bool useSecondsInsteadOfMs)
override;
104 void onRegisterResultB(
107 void setActivityTimeout(uint32_t activityTimeoutSec);
108 uint32_t getActivityTimeout();
109 void updateLastResponseTime();
110 void updateLastSentTime();
112 void sendChannelStateResult(int32_t receiverId, uint8_t channelNo)
override;
114 void setServerPort(
int value);
115 void setVersion(
int value);
116 bool hasWriteFailure()
const;
117 void markWriteFailure();
118 void setSuplaCACert(
const char *);
119 void setSupla3rdPartyCACert(
const char *);
120 const char *getSuplaCACert()
const;
121 const char *getSupla3rdPartyCACert()
const;
122 void setLowLevelDebugLogs(
bool value);
123 bool isUpdatePending()
override;
129 void sendPendingCalCfgResult(int16_t channelNo,
133 void *data =
nullptr);
134 void sendPendingCalCfgResultForCommand(int16_t channelNo,
136 int32_t pendingCommand,
137 int32_t responseCommand,
139 void *data =
nullptr);
140 void sendCalCfgResult(int32_t receiverId,
145 void *data =
nullptr);
147 void clearPendingCalCfgResult(int16_t channelNo, int32_t command = -1);
148 void clearPendingCalCfgTimeout(int16_t channelNo, int32_t command = -1);
150 static const char *configResultToCStr(
int result);
152 void setChannelConflictResolver(
155 static void onPacketSent(
void *srpcHandle,
156 unsigned _supla_int_t callId,
158 unsigned _supla_int_t dataSize,
160 static void onPacketReceived(
void *srpcHandle,
161 unsigned _supla_int_t callId,
163 unsigned _supla_int_t dataSize,
165 void logSrpcPacket(
bool send,
int callId,
const uint8_t *buf,
size_t size);
166 static const char *callIdToName(
int callId);
167 static bool isSensitiveCallId(
int callId);
171 void scheduleReconnect(uint32_t now);
172 void initializeSrpc();
173 void deinitializeSrpc();
174 void addLastStateAdError(
char *buf);
177 uint8_t activityTimeoutS = 30;
178 uint8_t securityLevel = 0;
179 int8_t registered = 0;
180 bool requestNetworkRestart =
false;
182 bool setDeviceConfigReceivedAfterRegistration =
false;
183 bool firstConnectionAttempt =
true;
184 bool adErrorLogged =
false;
185 bool writeFailure =
false;
186 uint8_t autodiscoverRetryCounter = 0;
187 uint16_t connectionFailCounter = 0;
188 uint8_t reconnectAttemptCounter = 0;
190 uint32_t lastPingTimeMs = 0;
191 uint32_t waitForIterate = 0;
192 uint32_t lastIterateTime = 0;
193 uint32_t lastResponseMs = 0;
194 uint32_t lastSentMs = 0;
198 const char *suplaCACert =
nullptr;
199 const char *supla3rdPartyCACert =
nullptr;
200 const char *selectedCertificate =
nullptr;
201 void *srpc =
nullptr;
205 void handlePendingCalCfgTimeouts(uint32_t _millis);
207 bool versionErrorDisconnectPending =
false;