/* * Copyright (c) 2018-2020 Atmosphère-NX * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #if defined(ATMOSPHERE_IS_STRATOSPHERE) #include #elif defined(ATMOSPHERE_IS_MESOSPHERE) #include #elif defined(ATMOSPHERE_IS_EXOSPHERE) #include #else #include #endif namespace ams::prfile2::drv { pf::Error Initialize(Volume *volume) { /* Check the volume. */ if (volume == nullptr) { return pf::Error_InvalidParameter; } /* Check the data erase request. */ bool data_erase; if (auto pdm_err = pdm::part::CheckDataEraseRequest(volume->partition_handle, std::addressof(data_erase)); pdm_err != pdm::Error_Ok) { return pf::Error_Generic; } /* Set the data erase request flag. */ volume->SetDataEraseRequested(data_erase); return pf::Error_Ok; } bool IsDetected(Volume *volume) { /* Check detect status changed. */ /* NOTE: Error is not checked here. */ bool detected = false; pdm::part::CheckMediaDetect(volume->partition_handle, std::addressof(detected)); return detected; } bool IsInserted(Volume *volume) { /* Check inserted. */ /* NOTE: Error is not checked here. */ bool inserted = false; pdm::part::CheckMediaInsert(volume->partition_handle, std::addressof(inserted)); return inserted; } }