hle: Remove a large amount of 3ds-specific service code.

This commit is contained in:
bunnei 2017-10-10 17:32:14 -04:00
parent b1d5db1cf6
commit 0906de9a14
200 changed files with 1 additions and 22392 deletions

View file

@ -1,145 +0,0 @@
// Copyright 2016 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/hle/ipc.h"
#include "core/hle/kernel/event.h"
#include "core/hle/kernel/handle_table.h"
#include "core/hle/service/nfc/nfc.h"
#include "core/hle/service/nfc/nfc_m.h"
#include "core/hle/service/nfc/nfc_u.h"
namespace Service {
namespace NFC {
static Kernel::SharedPtr<Kernel::Event> tag_in_range_event;
static Kernel::SharedPtr<Kernel::Event> tag_out_of_range_event;
static TagState nfc_tag_state = TagState::NotInitialized;
static CommunicationStatus nfc_status = CommunicationStatus::NfcInitialized;
void Initialize(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
u8 param = static_cast<u8>(cmd_buff[1] & 0xFF);
nfc_tag_state = TagState::NotScanning;
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
LOG_WARNING(Service_NFC, "(STUBBED) called, param=%u", param);
}
void Shutdown(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
u8 param = static_cast<u8>(cmd_buff[1] & 0xFF);
nfc_tag_state = TagState::NotInitialized;
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
LOG_WARNING(Service_NFC, "(STUBBED) called, param=%u", param);
}
void StartCommunication(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
LOG_WARNING(Service_NFC, "(STUBBED) called");
}
void StopCommunication(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
LOG_WARNING(Service_NFC, "(STUBBED) called");
}
void StartTagScanning(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
nfc_tag_state = TagState::TagInRange;
tag_in_range_event->Signal();
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
LOG_WARNING(Service_NFC, "(STUBBED) called");
}
void StopTagScanning(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
nfc_tag_state = TagState::NotScanning;
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
LOG_WARNING(Service_NFC, "(STUBBED) called");
}
void LoadAmiiboData(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
nfc_tag_state = TagState::TagDataLoaded;
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
LOG_WARNING(Service_NFC, "(STUBBED) called");
}
void ResetTagScanState(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
nfc_tag_state = TagState::NotScanning;
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
LOG_WARNING(Service_NFC, "(STUBBED) called");
}
void GetTagInRangeEvent(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
cmd_buff[0] = IPC::MakeHeader(0xB, 1, 2);
cmd_buff[1] = RESULT_SUCCESS.raw;
cmd_buff[2] = IPC::CopyHandleDesc();
cmd_buff[3] = Kernel::g_handle_table.Create(tag_in_range_event).Unwrap();
LOG_WARNING(Service_NFC, "(STUBBED) called");
}
void GetTagOutOfRangeEvent(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
cmd_buff[0] = IPC::MakeHeader(0xC, 1, 2);
cmd_buff[1] = RESULT_SUCCESS.raw;
cmd_buff[2] = IPC::CopyHandleDesc();
cmd_buff[3] = Kernel::g_handle_table.Create(tag_out_of_range_event).Unwrap();
LOG_WARNING(Service_NFC, "(STUBBED) called");
}
void GetTagState(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
cmd_buff[2] = static_cast<u8>(nfc_tag_state);
LOG_DEBUG(Service_NFC, "(STUBBED) called");
}
void CommunicationGetStatus(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
cmd_buff[2] = static_cast<u8>(nfc_status);
LOG_DEBUG(Service_NFC, "(STUBBED) called");
}
void Init() {
AddService(new NFC_M());
AddService(new NFC_U());
tag_in_range_event =
Kernel::Event::Create(Kernel::ResetType::OneShot, "NFC::tag_in_range_event");
tag_out_of_range_event =
Kernel::Event::Create(Kernel::ResetType::OneShot, "NFC::tag_out_range_event");
nfc_tag_state = TagState::NotInitialized;
}
void Shutdown() {
tag_in_range_event = nullptr;
tag_out_of_range_event = nullptr;
}
} // namespace NFC
} // namespace Service

View file

@ -1,153 +0,0 @@
// Copyright 2016 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include "common/common_types.h"
namespace Service {
class Interface;
namespace NFC {
enum class TagState : u8 {
NotInitialized = 0,
NotScanning = 1,
Scanning = 2,
TagInRange = 3,
TagOutOfRange = 4,
TagDataLoaded = 5,
};
enum class CommunicationStatus : u8 {
AttemptInitialize = 1,
NfcInitialized = 2,
};
/**
* NFC::Initialize service function
* Inputs:
* 0 : Header code [0x00010040]
* 1 : (u8) unknown parameter. Can be either value 0x1 or 0x2
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
*/
void Initialize(Interface* self);
/**
* NFC::Shutdown service function
* Inputs:
* 0 : Header code [0x00020040]
* 1 : (u8) unknown parameter
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
*/
void Shutdown(Interface* self);
/**
* NFC::StartCommunication service function
* Inputs:
* 0 : Header code [0x00030000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
*/
void StartCommunication(Interface* self);
/**
* NFC::StopCommunication service function
* Inputs:
* 0 : Header code [0x00040000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
*/
void StopCommunication(Interface* self);
/**
* NFC::StartTagScanning service function
* Inputs:
* 0 : Header code [0x00050040]
* 1 : (u16) unknown. This is normally 0x0
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
*/
void StartTagScanning(Interface* self);
/**
* NFC::StopTagScanning service function
* Inputs:
* 0 : Header code [0x00060000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
*/
void StopTagScanning(Interface* self);
/**
* NFC::LoadAmiiboData service function
* Inputs:
* 0 : Header code [0x00070000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
*/
void LoadAmiiboData(Interface* self);
/**
* NFC::ResetTagScanState service function
* Inputs:
* 0 : Header code [0x00080000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
*/
void ResetTagScanState(Interface* self);
/**
* NFC::GetTagInRangeEvent service function
* Inputs:
* 0 : Header code [0x000B0000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
* 2 : Copy handle descriptor
* 3 : Event Handle
*/
void GetTagInRangeEvent(Interface* self);
/**
* NFC::GetTagOutOfRangeEvent service function
* Inputs:
* 0 : Header code [0x000C0000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
* 2 : Copy handle descriptor
* 3 : Event Handle
*/
void GetTagOutOfRangeEvent(Interface* self);
/**
* NFC::GetTagState service function
* Inputs:
* 0 : Header code [0x000D0000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
* 2 : (u8) Tag state
*/
void GetTagState(Interface* self);
/**
* NFC::CommunicationGetStatus service function
* Inputs:
* 0 : Header code [0x000F0000]
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
* 2 : (u8) Communication state
*/
void CommunicationGetStatus(Interface* self);
/// Initialize all NFC services.
void Init();
/// Shutdown all NFC services.
void Shutdown();
} // namespace NFC
} // namespace Service

View file

@ -1,47 +0,0 @@
// Copyright 2016 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/hle/service/nfc/nfc.h"
#include "core/hle/service/nfc/nfc_m.h"
namespace Service {
namespace NFC {
const Interface::FunctionInfo FunctionTable[] = {
// clang-format off
// nfc:u shared commands
{0x00010040, Initialize, "Initialize"},
{0x00020040, Shutdown, "Shutdown"},
{0x00030000, StartCommunication, "StartCommunication"},
{0x00040000, StopCommunication, "StopCommunication"},
{0x00050040, StartTagScanning, "StartTagScanning"},
{0x00060000, StopTagScanning, "StopTagScanning"},
{0x00070000, LoadAmiiboData, "LoadAmiiboData"},
{0x00080000, ResetTagScanState, "ResetTagScanState"},
{0x00090002, nullptr, "UpdateStoredAmiiboData"},
{0x000B0000, GetTagInRangeEvent, "GetTagInRangeEvent"},
{0x000C0000, GetTagOutOfRangeEvent, "GetTagOutOfRangeEvent"},
{0x000D0000, GetTagState, "GetTagState"},
{0x000F0000, CommunicationGetStatus, "CommunicationGetStatus"},
{0x00100000, nullptr, "GetTagInfo2"},
{0x00110000, nullptr, "GetTagInfo"},
{0x00120000, nullptr, "CommunicationGetResult"},
{0x00130040, nullptr, "OpenAppData"},
{0x00140384, nullptr, "InitializeWriteAppData"},
{0x00150040, nullptr, "ReadAppData"},
{0x00160242, nullptr, "WriteAppData"},
{0x00170000, nullptr, "GetAmiiboSettings"},
{0x00180000, nullptr, "GetAmiiboConfig"},
{0x00190000, nullptr, "GetAppDataInitStruct"},
// nfc:m
{0x04040A40, nullptr, "SetAmiiboSettings"}
// clang-format on
};
NFC_M::NFC_M() {
Register(FunctionTable);
}
} // namespace NFC
} // namespace Service

View file

@ -1,22 +0,0 @@
// Copyright 2016 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include "core/hle/service/service.h"
namespace Service {
namespace NFC {
class NFC_M final : public Interface {
public:
NFC_M();
std::string GetPortName() const override {
return "nfc:m";
}
};
} // namespace NFC
} // namespace Service

View file

@ -1,44 +0,0 @@
// Copyright 2016 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/hle/service/nfc/nfc.h"
#include "core/hle/service/nfc/nfc_u.h"
namespace Service {
namespace NFC {
const Interface::FunctionInfo FunctionTable[] = {
// clang-format off
{0x00010040, Initialize, "Initialize"},
{0x00020040, Shutdown, "Shutdown"},
{0x00030000, StartCommunication, "StartCommunication"},
{0x00040000, StopCommunication, "StopCommunication"},
{0x00050040, StartTagScanning, "StartTagScanning"},
{0x00060000, StopTagScanning, "StopTagScanning"},
{0x00070000, LoadAmiiboData, "LoadAmiiboData"},
{0x00080000, ResetTagScanState, "ResetTagScanState"},
{0x00090002, nullptr, "UpdateStoredAmiiboData"},
{0x000B0000, GetTagInRangeEvent, "GetTagInRangeEvent"},
{0x000C0000, GetTagOutOfRangeEvent, "GetTagOutOfRangeEvent"},
{0x000D0000, GetTagState, "GetTagState"},
{0x000F0000, CommunicationGetStatus, "CommunicationGetStatus"},
{0x00100000, nullptr, "GetTagInfo2"},
{0x00110000, nullptr, "GetTagInfo"},
{0x00120000, nullptr, "CommunicationGetResult"},
{0x00130040, nullptr, "OpenAppData"},
{0x00140384, nullptr, "InitializeWriteAppData"},
{0x00150040, nullptr, "ReadAppData"},
{0x00160242, nullptr, "WriteAppData"},
{0x00170000, nullptr, "GetAmiiboSettings"},
{0x00180000, nullptr, "GetAmiiboConfig"},
{0x00190000, nullptr, "GetAppDataInitStruct"},
// clang-format on
};
NFC_U::NFC_U() {
Register(FunctionTable);
}
} // namespace NFC
} // namespace Service

View file

@ -1,22 +0,0 @@
// Copyright 2016 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include "core/hle/service/service.h"
namespace Service {
namespace NFC {
class NFC_U final : public Interface {
public:
NFC_U();
std::string GetPortName() const override {
return "nfc:u";
}
};
} // namespace NFC
} // namespace Service