mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-28 18:12:44 -06:00
UDS: divide IPC and impl for InitializeWithVersion
This commit is contained in:
parent
acaca4188e
commit
021c77bc9f
2 changed files with 23 additions and 13 deletions
|
@ -615,20 +615,14 @@ void NWM_UDS::RecvBeaconBroadcastData(Kernel::HLERequestContext& ctx) {
|
|||
out_buffer_size, wlan_comm_id, id, unk1, unk2, cur_buffer_size);
|
||||
}
|
||||
|
||||
void NWM_UDS::InitializeWithVersion(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x1B, 12, 2);
|
||||
|
||||
u32 sharedmem_size = rp.Pop<u32>();
|
||||
|
||||
// Update the node information with the data the game gave us.
|
||||
rp.PopRaw(current_node);
|
||||
|
||||
u16 version = rp.Pop<u16>();
|
||||
|
||||
recv_buffer_memory = rp.PopObject<Kernel::SharedMemory>();
|
||||
ResultVal<Kernel::SharedPtr<Kernel::Event>> NWM_UDS::Initialize(
|
||||
u32 sharedmem_size, const NodeInfo& node, u16 version,
|
||||
Kernel::SharedPtr<Kernel::SharedMemory> sharedmem) {
|
||||
|
||||
current_node = node;
|
||||
initialized = true;
|
||||
|
||||
recv_buffer_memory = std::move(sharedmem);
|
||||
ASSERT_MSG(recv_buffer_memory->GetSize() == sharedmem_size, "Invalid shared memory size.");
|
||||
|
||||
if (auto room_member = Network::GetRoomMember().lock()) {
|
||||
|
@ -650,9 +644,21 @@ void NWM_UDS::InitializeWithVersion(Kernel::HLERequestContext& ctx) {
|
|||
channel_data.clear();
|
||||
}
|
||||
|
||||
return MakeResult(connection_status_event);
|
||||
}
|
||||
|
||||
void NWM_UDS::InitializeWithVersion(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x1B, 12, 2);
|
||||
u32 sharedmem_size = rp.Pop<u32>();
|
||||
auto node = rp.PopRaw<NodeInfo>();
|
||||
u16 version = rp.Pop<u16>();
|
||||
auto sharedmem = rp.PopObject<Kernel::SharedMemory>();
|
||||
|
||||
auto result = Initialize(sharedmem_size, node, version, std::move(sharedmem));
|
||||
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(1, 2);
|
||||
rb.Push(RESULT_SUCCESS);
|
||||
rb.PushCopyObjects(connection_status_event);
|
||||
rb.Push(result.Code());
|
||||
rb.PushCopyObjects(result.ValueOr(nullptr));
|
||||
|
||||
LOG_DEBUG(Service_NWM, "called sharedmem_size=0x{:08X}, version=0x{:08X}", sharedmem_size,
|
||||
version);
|
||||
|
|
|
@ -369,6 +369,10 @@ private:
|
|||
*/
|
||||
void DecryptBeaconData(Kernel::HLERequestContext& ctx);
|
||||
|
||||
ResultVal<Kernel::SharedPtr<Kernel::Event>> Initialize(
|
||||
u32 sharedmem_size, const NodeInfo& node, u16 version,
|
||||
Kernel::SharedPtr<Kernel::SharedMemory> sharedmem);
|
||||
|
||||
void BeaconBroadcastCallback(u64 userdata, s64 cycles_late);
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue