Add AM_FinishCiaInstallWithoutCommit and AM_CommitImportPrograms (#321)

* Add AM_FinishCiaInstallWithoutCommit and AM_CommitImportPrograms

* Make the tids const

* In the headers also
This commit is contained in:
motezazer 2017-01-16 13:41:35 +01:00 committed by Dave Murphy
parent 6e107a1aa5
commit 648ee46742
2 changed files with 48 additions and 2 deletions

View File

@ -203,6 +203,21 @@ Result AM_CancelCIAInstall(Handle ciaHandle);
*/ */
Result AM_FinishCiaInstall(Handle ciaHandle); Result AM_FinishCiaInstall(Handle ciaHandle);
/**
* @brief Finalizes the CIA install process without committing the title to title.db or tmp*.db.
* @param ciaHandle CIA handle to finalize.
*/
Result AM_FinishCiaInstallWithoutCommit(Handle ciaHandle);
/**
* @brief Commits installed CIAs.
* @param mediaType Location of the titles to finalize.
* @param titleCount Number of titles to finalize.
* @param temp Whether the titles being finalized are in the temporary database.
* @param titleIds Title IDs to finalize.
*/
Result AM_CommitImportPrograms(FS_MediaType mediaType, u32 titleCount, bool temp, const u64* titleIds);
/** /**
* @brief Deletes a title. * @brief Deletes a title.
* @param mediatype Media type to delete from. * @param mediatype Media type to delete from.
@ -381,7 +396,7 @@ Result AM_InstallTitleFinish();
* @param temp Whether the titles being finalized are in the temporary database. * @param temp Whether the titles being finalized are in the temporary database.
* @param titleIds Title IDs to finalize. * @param titleIds Title IDs to finalize.
*/ */
Result AM_CommitImportTitles(FS_MediaType mediaType, u32 titleCount, bool temp, u64* titleIds); Result AM_CommitImportTitles(FS_MediaType mediaType, u32 titleCount, bool temp, const u64* titleIds);
/** /**
* @brief Begins installing a TMD. * @brief Begins installing a TMD.

View File

@ -343,6 +343,37 @@ Result AM_FinishCiaInstall(Handle ciaHandle)
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result AM_FinishCiaInstallWithoutCommit(Handle ciaHandle)
{
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(0x406,0,2); // 0x04060002
cmdbuf[1] = IPC_Desc_MoveHandles(1);
cmdbuf[2] = ciaHandle;
if(R_FAILED(ret = svcSendSyncRequest(amHandle))) return ret;
return (Result)cmdbuf[1];
}
Result AM_CommitImportPrograms(FS_MediaType mediaType, u32 titleCount, bool temp, const u64* titleIds)
{
Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = IPC_MakeHeader(0x407,3,2); // 0x040700C2
cmdbuf[1] = mediaType;
cmdbuf[2] = titleCount;
cmdbuf[3] = temp ? 1 : 0;
cmdbuf[4] = IPC_Desc_Buffer(titleCount * 8, IPC_BUFFER_R);
cmdbuf[5] = (u32)titleIds;
if(R_FAILED(ret = svcSendSyncRequest(amHandle))) return ret;
return (Result)cmdbuf[1];
}
Result AM_DeleteTitle(FS_MediaType mediatype, u64 titleID) Result AM_DeleteTitle(FS_MediaType mediatype, u64 titleID)
{ {
Result ret = 0; Result ret = 0;
@ -748,7 +779,7 @@ Result AM_InstallTitleFinish()
return (Result)cmdbuf[1]; return (Result)cmdbuf[1];
} }
Result AM_CommitImportTitles(FS_MediaType mediaType, u32 titleCount, bool temp, u64* titleIds) Result AM_CommitImportTitles(FS_MediaType mediaType, u32 titleCount, bool temp, const u64* titleIds)
{ {
Result ret = 0; Result ret = 0;
u32 *cmdbuf = getThreadCommandBuffer(); u32 *cmdbuf = getThreadCommandBuffer();