mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #4158 from Morph1984/caps
caps: Use enum classes and check struct sizes on compile time
This commit is contained in:
		
						commit
						6f16f54f10
					
				| @ -1,4 +1,4 @@ | ||||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Copyright 2018 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Copyright 2018 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| @ -12,73 +12,79 @@ class ServiceManager; | ||||
| 
 | ||||
| namespace Service::Capture { | ||||
| 
 | ||||
| enum AlbumImageOrientation { | ||||
| enum class AlbumImageOrientation { | ||||
|     Orientation0 = 0, | ||||
|     Orientation1 = 1, | ||||
|     Orientation2 = 2, | ||||
|     Orientation3 = 3, | ||||
| }; | ||||
| 
 | ||||
| enum AlbumReportOption { | ||||
| enum class AlbumReportOption { | ||||
|     Disable = 0, | ||||
|     Enable = 1, | ||||
| }; | ||||
| 
 | ||||
| enum ContentType : u8 { | ||||
| enum class ContentType : u8 { | ||||
|     Screenshot = 0, | ||||
|     Movie = 1, | ||||
|     ExtraMovie = 3, | ||||
| }; | ||||
| 
 | ||||
| enum AlbumStorage : u8 { | ||||
| enum class AlbumStorage : u8 { | ||||
|     NAND = 0, | ||||
|     SD = 1, | ||||
| }; | ||||
| 
 | ||||
| struct AlbumFileDateTime { | ||||
|     u16 year; | ||||
|     u8 month; | ||||
|     u8 day; | ||||
|     u8 hour; | ||||
|     u8 minute; | ||||
|     u8 second; | ||||
|     u8 uid; | ||||
|     s16 year{}; | ||||
|     s8 month{}; | ||||
|     s8 day{}; | ||||
|     s8 hour{}; | ||||
|     s8 minute{}; | ||||
|     s8 second{}; | ||||
|     s8 uid{}; | ||||
| }; | ||||
| static_assert(sizeof(AlbumFileDateTime) == 0x8, "AlbumFileDateTime has incorrect size."); | ||||
| 
 | ||||
| struct AlbumEntry { | ||||
|     u64 size; | ||||
|     u64 application_id; | ||||
|     AlbumFileDateTime datetime; | ||||
|     AlbumStorage storage; | ||||
|     ContentType content; | ||||
|     u8 padding[6]; | ||||
|     u64 size{}; | ||||
|     u64 application_id{}; | ||||
|     AlbumFileDateTime datetime{}; | ||||
|     AlbumStorage storage{}; | ||||
|     ContentType content{}; | ||||
|     INSERT_PADDING_BYTES(6); | ||||
| }; | ||||
| static_assert(sizeof(AlbumEntry) == 0x20, "AlbumEntry has incorrect size."); | ||||
| 
 | ||||
| struct AlbumFileEntry { | ||||
|     u64 size; | ||||
|     u64 hash; | ||||
|     AlbumFileDateTime datetime; | ||||
|     AlbumStorage storage; | ||||
|     ContentType content; | ||||
|     u8 padding[5]; | ||||
|     u8 unknown; | ||||
|     u64 size{}; // Size of the entry
 | ||||
|     u64 hash{}; // AES256 with hardcoded key over AlbumEntry
 | ||||
|     AlbumFileDateTime datetime{}; | ||||
|     AlbumStorage storage{}; | ||||
|     ContentType content{}; | ||||
|     INSERT_PADDING_BYTES(5); | ||||
|     u8 unknown{1}; // Set to 1 on official SW
 | ||||
| }; | ||||
| static_assert(sizeof(AlbumFileEntry) == 0x20, "AlbumFileEntry has incorrect size."); | ||||
| 
 | ||||
| struct ApplicationAlbumEntry { | ||||
|     u64 size; | ||||
|     u64 hash; | ||||
|     AlbumFileDateTime datetime; | ||||
|     AlbumStorage storage; | ||||
|     ContentType content; | ||||
|     u8 padding[5]; | ||||
|     u8 unknown; | ||||
|     u64 size{}; // Size of the entry
 | ||||
|     u64 hash{}; // AES256 with hardcoded key over AlbumEntry
 | ||||
|     AlbumFileDateTime datetime{}; | ||||
|     AlbumStorage storage{}; | ||||
|     ContentType content{}; | ||||
|     INSERT_PADDING_BYTES(5); | ||||
|     u8 unknown{1}; // Set to 1 on official SW
 | ||||
| }; | ||||
| static_assert(sizeof(ApplicationAlbumEntry) == 0x20, "ApplicationAlbumEntry has incorrect size."); | ||||
| 
 | ||||
| struct ApplicationAlbumFileEntry { | ||||
|     ApplicationAlbumEntry entry; | ||||
|     AlbumFileDateTime datetime; | ||||
|     u64 unknown; | ||||
|     ApplicationAlbumEntry entry{}; | ||||
|     AlbumFileDateTime datetime{}; | ||||
|     u64 unknown{}; | ||||
| }; | ||||
| static_assert(sizeof(ApplicationAlbumFileEntry) == 0x30, | ||||
|               "ApplicationAlbumFileEntry has incorrect size."); | ||||
| 
 | ||||
| /// Registers all Capture services with the specified service manager.
 | ||||
| void InstallInterfaces(SM::ServiceManager& sm); | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| @ -58,19 +58,25 @@ void CAPS_U::GetAlbumContentsFileListForApplication(Kernel::HLERequestContext& c | ||||
|     // u8 ContentType, two s64s, and an u64 AppletResourceUserId. Returns an output u64 for total
 | ||||
|     // output entries (which is copied to a s32 by official SW).
 | ||||
|     IPC::RequestParser rp{ctx}; | ||||
|     [[maybe_unused]] const auto application_album_file_entries = rp.PopRaw<std::array<u8, 0x30>>(); | ||||
|     const auto pid = rp.Pop<s32>(); | ||||
|     const auto content_type = rp.PopRaw<ContentType>(); | ||||
|     [[maybe_unused]] const auto start_datetime = rp.PopRaw<AlbumFileDateTime>(); | ||||
|     [[maybe_unused]] const auto end_datetime = rp.PopRaw<AlbumFileDateTime>(); | ||||
|     const auto applet_resource_user_id = rp.Pop<u64>(); | ||||
|     const auto pid{rp.Pop<s32>()}; | ||||
|     const auto content_type{rp.PopEnum<ContentType>()}; | ||||
|     const auto start_posix_time{rp.Pop<s64>()}; | ||||
|     const auto end_posix_time{rp.Pop<s64>()}; | ||||
|     const auto applet_resource_user_id{rp.Pop<u64>()}; | ||||
| 
 | ||||
|     // TODO: Update this when we implement the album.
 | ||||
|     // Currently we do not have a method of accessing album entries, set this to 0 for now.
 | ||||
|     constexpr s32 total_entries{0}; | ||||
| 
 | ||||
|     LOG_WARNING(Service_Capture, | ||||
|                 "(STUBBED) called. pid={}, content_type={}, applet_resource_user_id={}", pid, | ||||
|                 content_type, applet_resource_user_id); | ||||
|                 "(STUBBED) called. pid={}, content_type={}, start_posix_time={}, " | ||||
|                 "end_posix_time={}, applet_resource_user_id={}, total_entries={}", | ||||
|                 pid, content_type, start_posix_time, end_posix_time, applet_resource_user_id, | ||||
|                 total_entries); | ||||
| 
 | ||||
|     IPC::ResponseBuilder rb{ctx, 3}; | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.Push<s32>(0); | ||||
|     rb.Push(total_entries); | ||||
| } | ||||
| 
 | ||||
| } // namespace Service::Capture
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| // Copyright 2020 yuzu emulator team
 | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei