nfcStartOtherTagScanning(): Call StartCommunication() for Old3DS compatibility.

This commit is contained in:
HiddenRambler 2017-07-02 09:29:47 +01:00
parent 0475b59e12
commit f0ef1c9d4f

View File

@ -21,6 +21,7 @@ static Result NFC_CommunicationGetStatus(u8 *out);
static Result NFC_CommunicationGetResult(Result *out); static Result NFC_CommunicationGetResult(Result *out);
static Result NFC_StartTagScanning(u16 unknown); static Result NFC_StartTagScanning(u16 unknown);
static Result NFC_StartOtherTagScanning(u16 unk0, u32 unk1);
static Result NFC_StopTagScanning(void); static Result NFC_StopTagScanning(void);
static Result NFC_InitializeWriteAppData(u32 amiibo_appid, NFC_AppDataInitStruct *initstruct, const void *buf, size_t size); static Result NFC_InitializeWriteAppData(u32 amiibo_appid, NFC_AppDataInitStruct *initstruct, const void *buf, size_t size);
@ -106,6 +107,49 @@ Result nfcStartScanning(u16 inval)
return NFC_StartTagScanning(inval); return NFC_StartTagScanning(inval);
} }
Result nfcStartOtherTagScanning(u16 unk0, u32 unk1)
{
Result ret, ret2;
bool new3ds_flag = false;
u8 status;
APT_CheckNew3DS(&new3ds_flag);
if(!new3ds_flag)
{
ret = NFC_StartCommunication();
if(R_FAILED(ret))return ret;
while(1)
{
status = 0;
ret = NFC_CommunicationGetStatus(&status);
if(R_FAILED(ret))break;
if(status==1)//"Attempting to initialize Old3DS NFC adapter communication."
{
svcSleepThread(1000000*100);
continue;
}
else if(status==2)//"Old3DS NFC adapter communication initialization successfully finished."
{
break;
}
//An error occured with Old3DS NFC-adapter communication initialization.
ret = NFC_CommunicationGetResult(&ret2);
if(R_FAILED(ret))break;
return ret2;
}
if(R_FAILED(ret))return ret;
}
return NFC_StartOtherTagScanning(unk0, unk1);
}
void nfcStopScanning(void) void nfcStopScanning(void)
{ {
bool new3ds_flag = false; bool new3ds_flag = false;
@ -442,7 +486,7 @@ static Result NFC_GetAppDataInitStruct(NFC_AppDataInitStruct *out)
return ret; return ret;
} }
Result nfcStartOtherTagScanning(u16 unk0, u32 unk1) static Result NFC_StartOtherTagScanning(u16 unk0, u32 unk1)
{ {
Result ret=0; Result ret=0;
u32* cmdbuf=getThreadCommandBuffer(); u32* cmdbuf=getThreadCommandBuffer();