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
64typedef _supla_int_t (*_func_srpc_DataRW)(
void *buf, _supla_int_t count,
66typedef void (*_func_srpc_event_OnRemoteCallReceived)(
67 void *_srpc,
unsigned _supla_int_t rr_id,
unsigned _supla_int_t call_id,
68 void *user_params,
unsigned char proto_version);
69typedef void (*_func_srpc_event_BeforeCall)(
void *_srpc,
70 unsigned _supla_int_t call_id,
72typedef void (*_func_srpc_event_OnVersionError)(
void *_srpc,
73 unsigned char remote_version,
75typedef void (*_func_srpc_event_OnMinVersionRequired)(
76 void *_srpc,
unsigned _supla_int_t call_id,
unsigned char min_version,
80 _func_srpc_DataRW data_read;
81 _func_srpc_DataRW data_write;
82 _func_srpc_event_OnRemoteCallReceived on_remote_call_received;
83 _func_srpc_event_OnVersionError on_version_error;
84 _func_srpc_event_BeforeCall before_async_call;
85 _func_srpc_event_OnMinVersionRequired on_min_version_required;
184 TSDS_SetChannelConfig *sds_set_channel_config_request;
199 unsigned _supla_int_t call_id;
200 unsigned _supla_int_t rr_id;
205void SRPC_ICACHE_FLASH srpc_params_init(
TsrpcParams *params);
207void *SRPC_ICACHE_FLASH srpc_init(
TsrpcParams *params);
208void SRPC_ICACHE_FLASH srpc_free(
void *_srpc);
210void SRPC_ICACHE_FLASH srpc_lock(
void *_srpc);
211void SRPC_ICACHE_FLASH srpc_unlock(
void *_srpc);
213char SRPC_ICACHE_FLASH srpc_input_dataexists(
void *_srpc);
214char SRPC_ICACHE_FLASH srpc_output_dataexists(
void *_srpc);
215unsigned char SRPC_ICACHE_FLASH srpc_out_queue_item_count(
void *srpc);
217char SRPC_ICACHE_FLASH srpc_iterate(
void *_srpc);
218char SRPC_ICACHE_FLASH srpc_iterate_device(
void *_srpc);
221 unsigned _supla_int_t rr_id);
225unsigned char SRPC_ICACHE_FLASH srpc_get_proto_version(
void *_srpc);
226void SRPC_ICACHE_FLASH srpc_set_proto_version(
void *_srpc,
227 unsigned char version);
229unsigned char SRPC_ICACHE_FLASH
230srpc_call_min_version_required(
void *_srpc,
unsigned _supla_int_t call_id);
231unsigned char SRPC_ICACHE_FLASH
232srpc_call_allowed(
void *_srpc,
unsigned _supla_int_t call_id);
235_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_getversion(
void *_srpc);
236_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_getversion_result(
237 void *_srpc,
char SoftVer[SUPLA_SOFTVER_MAXSIZE]);
238_supla_int_t SRPC_ICACHE_FLASH
239srpc_sdc_async_versionerror(
void *_srpc,
unsigned char remote_version);
240_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_ping_server(
void *_srpc);
241_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_ping_server_result(
void *_srpc);
242_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_set_activity_timeout(
244_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_set_activity_timeout_result(
247_supla_int_t SRPC_ICACHE_FLASH
248srpc_dcs_async_get_registration_enabled(
void *_srpc);
249_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_get_registration_enabled_result(
251_supla_int_t SRPC_ICACHE_FLASH srpc_dcs_async_get_user_localtime(
void *_srpc);
252_supla_int_t SRPC_ICACHE_FLASH srpc_sdc_async_get_user_localtime_result(
254_supla_int_t SRPC_ICACHE_FLASH srpc_csd_async_get_channel_state(
256_supla_int_t SRPC_ICACHE_FLASH
259_supla_int_t SRPC_ICACHE_FLASH
260srpc_dcs_async_set_channel_caption(
void *_srpc,
TDCS_SetCaption *caption);
261_supla_int_t SRPC_ICACHE_FLASH srpc_scd_async_set_channel_caption_result(
264#ifndef SRPC_EXCLUDE_DEVICE
266_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice(
268_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_b(
270_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_c(
272_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_d(
274_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_e(
276_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_f(
278_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_g(
280_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_registerdevice_result(
282_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_registerdevice_result_b(
285_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_in_chunks(
288_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_registerdevice_in_chunks_g(
292_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_value_changed(
293 void *_srpc,
unsigned char channel_number,
char *value);
294_supla_int_t SRPC_ICACHE_FLASH
295srpc_ds_async_channel_value_changed_b(
void *_srpc,
unsigned char channel_number,
296 char *value,
unsigned char offline);
297_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_value_changed_c(
298 void *_srpc,
unsigned char channel_number,
char *value,
299 unsigned char offline,
unsigned _supla_int_t validity_time_sec);
300_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_channel_extendedvalue_changed(
301 void *_srpc,
unsigned char channel_number,
303_supla_int_t SRPC_ICACHE_FLASH
305_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channelgroup_value(
307_supla_int_t SRPC_ICACHE_FLASH
308srpc_ds_async_set_channel_result(
void *_srpc,
unsigned char ChannelNumber,
309 _supla_int_t SenderID,
char Success);
310_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_firmware_update_url(
312_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_firmware_update_url_result(
314_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_device_calcfg_request(
316_supla_int_t SRPC_ICACHE_FLASH
318_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_get_channel_functions(
void *_srpc);
319_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_get_channel_functions_result(
321_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_get_channel_config_request(
323_supla_int_t SRPC_ICACHE_FLASH
325_supla_int_t SRPC_ICACHE_FLASH
327_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_register_push_notification(
329_supla_int_t SRPC_ICACHE_FLASH
331_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channel_config_request(
332 void *_srpc, TSDS_SetChannelConfig *config);
333_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_channel_config_result(
335_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_channel_config_request(
336 void *_srpc, TSDS_SetChannelConfig *config);
337_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_channel_config_result(
339_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_channel_config_finished(
341_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_device_config_request(
343_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_device_config_result(
345_supla_int_t SRPC_ICACHE_FLASH srpc_ds_async_set_device_config_request(
347_supla_int_t SRPC_ICACHE_FLASH srpc_sd_async_set_device_config_result(
349_supla_int_t SRPC_ICACHE_FLASH
353#ifndef SRPC_EXCLUDE_CLIENT
355_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient(
357_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_b(
359_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_c(
361_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_registerclient_d(
363_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result(
365_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_b(
368_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_c(
371_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_registerclient_result_d(
374_supla_int_t SRPC_ICACHE_FLASH
376_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_locationpack_update(
378_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update(
380_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_b(
382_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_c(
384_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_d(
386_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelpack_update_e(
388_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_value_update(
390_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_value_update_b(
392_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_pack_update(
394_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_pack_update_b(
396_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelgroup_relation_pack_update(
398 *channelgroup_relation_pack);
399_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_relation_pack_update(
401_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelvalue_pack_update(
403_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelvalue_pack_update_b(
405_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channelextendedvalue_pack_update(
408_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_state_pack_update(
410_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_next(
void *_srpc);
411_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_event(
void *_srpc,
413_supla_int_t SRPC_ICACHE_FLASH
415_supla_int_t SRPC_ICACHE_FLASH
417_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_channel_value_b(
419_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_oauth_token_request(
void *_srpc);
420_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_oauth_token_request_result(
422_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_superuser_authorization_request(
424_supla_int_t SRPC_ICACHE_FLASH
425srpc_cs_async_get_superuser_authorization_result(
void *_srpc);
426_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_superuser_authorization_result(
428_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_calcfg_request(
430_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_calcfg_request_b(
432_supla_int_t SRPC_ICACHE_FLASH
434_supla_int_t SRPC_ICACHE_FLASH
435srpc_cs_async_get_channel_basic_cfg(
void *_srpc, _supla_int_t ChannelID);
436_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_basic_cfg_result(
438_supla_int_t SRPC_ICACHE_FLASH
440_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_channel_function_result(
442_supla_int_t SRPC_ICACHE_FLASH
443srpc_cs_async_set_channel_group_caption(
void *_srpc,
TDCS_SetCaption *caption);
444_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_channel_group_caption_result(
446_supla_int_t SRPC_ICACHE_FLASH
447srpc_cs_async_set_location_caption(
void *_srpc,
TDCS_SetCaption *caption);
448_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_location_caption_result(
450_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_scene_caption(
452_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_scene_caption_result(
454_supla_int_t SRPC_ICACHE_FLASH
455srpc_cs_async_clients_reconnect_request(
void *_srpc);
456_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_clients_reconnect_request_result(
458_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_registration_enabled(
460_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_set_registration_enabled_result(
462_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_device_reconnect_request(
464_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_device_reconnect_request_result(
466_supla_int_t SRPC_ICACHE_FLASH
468_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_scene_pack_update(
470_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_scene_state_pack_update(
472_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_execute_action(
void *_srpc,
474_supla_int_t SRPC_ICACHE_FLASH
476_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_action_execution_result(
478_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_channel_value_with_auth(
480_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_get_channel_value_result(
482_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_register_pn_client_token(
484_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_register_pn_client_token_result(
486_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_channel_config_request(
488_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_channel_config_update_or_result(
490_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_set_channel_config_request(
492_supla_int_t SRPC_ICACHE_FLASH srpc_cs_async_get_device_config_request(
494_supla_int_t SRPC_ICACHE_FLASH srpc_sc_async_device_config_update_or_result(
498#ifndef SRPC_EXCLUDE_EXTENDEDVALUE_TOOLS
500#ifdef USE_DEPRECATED_EMEV_V2
502_supla_int_t SRPC_ICACHE_FLASH
503srpc_evtool_emev_v2to3(
const TElectricityMeter_ExtendedValue_V2 *v2,
506_supla_int_t SRPC_ICACHE_FLASH
508 TElectricityMeter_ExtendedValue_V2 *v2);
510_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v3_emextended2extended(
514_supla_int_t SRPC_ICACHE_FLASH
518_supla_int_t srpc_evtool_extended2emextended_latest(
522#ifdef USE_DEPRECATED_EMEV_V1
523_supla_int_t SRPC_ICACHE_FLASH
524srpc_evtool_v1_emextended2extended(
const TElectricityMeter_ExtendedValue *em_ev,
526_supla_int_t SRPC_ICACHE_FLASH
528 TElectricityMeter_ExtendedValue *em_ev);
530_supla_int_t SRPC_ICACHE_FLASH
531srpc_evtool_emev_v1to2(
const TElectricityMeter_ExtendedValue *v1,
532 TElectricityMeter_ExtendedValue_V2 *v2);
533_supla_int_t SRPC_ICACHE_FLASH
534srpc_evtool_emev_v2to1(
const TElectricityMeter_ExtendedValue_V2 *v2,
535 TElectricityMeter_ExtendedValue *v1);
539_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v2_emextended2extended(
540 const TElectricityMeter_ExtendedValue_V2 *em_ev,
542_supla_int_t SRPC_ICACHE_FLASH
544 TElectricityMeter_ExtendedValue_V2 *em_ev);
546_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_extended2thermostatextended(
548_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_thermostatextended2extended(
553#ifndef SRPC_EXCLUDE_CLIENT
554_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_v1_icextended2extended(
557_supla_int_t SRPC_ICACHE_FLASH
560_supla_int_t SRPC_ICACHE_FLASH srpc_evtool_value_add(
562_supla_int_t SRPC_ICACHE_FLASH