mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00: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…
	
	Add table
		Add a link
		
	
		Reference in a new issue