MCPcopy Create free account
hub / github.com/RPCSX/rpcsx / execute

Method execute

kernel/cellos/src/sys_uart.cpp:81–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79 }
80
81 void execute(vuart_av_thread &vuart, const void *pkt_buf) override {
82 const auto pkt = static_cast<const ps3av_get_monitor_info *>(pkt_buf);
83
84 if (vuart.get_reply_buf_free_size() < sizeof(ps3av_pkt_reply_hdr)) {
85 vuart.write_resp(pkt->hdr.cid, PS3AV_STATUS_BUFFER_OVERFLOW);
86 return;
87 }
88
89 ps3av_get_monitor_info_reply cfg{};
90
91 if (pkt->avport == static_cast<u16>(UartAudioAvport::AVMULTI_0)) {
92 cfg.avport = static_cast<u8>(UartAudioAvport::AVMULTI_0);
93 cfg.monitor_type = PS3AV_MONITOR_TYPE_AVMULTI;
94 cfg.res_60.res_bits = UINT32_MAX;
95 cfg.res_50.res_bits = UINT32_MAX;
96 cfg.res_vesa.res_bits = UINT32_MAX;
97 cfg.cs.rgb = PS3AV_CS_SUPPORTED;
98 cfg.cs.yuv444 = PS3AV_CS_SUPPORTED;
99 cfg.cs.yuv422 = PS3AV_CS_SUPPORTED;
100 cfg.speaker_info = 1;
101 cfg.num_of_audio_block = 1;
102 cfg.audio_info[0].sbit = 7;
103 cfg.audio_info[0].max_num_of_ch = 2;
104 cfg.audio_info[0].type = PS3AV_MON_INFO_AUDIO_TYPE_LPCM;
105 cfg.audio_info[0].fs = 127;
106
107 vuart.write_resp(pkt->hdr.cid, PS3AV_STATUS_SUCCESS, &cfg,
108 sizeof(ps3av_get_monitor_info_reply));
109 } else if (pkt->avport <= static_cast<u16>(UartAudioAvport::HDMI_1)) {
110 if (pkt->avport == static_cast<u16>(UartAudioAvport::HDMI_1) &&
111 !g_cfg.core.debug_console_mode) {
112 vuart.write_resp<true>(pkt->hdr.cid,
113 PS3AV_STATUS_SYSCON_COMMUNICATE_FAIL);
114 return;
115 }
116
117 set_hdmi_display_cfg(vuart, cfg, static_cast<u8>(pkt->avport));
118
119 vuart.write_resp<true>(pkt->hdr.cid, PS3AV_STATUS_SUCCESS, &cfg,
120 sizeof(ps3av_get_monitor_info_reply) -
121 4); // Length is different for some reason
122 } else {
123 vuart.write_resp(pkt->hdr.cid, PS3AV_STATUS_INVALID_PORT);
124 }
125 }
126
127 static void set_hdmi_display_cfg(vuart_av_thread &vuart,
128 ps3av_get_monitor_info_reply &cfg,

Callers

nothing calls this directly

Calls 2

write_respMethod · 0.80

Tested by

no test coverage detected