From 27e6e03d163e126ae7bb4e121d237e5641e3b285 Mon Sep 17 00:00:00 2001
From: B3n30 <benediktthomas@gmail.com>
Date: Tue, 16 Jan 2018 21:23:19 +0100
Subject: [PATCH] Fixups from Subvs comments

---
 src/core/hle/service/nwm/nwm_uds.cpp | 15 +++++++--------
 src/core/hle/service/service.cpp     |  1 -
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/src/core/hle/service/nwm/nwm_uds.cpp b/src/core/hle/service/nwm/nwm_uds.cpp
index 0c52c2560..20b46e6d6 100644
--- a/src/core/hle/service/nwm/nwm_uds.cpp
+++ b/src/core/hle/service/nwm/nwm_uds.cpp
@@ -32,6 +32,7 @@ namespace NWM {
 namespace ErrCodes {
 enum {
     NotInitialized = 2,
+    WrongStatus = 490,
 };
 } // namespace ErrCodes
 
@@ -577,10 +578,6 @@ void NWM_UDS::InitializeWithVersion(Kernel::HLERequestContext& ctx) {
         wifi_packet_received = room_member->BindOnWifiPacketReceived(OnWifiPacketReceived);
     } else {
         LOG_ERROR(Service_NWM, "Network isn't initalized");
-        IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
-        // TODO(B3N30): Find the correct error code and return it;
-        rb.Push<u32>(-1);
-        return;
     }
 
     {
@@ -591,7 +588,7 @@ void NWM_UDS::InitializeWithVersion(Kernel::HLERequestContext& ctx) {
         connection_status = {};
         connection_status.status = static_cast<u32>(NetworkStatus::NotConnected);
         node_info.clear();
-        node_info.push_back(NodeInfo{});
+        node_info.push_back(current_node);
     }
 
     IPC::RequestBuilder rb = rp.MakeBuilder(1, 2);
@@ -828,7 +825,8 @@ void NWM_UDS::DestroyNetwork(Kernel::HLERequestContext& ctx) {
     std::lock_guard<std::mutex> lock(connection_status_mutex);
     if (connection_status.status != static_cast<u8>(NetworkStatus::ConnectedAsHost)) {
         IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
-        rb.Push(RESULT_SUCCESS);
+        rb.Push(ResultCode(ErrCodes::WrongStatus, ErrorModule::UDS,
+                           ErrorSummary::InvalidState, ErrorLevel::Status));
         LOG_WARNING(Service_NWM, "called with status %u", connection_status.status);
         return;
     }
@@ -857,7 +855,6 @@ void NWM_UDS::DestroyNetwork(Kernel::HLERequestContext& ctx) {
 void NWM_UDS::DisconnectNetwork(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp(ctx, 0xA, 0, 0);
     IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
-    rb.Push(RESULT_SUCCESS);
 
     using Network::WifiPacket;
     WifiPacket deauth;
@@ -870,6 +867,8 @@ void NWM_UDS::DisconnectNetwork(Kernel::HLERequestContext& ctx) {
             connection_status.status = static_cast<u32>(NetworkStatus::ConnectedAsHost);
             connection_status.network_node_id = tmp_node_id;
             LOG_DEBUG(Service_NWM, "called as a host");
+            rb.Push(ResultCode(ErrCodes::WrongStatus, ErrorModule::UDS,
+                               ErrorSummary::InvalidState, ErrorLevel::Status));
             return;
         }
         u16_le tmp_node_id = connection_status.network_node_id;
@@ -893,6 +892,7 @@ void NWM_UDS::DisconnectNetwork(Kernel::HLERequestContext& ctx) {
     }
     channel_data.clear();
 
+    rb.Push(RESULT_SUCCESS);
     LOG_DEBUG(Service_NWM, "called");
 }
 
@@ -1070,7 +1070,6 @@ void NWM_UDS::ConnectToNetwork(Kernel::HLERequestContext& ctx) {
             LOG_DEBUG(Service_NWM, "connection sequence finished");
         });
 
-    // TODO(B3N30): Add a timout for the connection sequence
     LOG_DEBUG(Service_NWM, "called");
 }
 
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index ff9e20b73..934cec30a 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -266,7 +266,6 @@ void Init() {
     LDR::InstallInterfaces(*SM::g_service_manager);
     MIC::InstallInterfaces(*SM::g_service_manager);
     NWM::InstallInterfaces(*SM::g_service_manager);
-    NWM::InstallInterfaces(*SM::g_service_manager);
 
     FS::ArchiveInit();
     ACT::Init();