Skip to content

Commit

Permalink
Horizon: Migrate wlan and stubs latest services (#5708)
Browse files Browse the repository at this point in the history
* Horizon: Migrate wlan and stubs latest services

This PR migrate empty wlan services, values are found by RE.
Latest firmwares added some other services which are now stubbed and up-to-date.

* Fix imports ordering
  • Loading branch information
AcK77 authored Sep 20, 2023
1 parent 44862dc commit fb55f57
Show file tree
Hide file tree
Showing 30 changed files with 238 additions and 56 deletions.
8 changes: 0 additions & 8 deletions src/Ryujinx.HLE/HOS/Services/Wlan/IInfraManager.cs

This file was deleted.

8 changes: 0 additions & 8 deletions src/Ryujinx.HLE/HOS/Services/Wlan/ILocalGetActionFrame.cs

This file was deleted.

8 changes: 0 additions & 8 deletions src/Ryujinx.HLE/HOS/Services/Wlan/ILocalGetFrame.cs

This file was deleted.

8 changes: 0 additions & 8 deletions src/Ryujinx.HLE/HOS/Services/Wlan/ILocalManager.cs

This file was deleted.

8 changes: 0 additions & 8 deletions src/Ryujinx.HLE/HOS/Services/Wlan/ISocketGetFrame.cs

This file was deleted.

8 changes: 0 additions & 8 deletions src/Ryujinx.HLE/HOS/Services/Wlan/ISocketManager.cs

This file was deleted.

8 changes: 0 additions & 8 deletions src/Ryujinx.HLE/HOS/Services/Wlan/IUnknown1.cs

This file was deleted.

8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/IDetectManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface IDetectManager : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/IGeneralServiceCreator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface IGeneralServiceCreator : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/IInfraManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface IInfraManager : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetActionFrame.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface ILocalGetActionFrame : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/ILocalGetFrame.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface ILocalGetFrame : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/ILocalManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface ILocalManager : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/IPrivateServiceCreator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface IPrivateServiceCreator : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/ISfDriverServiceCreator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface ISfDriverServiceCreator : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/ISocketGetFrame.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface ISocketGetFrame : IServiceObject
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Sdk/Wlan/ISocketManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Sf;

namespace Ryujinx.Horizon.Sdk.Wlan
{
interface ISocketManager : IServiceObject
{
}
}
2 changes: 2 additions & 0 deletions src/Ryujinx.Horizon/ServiceTable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Ryujinx.Horizon.LogManager;
using Ryujinx.Horizon.MmNv;
using Ryujinx.Horizon.Prepo;
using Ryujinx.Horizon.Wlan;
using System.Collections.Generic;
using System.Threading;

Expand All @@ -29,6 +30,7 @@ void RegisterService<T>() where T : IService
RegisterService<LmMain>();
RegisterService<MmNvMain>();
RegisterService<PrepoMain>();
RegisterService<WlanMain>();

_totalServices = entries.Count;

Expand Down
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/DetectManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class DetectManager : IDetectManager
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/GeneralServiceCreator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class GeneralServiceCreator : IGeneralServiceCreator
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/InfraManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class InfraManager : IInfraManager
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/LocalGetActionFrame.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class LocalGetActionFrame : ILocalGetActionFrame
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/LocalGetFrame.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class LocalGetFrame : ILocalGetFrame
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/LocalManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class LocalManager : ILocalManager
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/PrivateServiceCreator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class PrivateServiceCreator : IPrivateServiceCreator
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/SfDriverServiceCreator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class SfDriverServiceCreator : ISfDriverServiceCreator
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/SocketGetFrame.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class SocketGetFrame : ISocketGetFrame
{
}
}
8 changes: 8 additions & 0 deletions src/Ryujinx.Horizon/Wlan/Ipc/SocketManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Ryujinx.Horizon.Sdk.Wlan;

namespace Ryujinx.Horizon.Wlan.Ipc
{
partial class SocketManager : ISocketManager
{
}
}
59 changes: 59 additions & 0 deletions src/Ryujinx.Horizon/Wlan/WlanIpcServer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
using Ryujinx.Horizon.Sdk.Sf.Hipc;
using Ryujinx.Horizon.Sdk.Sm;
using Ryujinx.Horizon.Wlan.Ipc;

namespace Ryujinx.Horizon.Wlan
{
class WlanIpcServer
{
private const int WlanOtherMaxSessionsCount = 10;
private const int WlanDtcMaxSessionsCount = 4;
private const int WlanMaxSessionsCount = 30;
private const int WlanNdMaxSessionsCount = 5;
private const int WlanPMaxSessionsCount = 30;
private const int TotalMaxSessionsCount = WlanDtcMaxSessionsCount + WlanMaxSessionsCount + WlanNdMaxSessionsCount + WlanPMaxSessionsCount + WlanOtherMaxSessionsCount * 6;

private const int PointerBufferSize = 0x1000;
private const int MaxDomains = 16;
private const int MaxDomainObjects = 10;
private const int MaxPortsCount = 10;

private static readonly ManagerOptions _options = new(PointerBufferSize, MaxDomains, MaxDomainObjects, false);

private SmApi _sm;
private ServerManager _serverManager;

public void Initialize()
{
HeapAllocator allocator = new();

_sm = new SmApi();
_sm.Initialize().AbortOnFailure();

_serverManager = new ServerManager(allocator, _sm, MaxPortsCount, _options, TotalMaxSessionsCount);

#pragma warning disable IDE0055 // Disable formatting
_serverManager.RegisterObjectForServer(new GeneralServiceCreator(), ServiceName.Encode("wlan"), WlanMaxSessionsCount); // 15.0.0+
_serverManager.RegisterObjectForServer(new DetectManager(), ServiceName.Encode("wlan:dtc"), WlanDtcMaxSessionsCount); // 6.0.0-14.1.2
_serverManager.RegisterObjectForServer(new InfraManager(), ServiceName.Encode("wlan:inf"), WlanOtherMaxSessionsCount); // 1.0.0-14.1.2
_serverManager.RegisterObjectForServer(new LocalManager(), ServiceName.Encode("wlan:lcl"), WlanOtherMaxSessionsCount); // 1.0.0-14.1.2
_serverManager.RegisterObjectForServer(new LocalGetFrame(), ServiceName.Encode("wlan:lg"), WlanOtherMaxSessionsCount); // 1.0.0-14.1.2
_serverManager.RegisterObjectForServer(new LocalGetActionFrame(), ServiceName.Encode("wlan:lga"), WlanOtherMaxSessionsCount); // 1.0.0-14.1.2
_serverManager.RegisterObjectForServer(new SfDriverServiceCreator(), ServiceName.Encode("wlan:nd"), WlanNdMaxSessionsCount); // 15.0.0+
_serverManager.RegisterObjectForServer(new PrivateServiceCreator(), ServiceName.Encode("wlan:p"), WlanPMaxSessionsCount); // 15.0.0+
_serverManager.RegisterObjectForServer(new SocketGetFrame(), ServiceName.Encode("wlan:sg"), WlanOtherMaxSessionsCount); // 1.0.0-14.1.2
_serverManager.RegisterObjectForServer(new SocketManager(), ServiceName.Encode("wlan:soc"), WlanOtherMaxSessionsCount); // 1.0.0-14.1.2
#pragma warning restore IDE0055
}

public void ServiceRequests()
{
_serverManager.ServiceRequests();
}

public void Shutdown()
{
_serverManager.Dispose();
}
}
}
17 changes: 17 additions & 0 deletions src/Ryujinx.Horizon/Wlan/WlanMain.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
namespace Ryujinx.Horizon.Wlan
{
class WlanMain : IService
{
public static void Main(ServiceTable serviceTable)
{
WlanIpcServer ipcServer = new();

ipcServer.Initialize();

serviceTable.SignalServiceReady();

ipcServer.ServiceRequests();
ipcServer.Shutdown();
}
}
}

0 comments on commit fb55f57

Please sign in to comment.