Merge branch 'master' into feature/failed-state

This commit is contained in:
2025-12-10 21:59:04 +01:00
16 changed files with 459 additions and 238 deletions

View File

@ -14,7 +14,7 @@ class Drive
{
public:
enum TaskState
enum class TaskState
{
NONE,
SHRED_SELECTED,
@ -25,23 +25,28 @@ public:
DELETE_SELECTED,
DELETE_ACTIVE,
FROZEN
} state;
};
enum ConnectionType
enum class ConnectionType
{
UNKNOWN,
USB,
SATA,
NVME
} connectionType;
};
struct
struct ShredSpeed
{
time_t u32ShredTimeDelta;
std::chrono::time_point<std::chrono::system_clock> chronoShredTimestamp;
std::chrono::time_point<std::chrono::system_clock>
chronoShredTimestamp;
unsigned long ulWrittenBytes;
unsigned long ulSpeedMetricBytesWritten;
} sShredSpeed;
};
std::atomic<TaskState> state;
std::atomic<ConnectionType> connectionType;
std::atomic<ShredSpeed> sShredSpeed;
bool bWasShredded = false; // all shred iterations done
bool bWasShredStarted = false; // shred was atleast once started
@ -49,9 +54,10 @@ public:
bool bWasDeleted = false;
bool bIsOffline = false;
uint32_t u32DriveChecksumAfterShredding = 0U;
uint16_t u16DriveIndex = 0U; // Index of TUI list
private:
string sPath;
std::string sPath;
time_t u32Timestamp = 0U; // unix timestamp for detecting a frozen drive
double d32TaskPercentage = 0U; // in percent for Shred (1 to 100)
time_t u32TimestampTaskStart = 0U; // unix timestamp for duration of an action
@ -59,9 +65,9 @@ private:
struct
{
string sModelFamily;
string sModelName;
string sSerial;
std::string sModelFamily;
std::string sModelName;
std::string sSerial;
uint64_t u64Capacity = 0U; // in byte
uint32_t u32ErrorCount = 0U;
uint32_t u32PowerOnHours = 0U; // in hours
@ -74,15 +80,27 @@ private:
protected:
public:
Drive(string path)
// Copy constructor
Drive(const Drive &other);
// Copy assignment operator
Drive &operator=(const Drive &other);
// Move constructor
Drive(Drive &&other) noexcept;
// Move assignment operator
Drive &operator=(Drive &&other) noexcept;
Drive(std::string path)
{
this->sPath = path;
}
string getPath(void);
string getModelFamily(void);
string getModelName(void);
string getSerial(void);
std::string getPath(void);
std::string getModelFamily(void);
std::string getModelName(void);
std::string getSerial(void);
uint64_t getCapacity(void); // in byte
uint32_t getErrorCount(void);
uint32_t getPowerOnHours(void); // in hours
@ -90,20 +108,20 @@ public:
uint32_t getTemperature(void); // in Fahrenheit, just kidding: degree Celsius
void checkFrozenDrive(void);
void setDriveSMARTData(string modelFamily,
string modelName,
string serial,
void setDriveSMARTData(std::string modelFamily,
std::string modelName,
std::string serial,
uint64_t capacity,
uint32_t errorCount,
uint32_t powerOnHours,
uint32_t powerCycles,
uint32_t temperature);
string sCapacityToText();
string sErrorCountToText();
string sPowerOnHoursToText();
string sPowerCyclesToText();
string sTemperatureToText();
std::string sCapacityToText();
std::string sErrorCountToText();
std::string sPowerOnHoursToText();
std::string sPowerCyclesToText();
std::string sTemperatureToText();
void setTaskPercentage(double d32TaskPercentage);
double getTaskPercentage(void);