10#if !defined(SUPLA_DEVICE) && !defined(ARDUINO)
15#include <esp8266-compat.h>
19#define SRPC_EXCLUDE_DEVICE
22#if defined(ESP8266) || defined(ESP32)
24#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
25#define SRPC_WITHOUT_OUT_QUEUE
26#define SRPC_WITHOUT_IN_QUEUE
27#define PACKET_INTEGRITY_BUFFER_DISABLED
30#define SRPC_EXCLUDE_CLIENT
31#define SRPC_ICACHE_FLASH ICACHE_FLASH_ATTR
38#define SRPC_ICACHE_FLASH
41#if defined(__AVR__) || defined(ARDUINO) || defined(SUPLA_DEVICE)
42#define SRPC_EXCLUDE_CLIENT
43#define SRPC_WITHOUT_OUT_QUEUE
44#define SRPC_WITHOUT_IN_QUEUE
45#define PACKET_INTEGRITY_BUFFER_DISABLED
52#if SUPLA_SRPC_PACKET_LOG_ENABLED && !defined(SUPLA_DISABLE_LOGS) && \
53 (defined(SUPLA_DEVICE) || defined(ESP8266) || defined(ESP32) || \
54 defined(__AVR__) || defined(ARDUINO_ARCH_ESP8266) || \
55 defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_AVR))
56#define SRPC_WITH_PACKET_LOG_HOOKS
59typedef _supla_int_t (*_func_srpc_DataRW)(
void *buf, _supla_int_t count,
61typedef void (*_func_srpc_event_OnRemoteCallReceived)(
62 void *_srpc,
unsigned _supla_int_t rr_id,
unsigned _supla_int_t call_id,
63 void *user_params,
unsigned char proto_version);
64typedef void (*_func_srpc_event_BeforeCall)(
void *_srpc,
65 unsigned _supla_int_t call_id,
67#ifdef SRPC_WITH_PACKET_LOG_HOOKS
68typedef void (*_func_srpc_event_OnPacketSent)(
70 unsigned _supla_int_t call_id,
72 unsigned _supla_int_t data_size,
74typedef void (*_func_srpc_event_OnPacketReceived)(
76 unsigned _supla_int_t call_id,
78 unsigned _supla_int_t data_size,
81typedef void (*_func_srpc_event_OnVersionError)(
void *_srpc,
82 unsigned char remote_version,
84typedef void (*_func_srpc_event_OnMinVersionRequired)(
85 void *_srpc,
unsigned _supla_int_t call_id,
unsigned char min_version,
89 SRPC_ITERATE_REASON_NONE = 0,
90 SRPC_ITERATE_REASON_SOCKET_CLOSED,
91 SRPC_ITERATE_REASON_INPUT_BUFFER_ERROR,
92 SRPC_ITERATE_REASON_INPUT_BUFFER_OVERFLOW,
93 SRPC_ITERATE_REASON_PROTOCOL_ERROR,
94 SRPC_ITERATE_REASON_VERSION_ERROR,
95 SRPC_ITERATE_REASON_INPUT_QUEUE_ERROR,
96 SRPC_ITERATE_REASON_OUTPUT_BUFFER_ERROR
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;
111#if !defined(SUPLA_DEVICE) && !defined(ARDUINO)
225 unsigned _supla_int_t call_id;
226 unsigned _supla_int_t rr_id;
231void SRPC_ICACHE_FLASH srpc_params_init(
TsrpcParams *params);
233void *SRPC_ICACHE_FLASH srpc_init(
TsrpcParams *params);
234void SRPC_ICACHE_FLASH srpc_free(
void *_srpc);
236void SRPC_ICACHE_FLASH srpc_lock(
void *_srpc);
237void SRPC_ICACHE_FLASH srpc_unlock(
void *_srpc);
239char SRPC_ICACHE_FLASH srpc_input_dataexists(
void *_srpc);
240char SRPC_ICACHE_FLASH srpc_output_dataexists(
void *_srpc);
241unsigned char SRPC_ICACHE_FLASH srpc_out_queue_item_count(
void *srpc);
243char SRPC_ICACHE_FLASH srpc_iterate(
void *_srpc);
244char SRPC_ICACHE_FLASH srpc_iterate_device(
void *_srpc);
245TsrpcIterateReason SRPC_ICACHE_FLASH
246srpc_get_last_iterate_reason(
void *_srpc);
249 unsigned _supla_int_t rr_id);
253unsigned char SRPC_ICACHE_FLASH srpc_get_proto_version(
void *_srpc);
254void SRPC_ICACHE_FLASH srpc_set_proto_version(
void *_srpc,
255 unsigned char version);
257unsigned char SRPC_ICACHE_FLASH
258srpc_call_min_version_required(
void *_srpc,
unsigned _supla_int_t call_id);
259unsigned char SRPC_ICACHE_FLASH
260srpc_call_allowed(
void *_srpc,
unsigned _supla_int_t call_id);
263_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_getversion(
void *_srpc);
264_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_getversion_result(
265 void *_srpc,
char SoftVer[SUPLA_SOFTVER_MAXSIZE]);
266_supla_int_t SRPC_ICACHE_FLASH
267srpc_sdc_async_versionerror(
void *_srpc,
unsigned char remote_version);
268_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_ping_server(
void *_srpc);
269_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_ping_server_result(
void *_srpc);
270_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_set_activity_timeout(
272_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_set_activity_timeout_result(
275_supla_int_t SRPC_ICACHE_FLASH
276srpc_dcs_async_get_registration_enabled(
void *_srpc);
277_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_get_registration_enabled_result(
279_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_get_user_localtime(
void *_srpc);
280_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_get_user_localtime_result(
282_supla_int_t SRPC_ICACHE_FLASH srpc_csd_async_get_channel_state(
284_supla_int_t SRPC_ICACHE_FLASH
287_supla_int_t SRPC_ICACHE_FLASH
288srpc_dcs_async_set_channel_caption(
void *_srpc,
TDCS_SetCaption *caption);
289_supla_int_t SRPC_ICACHE_FLASH srpc_scd_async_set_channel_caption_result(
292#ifndef SRPC_EXCLUDE_DEVICE
294_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice(
296_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_b(
298_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_c(
300_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_d(
302_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_e(
304_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_f(
306_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_g(
308_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_registerdevice_result(
310_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_registerdevice_result_b(
313_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_in_chunks(
316_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_in_chunks_g(
320_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_value_changed(
321 void *_srpc,
unsigned char channel_number,
char *value);
322_supla_int_t SRPC_ICACHE_FLASH
323srpc_ds_async_channel_value_changed_b(
void *_srpc,
unsigned char channel_number,
324 char *value,
unsigned char offline);
325_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_value_changed_c(
326 void *_srpc,
unsigned char channel_number,
char *value,
327 unsigned char offline,
unsigned _supla_int_t validity_time_sec);
328_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_extendedvalue_changed(
329 void *_srpc,
unsigned char channel_number,
331_supla_int_t SRPC_ICACHE_FLASH
333_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channelgroup_value(
335_supla_int_t SRPC_ICACHE_FLASH
336srpc_ds_async_set_channel_result(
void *_srpc,
unsigned char ChannelNumber,
337 _supla_int_t SenderID,
char Success);
338_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_firmware_update_url(
340_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_firmware_update_url_result(
342_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_device_sync_done(
void *_srpc);
343_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_device_calcfg_request(
345_supla_int_t SRPC_ICACHE_FLASH
347_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_get_channel_functions(
void *_srpc);
348_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_channel_functions_result(
350_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_get_channel_config_request(
352_supla_int_t SRPC_ICACHE_FLASH
354_supla_int_t SRPC_ICACHE_FLASH
356_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_register_push_notification(
358_supla_int_t SRPC_ICACHE_FLASH
360_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channel_config_request(
362_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_channel_config_result(
364_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_channel_config_request(
366_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channel_config_result(
368_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_channel_config_finished(
370_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_device_config_request(
372_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_device_config_result(
374_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_device_config_request(
376_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_device_config_result(
378_supla_int_t SRPC_ICACHE_FLASH
382#ifndef SRPC_EXCLUDE_CLIENT
384_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient(
386_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_b(
388_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_c(
390_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_d(
392_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result(
394_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_b(
397_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_c(
400_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_d(
403_supla_int_t SRPC_ICACHE_FLASH
405_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_locationpack_update(
407_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update(
409_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_b(
411_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_c(
413_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_d(
415_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_e(
417_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_value_update(
419_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_value_update_b(
421_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_pack_update(
423_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_pack_update_b(
425_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_relation_pack_update(
427 *channelgroup_relation_pack);
428_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_relation_pack_update(
430_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelvalue_pack_update(
432_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelvalue_pack_update_b(
434_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelextendedvalue_pack_update(
437_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_state_pack_update(
439_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_next(
void *_srpc);
440_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_event(
void *_srpc,
442_supla_int_t SRPC_ICACHE_FLASH
444_supla_int_t SRPC_ICACHE_FLASH
446_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_channel_value_b(
448_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_oauth_token_request(
void *_srpc);
449_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_oauth_token_request_result(
451_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_superuser_authorization_request(
453_supla_int_t SRPC_ICACHE_FLASH
454srpc_cs_async_get_superuser_authorization_result(
void *_srpc);
455_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_superuser_authorization_result(
457_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_calcfg_request(
459_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_calcfg_request_b(
461_supla_int_t SRPC_ICACHE_FLASH
463_supla_int_t SRPC_ICACHE_FLASH
464srpc_cs_async_get_channel_basic_cfg(
void *_srpc, _supla_int_t ChannelID);
465_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_basic_cfg_result(
467_supla_int_t SRPC_ICACHE_FLASH
469_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_channel_function_result(
471_supla_int_t SRPC_ICACHE_FLASH
472srpc_cs_async_set_channel_group_caption(
void *_srpc,
TDCS_SetCaption *caption);
473_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_channel_group_caption_result(
475_supla_int_t SRPC_ICACHE_FLASH
476srpc_cs_async_set_location_caption(
void *_srpc,
TDCS_SetCaption *caption);
477_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_location_caption_result(
479_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_scene_caption(
481_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_scene_caption_result(
483_supla_int_t SRPC_ICACHE_FLASH
484srpc_cs_async_clients_reconnect_request(
void *_srpc);
485_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_clients_reconnect_request_result(
487_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_registration_enabled(
489_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_registration_enabled_result(
491_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_reconnect_request(
493_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_device_reconnect_request_result(
495_supla_int_t SRPC_ICACHE_FLASH
497_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_scene_pack_update(
499_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_scene_state_pack_update(
501_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_execute_action(
void *_srpc,
503_supla_int_t SRPC_ICACHE_FLASH
505_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_action_execution_result(
507_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_channel_value_with_auth(
509_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_get_channel_value_result(
511_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_register_pn_client_token(
513_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_register_pn_client_token_result(
515_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_channel_config_request(
517_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_config_update_or_result(
519_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_channel_config_request(
521_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_device_config_request(
523_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_device_config_update_or_result(
527#ifndef SRPC_EXCLUDE_EXTENDEDVALUE_TOOLS
529_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v3_emextended2extended(
533_supla_int_t SRPC_ICACHE_FLASH
537_supla_int_t srpc_evtool_extended2emextended_latest(
541#ifdef USE_DEPRECATED_EMEV_V2
543_supla_int_t SRPC_ICACHE_FLASH
544srpc_evtool_emev_v2to3(
const TElectricityMeter_ExtendedValue_V2 *v2,
547_supla_int_t SRPC_ICACHE_FLASH
549 TElectricityMeter_ExtendedValue_V2 *v2);
551#ifdef USE_DEPRECATED_EMEV_V1
552_supla_int_t SRPC_ICACHE_FLASH
553srpc_evtool_v1_emextended2extended(
const TElectricityMeter_ExtendedValue *em_ev,
555_supla_int_t SRPC_ICACHE_FLASH
557 TElectricityMeter_ExtendedValue *em_ev);
559_supla_int_t SRPC_ICACHE_FLASH
560srpc_evtool_emev_v1to2(
const TElectricityMeter_ExtendedValue *v1,
561 TElectricityMeter_ExtendedValue_V2 *v2);
562_supla_int_t SRPC_ICACHE_FLASH
563srpc_evtool_emev_v2to1(
const TElectricityMeter_ExtendedValue_V2 *v2,
564 TElectricityMeter_ExtendedValue *v1);
568_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v2_emextended2extended(
569 const TElectricityMeter_ExtendedValue_V2 *em_ev,
571_supla_int_t SRPC_ICACHE_FLASH
573 TElectricityMeter_ExtendedValue_V2 *em_ev);
575_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_extended2thermostatextended(
577_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_thermostatextended2extended(
582#ifndef SRPC_EXCLUDE_CLIENT
583_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_icextended2extended(
586_supla_int_t SRPC_ICACHE_FLASH
589_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_value_add(
591_supla_int_t SRPC_ICACHE_FLASH