MCPcopy Create free account
hub / github.com/CalcProgrammer1/OpenRGB / GetDeviceDescription

Method GetDeviceDescription

RGBController/RGBController.cpp:46–557  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44}
45
46unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_version)
47{
48 unsigned int data_ptr = 0;
49 unsigned int data_size = 0;
50
51 /*---------------------------------------------------------*\
52 | Calculate data size |
53 \*---------------------------------------------------------*/
54 unsigned short name_len = strlen(name.c_str()) + 1;
55 unsigned short vendor_len = strlen(vendor.c_str()) + 1;
56 unsigned short description_len = strlen(description.c_str()) + 1;
57 unsigned short version_len = strlen(version.c_str()) + 1;
58 unsigned short serial_len = strlen(serial.c_str()) + 1;
59 unsigned short location_len = strlen(location.c_str()) + 1;
60 unsigned short num_modes = modes.size();
61 unsigned short num_zones = zones.size();
62 unsigned short num_leds = leds.size();
63 unsigned short num_colors = colors.size();
64
65 unsigned short *mode_name_len = new unsigned short[num_modes];
66 unsigned short *zone_name_len = new unsigned short[num_zones];
67 unsigned short *led_name_len = new unsigned short[num_leds];
68
69 unsigned short *zone_matrix_len = new unsigned short[num_zones];
70 unsigned short *mode_num_colors = new unsigned short[num_modes];
71
72 data_size += sizeof(data_size);
73 data_size += sizeof(device_type);
74 data_size += name_len + sizeof(name_len);
75
76 if(protocol_version >= 1)
77 {
78 data_size += vendor_len + sizeof(vendor_len);
79 }
80
81 data_size += description_len + sizeof(description_len);
82 data_size += version_len + sizeof(version_len);
83 data_size += serial_len + sizeof(serial_len);
84 data_size += location_len + sizeof(location_len);
85
86 data_size += sizeof(num_modes);
87 data_size += sizeof(active_mode);
88
89 for(int mode_index = 0; mode_index < num_modes; mode_index++)
90 {
91 mode_name_len[mode_index] = strlen(modes[mode_index].name.c_str()) + 1;
92 mode_num_colors[mode_index] = modes[mode_index].colors.size();
93
94 data_size += mode_name_len[mode_index] + sizeof(mode_name_len[mode_index]);
95 data_size += sizeof(modes[mode_index].value);
96 data_size += sizeof(modes[mode_index].flags);
97 data_size += sizeof(modes[mode_index].speed_min);
98 data_size += sizeof(modes[mode_index].speed_max);
99 if(protocol_version >= 3)
100 {
101 data_size += sizeof(modes[mode_index].brightness_min);
102 data_size += sizeof(modes[mode_index].brightness_max);
103 }

Callers 2

SaveProfileMethod · 0.45

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected