61class SuplaSrpc :
public ProtocolLayer {
63 static bool isSuplaSSLEnabled;
70 void onInit()
override;
71 bool onLoadConfig()
override;
72 bool verifyConfig()
override;
73 bool isEnabled()
override;
74 void disconnect()
override;
75 bool iterate(uint32_t _millis)
override;
76 bool isNetworkRestartRequested()
override;
77 uint32_t getConnectionFailTime()
override;
78 bool isRegisteredAndReady()
override;
81 void sendActionTrigger(uint8_t channelNumber, uint32_t actionId)
override;
82 void sendRegisterNotification(
84 bool sendNotification(
int context,
87 int soundId)
override;
89 void getUserLocaltime()
override;
90 void sendChannelValueChanged(uint8_t channelNumber,
93 uint32_t validityTimeSec)
override;
94 void sendExtendedChannelValueChanged(
97 void getChannelConfig(uint8_t channelNumber, uint8_t configType)
override;
98 bool setChannelConfig(uint8_t channelNumber,
99 _supla_int_t channelFunction,
102 uint8_t configType)
override;
105 bool setInitialCaption(uint8_t channelNumber,
const char *caption)
override;
106 void sendRemainingTimeValue(uint8_t channelNumber,
109 int32_t senderId)
override;
110 void sendRemainingTimeValue(uint8_t channelNumber,
111 uint32_t remainingTime,
112 unsigned char state[SUPLA_CHANNELVALUE_SIZE],
114 bool useSecondsInsteadOfMs)
override;
118 void onRegisterResultB(
121 void setActivityTimeout(uint32_t activityTimeoutSec);
122 uint32_t getActivityTimeout();
123 void updateLastResponseTime();
124 void updateLastSentTime();
126 void sendChannelStateResult(int32_t receiverId, uint8_t channelNo)
override;
128 void setServerPort(
int value);
129 void setVersion(
int value);
130 void setSuplaCACert(
const char *);
131 void setSupla3rdPartyCACert(
const char *);
132 const char *getSuplaCACert()
const;
133 const char *getSupla3rdPartyCACert()
const;
134 void setLowLevelDebugLogs(
bool value);
135 bool isUpdatePending()
override;
141 void sendPendingCalCfgResult(int16_t channelNo,
145 void *data =
nullptr);
146 void sendPendingCalCfgResultForCommand(int16_t channelNo,
148 int32_t pendingCommand,
149 int32_t responseCommand,
151 void *data =
nullptr);
152 void sendCalCfgResult(int32_t receiverId,
157 void *data =
nullptr);
159 void clearPendingCalCfgResult(int16_t channelNo, int32_t command = -1);
160 void clearPendingCalCfgTimeout(int16_t channelNo, int32_t command = -1);
162 static const char *configResultToCStr(
int result);
164 void setChannelConflictResolver(
167 static void onPacketSent(
void *userParam,
168 unsigned _supla_int_t callId,
170 unsigned _supla_int_t dataSize,
172 static void onPacketReceived(
void *userParam,
173 unsigned _supla_int_t callId,
175 unsigned _supla_int_t dataSize,
177 void logSrpcPacket(
bool send,
int callId,
const uint8_t *buf,
size_t size);
178 static const char *callIdToName(
int callId);
179 static bool isSensitiveCallId(
int callId);
183 void initializeSrpc();
184 void deinitializeSrpc();
185 void addLastStateAdError(
char *buf);
188 uint8_t activityTimeoutS = 30;
189 uint8_t securityLevel = 0;
190 int8_t registered = 0;
191 bool requestNetworkRestart =
false;
193 bool setDeviceConfigReceivedAfterRegistration =
false;
194 bool firstConnectionAttempt =
true;
195 bool adErrorLogged =
false;
196 uint8_t autodiscoverRetryCounter = 0;
197 uint16_t connectionFailCounter = 0;
199 uint32_t lastPingTimeMs = 0;
200 uint32_t waitForIterate = 0;
201 uint32_t lastIterateTime = 0;
202 uint32_t lastResponseMs = 0;
203 uint32_t lastSentMs = 0;
207 const char *suplaCACert =
nullptr;
208 const char *supla3rdPartyCACert =
nullptr;
209 const char *selectedCertificate =
nullptr;
210 void *srpc =
nullptr;
214 void handlePendingCalCfgTimeouts(uint32_t _millis);