diff --git a/src/core/hle/service/nwm/nwm_uds.cpp b/src/core/hle/service/nwm/nwm_uds.cpp index 0c52c25607..20b46e6d6f 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(-1); - return; } { @@ -591,7 +588,7 @@ void NWM_UDS::InitializeWithVersion(Kernel::HLERequestContext& ctx) { connection_status = {}; connection_status.status = static_cast(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 lock(connection_status_mutex); if (connection_status.status != static_cast(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(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 ff9e20b735..934cec30ab 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();