UDS: divide IPC and impl for InitializeWithVersion
This commit is contained in:
parent
acaca4188e
commit
021c77bc9f
|
@ -615,20 +615,14 @@ void NWM_UDS::RecvBeaconBroadcastData(Kernel::HLERequestContext& ctx) {
|
||||||
out_buffer_size, wlan_comm_id, id, unk1, unk2, cur_buffer_size);
|
out_buffer_size, wlan_comm_id, id, unk1, unk2, cur_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NWM_UDS::InitializeWithVersion(Kernel::HLERequestContext& ctx) {
|
ResultVal<Kernel::SharedPtr<Kernel::Event>> NWM_UDS::Initialize(
|
||||||
IPC::RequestParser rp(ctx, 0x1B, 12, 2);
|
u32 sharedmem_size, const NodeInfo& node, u16 version,
|
||||||
|
Kernel::SharedPtr<Kernel::SharedMemory> sharedmem) {
|
||||||
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>();
|
|
||||||
|
|
||||||
|
current_node = node;
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
|
||||||
|
recv_buffer_memory = std::move(sharedmem);
|
||||||
ASSERT_MSG(recv_buffer_memory->GetSize() == sharedmem_size, "Invalid shared memory size.");
|
ASSERT_MSG(recv_buffer_memory->GetSize() == sharedmem_size, "Invalid shared memory size.");
|
||||||
|
|
||||||
if (auto room_member = Network::GetRoomMember().lock()) {
|
if (auto room_member = Network::GetRoomMember().lock()) {
|
||||||
|
@ -650,9 +644,21 @@ void NWM_UDS::InitializeWithVersion(Kernel::HLERequestContext& ctx) {
|
||||||
channel_data.clear();
|
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);
|
IPC::RequestBuilder rb = rp.MakeBuilder(1, 2);
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(result.Code());
|
||||||
rb.PushCopyObjects(connection_status_event);
|
rb.PushCopyObjects(result.ValueOr(nullptr));
|
||||||
|
|
||||||
LOG_DEBUG(Service_NWM, "called sharedmem_size=0x{:08X}, version=0x{:08X}", sharedmem_size,
|
LOG_DEBUG(Service_NWM, "called sharedmem_size=0x{:08X}, version=0x{:08X}", sharedmem_size,
|
||||||
version);
|
version);
|
||||||
|
|
|
@ -369,6 +369,10 @@ private:
|
||||||
*/
|
*/
|
||||||
void DecryptBeaconData(Kernel::HLERequestContext& ctx);
|
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);
|
void BeaconBroadcastCallback(u64 userdata, s64 cycles_late);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Reference in New Issue