xref: /openbmc/estoraged/include/verifyDriveGeometry.hpp (revision 04c28fad78934cab0c4cb0b4ef9a20f9261b4c1e)
1e6ffe704SJohn Edward Broadbent #pragma once
2e6ffe704SJohn Edward Broadbent 
3e6ffe704SJohn Edward Broadbent #include "erase.hpp"
4a6e3b99dSJohn Edward Broadbent #include "util.hpp"
5e6ffe704SJohn Edward Broadbent 
6e6ffe704SJohn Edward Broadbent #include <string_view>
7e6ffe704SJohn Edward Broadbent 
8d3bfa7bbSJohn Edward Broadbent namespace estoraged
9d3bfa7bbSJohn Edward Broadbent {
10d3bfa7bbSJohn Edward Broadbent 
11e6ffe704SJohn Edward Broadbent class VerifyDriveGeometry : public Erase
12e6ffe704SJohn Edward Broadbent {
13e6ffe704SJohn Edward Broadbent   public:
14e6ffe704SJohn Edward Broadbent     /** @brief Creates a verifyDriveGeomentry erase object.
15e6ffe704SJohn Edward Broadbent      *
16e6ffe704SJohn Edward Broadbent      *  @param[in] inDevPath - the linux device path for the block device.
17e6ffe704SJohn Edward Broadbent      */
18*04c28fadSPatrick Williams     VerifyDriveGeometry(std::string_view inDevPath) : Erase(inDevPath) {}
19e6ffe704SJohn Edward Broadbent 
20e6ffe704SJohn Edward Broadbent     /** @brief Test if input is in between the max and min expected sizes,
21e6ffe704SJohn Edward Broadbent      * and throws errors accordingly.
22e6ffe704SJohn Edward Broadbent      *
23e6ffe704SJohn Edward Broadbent      *  @param[in] bytes - Size of the block device
24e6ffe704SJohn Edward Broadbent      */
25a6e3b99dSJohn Edward Broadbent     void geometryOkay()
26a6e3b99dSJohn Edward Broadbent     {
275d799bb9SJohn Edward Broadbent         geometryOkay(util::findSizeOfBlockDevice(devPath));
28a6e3b99dSJohn Edward Broadbent     }
29e6ffe704SJohn Edward Broadbent     void geometryOkay(uint64_t bytes);
30e6ffe704SJohn Edward Broadbent };
31d3bfa7bbSJohn Edward Broadbent 
32d3bfa7bbSJohn Edward Broadbent } // namespace estoraged
33