27#include <esp8266-compat.h>
31#define SRPC_EXCLUDE_DEVICE
34#if defined(ESP8266) || defined(ESP32)
36#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
37#define SRPC_WITHOUT_OUT_QUEUE
38#define SRPC_WITHOUT_IN_QUEUE
39#define PACKET_INTEGRITY_BUFFER_DISABLED
42#define SRPC_EXCLUDE_CLIENT
43#define SRPC_ICACHE_FLASH ICACHE_FLASH_ATTR
50#define SRPC_ICACHE_FLASH
53#if defined(__AVR__) || defined(ARDUINO) || defined(SUPLA_DEVICE)
54#define SRPC_EXCLUDE_CLIENT
55#define SRPC_WITHOUT_OUT_QUEUE
56#define SRPC_WITHOUT_IN_QUEUE
57#define PACKET_INTEGRITY_BUFFER_DISABLED
64#if defined(SUPLA_DEVICE) || defined(ESP8266) || defined(ESP32) || \
65 defined(__AVR__) || defined(ARDUINO_ARCH_ESP8266) || \
66 defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_AVR)
67#define SRPC_WITH_PACKET_LOG_HOOKS
70typedef _supla_int_t (*_func_srpc_DataRW)(
void *buf, _supla_int_t count,
72typedef void (*_func_srpc_event_OnRemoteCallReceived)(
73 void *_srpc,
unsigned _supla_int_t rr_id,
unsigned _supla_int_t call_id,
74 void *user_params,
unsigned char proto_version);
75typedef void (*_func_srpc_event_BeforeCall)(
void *_srpc,
76 unsigned _supla_int_t call_id,
78#ifdef SRPC_WITH_PACKET_LOG_HOOKS
79typedef void (*_func_srpc_event_OnPacketSent)(
81 unsigned _supla_int_t call_id,
83 unsigned _supla_int_t data_size,
85typedef void (*_func_srpc_event_OnPacketReceived)(
87 unsigned _supla_int_t call_id,
89 unsigned _supla_int_t data_size,
92typedef void (*_func_srpc_event_OnVersionError)(
void *_srpc,
93 unsigned char remote_version,
95typedef void (*_func_srpc_event_OnMinVersionRequired)(
96 void *_srpc,
unsigned _supla_int_t call_id,
unsigned char min_version,
100 _func_srpc_DataRW data_read;
101 _func_srpc_DataRW data_write;
102 _func_srpc_event_OnRemoteCallReceived on_remote_call_received;
103 _func_srpc_event_OnVersionError on_version_error;
104 _func_srpc_event_BeforeCall before_async_call;
105#ifdef SRPC_WITH_PACKET_LOG_HOOKS
106 _func_srpc_event_OnPacketSent on_packet_sent;
107 _func_srpc_event_OnPacketReceived on_packet_received;
109 _func_srpc_event_OnMinVersionRequired on_min_version_required;
208 TSDS_SetChannelConfig *sds_set_channel_config_request;
223 unsigned _supla_int_t call_id;
224 unsigned _supla_int_t rr_id;
229void SRPC_ICACHE_FLASH srpc_params_init(
TsrpcParams *params);
231void *SRPC_ICACHE_FLASH srpc_init(
TsrpcParams *params);
232void SRPC_ICACHE_FLASH srpc_free(
void *_srpc);
234void SRPC_ICACHE_FLASH srpc_lock(
void *_srpc);
235void SRPC_ICACHE_FLASH srpc_unlock(
void *_srpc);
237char SRPC_ICACHE_FLASH srpc_input_dataexists(
void *_srpc);
238char SRPC_ICACHE_FLASH srpc_output_dataexists(
void *_srpc);
239unsigned char SRPC_ICACHE_FLASH srpc_out_queue_item_count(
void *srpc);
241char SRPC_ICACHE_FLASH srpc_iterate(
void *_srpc);
242char SRPC_ICACHE_FLASH srpc_iterate_device(
void *_srpc);
245 unsigned _supla_int_t rr_id);
249unsigned char SRPC_ICACHE_FLASH srpc_get_proto_version(
void *_srpc);
250void SRPC_ICACHE_FLASH srpc_set_proto_version(
void *_srpc,
251 unsigned char version);
253unsigned char SRPC_ICACHE_FLASH
254srpc_call_min_version_required(
void *_srpc,
unsigned _supla_int_t call_id);
255unsigned char SRPC_ICACHE_FLASH
256srpc_call_allowed(
void *_srpc,
unsigned _supla_int_t call_id);
259_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_getversion(
void *_srpc);
260_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_getversion_result(
261 void *_srpc,
char SoftVer[SUPLA_SOFTVER_MAXSIZE]);
262_supla_int_t SRPC_ICACHE_FLASH
263srpc_sdc_async_versionerror(
void *_srpc,
unsigned char remote_version);
264_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_ping_server(
void *_srpc);
265_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_ping_server_result(
void *_srpc);
266_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_set_activity_timeout(
268_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_set_activity_timeout_result(
271_supla_int_t SRPC_ICACHE_FLASH
272srpc_dcs_async_get_registration_enabled(
void *_srpc);
273_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_get_registration_enabled_result(
275_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_get_user_localtime(
void *_srpc);
276_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_get_user_localtime_result(
278_supla_int_t SRPC_ICACHE_FLASH srpc_csd_async_get_channel_state(
280_supla_int_t SRPC_ICACHE_FLASH
283_supla_int_t SRPC_ICACHE_FLASH
284srpc_dcs_async_set_channel_caption(
void *_srpc,
TDCS_SetCaption *caption);
285_supla_int_t SRPC_ICACHE_FLASH srpc_scd_async_set_channel_caption_result(
288#ifndef SRPC_EXCLUDE_DEVICE
290_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice(
292_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_b(
294_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_c(
296_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_d(
298_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_e(
300_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_f(
302_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_g(
304_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_registerdevice_result(
306_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_registerdevice_result_b(
309_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_in_chunks(
312_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_in_chunks_g(
316_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_value_changed(
317 void *_srpc,
unsigned char channel_number,
char *value);
318_supla_int_t SRPC_ICACHE_FLASH
319srpc_ds_async_channel_value_changed_b(
void *_srpc,
unsigned char channel_number,
320 char *value,
unsigned char offline);
321_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_value_changed_c(
322 void *_srpc,
unsigned char channel_number,
char *value,
323 unsigned char offline,
unsigned _supla_int_t validity_time_sec);
324_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_extendedvalue_changed(
325 void *_srpc,
unsigned char channel_number,
327_supla_int_t SRPC_ICACHE_FLASH
329_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channelgroup_value(
331_supla_int_t SRPC_ICACHE_FLASH
332srpc_ds_async_set_channel_result(
void *_srpc,
unsigned char ChannelNumber,
333 _supla_int_t SenderID,
char Success);
334_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_firmware_update_url(
336_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_firmware_update_url_result(
338_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_device_calcfg_request(
340_supla_int_t SRPC_ICACHE_FLASH
342_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_get_channel_functions(
void *_srpc);
343_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_channel_functions_result(
345_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_get_channel_config_request(
347_supla_int_t SRPC_ICACHE_FLASH
349_supla_int_t SRPC_ICACHE_FLASH
351_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_register_push_notification(
353_supla_int_t SRPC_ICACHE_FLASH
355_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channel_config_request(
356 void *_srpc, TSDS_SetChannelConfig *config);
357_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_channel_config_result(
359_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_channel_config_request(
360 void *_srpc, TSDS_SetChannelConfig *config);
361_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channel_config_result(
363_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_channel_config_finished(
365_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_device_config_request(
367_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_device_config_result(
369_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_device_config_request(
371_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_device_config_result(
373_supla_int_t SRPC_ICACHE_FLASH
377#ifndef SRPC_EXCLUDE_CLIENT
379_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient(
381_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_b(
383_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_c(
385_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_d(
387_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result(
389_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_b(
392_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_c(
395_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_d(
398_supla_int_t SRPC_ICACHE_FLASH
400_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_locationpack_update(
402_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update(
404_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_b(
406_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_c(
408_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_d(
410_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_e(
412_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_value_update(
414_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_value_update_b(
416_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_pack_update(
418_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_pack_update_b(
420_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_relation_pack_update(
422 *channelgroup_relation_pack);
423_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_relation_pack_update(
425_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelvalue_pack_update(
427_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelvalue_pack_update_b(
429_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelextendedvalue_pack_update(
432_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_state_pack_update(
434_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_next(
void *_srpc);
435_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_event(
void *_srpc,
437_supla_int_t SRPC_ICACHE_FLASH
439_supla_int_t SRPC_ICACHE_FLASH
441_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_channel_value_b(
443_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_oauth_token_request(
void *_srpc);
444_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_oauth_token_request_result(
446_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_superuser_authorization_request(
448_supla_int_t SRPC_ICACHE_FLASH
449srpc_cs_async_get_superuser_authorization_result(
void *_srpc);
450_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_superuser_authorization_result(
452_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_calcfg_request(
454_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_calcfg_request_b(
456_supla_int_t SRPC_ICACHE_FLASH
458_supla_int_t SRPC_ICACHE_FLASH
459srpc_cs_async_get_channel_basic_cfg(
void *_srpc, _supla_int_t ChannelID);
460_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_basic_cfg_result(
462_supla_int_t SRPC_ICACHE_FLASH
464_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_channel_function_result(
466_supla_int_t SRPC_ICACHE_FLASH
467srpc_cs_async_set_channel_group_caption(
void *_srpc,
TDCS_SetCaption *caption);
468_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_channel_group_caption_result(
470_supla_int_t SRPC_ICACHE_FLASH
471srpc_cs_async_set_location_caption(
void *_srpc,
TDCS_SetCaption *caption);
472_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_location_caption_result(
474_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_scene_caption(
476_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_scene_caption_result(
478_supla_int_t SRPC_ICACHE_FLASH
479srpc_cs_async_clients_reconnect_request(
void *_srpc);
480_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_clients_reconnect_request_result(
482_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_registration_enabled(
484_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_registration_enabled_result(
486_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_reconnect_request(
488_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_device_reconnect_request_result(
490_supla_int_t SRPC_ICACHE_FLASH
492_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_scene_pack_update(
494_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_scene_state_pack_update(
496_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_execute_action(
void *_srpc,
498_supla_int_t SRPC_ICACHE_FLASH
500_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_action_execution_result(
502_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_channel_value_with_auth(
504_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_get_channel_value_result(
506_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_register_pn_client_token(
508_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_register_pn_client_token_result(
510_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_channel_config_request(
512_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_config_update_or_result(
514_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_channel_config_request(
516_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_device_config_request(
518_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_device_config_update_or_result(
522#ifndef SRPC_EXCLUDE_EXTENDEDVALUE_TOOLS
524_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v3_emextended2extended(
528_supla_int_t SRPC_ICACHE_FLASH
532_supla_int_t srpc_evtool_extended2emextended_latest(
536#ifdef USE_DEPRECATED_EMEV_V2
538_supla_int_t SRPC_ICACHE_FLASH
539srpc_evtool_emev_v2to3(
const TElectricityMeter_ExtendedValue_V2 *v2,
542_supla_int_t SRPC_ICACHE_FLASH
544 TElectricityMeter_ExtendedValue_V2 *v2);
546#ifdef USE_DEPRECATED_EMEV_V1
547_supla_int_t SRPC_ICACHE_FLASH
548srpc_evtool_v1_emextended2extended(
const TElectricityMeter_ExtendedValue *em_ev,
550_supla_int_t SRPC_ICACHE_FLASH
552 TElectricityMeter_ExtendedValue *em_ev);
554_supla_int_t SRPC_ICACHE_FLASH
555srpc_evtool_emev_v1to2(
const TElectricityMeter_ExtendedValue *v1,
556 TElectricityMeter_ExtendedValue_V2 *v2);
557_supla_int_t SRPC_ICACHE_FLASH
558srpc_evtool_emev_v2to1(
const TElectricityMeter_ExtendedValue_V2 *v2,
559 TElectricityMeter_ExtendedValue *v1);
563_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v2_emextended2extended(
564 const TElectricityMeter_ExtendedValue_V2 *em_ev,
566_supla_int_t SRPC_ICACHE_FLASH
568 TElectricityMeter_ExtendedValue_V2 *em_ev);
570_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_extended2thermostatextended(
572_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_thermostatextended2extended(
577#ifndef SRPC_EXCLUDE_CLIENT
578_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_icextended2extended(
581_supla_int_t SRPC_ICACHE_FLASH
584_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_value_add(
586_supla_int_t SRPC_ICACHE_FLASH