TR-mbed 1.0
Loading...
Searching...
No Matches
ui_g.h
Go to the documentation of this file.
1#pragma once
2#include "ui_types.h"
3#include <functional>
4#include "mbed.h"
5#include <cstdio>
6
7class UI {
8 public:
9
10 const static int TOTAL_FIGURE = 0;
11 const static int TOTAL_STRING = 4;
12
14 5,
15 5,
16 5,
17 5,
18 };
19
20 ui_interface_figure_t ui_g_now_figures[TOTAL_FIGURE]; // contains all figures w/ current data
21 uint8_t ui_g_dirty_figure[TOTAL_FIGURE]; // contains which figures need to be sent and how many times
22 ui_interface_string_t ui_g_now_strings[TOTAL_STRING]; // contains all data for strings
23 uint8_t ui_g_dirty_string[TOTAL_STRING]; // contains which strings need to be sent and how many times
24
25 UI(uint16_t robot_id, std::function<void(uint8_t*, uint16_t )> send_func);
26
27 void ui_init_g();
28 void ui_reinit_g();
29 void ui_update_g();
30
31 void set_spin_ui(bool is_spinning);
32 void set_flywheel_ui(bool is_flywheel_on);
33 void set_cv_ui(bool is_cv_on);
34 void set_alignment_ui(bool is_aligned);
35
36 uint16_t ui_self_id;
37 private:
38 Mutex ui_lock;
39 std::function<void(uint8_t*, uint16_t )> send_packet_func;
40 uint8_t seq = 0;
41
42
43 ui_string_frame_t _ui_string_frame;
44 ui_1_frame_t _ui_1_frame;
45 ui_2_frame_t _ui_2_frame;
46 ui_5_frame_t _ui_5_frame;
47 ui_7_frame_t _ui_7_frame;
48
49 ui_interface_string_t *ui_g_Ungroup_Bayblade = (&(ui_g_now_strings[0]));
50 ui_interface_string_t *ui_g_Ungroup_Flywheel = (&(ui_g_now_strings[1]));
51 ui_interface_string_t *ui_g_Ungroup_CV = (&(ui_g_now_strings[2]));
52 ui_interface_string_t *ui_g_Ungroup_Alignment = (&(ui_g_now_strings[3]));
53
54 uint8_t *ui_g_Ungroup_Bayblade_send_count = (&(ui_g_dirty_string[0]));
55 uint8_t *ui_g_Ungroup_Flywheel_send_count = (&(ui_g_dirty_string[1]));
56 uint8_t *ui_g_Ungroup_CV_send_count = (&(ui_g_dirty_string[2]));
57 uint8_t *ui_g_Ungroup_Alignment_send_count = (&(ui_g_dirty_string[3]));
58
59
60 uint8_t& ui_g_Ungroup_Bayblade_max_send_count = (ui_g_max_send_count[0]);
61 uint8_t& ui_g_Ungroup_Flywheel_max_send_count = (ui_g_max_send_count[1]);
62 uint8_t& ui_g_Ungroup_CV_max_send_count = (ui_g_max_send_count[2]);
63 uint8_t& ui_g_Ungroup_Alignment_max_send_count = (ui_g_max_send_count[3]);
64
65 const uint16_t wCRC_Table[256] = {
66 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
67 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
68 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
69 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
70 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
71 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
72 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
73 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
74 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
75 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
76 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
77 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
78 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
79 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
80 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
81 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
82 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
83 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
84 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
85 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
86 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
87 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
88 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
89 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
90 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
91 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
92 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
93 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
94 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
95 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
96 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
97 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
98 };
99
100 const unsigned char CRC8_TAB[256] = {
101 0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41,
102 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e, 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, 0x23,
103 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0, 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, 0xbe, 0xe0,
104 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d, 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, 0x46, 0x18, 0xfa,
105 0xa4, 0x27, 0x79, 0x9b, 0xc5, 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07, 0xdb, 0x85, 0x67,
106 0x39, 0xba, 0xe4, 0x06, 0x58, 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a, 0x65, 0x3b, 0xd9, 0x87,
107 0x04, 0x5a, 0xb8, 0xe6, 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, 0xf8, 0xa6, 0x44, 0x1a, 0x99,
108 0xc7, 0x25, 0x7b, 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9,
109 0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f, 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd, 0x11,
110 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92, 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50, 0xaf, 0xf1,
111 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, 0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee, 0x32, 0x6c, 0x8e,
112 0xd0, 0x53, 0x0d, 0xef, 0xb1, 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73, 0xca, 0x94, 0x76, 0x28,
113 0xab, 0xf5, 0x17, 0x49, 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b, 0x57, 0x09, 0xeb, 0xb5,
114 0x36, 0x68, 0x8a, 0xd4, 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16, 0xe9, 0xb7, 0x55, 0x0b, 0x88,
115 0xd6, 0x34, 0x6a, 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8,
116 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7, 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35,
117 };
118
119 void print_message(const uint8_t *message, const int length);
120 void send_message(uint8_t* message, uint16_t length);
121
122 unsigned char calc_crc8(unsigned char *pchMessage, unsigned int dwLength);
123 uint16_t calc_crc16(uint8_t *pchMessage, uint32_t dwLength);
124
125 void ui_proc_1_frame(ui_1_frame_t *msg);
126 void ui_proc_2_frame(ui_2_frame_t *msg);
127 void ui_proc_5_frame(ui_5_frame_t *msg);
128 void ui_proc_7_frame(ui_7_frame_t *msg);
129 void ui_proc_string_frame(ui_string_frame_t *msg);
130
131
132 ui_delete_frame_t ui_delete_frame;
133 void ui_proc_delete_frame(ui_delete_frame_t *msg);
134 void ui_delete_layer(const uint8_t delete_type, const uint8_t layer);
135
136
137 void SCAN_AND_SEND();
138 void ui_scan_and_send(const ui_interface_figure_t* ui_now_figures, uint8_t* ui_dirty_figure, const ui_interface_string_t* ui_now_strings, uint8_t* ui_dirty_string, int total_figures, int total_strings);
139
140};
Definition ui_g.h:7
void set_cv_ui(bool is_cv_on)
Definition ui_g.cpp:449
void set_flywheel_ui(bool is_flywheel_on)
Definition ui_g.cpp:436
uint16_t ui_self_id
Definition ui_g.h:36
uint8_t ui_g_max_send_count[TOTAL_FIGURE+TOTAL_STRING]
Definition ui_g.h:13
void set_spin_ui(bool is_spinning)
Definition ui_g.cpp:423
void ui_reinit_g()
Definition ui_g.cpp:101
static const int TOTAL_STRING
Definition ui_g.h:11
ui_interface_string_t ui_g_now_strings[TOTAL_STRING]
Definition ui_g.h:22
static const int TOTAL_FIGURE
Definition ui_g.h:10
uint8_t ui_g_dirty_string[TOTAL_STRING]
Definition ui_g.h:23
void set_alignment_ui(bool is_aligned)
Definition ui_g.cpp:462
uint8_t ui_g_dirty_figure[TOTAL_FIGURE]
Definition ui_g.h:21
void ui_update_g()
Checks what figures/strings has been updated and only sends those that have changes to the server.
Definition ui_g.cpp:123
void ui_init_g()
Setup up all figures & strings.
Definition ui_g.cpp:23
ui_interface_figure_t ui_g_now_figures[TOTAL_FIGURE]
Definition ui_g.h:20
MESSAGE_PACKED ui_7_frame_t
Definition ui_types.h:117
MESSAGE_PACKED ui_delete_frame_t
Definition ui_types.h:132
MESSAGE_PACKED ui_interface_string_t
Definition ui_types.h:54
MESSAGE_PACKED ui_2_frame_t
Definition ui_types.h:105
MESSAGE_PACKED ui_string_frame_t
Definition ui_types.h:124
MESSAGE_PACKED ui_5_frame_t
Definition ui_types.h:111
MESSAGE_PACKED ui_1_frame_t
Definition ui_types.h:99