diff --git a/nx/include/switch/services/capsa.h b/nx/include/switch/services/capsa.h index 0730775e..219d6e2d 100644 --- a/nx/include/switch/services/capsa.h +++ b/nx/include/switch/services/capsa.h @@ -187,9 +187,10 @@ Result capsaGetAlbumMountResult(CapsAlbumStorage storage); * @brief Returns the AlbumUsage for a specified \ref CapsAlbumStorage. * @note Only available on [4.0.0+]. * @param[in] storage \ref CapsAlbumStorage + * @param[in] flags \ref CapsAlbumFileContentsFlag * @param[out] out \ref CapsAlbumUsage16 */ -Result capsaGetAlbumUsage16(CapsAlbumStorage storage, CapsAlbumUsage16 *out); +Result capsaGetAlbumUsage16(CapsAlbumStorage storage, u8 flags, CapsAlbumUsage16 *out); /** * @brief Returns the start and end of the Applet Id range. diff --git a/nx/include/switch/services/capsc.h b/nx/include/switch/services/capsc.h index 6deb7195..eb822aab 100644 --- a/nx/include/switch/services/capsc.h +++ b/nx/include/switch/services/capsc.h @@ -47,7 +47,7 @@ Result capscStartAlbumMovieWriteStreamMetaSection(u64 stream); Result capscEndAlbumMovieWriteStreamMetaSection(u64 stream); Result capscReadDataFromAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size, u64 *actual_size); Result capscWriteDataToAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size); -Result capscWriteMetaToAlbumMovieWriteStream(); +Result capscWriteMetaToAlbumMovieWriteStream(u64 stream, u64 offset, void* buffer, u64 size); Result capscGetAlbumMovieWriteStreamBrokenReason(u64 stream); Result capscGetAlbumMovieWriteStreamDataSize(u64 stream, u64 *size); Result capscSetAlbumMovieWriteStreamDataSize(u64 stream, u64 size); diff --git a/nx/source/services/capsa.c b/nx/source/services/capsa.c index d37ede5f..5e56ebf0 100644 --- a/nx/source/services/capsa.c +++ b/nx/source/services/capsa.c @@ -193,11 +193,19 @@ Result capsaGetAlbumMountResult(CapsAlbumStorage storage) { return _capsaCmdInU8NoOut(&g_capsaSrv, storage, 16); } -Result capsaGetAlbumUsage16(CapsAlbumStorage storage, CapsAlbumUsage16 *out) { +Result capsaGetAlbumUsage16(CapsAlbumStorage storage, u8 flags, CapsAlbumUsage16 *out) { if (hosversionBefore(4,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); - u8 inval = storage; - return serviceDispatchInOut(&g_capsaSrv, 17, inval, *out); + struct { + u8 storage; + u8 pad_x1[7]; + u8 flags; + u8 pad_x9[7]; + } in = { storage, {0}, flags, {0} }; + return serviceDispatchIn(&g_capsaSrv, 17, in, + .buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out | SfBufferAttr_FixedSize, }, + .buffers = { { out, sizeof(CapsAlbumUsage16) } }, + ); } Result capsaGetMinMaxAppletId(bool *success, u64* min, u64* max) { @@ -238,7 +246,7 @@ Result capsaGetAlbumFileListEx0(CapsAlbumStorage storage, u8 flags, u64 *out, Ca struct { u8 storage; u8 pad_x1[7]; - u8 contents; + u8 flags; u8 pad_x9[7]; } in = { storage, {0}, flags, {0} }; return serviceDispatchInOut(&g_capsaSrv, 101, in, *out, @@ -319,7 +327,8 @@ Result capsaRefreshAlbumCache(CapsAlbumStorage storage) { } Result capsaGetAlbumCache(CapsAlbumStorage storage, CapsAlbumCache *cache) { - return serviceDispatchInOut(&g_capsaSrv, 8012, storage, *cache); + u8 inval = storage; + return serviceDispatchInOut(&g_capsaSrv, 8012, inval, *cache); } Result capsaGetAlbumCacheEx(CapsAlbumStorage storage, CapsAlbumFileContents contents, CapsAlbumCache *cache) {