Added bossRegisterTask, bossSendProperty, bossDeleteTask, and bossCmd34.
This commit is contained in:
parent
e8c3a9139e
commit
ee23569db8
@ -16,6 +16,22 @@ void bossExit(void);
|
|||||||
/// Returns the BOSS session handle.
|
/// Returns the BOSS session handle.
|
||||||
Handle bossGetSessionHandle();
|
Handle bossGetSessionHandle();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Register a task.
|
||||||
|
* @param taskID BOSS taskID.
|
||||||
|
* @param unk0 Unknown, usually zero.
|
||||||
|
* @param unk1 Unknown, usually zero.
|
||||||
|
*/
|
||||||
|
Result bossRegisterTask(char *taskID, u8 unk0, u8 unk1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Send a property.
|
||||||
|
* @param PropertyID PropertyID
|
||||||
|
* @param buf Input buffer data.
|
||||||
|
* @param size Buffer size.
|
||||||
|
*/
|
||||||
|
Result bossSendProperty(u16 PropertyID, void* buf, u32 size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ?
|
* @brief ?
|
||||||
* @param taskID BOSS taskID.
|
* @param taskID BOSS taskID.
|
||||||
@ -28,3 +44,16 @@ Result bossStartTaskImmediate(char *taskID);
|
|||||||
*/
|
*/
|
||||||
Result bossStartBgImmediate(char *taskID);
|
Result bossStartBgImmediate(char *taskID);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Deletes a task by using CancelTask and UnregisterTask internally.
|
||||||
|
* @param taskID BOSS taskID.
|
||||||
|
* @param unk Unknown, usually zero?
|
||||||
|
*/
|
||||||
|
Result bossDeleteTask(char *taskID, u32 unk);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ?
|
||||||
|
* @param taskID BOSS taskID.
|
||||||
|
*/
|
||||||
|
Result bossCmd34(char *taskID);
|
||||||
|
|
||||||
|
@ -75,6 +75,57 @@ static Result bossipc_InitializeSession(u64 programID)
|
|||||||
return (Result)cmdbuf[1];
|
return (Result)cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result bossRegisterTask(char *taskID, u8 unk0, u8 unk1)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
u32 size = strlen(taskID)+1;
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0xB,3,2); // 0xB00C2
|
||||||
|
cmdbuf[1] = size;
|
||||||
|
cmdbuf[2] = unk0;
|
||||||
|
cmdbuf[3] = unk1;
|
||||||
|
cmdbuf[4] = IPC_Desc_Buffer(size, IPC_BUFFER_R);
|
||||||
|
cmdbuf[5] = (u32)taskID;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(bossHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
static Result bossipc_UnregisterTask(char *taskID, u32 unk)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
u32 size = strlen(taskID)+1;
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0xC,2,2); // 0xC0082
|
||||||
|
cmdbuf[1] = size;
|
||||||
|
cmdbuf[2] = unk;
|
||||||
|
cmdbuf[3] = IPC_Desc_Buffer(size, IPC_BUFFER_R);
|
||||||
|
cmdbuf[4] = (u32)taskID;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(bossHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
Result bossSendProperty(u16 PropertyID, void* buf, u32 size)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x14,2,2); // 0x140082
|
||||||
|
cmdbuf[1] = PropertyID;
|
||||||
|
cmdbuf[2] = size;
|
||||||
|
cmdbuf[3] = IPC_Desc_Buffer(size, IPC_BUFFER_R);
|
||||||
|
cmdbuf[4] = (u32)buf;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(bossHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
Result bossStartTaskImmediate(char *taskID)
|
Result bossStartTaskImmediate(char *taskID)
|
||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -91,6 +142,34 @@ Result bossStartTaskImmediate(char *taskID)
|
|||||||
return (Result)cmdbuf[1];
|
return (Result)cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result bossipc_CancelTask(char *taskID)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
u32 size = strlen(taskID)+1;
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x1E,1,2); // 0x1E0042
|
||||||
|
cmdbuf[1] = size;
|
||||||
|
cmdbuf[2] = IPC_Desc_Buffer(size, IPC_BUFFER_R);
|
||||||
|
cmdbuf[3] = (u32)taskID;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(bossHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
Result bossDeleteTask(char *taskID, u32 unk)
|
||||||
|
{
|
||||||
|
Result ret=0;
|
||||||
|
|
||||||
|
ret = bossipc_CancelTask(taskID);
|
||||||
|
if(R_FAILED(ret))return ret;
|
||||||
|
|
||||||
|
ret = bossipc_UnregisterTask(taskID, unk);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
Result bossStartBgImmediate(char *taskID)
|
Result bossStartBgImmediate(char *taskID)
|
||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -107,3 +186,19 @@ Result bossStartBgImmediate(char *taskID)
|
|||||||
return (Result)cmdbuf[1];
|
return (Result)cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result bossCmd34(char *taskID)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
u32 size = strlen(taskID)+1;
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x34,1,2); // 0x340042
|
||||||
|
cmdbuf[1] = size;
|
||||||
|
cmdbuf[2] = IPC_Desc_Buffer(size, IPC_BUFFER_R);
|
||||||
|
cmdbuf[3] = (u32)taskID;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(bossHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user