Merge pull request #2969 from mailwl/ptm_step
Service/PTM: Stub GetStepHistory function
This commit is contained in:
commit
5eabe60aa3
6 changed files with 46 additions and 12 deletions
|
@ -30,7 +30,7 @@ static bool battery_is_charging;
|
||||||
|
|
||||||
static bool pedometer_is_counting;
|
static bool pedometer_is_counting;
|
||||||
|
|
||||||
void GetAdapterState(Service::Interface* self) {
|
void GetAdapterState(Interface* self) {
|
||||||
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x5, 0, 0);
|
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x5, 0, 0);
|
||||||
|
|
||||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
||||||
|
@ -40,7 +40,7 @@ void GetAdapterState(Service::Interface* self) {
|
||||||
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetShellState(Service::Interface* self) {
|
void GetShellState(Interface* self) {
|
||||||
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x6, 0, 0);
|
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x6, 0, 0);
|
||||||
|
|
||||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
||||||
|
@ -48,7 +48,7 @@ void GetShellState(Service::Interface* self) {
|
||||||
rb.Push(shell_open);
|
rb.Push(shell_open);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetBatteryLevel(Service::Interface* self) {
|
void GetBatteryLevel(Interface* self) {
|
||||||
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x7, 0, 0);
|
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x7, 0, 0);
|
||||||
|
|
||||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
||||||
|
@ -58,7 +58,7 @@ void GetBatteryLevel(Service::Interface* self) {
|
||||||
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetBatteryChargeState(Service::Interface* self) {
|
void GetBatteryChargeState(Interface* self) {
|
||||||
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x8, 0, 0);
|
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x8, 0, 0);
|
||||||
|
|
||||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
||||||
|
@ -68,7 +68,7 @@ void GetBatteryChargeState(Service::Interface* self) {
|
||||||
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetPedometerState(Service::Interface* self) {
|
void GetPedometerState(Interface* self) {
|
||||||
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x9, 0, 0);
|
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x9, 0, 0);
|
||||||
|
|
||||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
||||||
|
@ -78,7 +78,29 @@ void GetPedometerState(Service::Interface* self) {
|
||||||
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetTotalStepCount(Service::Interface* self) {
|
void GetStepHistory(Interface* self) {
|
||||||
|
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0xB, 3, 2);
|
||||||
|
|
||||||
|
u32 hours = rp.Pop<u32>();
|
||||||
|
u64 start_time = rp.Pop<u64>();
|
||||||
|
size_t steps_buff_size;
|
||||||
|
const VAddr steps_buff_addr = rp.PopMappedBuffer(&steps_buff_size);
|
||||||
|
ASSERT_MSG(sizeof(u16) * hours == steps_buff_size, "Buffer for steps count has incorrect size");
|
||||||
|
|
||||||
|
// Stub: set zero steps count for every hour
|
||||||
|
for (u32 i = 0; i < hours; ++i) {
|
||||||
|
const u16 steps_per_hour = 0;
|
||||||
|
Memory::Write16(steps_buff_addr + i * sizeof(u16), steps_per_hour);
|
||||||
|
}
|
||||||
|
|
||||||
|
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
|
||||||
|
LOG_WARNING(Service_PTM, "(STUBBED) called, from time(raw): 0x%llx, for %d hours", start_time,
|
||||||
|
hours);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GetTotalStepCount(Interface* self) {
|
||||||
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0xC, 0, 0);
|
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0xC, 0, 0);
|
||||||
|
|
||||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
||||||
|
@ -88,7 +110,7 @@ void GetTotalStepCount(Service::Interface* self) {
|
||||||
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
LOG_WARNING(Service_PTM, "(STUBBED) called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void GetSoftwareClosedFlag(Service::Interface* self) {
|
void GetSoftwareClosedFlag(Interface* self) {
|
||||||
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x80F, 0, 0);
|
IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x80F, 0, 0);
|
||||||
|
|
||||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
|
||||||
|
@ -112,7 +134,7 @@ void CheckNew3DS(IPC::RequestBuilder& rb) {
|
||||||
LOG_WARNING(Service_PTM, "(STUBBED) called isNew3DS = 0x%08x", static_cast<u32>(is_new_3ds));
|
LOG_WARNING(Service_PTM, "(STUBBED) called isNew3DS = 0x%08x", static_cast<u32>(is_new_3ds));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckNew3DS(Service::Interface* self) {
|
void CheckNew3DS(Interface* self) {
|
||||||
IPC::RequestBuilder rb(Kernel::GetCommandBuffer(), 0x40A, 0, 0); // 0x040A0000
|
IPC::RequestBuilder rb(Kernel::GetCommandBuffer(), 0x40A, 0, 0); // 0x040A0000
|
||||||
CheckNew3DS(rb);
|
CheckNew3DS(rb);
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,6 +82,18 @@ void GetBatteryChargeState(Interface* self);
|
||||||
*/
|
*/
|
||||||
void GetPedometerState(Interface* self);
|
void GetPedometerState(Interface* self);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PTM::GetStepHistory service function
|
||||||
|
* Inputs:
|
||||||
|
* 1 : Number of hours
|
||||||
|
* 2-3 : Start time
|
||||||
|
* 4 : Buffer mapping descriptor
|
||||||
|
* 5 : (short*) Buffer for step counts
|
||||||
|
* Outputs:
|
||||||
|
* 1 : Result of function, 0 on success, otherwise error code
|
||||||
|
*/
|
||||||
|
void GetStepHistory(Interface* self);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PTM::GetTotalStepCount service function
|
* PTM::GetTotalStepCount service function
|
||||||
* Outputs:
|
* Outputs:
|
||||||
|
|
|
@ -20,7 +20,7 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||||
{0x00080000, GetBatteryChargeState, "GetBatteryChargeState"},
|
{0x00080000, GetBatteryChargeState, "GetBatteryChargeState"},
|
||||||
{0x00090000, nullptr, "GetPedometerState"},
|
{0x00090000, nullptr, "GetPedometerState"},
|
||||||
{0x000A0042, nullptr, "GetStepHistoryEntry"},
|
{0x000A0042, nullptr, "GetStepHistoryEntry"},
|
||||||
{0x000B00C2, nullptr, "GetStepHistory"},
|
{0x000B00C2, GetStepHistory, "GetStepHistory"},
|
||||||
{0x000C0000, GetTotalStepCount, "GetTotalStepCount"},
|
{0x000C0000, GetTotalStepCount, "GetTotalStepCount"},
|
||||||
{0x000D0040, nullptr, "SetPedometerRecordingMode"},
|
{0x000D0040, nullptr, "SetPedometerRecordingMode"},
|
||||||
{0x000E0000, nullptr, "GetPedometerRecordingMode"},
|
{0x000E0000, nullptr, "GetPedometerRecordingMode"},
|
||||||
|
|
|
@ -20,7 +20,7 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||||
{0x00080000, GetBatteryChargeState, "GetBatteryChargeState"},
|
{0x00080000, GetBatteryChargeState, "GetBatteryChargeState"},
|
||||||
{0x00090000, nullptr, "GetPedometerState"},
|
{0x00090000, nullptr, "GetPedometerState"},
|
||||||
{0x000A0042, nullptr, "GetStepHistoryEntry"},
|
{0x000A0042, nullptr, "GetStepHistoryEntry"},
|
||||||
{0x000B00C2, nullptr, "GetStepHistory"},
|
{0x000B00C2, GetStepHistory, "GetStepHistory"},
|
||||||
{0x000C0000, GetTotalStepCount, "GetTotalStepCount"},
|
{0x000C0000, GetTotalStepCount, "GetTotalStepCount"},
|
||||||
{0x000D0040, nullptr, "SetPedometerRecordingMode"},
|
{0x000D0040, nullptr, "SetPedometerRecordingMode"},
|
||||||
{0x000E0000, nullptr, "GetPedometerRecordingMode"},
|
{0x000E0000, nullptr, "GetPedometerRecordingMode"},
|
||||||
|
|
|
@ -20,7 +20,7 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||||
{0x00080000, GetBatteryChargeState, "GetBatteryChargeState"},
|
{0x00080000, GetBatteryChargeState, "GetBatteryChargeState"},
|
||||||
{0x00090000, nullptr, "GetPedometerState"},
|
{0x00090000, nullptr, "GetPedometerState"},
|
||||||
{0x000A0042, nullptr, "GetStepHistoryEntry"},
|
{0x000A0042, nullptr, "GetStepHistoryEntry"},
|
||||||
{0x000B00C2, nullptr, "GetStepHistory"},
|
{0x000B00C2, GetStepHistory, "GetStepHistory"},
|
||||||
{0x000C0000, GetTotalStepCount, "GetTotalStepCount"},
|
{0x000C0000, GetTotalStepCount, "GetTotalStepCount"},
|
||||||
{0x000D0040, nullptr, "SetPedometerRecordingMode"},
|
{0x000D0040, nullptr, "SetPedometerRecordingMode"},
|
||||||
{0x000E0000, nullptr, "GetPedometerRecordingMode"},
|
{0x000E0000, nullptr, "GetPedometerRecordingMode"},
|
||||||
|
|
|
@ -19,7 +19,7 @@ const Interface::FunctionInfo FunctionTable[] = {
|
||||||
{0x00080000, GetBatteryChargeState, "GetBatteryChargeState"},
|
{0x00080000, GetBatteryChargeState, "GetBatteryChargeState"},
|
||||||
{0x00090000, GetPedometerState, "GetPedometerState"},
|
{0x00090000, GetPedometerState, "GetPedometerState"},
|
||||||
{0x000A0042, nullptr, "GetStepHistoryEntry"},
|
{0x000A0042, nullptr, "GetStepHistoryEntry"},
|
||||||
{0x000B00C2, nullptr, "GetStepHistory"},
|
{0x000B00C2, GetStepHistory, "GetStepHistory"},
|
||||||
{0x000C0000, GetTotalStepCount, "GetTotalStepCount"},
|
{0x000C0000, GetTotalStepCount, "GetTotalStepCount"},
|
||||||
{0x000D0040, nullptr, "SetPedometerRecordingMode"},
|
{0x000D0040, nullptr, "SetPedometerRecordingMode"},
|
||||||
{0x000E0000, nullptr, "GetPedometerRecordingMode"},
|
{0x000E0000, nullptr, "GetPedometerRecordingMode"},
|
||||||
|
|
Loading…
Reference in a new issue