Warning, file /system/kpmcore/src/core/smartdiskinformation.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho <caiojcarvalho@gmail.com>
0003     SPDX-FileCopyrightText: 2018-2019 Andrius Štikonas <andrius@stikonas.eu>
0004 
0005     SPDX-License-Identifier: GPL-3.0-or-later
0006 */
0007 
0008 #ifndef KPMCORE_SMARTDISKINFORMATION_H
0009 #define KPMCORE_SMARTDISKINFORMATION_H
0010 
0011 #include "core/smartstatus.h"
0012 
0013 #include <QList>
0014 #include <QString>
0015 
0016 class SmartAttributeParsedData;
0017 
0018 /** Disk information retrieved by SMART.
0019 
0020     It includes a list with your SMART attributes.
0021 
0022     @author Caio Jordão Carvalho <caiojcarvalho@gmail.com>
0023 */
0024 class SmartDiskInformation
0025 {
0026 public:
0027     SmartDiskInformation();
0028 
0029 public:
0030     void updateBadSectors();
0031 
0032     void updateOverall();
0033 
0034     bool updateTemperature();
0035 
0036     bool updatePowerOn();
0037 
0038     bool updatePowerCycle();
0039 
0040     SmartAttributeParsedData *findAttribute(quint32 id);
0041 
0042 public:
0043     const QString model() const
0044     {
0045         return m_ModelName;   /**< @return the disk model name */
0046     }
0047 
0048     const QString firmware() const
0049     {
0050         return m_FirmwareVersion;    /**< @return the disk firmware version */
0051     }
0052 
0053     const QString serial() const
0054     {
0055         return m_SerialNumber;    /**< @return the disk serial number */
0056     }
0057 
0058     quint64 sectors() const
0059     {
0060         return m_Sectors;    /**< @return disk size */
0061     }
0062 
0063     bool smartStatus() const
0064     {
0065         return m_SmartStatus;    /**< @return a boolean representing SMART status */
0066     }
0067 
0068     SmartStatus::SelfTestStatus selfTestExecutionStatus() const
0069     {
0070         return m_SelfTestExecutionStatus;    /**< @return SMART self execution status */
0071     }
0072 
0073     SmartStatus::Overall overall() const
0074     {
0075         return m_Overall;    /**< @return SMART overall status */
0076     }
0077 
0078     quint64 temperature() const
0079     {
0080         return m_Temperature;    /**< @return disk temperature in kelvin */
0081     }
0082 
0083     quint64 badSectors() const
0084     {
0085         return m_BadSectors;    /**< @return the number of bad sectors */
0086     }
0087 
0088     quint64 poweredOn() const
0089     {
0090         return m_PoweredOn;    /**< @return quantity of time that device is powered on */
0091     }
0092 
0093     quint64 powerCycles() const
0094     {
0095         return m_PowerCycles;    /**< @return quantity of power cycles */
0096     }
0097 
0098     QList<SmartAttributeParsedData> attributes() const
0099     {
0100         return m_Attributes;    /**< @return a list that contains the disk SMART attributes */
0101     }
0102 
0103 public:
0104     void setModel(QString modelName)
0105     {
0106         m_ModelName = modelName;
0107     }
0108 
0109     void setFirmware(QString firmware)
0110     {
0111         m_FirmwareVersion = firmware;
0112     }
0113 
0114     void setSerial(QString serial)
0115     {
0116         m_SerialNumber = serial;
0117     }
0118 
0119     void setSectors(quint64 numSectors)
0120     {
0121         m_Sectors = numSectors;
0122     }
0123 
0124     void setPowerCycles(quint64 powerCycleCt)
0125     {
0126         m_PowerCycles = powerCycleCt;
0127     }
0128 
0129     void setSmartStatus(bool smartStatus)
0130     {
0131         m_SmartStatus = smartStatus;
0132     }
0133 
0134     void setSelfTestExecutionStatus(SmartStatus::SelfTestStatus status)
0135     {
0136         m_SelfTestExecutionStatus = status;
0137     }
0138 
0139     void addAttribute(SmartAttributeParsedData &attribute)
0140     {
0141         m_Attributes << attribute;
0142     }
0143 
0144 protected:
0145     void validateBadAttributes();
0146 
0147 private:
0148     QString m_ModelName;
0149     QString m_FirmwareVersion;
0150     QString m_SerialNumber;
0151     quint64 m_Sectors;
0152     quint64 m_Temperature;
0153     quint64 m_BadSectors;
0154     quint64 m_PoweredOn;
0155     quint64 m_PowerCycles;
0156     bool m_SmartStatus;
0157     bool m_BadAttributeNow;
0158     bool m_BadAttributeInThePast;
0159     SmartStatus::SelfTestStatus m_SelfTestExecutionStatus;
0160     SmartStatus::Overall m_Overall;
0161     QList<SmartAttributeParsedData> m_Attributes;
0162 };
0163 
0164 #endif // SMARTDISKINFORMATION_H