Implement IApplicationFunctions & IQueryService commands (#823)

* Implement IApplicationFunctions & IQueryService commands

- Fix some nits in `IApplicationFunctions`
- Implement `QueryApplicationPlayStatistics` and `QueryApplicationPlayStatisticsByUid` checked by RE.
- Implement `QueryApplicationPlayStatisticsForSystem` and `QueryApplicationPlayStatisticsByUserAccountIdForSystem` checked by RE.
- Implement `QueryPlayStatisticsManager` to get/set played games statistics. We currently don't store any statistics because it's handled by qlaunch (or maybe am service?) on Switch.
We can add support later if games use returned statistics for something.

* Fix reviews
This commit is contained in:
Ac_K 2019-11-15 01:25:22 +01:00 committed by Thog
parent b9ae0b09d9
commit 79abc6ed93
7 changed files with 162 additions and 12 deletions

View file

@ -1,8 +1,24 @@
namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm
using Ryujinx.HLE.HOS.Services.Sdb.Pdm.QueryService;
namespace Ryujinx.HLE.HOS.Services.Sdb.Pdm
{
[Service("pdm:qry")]
class IQueryService : IpcService
{
public IQueryService(ServiceCtx context) { }
[Command(13)] // 5.0.0+
// QueryApplicationPlayStatisticsForSystem(buffer<bytes, 5> title_id_list) -> (buffer<bytes, 6> entries, s32 entries_count)
public ResultCode QueryApplicationPlayStatisticsForSystem(ServiceCtx context)
{
return QueryPlayStatisticsManager.GetPlayStatistics(context);
}
[Command(16)] // 6.0.0+
// QueryApplicationPlayStatisticsByUserAccountIdForSystem(nn::account::Uid, buffer<bytes, 5> title_id_list) -> (buffer<bytes, 6> entries, s32 entries_count)
public ResultCode QueryApplicationPlayStatisticsByUserAccountIdForSystem(ServiceCtx context)
{
return QueryPlayStatisticsManager.GetPlayStatistics(context, true);
}
}
}