citra-emu
/
citra
Archived
1
0
Fork 0

Services/NFC: Stub StartTagScanning as it should be for o3DS

This commit is contained in:
shinyquagsire23 2017-12-01 12:37:00 -07:00
parent b2a99043e3
commit 5ad4cf619e
2 changed files with 22 additions and 5 deletions

View File

@ -3,6 +3,7 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "core/hle/ipc.h" #include "core/hle/ipc.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h" #include "core/hle/kernel/event.h"
#include "core/hle/kernel/handle_table.h" #include "core/hle/kernel/handle_table.h"
#include "core/hle/service/nfc/nfc.h" #include "core/hle/service/nfc/nfc.h"
@ -53,13 +54,23 @@ void StopCommunication(Interface* self) {
} }
void StartTagScanning(Interface* self) { void StartTagScanning(Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer(); IPC::RequestParser rp(Kernel::GetCommandBuffer(), 5, 1, 0); // 0x00050040
u16 in_val = rp.Pop<u16>();
nfc_tag_state = TagState::TagInRange; ResultCode result = RESULT_SUCCESS;
tag_in_range_event->Signal();
cmd_buff[1] = RESULT_SUCCESS.raw; // No error // TODO(shinyquagsire23): Implement NFC tag detection, for now stub result
LOG_WARNING(Service_NFC, "(STUBBED) called"); result = ResultCode(ErrCodes::CommandInvalidForState, ErrorModule::NFC,
ErrorSummary::InvalidState, ErrorLevel::Status);
if (result == RESULT_SUCCESS) {
nfc_tag_state = TagState::TagInRange;
tag_in_range_event->Signal();
}
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(result);
LOG_WARNING(Service_NFC, "(STUBBED) called, in_val=%04x", in_val);
} }
void StopTagScanning(Interface* self) { void StopTagScanning(Interface* self) {

View File

@ -12,6 +12,12 @@ class Interface;
namespace NFC { namespace NFC {
namespace ErrCodes {
enum {
CommandInvalidForState = 512,
};
} // namespace ErrCodes
enum class TagState : u8 { enum class TagState : u8 {
NotInitialized = 0, NotInitialized = 0,
NotScanning = 1, NotScanning = 1,