rm_control
Loading...
Searching...
No Matches
protocol.h
Go to the documentation of this file.
1/*******************************************************************************
2 * BSD 3-Clause License
3 *
4 * Copyright (c) 2021, Qiayuan Liao
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 *
10 * * Redistributions of source code must retain the above copyright notice, this
11 * list of conditions and the following disclaimer.
12 *
13 * * Redistributions in binary form must reproduce the above copyright notice,
14 * this list of conditions and the following disclaimer in the documentation
15 * and/or other materials provided with the distribution.
16 *
17 * * Neither the name of the copyright holder nor the names of its
18 * contributors may be used to endorse or promote products derived from
19 * this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE
25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 *******************************************************************************/
33
34//
35// Created by peter on 2021/5/17.
36//
37
38#pragma once
39#define __packed __attribute__((packed))
40
41#include <cstdint>
42
43namespace rm_referee
44{
45typedef enum
46{
50 DART_STATUS_CMD = 0x0004, // legacy, not listed in 2026 V1.2.0 command table
51 ICRA_ZONE_STATUS_CMD = 0x0005, // legacy, not listed in 2026 V1.2.0 command table
55 DART_INFO_CMD = 0x0105,
58 ROBOT_POS_CMD = 0x0203,
59 BUFF_CMD = 0x0204,
60 AERIAL_ROBOT_ENERGY_CMD = 0x0205, // legacy, not listed in 2026 V1.2.0 command table
71 CUSTOM_CONTROLLER_CMD = 0x0302, // controller
73 ROBOT_COMMAND_CMD = 0x0304, // legacy keyboard/mouse command (deleted in 2026 V1.2.0)
75 KEYBOARD_MOUSE_CMD = 0x0306, // 2026 table 1-42
77 MAP_SENTRY_CMD = 0x0307, // send sentry->aerial
78 CUSTOM_INFO_CMD = 0x0308, // robot -> custom controller text/info
82 CUSTOM_TO_ROBOT_CMD = CUSTOM_INFO_CMD, // legacy misnomer alias kept for compatibility
91
92typedef enum
93{
102 SENTRY_CMD = 0x0120,
103 RADAR_CMD = 0x0121,
104 BULLET_NUM_SHARE_CMD = 0x0200, // send robot->aerial
105 SENTRY_TO_RADAR_CMD = 0x0201, // send sentry->radar
106 RADAR_TO_SENTRY_CMD = 0x0202 // send radar->sentry
108
132
149
150typedef enum
151{
152 ADD = 1,
154 DELETE = 3
156
157typedef enum
158{
161 GREEN = 2,
164 PINK = 5,
165 CYAN = 6,
166 BLACK = 7,
167 WHITE = 8
169
181
182typedef enum
183{
186 MOVE_TO = 3
188
189typedef enum
190{
192 BOOST = 1,
194 ALL_OFF = 3
196
204
215
222
223/*****************************/
224
225typedef struct
226{
227 uint8_t sof;
228 uint16_t data_length;
229 uint8_t seq;
230 uint8_t crc_8;
231} __packed FrameHeader;
232
233typedef struct
234{
235 uint8_t game_type : 4;
236 uint8_t game_progress : 4;
239} __packed GameStatus;
240
241typedef struct
242{
243 uint8_t winner;
244} __packed GameResult;
245
246typedef struct
247{
252 uint16_t reserved;
255 uint16_t ally_base_hp;
256} __packed GameRobotHp;
257
258typedef struct
259{
260 uint8_t dart_belong;
262} __packed DartStatus;
263
264typedef struct
265{
266 uint8_t f_1_zone_status : 1;
268 uint8_t f_2_zone_status : 1;
270 uint8_t f_3_zone_status : 1;
272 uint8_t f_4_zone_status : 1;
274 uint8_t f_5_zone_status : 1;
276 uint8_t f_6_zone_status : 1;
282} __packed IcraBuffDebuffZoneStatus;
283
284typedef struct
285{
293 uint16_t be_hit_time : 9;
294 uint8_t be_hit_target : 3;
296 uint16_t reserved : 9;
297} __packed EventData;
298
299typedef struct
300{
301 uint8_t reserved;
305} __packed SupplyProjectileAction;
306
307typedef struct
308{
309 uint8_t level;
311 uint8_t count;
312} __packed RefereeWarning;
313
314typedef struct
315{
320 uint8_t reserved;
321} __packed DartInfo;
322
323typedef struct
324{
325 uint8_t robot_id;
326 uint8_t robot_level;
327 uint16_t remain_hp;
328 uint16_t max_hp;
335} __packed GameRobotStatus;
336
337typedef struct
338{
339 uint16_t reserved_1;
340 uint16_t reserved_2;
345} __packed PowerHeatData;
346
347typedef struct
348{
349 float x;
350 float y;
351 float yaw;
352} __packed GameRobotPos;
353
354typedef struct
355{
357 uint16_t cooling_buff;
360 uint16_t attack_buff;
362} __packed Buff;
363
364typedef struct
365{
366 uint8_t attack_time;
367} __packed AerialRobotEnergy;
368
369typedef struct
370{
371 uint8_t armor_id : 4;
372 uint8_t hurt_type : 4;
373} __packed RobotHurt;
374
375typedef struct
376{
377 uint8_t bullet_type;
378 uint8_t shooter_id;
379 uint8_t bullet_freq;
381} __packed ShootData;
382
383typedef struct
384{
389} __packed BulletAllowance;
390
391typedef struct
392{
393 uint32_t rfid_status;
395} __packed RfidStatus;
396
397typedef struct
398{
400 uint8_t reserved;
403} __packed DartClientCmd;
404
405/*********************** Interactive data between robots----0x0301 ********************/
406typedef struct
407{
408 uint16_t data_cmd_id;
409 uint16_t sender_id;
410 uint16_t receiver_id;
411} __packed InteractiveDataHeader;
412
414{
415 uint8_t graphic_id[3];
416 uint32_t operate_type : 3;
417 uint32_t graphic_type : 3;
418 uint32_t layer : 4;
419 uint32_t color : 4;
420 uint32_t start_angle : 9;
421 uint32_t end_angle : 9;
422 uint32_t width : 10;
423 uint32_t start_x : 11;
424 uint32_t start_y : 11;
425 uint32_t radius : 10;
426 uint32_t end_x : 11;
427 uint32_t end_y : 11;
428 bool operator==(const GraphConfig& config)
429 {
430 return (graphic_id[0] == (uint32_t)config.graphic_id[0] && graphic_id[1] == (uint32_t)config.graphic_id[1] &&
431 graphic_id[2] == (uint32_t)config.graphic_id[2] && operate_type == (uint32_t)config.operate_type &&
432 graphic_type == (uint32_t)config.graphic_type && layer == (uint32_t)config.layer &&
433 color == (uint32_t)config.color && start_angle == (uint32_t)config.start_angle &&
434 end_angle == (uint32_t)config.end_angle && width == (uint32_t)config.width &&
435 start_x == (uint32_t)config.start_x && start_y == (uint32_t)config.start_y &&
436 radius == (uint32_t)config.radius && end_x == (uint32_t)config.end_x && end_y == (uint32_t)config.end_y);
437 }
439 {
440 graphic_id[0] = (uint32_t)config.graphic_id[0];
441 graphic_id[1] = (uint32_t)config.graphic_id[1];
442 graphic_id[2] = (uint32_t)config.graphic_id[2];
443 operate_type = (uint32_t)config.operate_type;
444 graphic_type = (uint32_t)config.graphic_type;
445 layer = (uint32_t)config.layer;
446 color = (uint32_t)config.color;
447 start_angle = (uint32_t)config.start_angle;
448 end_angle = (uint32_t)config.end_angle;
449 width = (uint32_t)config.width;
450 start_x = (uint32_t)config.start_x;
451 start_y = (uint32_t)config.start_y;
452 radius = (uint32_t)config.radius;
453 end_x = (uint32_t)config.end_x;
454 end_y = (uint32_t)config.end_y;
455 return *this;
456 }
458
459typedef struct
460{
461 float hero_x;
462 float hero_y;
471} __packed RobotsPositionData;
472
473typedef union
474{
476 struct
477 {
490 uint16_t reserved : 4;
491 };
492} __packed RadarMarkData;
493
494typedef struct
495{
496 InteractiveDataHeader header;
498 uint8_t content[30];
499} __packed CharacterData;
500
501typedef struct
502{
503 InteractiveDataHeader header;
504 GraphConfig config;
505} __packed SingleGraphData;
506
507typedef struct
508{
509 InteractiveDataHeader header;
510 GraphConfig config[2];
511} __packed DoubleGraphData;
512
513typedef struct
514{
515 InteractiveDataHeader header;
516 GraphConfig config[5];
517} __packed FiveGraphData;
518
519typedef struct
520{
521 InteractiveDataHeader header;
522 GraphConfig config[7];
523} __packed SevenGraphData;
524
525typedef struct
526{
527 InteractiveDataHeader header_data;
528 uint8_t data;
529} __packed InteractiveData;
530
531typedef union
532{
533 uint32_t sentry_cmd;
534 struct
535 {
536 uint32_t confirm_respawn : 1;
541 uint32_t posture_cmd : 2;
543 uint32_t reserved : 8;
544 };
545} __packed SentryCmd;
546
547typedef struct
548{
549 InteractiveDataHeader header;
550 SentryCmd sentry_cmd;
551} __packed SentryCmdInteractiveData;
552
553typedef union
554{
555 uint8_t radar_info;
556 struct
557 {
561 uint8_t can_modify_key : 1;
562 uint8_t reserved : 2;
563 };
564} __packed RadarInfo;
565
566typedef struct
567{
568 InteractiveDataHeader header;
569 RadarInfo radar_info;
570} __packed RadarInfoInteractiveData;
571
572typedef struct
573{
574 uint8_t radar_cmd;
576 uint8_t password_1;
577 uint8_t password_2;
578 uint8_t password_3;
579 uint8_t password_4;
580 uint8_t password_5;
581 uint8_t password_6;
582} __packed RadarCmd;
583
584typedef struct
585{
586 InteractiveDataHeader header;
587 RadarCmd radar_cmd;
588} __packed RadarCmdInteractiveData;
589
590typedef struct
591{
592 uint8_t data[30];
593} __packed CustomControllerData;
594
595typedef struct
596{
597 union
598 {
599 uint32_t sentry_info;
600 struct
601 {
607 uint32_t instant_respawn_cost : 10;
608 uint32_t reserved : 1;
609 };
610 };
611 union
612 {
614 struct
615 {
616 uint16_t is_out_of_war : 1;
618 uint16_t sentry_mode : 2;
620 uint16_t reserved_1 : 1;
621 };
622 };
623} __packed SentryInfo;
624
625typedef struct
626{
631 uint16_t cmd_source;
632} __packed ClientMapSendData;
633
634typedef struct
635{
644 uint16_t reserved_1;
645 uint16_t reserved_2;
648} __packed ClientMapReceiveData;
649
650typedef struct
651{
652 InteractiveDataHeader header_data;
653 uint8_t target_robot_ID;
654 float target_position_x;
655 float target_position_y;
656} __packed SentryAttackingTargetData;
657
658typedef struct
659{
660 InteractiveDataHeader header_data;
661 uint8_t robot_ID;
665} __packed RadarToSentryData;
666
667typedef struct
668{
669 int16_t mouse_x;
670 int16_t mouse_y;
671 int16_t mouse_z;
675 uint16_t reserved;
676} __packed RobotCommandData;
677
678typedef struct
679{
680 uint8_t intention;
683 int8_t delta_x[49];
684 int8_t delta_y[49];
685 uint16_t sender_id;
686} __packed MapSentryData;
687
688typedef struct
689{
690 InteractiveDataHeader header_data;
693} __packed BulletNumData;
694
695typedef struct
696{
697 uint16_t sender_id;
698 uint16_t receiver_id;
699 uint8_t user_data[30];
700} __packed CustomInfo;
701
702typedef struct
703{
716} __packed PowerManagementSampleAndStatusData;
717
718typedef struct
719{
721 char string[31];
722} __packed PowerManagementInitializationExceptionData;
723
724typedef struct
725{
726 uint32_t r_0;
727 uint32_t r_1;
728 uint32_t r_2;
729 uint32_t r_3;
730 uint32_t r_12;
731 uint32_t LR;
732 uint32_t PC;
733 uint32_t PSR;
734} __packed PowerManagementSystemExceptionData;
735
736typedef struct
737{
738 char process_name[32];
739} __packed PowerManagementProcessStackOverflowData;
740
741typedef struct
742{
746} __packed PowerManagementUnknownExceptionData;
747
748/***********************Frame tail(CRC8_CRC16)********************************************/
749const uint8_t kCrc8Init = 0xff;
750const uint8_t kCrc8Table[256] = {
751 0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41, 0x9d, 0xc3, 0x21,
752 0x7f, 0xfc, 0xa2, 0x40, 0x1e, 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c,
753 0xfe, 0xa0, 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, 0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d, 0x7c,
754 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, 0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5, 0x84, 0xda, 0x38, 0x66,
755 0xe5, 0xbb, 0x59, 0x07, 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58, 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4,
756 0x9a, 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6, 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, 0xf8, 0xa6,
757 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b, 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9, 0x8c, 0xd2, 0x30, 0x6e, 0xed,
758 0xb3, 0x51, 0x0f, 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd, 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92,
759 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50, 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, 0x6d, 0x33, 0xd1,
760 0x8f, 0x0c, 0x52, 0xb0, 0xee, 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1, 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf,
761 0x2d, 0x73, 0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49, 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b, 0x57,
762 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4, 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16, 0xe9, 0xb7, 0x55, 0x0b,
763 0x88, 0xd6, 0x34, 0x6a, 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8, 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9,
764 0xf7, 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35,
765};
766const uint16_t kCrc16Init = 0xffff;
767const uint16_t wCRC_table[256] = {
768 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5,
769 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52,
770 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3,
771 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
772 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9,
773 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e,
774 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f,
775 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
776 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862,
777 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb,
778 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948,
779 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
780 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226,
781 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497,
782 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704,
783 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
784 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb,
785 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c,
786 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
787};
788} // namespace rm_referee
Definition data.h:104
PowerManagementStateMachine
Definition protocol.h:190
@ CHARGE
Definition protocol.h:191
@ BOOST
Definition protocol.h:192
@ ALL_OFF
Definition protocol.h:194
@ NORMAL
Definition protocol.h:193
const uint8_t kCrc8Init
Definition protocol.h:749
GraphType
Definition protocol.h:171
@ STRING
Definition protocol.h:179
@ RECTANGLE
Definition protocol.h:173
@ CIRCLE
Definition protocol.h:174
@ ARC
Definition protocol.h:176
@ LINE
Definition protocol.h:172
@ ELLIPSE
Definition protocol.h:175
@ INT_NUM
Definition protocol.h:178
@ FLOAT_NUM
Definition protocol.h:177
RefereeCmdId
Definition protocol.h:46
@ BULLET_REMAINING_CMD
Definition protocol.h:63
@ INTERACTIVE_DATA_CMD
Definition protocol.h:70
@ ROBOT_HURT_CMD
Definition protocol.h:61
@ SHOOT_DATA_CMD
Definition protocol.h:62
@ SENTRY_INFO_CMD
Definition protocol.h:68
@ ROBOT_POS_CMD
Definition protocol.h:58
@ MAP_SENTRY_CMD
Definition protocol.h:77
@ CUSTOM_CLIENT_CMD
Definition protocol.h:76
@ CLIENT_MAP_CMD
Definition protocol.h:74
@ CUSTOM_CLIENT_TO_ROBOT_CMD
Definition protocol.h:81
@ POWER_MANAGEMENT_UNKNOWN_EXCEPTION_CMD
Definition protocol.h:89
@ BUFF_CMD
Definition protocol.h:59
@ ROBOTS_POS_CMD
Definition protocol.h:66
@ POWER_MANAGEMENT_INITIALIZATION_EXCEPTION_CMD
Definition protocol.h:86
@ ROBOT_TO_CUSTOM_CONTROLLER_CMD
Definition protocol.h:79
@ DART_INFO_CMD
Definition protocol.h:55
@ ROBOT_RFID_STATUS_CMD
Definition protocol.h:64
@ AERIAL_ROBOT_ENERGY_CMD
Definition protocol.h:60
@ ROBOT_TO_CUSTOM_CMD
Definition protocol.h:83
@ KEYBOARD_MOUSE_CMD
Definition protocol.h:75
@ RADAR_MARK_CMD
Definition protocol.h:67
@ FIELD_EVENTS_CMD
Definition protocol.h:52
@ DART_STATUS_CMD
Definition protocol.h:50
@ SUPPLY_PROJECTILE_ACTION_CMD
Definition protocol.h:53
@ CUSTOM_INFO_CMD
Definition protocol.h:78
@ REFEREE_WARNING_CMD
Definition protocol.h:54
@ GAME_RESULT_CMD
Definition protocol.h:48
@ POWER_MANAGEMENT_SYSTEM_EXCEPTION_CMD
Definition protocol.h:87
@ TARGET_POS_CMD
Definition protocol.h:72
@ POWER_MANAGEMENT_PROCESS_STACK_OVERFLOW_CMD
Definition protocol.h:88
@ CUSTOM_CONTROLLER_CMD
Definition protocol.h:71
@ CUSTOM_TO_ROBOT_CMD
Definition protocol.h:82
@ GAME_ROBOT_HP_CMD
Definition protocol.h:49
@ ROBOT_TO_CUSTOM_CLIENT_CMD
Definition protocol.h:80
@ RADAR_INFO_CMD
Definition protocol.h:69
@ ROBOT_TO_CUSTOM_CMD_2
Definition protocol.h:84
@ POWER_HEAT_DATA_CMD
Definition protocol.h:57
@ GAME_STATUS_CMD
Definition protocol.h:47
@ DART_CLIENT_CMD
Definition protocol.h:65
@ ROBOT_COMMAND_CMD
Definition protocol.h:73
@ ICRA_ZONE_STATUS_CMD
Definition protocol.h:51
@ POWER_MANAGEMENT_SAMPLE_AND_STATUS_DATA_CMD
Definition protocol.h:85
@ ROBOT_STATUS_CMD
Definition protocol.h:56
DataCmdId
Definition protocol.h:93
@ SENTRY_TO_RADAR_CMD
Definition protocol.h:105
@ CLIENT_GRAPH_DELETE_CMD
Definition protocol.h:96
@ CLIENT_GRAPH_SEVEN_CMD
Definition protocol.h:100
@ CLIENT_GRAPH_SINGLE_CMD
Definition protocol.h:97
@ SENTRY_CMD
Definition protocol.h:102
@ RADAR_CMD
Definition protocol.h:103
@ RADAR_TO_SENTRY_CMD
Definition protocol.h:106
@ ROBOT_INTERACTIVE_CMD_MAX
Definition protocol.h:95
@ BULLET_NUM_SHARE_CMD
Definition protocol.h:104
@ ROBOT_INTERACTIVE_CMD_MIN
Definition protocol.h:94
@ CLIENT_CHARACTER_CMD
Definition protocol.h:101
@ CLIENT_GRAPH_FIVE_CMD
Definition protocol.h:99
@ CLIENT_GRAPH_DOUBLE_CMD
Definition protocol.h:98
const uint8_t kCrc8Table[256]
Definition protocol.h:750
struct rm_referee::GraphConfig __packed
SentryIntention
Definition protocol.h:183
@ MOVE_TO
Definition protocol.h:186
@ ATTACK_IN
Definition protocol.h:184
@ DEFEND_IN
Definition protocol.h:185
GraphColor
Definition protocol.h:158
@ PINK
Definition protocol.h:164
@ WHITE
Definition protocol.h:167
@ YELLOW
Definition protocol.h:160
@ BLACK
Definition protocol.h:166
@ ORANGE
Definition protocol.h:162
@ PURPLE
Definition protocol.h:163
@ MAIN_COLOR
Definition protocol.h:159
@ CYAN
Definition protocol.h:165
@ GREEN
Definition protocol.h:161
const uint16_t kCrc16Init
Definition protocol.h:766
PowerManagementProtectionInfo
Definition protocol.h:198
@ NO_PROBLEM
Definition protocol.h:199
@ REFEREE_DISCONNECT
Definition protocol.h:202
@ REFEREE_POWER_DOWN
Definition protocol.h:201
@ HIGH_CURRENT
Definition protocol.h:200
RobotId
Definition protocol.h:110
@ BLUE_RADAR
Definition protocol.h:128
@ BLUE_STANDARD_4
Definition protocol.h:124
@ BLUE_ENGINEER
Definition protocol.h:122
@ RED_BASE
Definition protocol.h:120
@ RED_STANDARD_4
Definition protocol.h:114
@ BLUE_SENTRY
Definition protocol.h:127
@ RED_SENTRY
Definition protocol.h:117
@ RED_STANDARD_5
Definition protocol.h:115
@ BLUE_STANDARD_3
Definition protocol.h:123
@ BLUE_BASE
Definition protocol.h:130
@ BLUE_OUTPOST
Definition protocol.h:129
@ RED_STANDARD_3
Definition protocol.h:113
@ RED_AERIAL
Definition protocol.h:116
@ RED_ENGINEER
Definition protocol.h:112
@ RED_OUTPOST
Definition protocol.h:119
@ BLUE_HERO
Definition protocol.h:121
@ BLUE_AERIAL
Definition protocol.h:126
@ BLUE_STANDARD_5
Definition protocol.h:125
@ RED_RADAR
Definition protocol.h:118
@ RED_HERO
Definition protocol.h:111
const uint16_t wCRC_table[256]
Definition protocol.h:767
PowerManagementTopology
Definition protocol.h:217
@ CHARGE_AND_BOOST
Definition protocol.h:219
@ PASS_THROUGH
Definition protocol.h:218
@ SWITCHES_ALL_OFF
Definition protocol.h:220
ClientId
Definition protocol.h:134
@ RED_ENGINEER_CLIENT
Definition protocol.h:136
@ REFEREE_SERVER
Definition protocol.h:147
@ BLUE_STANDARD_5_CLIENT
Definition protocol.h:145
@ RED_HERO_CLIENT
Definition protocol.h:135
@ BLUE_STANDARD_4_CLIENT
Definition protocol.h:144
@ RED_AERIAL_CLIENT
Definition protocol.h:140
@ RED_STANDARD_4_CLIENT
Definition protocol.h:138
@ BLUE_AERIAL_CLIENT
Definition protocol.h:146
@ BLUE_STANDARD_3_CLIENT
Definition protocol.h:143
@ RED_STANDARD_3_CLIENT
Definition protocol.h:137
@ BLUE_HERO_CLIENT
Definition protocol.h:141
@ RED_STANDARD_5_CLIENT
Definition protocol.h:139
@ BLUE_ENGINEER_CLIENT
Definition protocol.h:142
PowerManagementResetReason
Definition protocol.h:206
@ UNKNOWN
Definition protocol.h:213
@ LOW_VOLTAGE
Definition protocol.h:212
@ INDEPENDENT_WATCHDOG
Definition protocol.h:210
@ EXTERNAL_BUTTON
Definition protocol.h:208
@ POWER_ON
Definition protocol.h:207
@ WINDOW_WATCHDOG
Definition protocol.h:211
@ SOFT
Definition protocol.h:209
GraphOperation
Definition protocol.h:151
@ DELETE
Definition protocol.h:154
@ UPDATE
Definition protocol.h:153
@ ADD
Definition protocol.h:152
Definition protocol.h:742
int8_t error_code
Definition protocol.h:720
uint16_t chassis_power_buffer
Definition protocol.h:342
uint32_t r_0
Definition protocol.h:726
float engineer_x
Definition protocol.h:463
uint32_t can_exchange_instant_respawn
Definition protocol.h:606
uint8_t remaining_energy
Definition protocol.h:361
uint8_t enemy_in_double_vulnerability
Definition protocol.h:559
float x
Definition protocol.h:349
uint16_t bullet_allowance_num_17_mm
Definition protocol.h:385
uint8_t capacity_recent_charge_power_low_8_bit
Definition protocol.h:709
uint16_t coin_remaining_num
Definition protocol.h:387
uint16_t ally_1_robot_hp
Definition protocol.h:248
uint16_t ally_2_robot_hp
Definition protocol.h:249
uint8_t intention
Definition protocol.h:680
uint16_t data_cmd_id
Definition protocol.h:408
uint16_t sentry_position_y
Definition protocol.h:647
uint16_t own_sentry_special_mark
Definition protocol.h:489
uint16_t enemy_aerial_special_mark
Definition protocol.h:482
uint16_t max_hp
Definition protocol.h:328
uint8_t capacity_recent_charge_power_high_8_bit
Definition protocol.h:708
GraphConfig config
Definition protocol.h:497
uint32_t LR
Definition protocol.h:731
uint32_t r_2
Definition protocol.h:728
uint8_t state_machine_running_state
Definition protocol.h:715
float yaw
Definition protocol.h:351
uint8_t robot_id
Definition protocol.h:325
uint8_t capacity_remain_charge_low_8_bit
Definition protocol.h:711
uint8_t data
Definition protocol.h:528
uint8_t state_machine_before_reset_mode
Definition protocol.h:745
uint8_t supply_projectile_num
Definition protocol.h:304
uint16_t cmd_source
Definition protocol.h:631
uint8_t central_point_state
Definition protocol.h:295
uint8_t winner
Definition protocol.h:243
uint8_t f_3_zone_status
Definition protocol.h:270
uint16_t blue_2_bullet_left
Definition protocol.h:281
uint16_t enemy_engineer_vulnerable
Definition protocol.h:479
uint16_t is_out_of_war
Definition protocol.h:616
uint8_t count
Definition protocol.h:311
uint16_t can_activate_energy_mechanism
Definition protocol.h:619
uint8_t robot_ID
Definition protocol.h:661
uint8_t password_3
Definition protocol.h:578
uint32_t rfid_status
Definition protocol.h:393
uint16_t infantry_4_position_x
Definition protocol.h:642
uint8_t bullet_42_mm_num
Definition protocol.h:691
uint16_t mark_progress
Definition protocol.h:475
uint8_t password_4
Definition protocol.h:579
uint8_t dart_current_target
Definition protocol.h:319
bool engineer_marked
Definition protocol.h:664
uint8_t game_type
Definition protocol.h:235
uint8_t mains_power_gimbal_output
Definition protocol.h:332
uint8_t f_1_zone_status
Definition protocol.h:266
uint8_t f_6_zone_buff_debuff_status
Definition protocol.h:277
uint8_t rfid_status_2
Definition protocol.h:394
uint16_t red_1_bullet_left
Definition protocol.h:278
uint32_t sentry_info
Definition protocol.h:599
uint8_t game_progress
Definition protocol.h:236
uint32_t sentry_cmd
Definition protocol.h:533
uint16_t shooter_id_1_17_mm_cooling_heat
Definition protocol.h:343
uint8_t chassis_power_low_8_bit
Definition protocol.h:705
uint8_t central_elevated_ground_state
Definition protocol.h:291
uint16_t enemy_sentry_vulnerable
Definition protocol.h:483
float target_position_x
Definition protocol.h:627
uint8_t small_power_rune_state
Definition protocol.h:289
uint32_t PSR
Definition protocol.h:733
uint16_t latest_launch_cmd_time
Definition protocol.h:402
uint8_t capacity_expect_charge_power
Definition protocol.h:712
uint8_t nan_overlapping_supply_station_state
Definition protocol.h:286
uint32_t confirm_respawn
Definition protocol.h:536
uint16_t own_hero_special_mark
Definition protocol.h:484
uint16_t remain_hp
Definition protocol.h:327
uint8_t password_1
Definition protocol.h:576
uint32_t r_3
Definition protocol.h:729
uint8_t power_management_topology
Definition protocol.h:713
uint8_t f_4_zone_buff_debuff_status
Definition protocol.h:273
uint8_t hurt_type
Definition protocol.h:372
uint8_t chassis_power_high_8_bit
Definition protocol.h:704
uint8_t recovery_buff
Definition protocol.h:356
float hero_x
Definition protocol.h:461
int16_t mouse_x
Definition protocol.h:669
uint16_t red_2_bullet_left
Definition protocol.h:279
float reserved_1
Definition protocol.h:469
uint8_t abnormal_reset_reason
Definition protocol.h:743
uint8_t supply_projectile_step
Definition protocol.h:303
uint16_t ally_4_robot_hp
Definition protocol.h:251
uint16_t infantry_4_position_y
Definition protocol.h:643
uint8_t dart_launch_opening_status
Definition protocol.h:399
uint32_t confirm_instant_respawn
Definition protocol.h:537
uint8_t f_3_zone_buff_debuff_status
Definition protocol.h:271
uint16_t hero_position_x
Definition protocol.h:636
float reserved_2
Definition protocol.h:470
uint32_t can_confirm_free_respawn
Definition protocol.h:605
uint8_t command_keyboard
Definition protocol.h:629
float engineer_y
Definition protocol.h:464
uint16_t chassis_power_limit
Definition protocol.h:331
int16_t mouse_z
Definition protocol.h:671
uint8_t crc_8
Definition protocol.h:230
uint8_t f_6_zone_status
Definition protocol.h:276
uint8_t defence_buff
Definition protocol.h:358
uint8_t bullet_17_mm_num
Definition protocol.h:692
uint64_t sync_time_stamp
Definition protocol.h:238
uint16_t own_standard_3_special_mark
Definition protocol.h:486
uint16_t bullet_allowance_num_42_mm
Definition protocol.h:386
uint16_t shooter_cooling_limit
Definition protocol.h:330
RadarCmd radar_cmd
Definition protocol.h:587
uint8_t shooter_id
Definition protocol.h:378
uint32_t reserved
Definition protocol.h:543
uint8_t mains_power_shooter_output
Definition protocol.h:334
uint8_t f_2_zone_status
Definition protocol.h:268
uint16_t ally_base_hp
Definition protocol.h:255
uint8_t power_management_protection_info
Definition protocol.h:714
uint8_t f_4_zone_status
Definition protocol.h:272
uint16_t keyboard_value
Definition protocol.h:674
uint8_t enemy_total_hit_received
Definition protocol.h:318
uint16_t hero_position_y
Definition protocol.h:637
uint8_t f_2_zone_buff_debuff_status
Definition protocol.h:269
uint16_t enemy_standard_3_vulnerable
Definition protocol.h:480
uint8_t bullet_freq
Definition protocol.h:379
uint8_t sof
Definition protocol.h:227
uint32_t instant_respawn_cost
Definition protocol.h:607
uint16_t enemy_hero_vulnerable
Definition protocol.h:478
uint16_t ally_outpost_hp
Definition protocol.h:254
float standard_4_x
Definition protocol.h:467
uint8_t own_encryption_level
Definition protocol.h:560
uint32_t remote_hp_exchange_success_cnt
Definition protocol.h:604
uint16_t attack_buff
Definition protocol.h:360
uint32_t exchanged_bullet_allowance
Definition protocol.h:602
uint8_t password_2
Definition protocol.h:577
uint8_t seq
Definition protocol.h:229
uint32_t PC
Definition protocol.h:732
uint32_t confirm_rune_activating
Definition protocol.h:542
uint8_t chassis_expect_power_high_8_bit
Definition protocol.h:706
float hero_y
Definition protocol.h:462
uint8_t can_modify_key
Definition protocol.h:561
uint8_t dart_last_aim_state
Definition protocol.h:317
SentryCmd sentry_cmd
Definition protocol.h:550
uint16_t stage_remaining_time
Definition protocol.h:261
uint8_t level
Definition protocol.h:309
uint16_t ally_7_robot_hp
Definition protocol.h:253
uint8_t capacity_remain_charge_high_8_bit
Definition protocol.h:710
float standard_3_x
Definition protocol.h:465
uint16_t remaining_bullets_can_supply
Definition protocol.h:617
uint16_t own_aerial_special_mark
Definition protocol.h:488
uint16_t data_length
Definition protocol.h:228
uint16_t sentry_info_2
Definition protocol.h:613
float standard_3_y
Definition protocol.h:466
uint16_t projectile_allowance_fortress
Definition protocol.h:388
uint16_t shooter_id_1_42_mm_cooling_heat
Definition protocol.h:344
uint16_t start_position_x
Definition protocol.h:681
uint16_t ally_3_robot_hp
Definition protocol.h:250
uint32_t posture_cmd
Definition protocol.h:541
uint16_t reserved
Definition protocol.h:252
uint16_t infantry_3_position_y
Definition protocol.h:641
uint16_t cooling_buff
Definition protocol.h:357
uint16_t receiver_id
Definition protocol.h:410
int8_t right_button_down
Definition protocol.h:673
uint32_t remote_hp_exchange_req_cnt
Definition protocol.h:540
uint8_t f_5_zone_buff_debuff_status
Definition protocol.h:275
uint8_t supplier_zone_state
Definition protocol.h:288
uint8_t robot_level
Definition protocol.h:326
uint16_t sentry_position_x
Definition protocol.h:646
uint8_t chassis_expect_power_low_8_bit
Definition protocol.h:707
uint8_t password_5
Definition protocol.h:580
int16_t mouse_y
Definition protocol.h:670
uint16_t own_standard_4_special_mark
Definition protocol.h:487
uint8_t armor_id
Definition protocol.h:371
uint16_t enemy_standard_4_vulnerable
Definition protocol.h:481
uint8_t trapezoidal_elevated_ground_state
Definition protocol.h:292
int8_t left_button_down
Definition protocol.h:672
uint16_t shooter_cooling_rate
Definition protocol.h:329
float reserved_3
Definition protocol.h:341
uint32_t bullet_exchange_target
Definition protocol.h:538
InteractiveDataHeader header
Definition protocol.h:496
uint8_t password_cmd
Definition protocol.h:575
uint8_t radar_info
Definition protocol.h:555
uint8_t supply_robot_id
Definition protocol.h:302
uint16_t infantry_3_position_x
Definition protocol.h:640
uint16_t engineer_position_y
Definition protocol.h:639
uint8_t f_1_zone_buff_debuff_status
Definition protocol.h:267
uint8_t power_management_before_reset_topology
Definition protocol.h:744
uint16_t engineer_position_x
Definition protocol.h:638
uint32_t r_1
Definition protocol.h:727
uint16_t sentry_mode
Definition protocol.h:618
float y
Definition protocol.h:350
float target_position_y
Definition protocol.h:628
uint32_t remote_bullet_exchange_success_cnt
Definition protocol.h:603
uint8_t attack_time
Definition protocol.h:366
uint16_t start_position_y
Definition protocol.h:682
float position_x
Definition protocol.h:662
uint16_t blue_1_bullet_left
Definition protocol.h:280
uint8_t large_power_rune_state
Definition protocol.h:290
uint16_t own_engineer_special_mark
Definition protocol.h:485
uint32_t r_12
Definition protocol.h:730
float bullet_speed
Definition protocol.h:380
uint8_t dart_remaining_time
Definition protocol.h:316
RadarInfo radar_info
Definition protocol.h:569
uint8_t target_robot_ID
Definition protocol.h:630
uint8_t bullet_type
Definition protocol.h:377
uint16_t be_hit_time
Definition protocol.h:293
uint8_t dart_belong
Definition protocol.h:260
uint8_t overlapping_supply_station_state
Definition protocol.h:287
uint8_t password_6
Definition protocol.h:581
uint8_t double_vulnerability_chances
Definition protocol.h:558
uint8_t mains_power_chassis_output
Definition protocol.h:333
uint8_t vulnerability_buff
Definition protocol.h:359
uint16_t sender_id
Definition protocol.h:409
uint8_t radar_cmd
Definition protocol.h:574
uint16_t target_change_time
Definition protocol.h:401
uint8_t foul_robot_id
Definition protocol.h:310
uint8_t be_hit_target
Definition protocol.h:294
float position_y
Definition protocol.h:663
uint16_t reserved_2
Definition protocol.h:340
uint8_t f_5_zone_status
Definition protocol.h:274
InteractiveDataHeader header_data
Definition protocol.h:527
uint8_t reserved
Definition protocol.h:301
uint16_t reserved_1
Definition protocol.h:339
uint16_t stage_remain_time
Definition protocol.h:237
float standard_4_y
Definition protocol.h:468
uint32_t remote_bullet_exchange_req_cnt
Definition protocol.h:539
Definition protocol.h:414
uint32_t start_x
Definition protocol.h:423
uint32_t start_angle
Definition protocol.h:420
uint32_t radius
Definition protocol.h:425
uint32_t color
Definition protocol.h:419
uint8_t graphic_id[3]
Definition protocol.h:415
bool operator==(const GraphConfig &config)
Definition protocol.h:428
uint32_t end_x
Definition protocol.h:426
uint32_t width
Definition protocol.h:422
uint32_t end_y
Definition protocol.h:427
uint32_t graphic_type
Definition protocol.h:417
uint32_t start_y
Definition protocol.h:424
uint32_t end_angle
Definition protocol.h:421
uint32_t operate_type
Definition protocol.h:416
GraphConfig & operator=(const GraphConfig &config)
Definition protocol.h:438
uint32_t layer
Definition protocol.h:418