// 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 { namespace ErrCodes { enum { CommandInvalidForState = 512, }; } // namespace ErrCodes 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