Added bossDeleteNsData() and bossReadNsData().

This commit is contained in:
yellows8 2016-12-25 02:15:10 -05:00
parent 435fad724b
commit 7ccfe71e45
2 changed files with 56 additions and 2 deletions

View File

@ -73,13 +73,30 @@ Result bossRegisterTask(const char *taskID, u8 unk0, u8 unk1);
Result bossSendProperty(u16 PropertyID, const void* buf, u32 size); Result bossSendProperty(u16 PropertyID, const void* buf, u32 size);
/** /**
* @brief ? * @brief Deletes the content file for the specified NsDataId.
* @param NsDataId NsDataId
*/
Result bossDeleteNsData(u32 NsDataId);
/**
* @brief Reads data from the content for the specified NsDataId.
* @param NsDataId NsDataId
* @param offset Offset in the content.
* @param buffer Output buffer.
* @param size Output buffer size.
* @param transfer_total Optional output actual read size, can be NULL.
* @param unk_out Optional unknown output, can be NULL.
*/
Result bossReadNsData(u32 NsDataId, u64 offset, void* buffer, u32 size, u32 *transfer_total, u32 *unk_out);
/**
* @brief Starts a task soon after running this command.
* @param taskID BOSS taskID. * @param taskID BOSS taskID.
*/ */
Result bossStartTaskImmediate(const char *taskID); Result bossStartTaskImmediate(const char *taskID);
/** /**
* @brief ? * @brief Similar to bossStartTaskImmediate?
* @param taskID BOSS taskID. * @param taskID BOSS taskID.
*/ */
Result bossStartBgImmediate(const char *taskID); Result bossStartBgImmediate(const char *taskID);

View File

@ -195,6 +195,43 @@ Result bossGetTaskState(const char *taskID, s8 inval, u8 *status, u32 *out1, u8
return ret; return ret;
} }
Result bossDeleteNsData(u32 NsDataId)
{
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(0x26,1,0); // 0x260040
cmdbuf[1] = NsDataId;
if(R_FAILED(ret = svcSendSyncRequest(bossHandle)))return ret;
return (Result)cmdbuf[1];
}
Result bossReadNsData(u32 NsDataId, u64 offset, void* buffer, u32 size, u32 *transfer_total, u32 *unk_out)
{
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(0x28,4,2); // 0x280102
cmdbuf[1] = NsDataId;
cmdbuf[2] = (u32) offset;
cmdbuf[3] = (u32) (offset >> 32);
cmdbuf[4] = size;
cmdbuf[5] = IPC_Desc_Buffer(size, IPC_BUFFER_W);
cmdbuf[6] = (u32)buffer;
if(R_FAILED(ret = svcSendSyncRequest(bossHandle)))return ret;
if(R_SUCCEEDED(ret))
{
if(transfer_total)*transfer_total = cmdbuf[2];
if(unk_out)*unk_out = cmdbuf[3];
}
return (Result)cmdbuf[1];
}
Result bossStartBgImmediate(const char *taskID) Result bossStartBgImmediate(const char *taskID)
{ {
Result ret = 0; Result ret = 0;