2020-09-20 20:33:16 +01:00
|
|
|
/*
|
2020-10-01 00:33:19 +01:00
|
|
|
SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho <caiojcarvalho@gmail.com>
|
2020-09-20 20:33:16 +01:00
|
|
|
SPDX-FileCopyrightText: 2018-2019 Andrius Štikonas <andrius@stikonas.eu>
|
|
|
|
|
|
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
*/
|
2018-01-08 20:59:48 +00:00
|
|
|
|
2018-04-02 13:13:16 +01:00
|
|
|
#ifndef KPMCORE_SMARTDISKINFORMATION_H
|
2018-01-31 16:12:11 +00:00
|
|
|
#define KPMCORE_SMARTDISKINFORMATION_H
|
2018-01-08 20:59:48 +00:00
|
|
|
|
2018-04-09 15:27:07 +01:00
|
|
|
#include "core/smartstatus.h"
|
|
|
|
|
2018-01-08 20:59:48 +00:00
|
|
|
#include <QList>
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
class SmartAttributeParsedData;
|
|
|
|
|
2018-01-11 20:38:53 +00:00
|
|
|
/** Disk information retrieved by SMART.
|
|
|
|
|
|
|
|
It includes a list with your SMART attributes.
|
|
|
|
|
2020-10-01 00:33:19 +01:00
|
|
|
@author Caio Jordão Carvalho <caiojcarvalho@gmail.com>
|
2018-01-11 20:38:53 +00:00
|
|
|
*/
|
2018-01-08 20:59:48 +00:00
|
|
|
class SmartDiskInformation
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
SmartDiskInformation();
|
|
|
|
|
|
|
|
public:
|
|
|
|
void updateBadSectors();
|
|
|
|
|
|
|
|
void updateOverall();
|
|
|
|
|
|
|
|
bool updateTemperature();
|
|
|
|
|
|
|
|
bool updatePowerOn();
|
|
|
|
|
|
|
|
bool updatePowerCycle();
|
|
|
|
|
|
|
|
SmartAttributeParsedData *findAttribute(quint32 id);
|
|
|
|
|
|
|
|
public:
|
|
|
|
const QString model() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_ModelName; /**< @return the disk model name */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
const QString firmware() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_FirmwareVersion; /**< @return the disk firmware version */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
const QString serial() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_SerialNumber; /**< @return the disk serial number */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
2019-06-05 00:50:07 +01:00
|
|
|
quint64 sectors() const
|
2018-01-08 20:59:48 +00:00
|
|
|
{
|
2019-06-05 00:50:07 +01:00
|
|
|
return m_Sectors; /**< @return disk size */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool smartStatus() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_SmartStatus; /**< @return a boolean representing SMART status */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
2018-04-09 15:37:46 +01:00
|
|
|
SmartStatus::SelfTestStatus selfTestExecutionStatus() const
|
2018-01-08 20:59:48 +00:00
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_SelfTestExecutionStatus; /**< @return SMART self execution status */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
2018-04-09 15:27:07 +01:00
|
|
|
SmartStatus::Overall overall() const
|
2018-01-08 20:59:48 +00:00
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_Overall; /**< @return SMART overall status */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
quint64 temperature() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_Temperature; /**< @return disk temperature in kelvin */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
quint64 badSectors() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_BadSectors; /**< @return the number of bad sectors */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
quint64 poweredOn() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_PoweredOn; /**< @return quantity of time that device is powered on */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
quint64 powerCycles() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_PowerCycles; /**< @return quantity of power cycles */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
QList<SmartAttributeParsedData> attributes() const
|
|
|
|
{
|
2018-01-11 20:38:53 +00:00
|
|
|
return m_Attributes; /**< @return a list that contains the disk SMART attributes */
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setModel(QString modelName)
|
|
|
|
{
|
|
|
|
m_ModelName = modelName;
|
|
|
|
}
|
|
|
|
|
|
|
|
void setFirmware(QString firmware)
|
|
|
|
{
|
|
|
|
m_FirmwareVersion = firmware;
|
|
|
|
}
|
|
|
|
|
|
|
|
void setSerial(QString serial)
|
|
|
|
{
|
|
|
|
m_SerialNumber = serial;
|
|
|
|
}
|
|
|
|
|
2019-06-05 00:50:07 +01:00
|
|
|
void setSectors(quint64 numSectors)
|
2018-01-08 20:59:48 +00:00
|
|
|
{
|
2019-06-05 00:50:07 +01:00
|
|
|
m_Sectors = numSectors;
|
2018-01-08 20:59:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void setPowerCycles(quint64 powerCycleCt)
|
|
|
|
{
|
|
|
|
m_PowerCycles = powerCycleCt;
|
|
|
|
}
|
|
|
|
|
|
|
|
void setSmartStatus(bool smartStatus)
|
|
|
|
{
|
|
|
|
m_SmartStatus = smartStatus;
|
|
|
|
}
|
|
|
|
|
2018-04-09 15:37:46 +01:00
|
|
|
void setSelfTestExecutionStatus(SmartStatus::SelfTestStatus status)
|
2018-01-08 20:59:48 +00:00
|
|
|
{
|
|
|
|
m_SelfTestExecutionStatus = status;
|
|
|
|
}
|
|
|
|
|
|
|
|
void addAttribute(SmartAttributeParsedData &attribute)
|
|
|
|
{
|
|
|
|
m_Attributes << attribute;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void validateBadAttributes();
|
|
|
|
|
|
|
|
private:
|
|
|
|
QString m_ModelName;
|
|
|
|
QString m_FirmwareVersion;
|
|
|
|
QString m_SerialNumber;
|
2019-06-05 00:50:07 +01:00
|
|
|
quint64 m_Sectors;
|
2018-01-08 20:59:48 +00:00
|
|
|
quint64 m_Temperature;
|
|
|
|
quint64 m_BadSectors;
|
|
|
|
quint64 m_PoweredOn;
|
|
|
|
quint64 m_PowerCycles;
|
|
|
|
bool m_SmartStatus;
|
|
|
|
bool m_BadAttributeNow;
|
|
|
|
bool m_BadAttributeInThePast;
|
2018-04-09 15:37:46 +01:00
|
|
|
SmartStatus::SelfTestStatus m_SelfTestExecutionStatus;
|
2018-04-09 15:27:07 +01:00
|
|
|
SmartStatus::Overall m_Overall;
|
2018-01-08 20:59:48 +00:00
|
|
|
QList<SmartAttributeParsedData> m_Attributes;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // SMARTDISKINFORMATION_H
|