13#include <esp8266-compat.h>
17#define SRPC_EXCLUDE_DEVICE
20#if defined(ESP8266) || defined(ESP32)
22#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
23#define SRPC_WITHOUT_OUT_QUEUE
24#define SRPC_WITHOUT_IN_QUEUE
25#define PACKET_INTEGRITY_BUFFER_DISABLED
28#define SRPC_EXCLUDE_CLIENT
29#define SRPC_ICACHE_FLASH ICACHE_FLASH_ATTR
36#define SRPC_ICACHE_FLASH
39#if defined(__AVR__) || defined(ARDUINO) || defined(SUPLA_DEVICE)
40#define SRPC_EXCLUDE_CLIENT
41#define SRPC_WITHOUT_OUT_QUEUE
42#define SRPC_WITHOUT_IN_QUEUE
43#define PACKET_INTEGRITY_BUFFER_DISABLED
50#if defined(SUPLA_DEVICE) || defined(ESP8266) || defined(ESP32) || \
51 defined(__AVR__) || defined(ARDUINO_ARCH_ESP8266) || \
52 defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_AVR)
53#define SRPC_WITH_PACKET_LOG_HOOKS
56typedef _supla_int_t (*_func_srpc_DataRW)(
void *buf, _supla_int_t count,
58typedef void (*_func_srpc_event_OnRemoteCallReceived)(
59 void *_srpc,
unsigned _supla_int_t rr_id,
unsigned _supla_int_t call_id,
60 void *user_params,
unsigned char proto_version);
61typedef void (*_func_srpc_event_BeforeCall)(
void *_srpc,
62 unsigned _supla_int_t call_id,
64#ifdef SRPC_WITH_PACKET_LOG_HOOKS
65typedef void (*_func_srpc_event_OnPacketSent)(
67 unsigned _supla_int_t call_id,
69 unsigned _supla_int_t data_size,
71typedef void (*_func_srpc_event_OnPacketReceived)(
73 unsigned _supla_int_t call_id,
75 unsigned _supla_int_t data_size,
78typedef void (*_func_srpc_event_OnVersionError)(
void *_srpc,
79 unsigned char remote_version,
81typedef void (*_func_srpc_event_OnMinVersionRequired)(
82 void *_srpc,
unsigned _supla_int_t call_id,
unsigned char min_version,
86 _func_srpc_DataRW data_read;
87 _func_srpc_DataRW data_write;
88 _func_srpc_event_OnRemoteCallReceived on_remote_call_received;
89 _func_srpc_event_OnVersionError on_version_error;
90 _func_srpc_event_BeforeCall before_async_call;
91#ifdef SRPC_WITH_PACKET_LOG_HOOKS
92 _func_srpc_event_OnPacketSent on_packet_sent;
93 _func_srpc_event_OnPacketReceived on_packet_received;
95 _func_srpc_event_OnMinVersionRequired on_min_version_required;
209 unsigned _supla_int_t call_id;
210 unsigned _supla_int_t rr_id;
215void SRPC_ICACHE_FLASH srpc_params_init(
TsrpcParams *params);
217void *SRPC_ICACHE_FLASH srpc_init(
TsrpcParams *params);
218void SRPC_ICACHE_FLASH srpc_free(
void *_srpc);
220void SRPC_ICACHE_FLASH srpc_lock(
void *_srpc);
221void SRPC_ICACHE_FLASH srpc_unlock(
void *_srpc);
223char SRPC_ICACHE_FLASH srpc_input_dataexists(
void *_srpc);
224char SRPC_ICACHE_FLASH srpc_output_dataexists(
void *_srpc);
225unsigned char SRPC_ICACHE_FLASH srpc_out_queue_item_count(
void *srpc);
227char SRPC_ICACHE_FLASH srpc_iterate(
void *_srpc);
228char SRPC_ICACHE_FLASH srpc_iterate_device(
void *_srpc);
231 unsigned _supla_int_t rr_id);
235unsigned char SRPC_ICACHE_FLASH srpc_get_proto_version(
void *_srpc);
236void SRPC_ICACHE_FLASH srpc_set_proto_version(
void *_srpc,
237 unsigned char version);
239unsigned char SRPC_ICACHE_FLASH
240srpc_call_min_version_required(
void *_srpc,
unsigned _supla_int_t call_id);
241unsigned char SRPC_ICACHE_FLASH
242srpc_call_allowed(
void *_srpc,
unsigned _supla_int_t call_id);
245_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_getversion(
void *_srpc);
246_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_getversion_result(
247 void *_srpc,
char SoftVer[SUPLA_SOFTVER_MAXSIZE]);
248_supla_int_t SRPC_ICACHE_FLASH
249srpc_sdc_async_versionerror(
void *_srpc,
unsigned char remote_version);
250_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_ping_server(
void *_srpc);
251_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_ping_server_result(
void *_srpc);
252_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_set_activity_timeout(
254_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_set_activity_timeout_result(
257_supla_int_t SRPC_ICACHE_FLASH
258srpc_dcs_async_get_registration_enabled(
void *_srpc);
259_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_get_registration_enabled_result(
261_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_get_user_localtime(
void *_srpc);
262_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_get_user_localtime_result(
264_supla_int_t SRPC_ICACHE_FLASH srpc_csd_async_get_channel_state(
266_supla_int_t SRPC_ICACHE_FLASH
269_supla_int_t SRPC_ICACHE_FLASH
270srpc_dcs_async_set_channel_caption(
void *_srpc,
TDCS_SetCaption *caption);
271_supla_int_t SRPC_ICACHE_FLASH srpc_scd_async_set_channel_caption_result(
274#ifndef SRPC_EXCLUDE_DEVICE
276_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice(
278_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_b(
280_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_c(
282_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_d(
284_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_e(
286_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_f(
288_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_g(
290_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_registerdevice_result(
292_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_registerdevice_result_b(
295_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_in_chunks(
298_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_in_chunks_g(
302_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_value_changed(
303 void *_srpc,
unsigned char channel_number,
char *value);
304_supla_int_t SRPC_ICACHE_FLASH
305srpc_ds_async_channel_value_changed_b(
void *_srpc,
unsigned char channel_number,
306 char *value,
unsigned char offline);
307_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_value_changed_c(
308 void *_srpc,
unsigned char channel_number,
char *value,
309 unsigned char offline,
unsigned _supla_int_t validity_time_sec);
310_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_extendedvalue_changed(
311 void *_srpc,
unsigned char channel_number,
313_supla_int_t SRPC_ICACHE_FLASH
315_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channelgroup_value(
317_supla_int_t SRPC_ICACHE_FLASH
318srpc_ds_async_set_channel_result(
void *_srpc,
unsigned char ChannelNumber,
319 _supla_int_t SenderID,
char Success);
320_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_firmware_update_url(
322_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_firmware_update_url_result(
324_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_device_sync_done(
void *_srpc);
325_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_device_calcfg_request(
327_supla_int_t SRPC_ICACHE_FLASH
329_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_get_channel_functions(
void *_srpc);
330_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_channel_functions_result(
332_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_get_channel_config_request(
334_supla_int_t SRPC_ICACHE_FLASH
336_supla_int_t SRPC_ICACHE_FLASH
338_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_register_push_notification(
340_supla_int_t SRPC_ICACHE_FLASH
342_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channel_config_request(
344_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_channel_config_result(
346_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_channel_config_request(
348_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channel_config_result(
350_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_channel_config_finished(
352_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_device_config_request(
354_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_device_config_result(
356_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_device_config_request(
358_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_device_config_result(
360_supla_int_t SRPC_ICACHE_FLASH
364#ifndef SRPC_EXCLUDE_CLIENT
366_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient(
368_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_b(
370_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_c(
372_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_d(
374_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result(
376_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_b(
379_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_c(
382_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_d(
385_supla_int_t SRPC_ICACHE_FLASH
387_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_locationpack_update(
389_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update(
391_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_b(
393_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_c(
395_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_d(
397_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_e(
399_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_value_update(
401_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_value_update_b(
403_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_pack_update(
405_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_pack_update_b(
407_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_relation_pack_update(
409 *channelgroup_relation_pack);
410_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_relation_pack_update(
412_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelvalue_pack_update(
414_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelvalue_pack_update_b(
416_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelextendedvalue_pack_update(
419_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_state_pack_update(
421_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_next(
void *_srpc);
422_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_event(
void *_srpc,
424_supla_int_t SRPC_ICACHE_FLASH
426_supla_int_t SRPC_ICACHE_FLASH
428_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_channel_value_b(
430_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_oauth_token_request(
void *_srpc);
431_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_oauth_token_request_result(
433_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_superuser_authorization_request(
435_supla_int_t SRPC_ICACHE_FLASH
436srpc_cs_async_get_superuser_authorization_result(
void *_srpc);
437_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_superuser_authorization_result(
439_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_calcfg_request(
441_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_calcfg_request_b(
443_supla_int_t SRPC_ICACHE_FLASH
445_supla_int_t SRPC_ICACHE_FLASH
446srpc_cs_async_get_channel_basic_cfg(
void *_srpc, _supla_int_t ChannelID);
447_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_basic_cfg_result(
449_supla_int_t SRPC_ICACHE_FLASH
451_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_channel_function_result(
453_supla_int_t SRPC_ICACHE_FLASH
454srpc_cs_async_set_channel_group_caption(
void *_srpc,
TDCS_SetCaption *caption);
455_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_channel_group_caption_result(
457_supla_int_t SRPC_ICACHE_FLASH
458srpc_cs_async_set_location_caption(
void *_srpc,
TDCS_SetCaption *caption);
459_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_location_caption_result(
461_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_scene_caption(
463_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_scene_caption_result(
465_supla_int_t SRPC_ICACHE_FLASH
466srpc_cs_async_clients_reconnect_request(
void *_srpc);
467_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_clients_reconnect_request_result(
469_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_registration_enabled(
471_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_registration_enabled_result(
473_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_reconnect_request(
475_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_device_reconnect_request_result(
477_supla_int_t SRPC_ICACHE_FLASH
479_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_scene_pack_update(
481_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_scene_state_pack_update(
483_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_execute_action(
void *_srpc,
485_supla_int_t SRPC_ICACHE_FLASH
487_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_action_execution_result(
489_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_channel_value_with_auth(
491_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_get_channel_value_result(
493_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_register_pn_client_token(
495_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_register_pn_client_token_result(
497_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_channel_config_request(
499_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_config_update_or_result(
501_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_channel_config_request(
503_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_device_config_request(
505_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_device_config_update_or_result(
509#ifndef SRPC_EXCLUDE_EXTENDEDVALUE_TOOLS
511_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v3_emextended2extended(
515_supla_int_t SRPC_ICACHE_FLASH
519_supla_int_t srpc_evtool_extended2emextended_latest(
523#ifdef USE_DEPRECATED_EMEV_V2
525_supla_int_t SRPC_ICACHE_FLASH
526srpc_evtool_emev_v2to3(
const TElectricityMeter_ExtendedValue_V2 *v2,
529_supla_int_t SRPC_ICACHE_FLASH
531 TElectricityMeter_ExtendedValue_V2 *v2);
533#ifdef USE_DEPRECATED_EMEV_V1
534_supla_int_t SRPC_ICACHE_FLASH
535srpc_evtool_v1_emextended2extended(
const TElectricityMeter_ExtendedValue *em_ev,
537_supla_int_t SRPC_ICACHE_FLASH
539 TElectricityMeter_ExtendedValue *em_ev);
541_supla_int_t SRPC_ICACHE_FLASH
542srpc_evtool_emev_v1to2(
const TElectricityMeter_ExtendedValue *v1,
543 TElectricityMeter_ExtendedValue_V2 *v2);
544_supla_int_t SRPC_ICACHE_FLASH
545srpc_evtool_emev_v2to1(
const TElectricityMeter_ExtendedValue_V2 *v2,
546 TElectricityMeter_ExtendedValue *v1);
550_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v2_emextended2extended(
551 const TElectricityMeter_ExtendedValue_V2 *em_ev,
553_supla_int_t SRPC_ICACHE_FLASH
555 TElectricityMeter_ExtendedValue_V2 *em_ev);
557_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_extended2thermostatextended(
559_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_thermostatextended2extended(
564#ifndef SRPC_EXCLUDE_CLIENT
565_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_icextended2extended(
568_supla_int_t SRPC_ICACHE_FLASH
571_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_value_add(
573_supla_int_t SRPC_ICACHE_FLASH