Skip to content

Commit 97ba193

Browse files
author
marqs
committed
implement new features for HDMI and SDP frontends
* add EDID presets and custom EDID option * add audio source selection and CTI options for SDP frontend
1 parent 692e1d3 commit 97ba193

File tree

10 files changed

+209
-178
lines changed

10 files changed

+209
-178
lines changed

software/sys_controller/av_controller.c

Lines changed: 60 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
#include "firmware.h"
5050
#include "userdata.h"
5151

52+
#include "src/edid_presets.c"
53+
#include "src/shmask_arrays.c"
54+
#include "src/scl_pp_coeffs.c"
55+
5256
#define FW_VER_MAJOR 0
5357
#define FW_VER_MINOR 77
5458

@@ -85,31 +89,6 @@
8589

8690
#define VIP_WDOG_VALUE 10
8791

88-
unsigned char pro_edid_bin[] = {
89-
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x36, 0x51, 0x5c, 0x05,
90-
0x15, 0xcd, 0x5b, 0x07, 0x0a, 0x1d, 0x01, 0x04, 0xa2, 0x3c, 0x22, 0x78,
91-
0xff, 0xde, 0x51, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, 0xff,
92-
0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
93-
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38,
94-
0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0x55, 0x50, 0x21, 0x00, 0x00, 0x1a,
95-
0x00, 0x00, 0x00, 0xff, 0x00, 0x32, 0x30, 0x35, 0x34, 0x38, 0x31, 0x32,
96-
0x35, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x2d,
97-
0x90, 0x0a, 0x96, 0x14, 0x01, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
98-
0x00, 0x00, 0x00, 0xfc, 0x00, 0x4f, 0x53, 0x53, 0x43, 0x20, 0x50, 0x72,
99-
0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x01, 0x46, 0x02, 0x03, 0x40, 0xf2,
100-
0x50, 0x9f, 0x90, 0x14, 0x05, 0x20, 0x13, 0x04, 0x12, 0x03, 0x11, 0x02,
101-
0x16, 0x07, 0x15, 0x06, 0x01, 0x29, 0x0f, 0x7f, 0x07, 0x17, 0x7f, 0xff,
102-
0x3f, 0x7f, 0xff, 0x83, 0x4f, 0x00, 0x00, 0x78, 0x03, 0x0c, 0x00, 0x10,
103-
0x00, 0x88, 0x26, 0x2f, 0x01, 0x01, 0x01, 0x01, 0xff, 0xfc, 0x06, 0x16,
104-
0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x05, 0x1f, 0x01,
105-
0x01, 0x1d, 0x80, 0xd0, 0x72, 0x1c, 0x16, 0x20, 0x10, 0x2c, 0x25, 0x80,
106-
0xba, 0x88, 0x21, 0x00, 0x00, 0x9e, 0x01, 0x1d, 0x80, 0x18, 0x71, 0x1c,
107-
0x16, 0x20, 0x58, 0x2c, 0x25, 0x00, 0xba, 0x88, 0x21, 0x00, 0x00, 0x9e,
108-
0x01, 0x1d, 0x00, 0xbc, 0x52, 0xd0, 0x1e, 0x20, 0xb8, 0x28, 0x55, 0x40,
109-
0xba, 0x88, 0x21, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0,
110-
0x1e, 0x20, 0x6e, 0x3c
111-
};
112-
11392
// Default settings
11493
const settings_t ts_default = {
11594
.default_avinput = 0,
@@ -119,6 +98,9 @@ const settings_t ts_default = {
11998
.led_pwm = 5,
12099
};
121100

101+
c_edid_t c_edid;
102+
const edid_t* edid_list[] = {&pro_edid_default, &pro_edid_2ch, &pro_edid_dc10b, &c_edid.edid};
103+
122104
isl51002_dev isl_dev = {.i2cm_base = I2C_OPENCORES_0_BASE,
123105
.i2c_addr = ISL51002_BASE,
124106
.xclk_out_en = 0,
@@ -143,8 +125,7 @@ adv761x_dev advrx_dev = {.i2cm_base = I2C_OPENCORES_0_BASE,
143125
.hdmi_base = ADV7610_HDMI_BASE,
144126
.cp_base = ADV7610_CP_BASE,
145127
.xtal_freq = 27000000LU,
146-
.edid = pro_edid_bin,
147-
.edid_len = sizeof(pro_edid_bin)};
128+
.edid_list = edid_list};
148129

149130
#ifdef INC_ADV7513
150131
adv7513_dev advtx_dev = {.i2cm_base = I2C_OPENCORES_0_BASE,
@@ -212,20 +193,15 @@ extern char menu_row1[US2066_ROW_LEN+1], menu_row2[US2066_ROW_LEN+1];
212193

213194
extern const char *avinput_str[];
214195

215-
FIL file;
216196
char char_buff[256];
217197

218-
#include "src/shmask_arrays.c"
219-
220198
c_shmask_t c_shmask;
221199
const shmask_data_arr* shmask_data_arr_list[] = {NULL, &shmask_agrille, &shmask_tv, &shmask_pvm, &shmask_pvm_2530, &shmask_xc_3315c, &shmask_c_1084, &shmask_jvc, &shmask_vga, &c_shmask.arr};
222200
int shmask_loaded_array = 0;
223201
int shmask_loaded_str = -1;
224202
#define SHMASKS_SIZE (sizeof(shmask_data_arr_list) / sizeof((shmask_data_arr_list)[0]))
225203

226204
#ifdef VIP
227-
#include "src/scl_pp_coeffs.c"
228-
229205
c_pp_coeffs_t c_pp_coeffs;
230206
const pp_coeff* scl_pp_coeff_list[][2][2] = {{{&pp_coeff_nearest, NULL}, {&pp_coeff_nearest, NULL}},
231207
{{&pp_coeff_lanczos3, NULL}, {&pp_coeff_lanczos3, NULL}},
@@ -819,22 +795,6 @@ int check_sdcard() {
819795
return ret;
820796
}
821797

822-
int update_edid() {
823-
FIL edid_file;
824-
unsigned bytes_read;
825-
826-
if (!sd_det)
827-
return -1;
828-
829-
if (!file_open(&edid_file, "edid.bin") && (f_size(&edid_file) == sizeof(pro_edid_bin))) {
830-
f_read(&edid_file, pro_edid_bin, sizeof(pro_edid_bin), &bytes_read);
831-
printf("Custom edid set\n");
832-
file_close(&edid_file);
833-
}
834-
835-
return 0;
836-
}
837-
838798
int init_hw()
839799
{
840800
int ret;
@@ -882,9 +842,7 @@ int init_hw()
882842
// Init ocsdc driver
883843
mmc_dev = ocsdc_mmc_init(SDC_CONTROLLER_QSYS_0_BASE, SDC_FREQ, SDC_HOST_CAPS);
884844

885-
// Load custom EDID if available and reset MMC/SD status as entering standby
886-
check_sdcard();
887-
update_edid();
845+
// Reset MMC/SD status as entering standby
888846
mmc_dev->has_init = 0;
889847
sd_det = sd_det_prev = 0;
890848

@@ -945,6 +903,9 @@ int init_hw()
945903

946904
update_settings(1);
947905

906+
// Configure HDMI RX at startup (EDID etc.)
907+
adv761x_update_config(&advrx_dev, &get_target_avconfig()->hdmirx_cfg);
908+
948909
return 0;
949910
}
950911

@@ -999,7 +960,7 @@ void switch_audsrc(audinput_t *audsrc_map, HDMI_audio_fmt_t *aud_tx_fmt) {
999960
else if (avinput == AV4)
1000961
audsrc = audsrc_map[3];
1001962
else
1002-
audsrc = AUD_AV2_ANALOG; // AV_EXP
963+
audsrc = audsrc_map[4]; // AV_EXP
1003964

1004965
if (audsrc <= AUD_AV3_ANALOG)
1005966
pcm186x_source_sel(&pcm_dev, audsrc);
@@ -1153,11 +1114,19 @@ void set_default_c_shmask() {
11531114
strncpy(c_shmask.name, "Custom: <none>", 20);
11541115
}
11551116

1117+
void set_default_c_edid() {
1118+
memset(&c_edid, 0, sizeof(c_shmask));
1119+
strncpy(c_edid.name, "Custom: <none>", 20);
1120+
}
1121+
11561122
int load_scl_coeffs(char *dirname, char *filename) {
1123+
FIL file;
11571124
FIL f_coeff;
1125+
char dirname_root[10];
11581126
int i, p, n, pp_bits, lines=0;
11591127

1160-
f_chdir(dirname);
1128+
sniprintf(dirname_root, sizeof(dirname_root), "/%s", dirname);
1129+
f_chdir(dirname_root);
11611130

11621131
if (!file_open(&file, filename)) {
11631132
while ((lines < 4) && file_get_string(&file, char_buff, sizeof(char_buff))) {
@@ -1222,14 +1191,16 @@ int load_scl_coeffs(char *dirname, char *filename) {
12221191

12231192
int load_shmask(char *dirname, char *filename) {
12241193
FIL f_shmask;
1194+
char dirname_root[10];
12251195
int arr_size_loaded=0;
12261196
int v0=0,v1=0;
12271197
int p;
12281198

1229-
f_chdir(dirname);
1199+
sniprintf(dirname_root, sizeof(dirname_root), "/%s", dirname);
1200+
f_chdir(dirname_root);
12301201

1231-
if (!file_open(&file, filename)) {
1232-
while (file_get_string(&file, char_buff, sizeof(char_buff))) {
1202+
if (!file_open(&f_shmask, filename)) {
1203+
while (file_get_string(&f_shmask, char_buff, sizeof(char_buff))) {
12331204
// strip CR / CRLF
12341205
char_buff[strcspn(char_buff, "\r\n")] = 0;
12351206

@@ -1263,7 +1234,7 @@ int load_shmask(char *dirname, char *filename) {
12631234
}
12641235
}
12651236

1266-
file_close(&file);
1237+
file_close(&f_shmask);
12671238
}
12681239

12691240
f_chdir("/");
@@ -1274,6 +1245,38 @@ int load_shmask(char *dirname, char *filename) {
12741245
return 0;
12751246
}
12761247

1248+
int load_edid(char *dirname, char *filename) {
1249+
FIL f_edid;
1250+
char dirname_root[10];
1251+
unsigned bytes_read;
1252+
1253+
if (!sd_det)
1254+
return -1;
1255+
1256+
sniprintf(dirname_root, sizeof(dirname_root), "/%s", dirname);
1257+
f_chdir(dirname_root);
1258+
1259+
if (!file_open(&f_edid, filename) && (f_size(&f_edid) <= EDID_MAX_SIZE)) {
1260+
f_read(&f_edid, c_edid.edid.data, f_size(&f_edid), &bytes_read);
1261+
file_close(&f_edid);
1262+
}
1263+
1264+
f_chdir("/");
1265+
1266+
c_edid.edid.len = bytes_read;
1267+
sniprintf(c_edid.name, sizeof(c_edid.name), "C: %s", filename);
1268+
1269+
// Enfoce custom edid update
1270+
if (advrx_dev.cfg.edid_sel == 3)
1271+
set_custom_edid_reload();
1272+
1273+
return 0;
1274+
}
1275+
1276+
void set_custom_edid_reload() {
1277+
advrx_dev.cfg.edid_sel = 0;
1278+
}
1279+
12771280
void update_settings(int init_setup) {
12781281
if (init_setup || (ts.osd_enable != cs.osd_enable) || (ts.osd_status_timeout != cs.osd_status_timeout)) {
12791282
osd->osd_config.enable = !!ts.osd_enable;

software/sys_controller/inc/av_controller.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,13 @@ typedef struct {
135135
shmask_data_arr arr;
136136
} c_shmask_t;
137137

138+
typedef struct {
139+
char name[20];
140+
edid_t edid;
141+
} c_edid_t;
142+
143+
typedef int (*load_func)(char*, char*);
144+
138145
void ui_disp_menu(uint8_t osd_mode);
139146
void ui_disp_status(uint8_t refresh_osd_timer);
140147

@@ -167,4 +174,8 @@ int load_scl_coeffs(char *dirname, char *filename);
167174
void set_default_c_shmask();
168175
int load_shmask(char *dirname, char *filename);
169176

177+
void set_default_c_edid();
178+
int load_edid(char *dirname, char *filename);
179+
void set_custom_edid_reload();
180+
170181
#endif

software/sys_controller/inc/avconfig.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ typedef struct {
190190
uint8_t tp_mode;
191191
uint8_t audio_fmt;
192192
uint8_t audmux_sel;
193-
audinput_t audio_src_map[4];
193+
audinput_t audio_src_map[5];
194194
uint8_t exp_sel;
195195
uint8_t extra_av_out_mode;
196196
#ifdef INC_THS7353

software/sys_controller/inc/menu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ void cstm_position(menucode_id code, int setup_disp);
136136
void cstm_profile_load(menucode_id code, int setup_disp);
137137
void cstm_scl_alg_load(menucode_id code, int setup_disp);
138138
void cstm_shmask_load(menucode_id code, int setup_disp);
139+
void cstm_edid_load(menucode_id code, int setup_disp);
139140
void cstm_vm_stats(menucode_id code, int setup_disp);
140141
void cstm_listview(menucode_id code, int setup_disp);
141142
void enter_cstm(menuitem_t *item, int detached_mode);

software/sys_controller/ossc_pro_sw.project

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
<File Name="src/firmware.c"/>
4343
<File Name="src/scl_pp_coeffs.c"/>
4444
<File Name="src/shmask_arrays.c"/>
45+
<File Name="src/edid_presets.c"/>
4546
<File Name="src/file.c"/>
4647
<File Name="src/video_modes_list.c"/>
4748
<File Name="src/video_modes.c"/>

software/sys_controller/src/avconfig.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ const avconfig_t tc_default = {
6969
.syncmux_stc = 1,
7070
#endif
7171
#ifndef DExx_FW
72-
.audio_src_map = {AUD_AV1_ANALOG, AUD_AV2_ANALOG, AUD_AV3_ANALOG, AUD_AV4_DIGITAL},
72+
.audio_src_map = {AUD_AV1_ANALOG, AUD_AV2_ANALOG, AUD_AV3_ANALOG, AUD_AV4_DIGITAL, AUD_AV2_ANALOG},
7373
#else
74-
.audio_src_map = {AUD_AV1_ANALOG, 0, 0, 0},
74+
.audio_src_map = {AUD_AV1_ANALOG, 0, 0, 0, 0},
7575
#endif
7676
.extra_av_out_mode = 1,
7777
};
@@ -108,7 +108,7 @@ status_t update_avconfig() {
108108
if (tc.syncmux_stc != cc.syncmux_stc)
109109
set_syncmux_biasmode(tc.syncmux_stc);
110110
#endif
111-
if (memcmp(tc.audio_src_map, cc.audio_src_map, 4*sizeof(audinput_t)))
111+
if (memcmp(tc.audio_src_map, cc.audio_src_map, 5*sizeof(audinput_t)))
112112
switch_audsrc(tc.audio_src_map, &tc.hdmitx_cfg.audio_fmt);
113113

114114
memcpy(&cc, &tc, sizeof(avconfig_t));
@@ -152,6 +152,7 @@ int set_default_profile(int update_cc)
152152

153153
set_default_c_pp_coeffs();
154154
set_default_c_shmask();
155+
set_default_c_edid();
155156
set_default_vm_table();
156157

157158
return 0;
@@ -170,6 +171,10 @@ int load_profile() {
170171
if (retval == 0) {
171172
profile_sel = profile_sel_menu;
172173

174+
// enforce custom EDID update
175+
if (tc.hdmirx_cfg.edid_sel == 3)
176+
set_custom_edid_reload();
177+
173178
// Change the input if the new profile demands it.
174179
/*if (tc.link_av != AV_LAST)
175180
target_input = tc.link_av;
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// EDID for OSSC Pro
2+
3+
const edid_t pro_edid_default = {.data={
4+
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x36, 0x51, 0x5c, 0x05,
5+
0x15, 0xcd, 0x5b, 0x07, 0x0a, 0x1d, 0x01, 0x04, 0xa2, 0x3c, 0x22, 0x78,
6+
0xff, 0xde, 0x51, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, 0xff,
7+
0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
8+
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38,
9+
0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0x55, 0x50, 0x21, 0x00, 0x00, 0x1a,
10+
0x00, 0x00, 0x00, 0xff, 0x00, 0x32, 0x30, 0x35, 0x34, 0x38, 0x31, 0x32,
11+
0x35, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x2d,
12+
0x90, 0x0a, 0x96, 0x14, 0x01, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
13+
0x00, 0x00, 0x00, 0xfc, 0x00, 0x4f, 0x53, 0x53, 0x43, 0x20, 0x50, 0x72,
14+
0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x01, 0x46, 0x02, 0x03, 0x40, 0xf2,
15+
0x50, 0x9f, 0x90, 0x14, 0x05, 0x20, 0x13, 0x04, 0x12, 0x03, 0x11, 0x02,
16+
0x16, 0x07, 0x15, 0x06, 0x01, 0x29, 0x0f, 0x7f, 0x07, 0x17, 0x7f, 0xff,
17+
0x3f, 0x7f, 0xff, 0x83, 0x4f, 0x00, 0x00, 0x78, 0x03, 0x0c, 0x00, 0x10,
18+
0x00, 0x88, 0x26, 0x2f, 0x01, 0x01, 0x01, 0x01, 0xff, 0xfc, 0x06, 0x16,
19+
0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x05, 0x1f, 0x01,
20+
0x01, 0x1d, 0x80, 0xd0, 0x72, 0x1c, 0x16, 0x20, 0x10, 0x2c, 0x25, 0x80,
21+
0xba, 0x88, 0x21, 0x00, 0x00, 0x9e, 0x01, 0x1d, 0x80, 0x18, 0x71, 0x1c,
22+
0x16, 0x20, 0x58, 0x2c, 0x25, 0x00, 0xba, 0x88, 0x21, 0x00, 0x00, 0x9e,
23+
0x01, 0x1d, 0x00, 0xbc, 0x52, 0xd0, 0x1e, 0x20, 0xb8, 0x28, 0x55, 0x40,
24+
0xba, 0x88, 0x21, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0,
25+
0x1e, 0x20, 0x6e, 0x3c}, .len=256};
26+
27+
const edid_t pro_edid_2ch = {.data={
28+
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x36, 0x51, 0x5c, 0x05,
29+
0x15, 0xcd, 0x5b, 0x07, 0x0a, 0x1d, 0x01, 0x04, 0xa2, 0x3c, 0x22, 0x78,
30+
0xff, 0xde, 0x51, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, 0xff,
31+
0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
32+
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38,
33+
0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0x55, 0x50, 0x21, 0x00, 0x00, 0x1a,
34+
0x00, 0x00, 0x00, 0xff, 0x00, 0x32, 0x30, 0x35, 0x34, 0x38, 0x31, 0x32,
35+
0x35, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x2d,
36+
0x90, 0x0a, 0x96, 0x14, 0x01, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
37+
0x00, 0x00, 0x00, 0xfc, 0x00, 0x4f, 0x53, 0x53, 0x43, 0x20, 0x50, 0x72,
38+
0x6f, 0x20, 0x32, 0x63, 0x68, 0x0a, 0x01, 0xa9, 0x02, 0x03, 0x40, 0xf2,
39+
0x50, 0x9f, 0x90, 0x14, 0x05, 0x20, 0x13, 0x04, 0x12, 0x03, 0x11, 0x02,
40+
0x16, 0x07, 0x15, 0x06, 0x01, 0x29, 0x09, 0x06, 0x07, 0x17, 0x7f, 0xff,
41+
0x3f, 0x7f, 0xff, 0x83, 0x4f, 0x00, 0x00, 0x78, 0x03, 0x0c, 0x00, 0x10,
42+
0x00, 0x88, 0x26, 0x2f, 0x01, 0x01, 0x01, 0x01, 0xff, 0xfc, 0x06, 0x16,
43+
0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x05, 0x1f, 0x01,
44+
0x01, 0x1d, 0x80, 0xd0, 0x72, 0x1c, 0x16, 0x20, 0x10, 0x2c, 0x25, 0x80,
45+
0xba, 0x88, 0x21, 0x00, 0x00, 0x9e, 0x01, 0x1d, 0x80, 0x18, 0x71, 0x1c,
46+
0x16, 0x20, 0x58, 0x2c, 0x25, 0x00, 0xba, 0x88, 0x21, 0x00, 0x00, 0x9e,
47+
0x01, 0x1d, 0x00, 0xbc, 0x52, 0xd0, 0x1e, 0x20, 0xb8, 0x28, 0x55, 0x40,
48+
0xba, 0x88, 0x21, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0,
49+
0x1e, 0x20, 0x6e, 0xbb}, .len=256};
50+
51+
const edid_t pro_edid_dc10b = {.data={
52+
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x36, 0x51, 0x5c, 0x05,
53+
0x15, 0xcd, 0x5b, 0x07, 0x0a, 0x1d, 0x01, 0x04, 0xa2, 0x3c, 0x22, 0x78,
54+
0xff, 0xde, 0x51, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, 0xff,
55+
0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
56+
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38,
57+
0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0x55, 0x50, 0x21, 0x00, 0x00, 0x1a,
58+
0x00, 0x00, 0x00, 0xff, 0x00, 0x32, 0x30, 0x35, 0x34, 0x38, 0x31, 0x32,
59+
0x35, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x2d,
60+
0x90, 0x0a, 0x96, 0x14, 0x01, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
61+
0x00, 0x00, 0x00, 0xfc, 0x00, 0x4f, 0x53, 0x53, 0x43, 0x20, 0x50, 0x72,
62+
0x6f, 0x20, 0x44, 0x43, 0x0a, 0x20, 0x01, 0xff, 0x02, 0x03, 0x47, 0xf2,
63+
0x50, 0x9f, 0x90, 0x14, 0x05, 0x20, 0x13, 0x04, 0x12, 0x03, 0x11, 0x02,
64+
0x16, 0x07, 0x15, 0x06, 0x01, 0x29, 0x0f, 0x7f, 0x07, 0x17, 0x7f, 0xff,
65+
0x3f, 0x7f, 0xff, 0x83, 0x4f, 0x00, 0x00, 0x78, 0x03, 0x0c, 0x00, 0x10,
66+
0x00, 0x98, 0x2a, 0x2f, 0x01, 0x01, 0x01, 0x01, 0xff, 0xfc, 0x06, 0x16,
67+
0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x05, 0x1f, 0x01,
68+
0xe6, 0x06, 0x0d, 0x01, 0x65, 0x32, 0x02, 0x01, 0x1d, 0x80, 0xd0, 0x72,
69+
0x1c, 0x16, 0x20, 0x10, 0x2c, 0x25, 0x80, 0xba, 0x88, 0x21, 0x00, 0x00,
70+
0x9e, 0x01, 0x1d, 0x80, 0x18, 0x71, 0x1c, 0x16, 0x20, 0x58, 0x2c, 0x25,
71+
0x00, 0xba, 0x88, 0x21, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00,
72+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
73+
0x00, 0x00, 0x00, 0x1b}, .len=256};

0 commit comments

Comments
 (0)