APT : glanceparameter/receiveparameter

This commit is contained in:
smea 2014-01-29 23:17:02 +01:00
parent d09a8f2e83
commit 021911976f
3 changed files with 43 additions and 5 deletions

View File

@ -14,6 +14,8 @@ Result APT_Enable(Handle handle, u32 a);
Result APT_PrepareToJumpToHomeMenu(Handle handle); Result APT_PrepareToJumpToHomeMenu(Handle handle);
Result APT_JumpToHomeMenu(Handle handle, u32 a, u32 b, u32 c); Result APT_JumpToHomeMenu(Handle handle, u32 a, u32 b, u32 c);
Result APT_InquireNotification(Handle handle, u32 appID, u8* signalType); Result APT_InquireNotification(Handle handle, u32 appID, u8* signalType);
Result APT_NotifyToWait(Handle handle, u32 a); Result APT_NotifyToWait(Handle handle, NS_APPID appID);
Result APT_GlanceParameter(Handle handle, NS_APPID appID, u32 bufferSize, u32* buffer, u32* actualSize);
Result APT_ReceiveParameter(Handle handle, NS_APPID appID, u32 bufferSize, u32* buffer, u32* actualSize);
#endif #endif

View File

@ -87,14 +87,50 @@ Result APT_JumpToHomeMenu(Handle handle, u32 a, u32 b, u32 c)
return cmdbuf[1]; return cmdbuf[1];
} }
Result APT_NotifyToWait(Handle handle, u32 a) Result APT_NotifyToWait(Handle handle, NS_APPID appID)
{ {
u32* cmdbuf=getThreadCommandBuffer(); u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0x430040; //request header code cmdbuf[0]=0x430040; //request header code
cmdbuf[1]=a; cmdbuf[1]=appID;
Result ret=0; Result ret=0;
if((ret=svc_sendSyncRequest(handle)))return ret; if((ret=svc_sendSyncRequest(handle)))return ret;
return cmdbuf[1]; return cmdbuf[1];
} }
Result APT_GlanceParameter(Handle handle, NS_APPID appID, u32 bufferSize, u32* buffer, u32* actualSize)
{
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0xE0080; //request header code
cmdbuf[1]=appID;
cmdbuf[2]=bufferSize;
cmdbuf[0+0x100/4]=(bufferSize<<14)|2;
cmdbuf[1+0x100/4]=(u32)buffer;
Result ret=0;
if((ret=svc_sendSyncRequest(handle)))return ret;
if(actualSize)*actualSize=cmdbuf[4];
return cmdbuf[1];
}
Result APT_ReceiveParameter(Handle handle, NS_APPID appID, u32 bufferSize, u32* buffer, u32* actualSize)
{
u32* cmdbuf=getThreadCommandBuffer();
cmdbuf[0]=0xD0080; //request header code
cmdbuf[1]=appID;
cmdbuf[2]=bufferSize;
cmdbuf[0+0x100/4]=(bufferSize<<14)|2;
cmdbuf[1+0x100/4]=(u32)buffer;
Result ret=0;
if((ret=svc_sendSyncRequest(handle)))return ret;
if(actualSize)*actualSize=cmdbuf[4];
return cmdbuf[1];
}

View File

@ -87,13 +87,13 @@ svc_waitSynchronization1:
.global svc_waitSynchronizationN .global svc_waitSynchronizationN
.type svc_waitSynchronizationN, %function .type svc_waitSynchronizationN, %function
svc_waitSynchronizationN: svc_waitSynchronizationN:
stmfd sp!, {r5} str r5, [sp, #-4]!
mov r5, r0 mov r5, r0
ldr r0, [sp, #0x4] ldr r0, [sp, #0x4]
ldr r4, [sp, #0x4+0x4] ldr r4, [sp, #0x4+0x4]
svc 0x25 svc 0x25
str r1, [r5] str r1, [r5]
ldmfd sp!, {r5} ldr r5, [sp], #4
bx lr bx lr
.global svc_connectToPort .global svc_connectToPort