@@ -56,7 +56,7 @@ extern "C" {
56
56
// CS - client -> server
57
57
// SC - server -> client
58
58
59
- #define SUPLA_PROTO_VERSION 8
59
+ #define SUPLA_PROTO_VERSION 9
60
60
#define SUPLA_PROTO_VERSION_MIN 1
61
61
#define SUPLA_TAG_SIZE 5
62
62
#if defined(__AVR__ )
@@ -92,11 +92,12 @@ extern "C" {
92
92
#define SUPLA_OAUTH_SECRET_MAXSIZE 276 // ver. >= 7
93
93
#define SUPLA_OAUTH_USERNAME_MAXSIZE 65 // ver. >= 7
94
94
#define SUPLA_OAUTH_PASSWORD_MAXSIZE 65 // ver. >= 7
95
- #define SUPLA_CHANNELGROUP_PACK_MAXCOUNT 20 // ver. >= 8
96
- #define SUPLA_CHANNELGROUP_CAPTION_MAXSIZE 401 // ver. >= 8
95
+ #define SUPLA_CHANNELGROUP_PACK_MAXCOUNT 20 // ver. >= 9
96
+ #define SUPLA_CHANNELGROUP_CAPTION_MAXSIZE 401 // ver. >= 9
97
+ #define SUPLA_CHANNELVALUE_PACK_MAXCOUNT 20 // ver. >= 9
97
98
98
99
#ifndef SUPLA_CHANNELGROUP_RELATION_PACK_MAXCOUNT
99
- #define SUPLA_CHANNELGROUP_RELATION_PACK_MAXCOUNT 100 // ver. >= 8
100
+ #define SUPLA_CHANNELGROUP_RELATION_PACK_MAXCOUNT 100 // ver. >= 9
100
101
#endif /*SUPLA_CHANNELGROUP_RELATION_PACK_MAXCOUNT*/
101
102
102
103
#define SUPLA_DCS_CALL_GETVERSION 10
@@ -113,6 +114,7 @@ extern "C" {
113
114
#define SUPLA_CS_CALL_REGISTER_CLIENT_B 85 // ver. >= 6
114
115
#define SUPLA_CS_CALL_REGISTER_CLIENT_C 86 // ver. >= 7
115
116
#define SUPLA_SC_CALL_REGISTER_CLIENT_RESULT 90
117
+ #define SUPLA_SC_CALL_REGISTER_CLIENT_RESULT_B 92 // ver. >= 9
116
118
#define SUPLA_DS_CALL_DEVICE_CHANNEL_VALUE_CHANGED 100
117
119
#define SUPLA_SD_CALL_CHANNEL_SET_VALUE 110
118
120
#define SUPLA_DS_CALL_CHANNEL_SET_VALUE_RESULT 120
@@ -124,17 +126,21 @@ extern "C" {
124
126
#define SUPLA_CS_CALL_GET_NEXT 180
125
127
#define SUPLA_SC_CALL_EVENT 190
126
128
#define SUPLA_CS_CALL_CHANNEL_SET_VALUE 200
127
- #define SUPLA_CS_CALL_CHANNEL_SET_VALUE_B 205 // ver. >= 3
128
- #define SUPLA_DCS_CALL_SET_ACTIVITY_TIMEOUT 210 // ver. >= 2
129
- #define SUPLA_SDC_CALL_SET_ACTIVITY_TIMEOUT_RESULT 220 // ver. >= 2
130
- #define SUPLA_DS_CALL_GET_FIRMWARE_UPDATE_URL 300 // ver. >= 5
131
- #define SUPLA_SD_CALL_GET_FIRMWARE_UPDATE_URL_RESULT 310 // ver. >= 5
132
- #define SUPLA_DCS_CALL_GET_REGISTRATION_ENABLED 320 // ver. >= 7
133
- #define SUPLA_SDC_CALL_GET_REGISTRATION_ENABLED_RESULT 330 // ver. >= 7
134
- #define SUPLA_CS_CALL_GET_OAUTH_PARAMETERS 340 // ver. >= 7
135
- #define SUPLA_SC_CALL_GET_OAUTH_PARAMETERS_RESULT 350 // ver. >= 7
136
- #define SUPLA_SC_CALL_CHANNELPACK_UPDATE_B 360 // ver. >= 8
137
- #define SUPLA_SC_CALL_CHANNEL_UPDATE_B 370 // ver. >= 8
129
+ #define SUPLA_CS_CALL_CHANNEL_SET_VALUE_B 205 // ver. >= 3
130
+ #define SUPLA_DCS_CALL_SET_ACTIVITY_TIMEOUT 210 // ver. >= 2
131
+ #define SUPLA_SDC_CALL_SET_ACTIVITY_TIMEOUT_RESULT 220 // ver. >= 2
132
+ #define SUPLA_DS_CALL_GET_FIRMWARE_UPDATE_URL 300 // ver. >= 5
133
+ #define SUPLA_SD_CALL_GET_FIRMWARE_UPDATE_URL_RESULT 310 // ver. >= 5
134
+ #define SUPLA_DCS_CALL_GET_REGISTRATION_ENABLED 320 // ver. >= 7
135
+ #define SUPLA_SDC_CALL_GET_REGISTRATION_ENABLED_RESULT 330 // ver. >= 7
136
+ #define SUPLA_CS_CALL_GET_OAUTH_PARAMETERS 340 // ver. >= 7
137
+ #define SUPLA_SC_CALL_GET_OAUTH_PARAMETERS_RESULT 350 // ver. >= 7
138
+ #define SUPLA_SC_CALL_CHANNELPACK_UPDATE_B 360 // ver. >= 8
139
+ #define SUPLA_SC_CALL_CHANNEL_UPDATE_B 370 // ver. >= 8
140
+ #define SUPLA_SC_CALL_CHANNELGROUP_PACK_UPDATE 380 // ver. >= 9
141
+ #define SUPLA_SC_CALL_CHANNELGROUP_RELATION_PACK_UPDATE 390 // ver. >= 9
142
+ #define SUPLA_SC_CALL_CHANNELVALUE_PACK_UPDATE 400 // ver. >= 9
143
+ #define SUPLA_CS_CALL_SET_VALUE 410 // ver. >= 9
138
144
139
145
#define SUPLA_RESULT_CALL_NOT_ALLOWED -5
140
146
#define SUPLA_RESULT_DATA_TOO_LARGE -4
@@ -274,6 +280,9 @@ extern "C" {
274
280
#define SUPLA_PLATFORM_UNKNOWN 0
275
281
#define SUPLA_PLATFORM_ESP8266 1
276
282
283
+ #define SUPLA_NEW_VALUE_TARGET_CHANNEL 0
284
+ #define SUPLA_NEW_VALUE_TARGET_GROUP 1
285
+
277
286
#pragma pack(push, 1)
278
287
279
288
typedef struct {
@@ -339,7 +348,7 @@ typedef struct {
339
348
_supla_int_t count ;
340
349
_supla_int_t total_left ;
341
350
TSC_SuplaLocation
342
- locations [SUPLA_LOCATIONPACK_MAXCOUNT ]; // Last variable in struct!
351
+ items [SUPLA_LOCATIONPACK_MAXCOUNT ]; // Last variable in struct!
343
352
} TSC_SuplaLocationPack ;
344
353
345
354
typedef struct {
@@ -389,7 +398,7 @@ typedef struct {
389
398
unsigned char channel_count ;
390
399
TDS_SuplaDeviceChannel_B
391
400
channels [SUPLA_CHANNELMAXCOUNT ]; // Last variable in struct!
392
- } TDS_SuplaRegisterDevice_B ; // ver. >= 2
401
+ } TDS_SuplaRegisterDevice_B ; // ver. >= 2
393
402
394
403
typedef struct {
395
404
// device -> server
@@ -406,7 +415,7 @@ typedef struct {
406
415
unsigned char channel_count ;
407
416
TDS_SuplaDeviceChannel_B
408
417
channels [SUPLA_CHANNELMAXCOUNT ]; // Last variable in struct!
409
- } TDS_SuplaRegisterDevice_C ; // ver. >= 6
418
+ } TDS_SuplaRegisterDevice_C ; // ver. >= 6
410
419
411
420
typedef struct {
412
421
// device -> server
@@ -423,8 +432,8 @@ typedef struct {
423
432
424
433
unsigned char channel_count ;
425
434
TDS_SuplaDeviceChannel_B
426
- channels [SUPLA_CHANNELMAXCOUNT ]; // Last variable in struct!
427
- } TDS_SuplaRegisterDevice_D ; // ver. >= 7
435
+ channels [SUPLA_CHANNELMAXCOUNT ]; // Last variable in struct!
436
+ } TDS_SuplaRegisterDevice_D ; // ver. >= 7
428
437
429
438
typedef struct {
430
439
// server -> device
@@ -468,6 +477,16 @@ typedef struct {
468
477
TSuplaChannelValue value ;
469
478
} TSC_SuplaChannelValue ;
470
479
480
+ typedef struct {
481
+ // server -> client
482
+
483
+ _supla_int_t count ;
484
+ _supla_int_t total_left ;
485
+
486
+ TSC_SuplaChannelValue
487
+ items [SUPLA_CHANNELVALUE_PACK_MAXCOUNT ]; // Last variable in struct!
488
+ } TSC_SuplaChannelValuePack ; // ver. >= 9
489
+
471
490
typedef struct {
472
491
// server -> client
473
492
char EOL ; // End Of List
@@ -490,7 +509,7 @@ typedef struct {
490
509
_supla_int_t count ;
491
510
_supla_int_t total_left ;
492
511
TSC_SuplaChannel
493
- channels [SUPLA_CHANNELPACK_MAXCOUNT ]; // Last variable in struct!
512
+ items [SUPLA_CHANNELPACK_MAXCOUNT ]; // Last variable in struct!
494
513
} TSC_SuplaChannelPack ;
495
514
496
515
typedef struct {
@@ -510,16 +529,16 @@ typedef struct {
510
529
unsigned _supla_int_t
511
530
CaptionSize ; // including the terminating null byte ('\0')
512
531
char Caption [SUPLA_CHANNEL_CAPTION_MAXSIZE ]; // Last variable in struct!
513
- } TSC_SuplaChannel_B ; // ver. >= 8
532
+ } TSC_SuplaChannel_B ; // ver. >= 8
514
533
515
534
typedef struct {
516
535
// server -> client
517
536
518
537
_supla_int_t count ;
519
538
_supla_int_t total_left ;
520
539
TSC_SuplaChannel_B
521
- channels [SUPLA_CHANNELPACK_MAXCOUNT ]; // Last variable in struct!
522
- } TSC_SuplaChannelPack_B ; // ver. >= 8
540
+ items [SUPLA_CHANNELPACK_MAXCOUNT ]; // Last variable in struct!
541
+ } TSC_SuplaChannelPack_B ; // ver. >= 8
523
542
524
543
typedef struct {
525
544
// server -> client
@@ -530,38 +549,37 @@ typedef struct {
530
549
_supla_int_t Func ;
531
550
_supla_int_t AltIcon ;
532
551
unsigned _supla_int_t Flags ;
533
- unsigned char ProtocolVersion ;
534
552
535
553
unsigned _supla_int_t
536
554
CaptionSize ; // including the terminating null byte ('\0')
537
555
char Caption [SUPLA_CHANNELGROUP_CAPTION_MAXSIZE ]; // Last variable in struct!
538
- } TSC_SuplaChannelGroup ; // ver. >= 8
556
+ } TSC_SuplaChannelGroup ; // ver. >= 9
539
557
540
558
typedef struct {
541
559
// server -> client
542
560
543
561
_supla_int_t count ;
544
562
_supla_int_t total_left ;
545
563
TSC_SuplaChannelGroup
546
- groups [SUPLA_CHANNELGROUP_PACK_MAXCOUNT ]; // Last variable in struct!
547
- } TSC_SuplaChannelGroupPack ; // ver. >= 8
564
+ items [SUPLA_CHANNELGROUP_PACK_MAXCOUNT ]; // Last variable in struct!
565
+ } TSC_SuplaChannelGroupPack ; // ver. >= 9
548
566
549
567
typedef struct {
550
568
// server -> client
551
569
char EOL ; // End Of List
552
570
553
- _supla_int_t ChennelGroupID ;
554
- _supla_int_t ChennelID ;
555
- } TSC_SuplaChannelGroupRelation ; // ver. >= 8
571
+ _supla_int_t ChannelGroupID ;
572
+ _supla_int_t ChannelID ;
573
+ } TSC_SuplaChannelGroupRelation ; // ver. >= 9
556
574
557
575
typedef struct {
558
576
// server -> client
559
577
560
578
_supla_int_t count ;
561
579
_supla_int_t total_left ;
562
- TSC_SuplaChannelGroup groups
580
+ TSC_SuplaChannelGroupRelation items
563
581
[SUPLA_CHANNELGROUP_RELATION_PACK_MAXCOUNT ]; // Last variable in struct!
564
- } TSC_SuplaChannelGroupRelationPack ; // ver. >= 8
582
+ } TSC_SuplaChannelGroupRelationPack ; // ver. >= 9
565
583
566
584
typedef struct {
567
585
// client -> server
@@ -612,6 +630,20 @@ typedef struct {
612
630
unsigned char version_min ;
613
631
} TSC_SuplaRegisterClientResult ;
614
632
633
+ typedef struct {
634
+ // server -> client
635
+
636
+ _supla_int_t result_code ;
637
+ _supla_int_t ClientID ;
638
+ _supla_int_t LocationCount ;
639
+ _supla_int_t ChannelCount ;
640
+ _supla_int_t ChannelGroupCount ;
641
+ _supla_int_t Flags ;
642
+ unsigned char activity_timeout ;
643
+ unsigned char version ;
644
+ unsigned char version_min ;
645
+ } TSC_SuplaRegisterClientResult_B ; // ver. >= 9
646
+
615
647
typedef struct {
616
648
// client -> server
617
649
unsigned char ChannelId ;
@@ -624,6 +656,13 @@ typedef struct {
624
656
char value [SUPLA_CHANNELVALUE_SIZE ];
625
657
} TCS_SuplaChannelNewValue_B ;
626
658
659
+ typedef struct {
660
+ // client -> server
661
+ _supla_int_t Id ;
662
+ char Target ; // SUPLA_NEW_VALUE_TARGET_
663
+ char value [SUPLA_CHANNELVALUE_SIZE ];
664
+ } TCS_SuplaNewValue ; // ver. >= 9
665
+
627
666
typedef struct {
628
667
// server -> client
629
668
_supla_int_t Event ;
@@ -687,6 +726,7 @@ char sproto_pop_in_sdp(void *spd_ptr, TSuplaDataPacket *sdp);
687
726
unsigned _supla_int_t sproto_pop_out_data (void * spd_ptr , char * buffer ,
688
727
unsigned _supla_int_t buffer_size );
689
728
char sproto_out_dataexists (void * spd_ptr );
729
+ char sproto_in_dataexists (void * spd_ptr );
690
730
691
731
unsigned char sproto_get_version (void * spd_ptr );
692
732
void sproto_set_version (void * spd_ptr , unsigned char version );
0 commit comments