bis_factory.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include "common/common_types.h"
  7. #include "core/file_sys/vfs_types.h"
  8. namespace FileSys {
  9. enum class BisPartitionId : u32 {
  10. UserDataRoot = 20,
  11. CalibrationBinary = 27,
  12. CalibrationFile = 28,
  13. BootConfigAndPackage2Part1 = 21,
  14. BootConfigAndPackage2Part2 = 22,
  15. BootConfigAndPackage2Part3 = 23,
  16. BootConfigAndPackage2Part4 = 24,
  17. BootConfigAndPackage2Part5 = 25,
  18. BootConfigAndPackage2Part6 = 26,
  19. SafeMode = 29,
  20. System = 31,
  21. SystemProperEncryption = 32,
  22. SystemProperPartition = 33,
  23. User = 30,
  24. };
  25. class RegisteredCache;
  26. class PlaceholderCache;
  27. /// File system interface to the Built-In Storage
  28. /// This is currently missing accessors to BIS partitions, but seemed like a good place for the NAND
  29. /// registered caches.
  30. class BISFactory {
  31. public:
  32. explicit BISFactory(VirtualDir nand_root, VirtualDir load_root, VirtualDir dump_root);
  33. ~BISFactory();
  34. VirtualDir GetSystemNANDContentDirectory() const;
  35. VirtualDir GetUserNANDContentDirectory() const;
  36. RegisteredCache* GetSystemNANDContents() const;
  37. RegisteredCache* GetUserNANDContents() const;
  38. PlaceholderCache* GetSystemNANDPlaceholder() const;
  39. PlaceholderCache* GetUserNANDPlaceholder() const;
  40. VirtualDir GetModificationLoadRoot(u64 title_id) const;
  41. VirtualDir GetModificationDumpRoot(u64 title_id) const;
  42. VirtualDir OpenPartition(BisPartitionId id) const;
  43. VirtualFile OpenPartitionStorage(BisPartitionId id, VirtualFilesystem file_system) const;
  44. VirtualDir GetImageDirectory() const;
  45. u64 GetSystemNANDFreeSpace() const;
  46. u64 GetSystemNANDTotalSpace() const;
  47. u64 GetUserNANDFreeSpace() const;
  48. u64 GetUserNANDTotalSpace() const;
  49. u64 GetFullNANDTotalSpace() const;
  50. VirtualDir GetBCATDirectory(u64 title_id) const;
  51. private:
  52. VirtualDir nand_root;
  53. VirtualDir load_root;
  54. VirtualDir dump_root;
  55. std::unique_ptr<RegisteredCache> sysnand_cache;
  56. std::unique_ptr<RegisteredCache> usrnand_cache;
  57. std::unique_ptr<PlaceholderCache> sysnand_placeholder;
  58. std::unique_ptr<PlaceholderCache> usrnand_placeholder;
  59. };
  60. } // namespace FileSys