File indexing completed on 2024-05-05 05:48:42
0001 /* 0002 SPDX-FileCopyrightText: 2010 Volker Lanz <vl@fidra.de> 0003 SPDX-FileCopyrightText: 2015 Chris Campbell <c.j.campbell@ed.ac.uk> 0004 SPDX-FileCopyrightText: 2016-2018 Andrius Štikonas <andrius@stikonas.eu> 0005 SPDX-FileCopyrightText: 2016 Teo Mrnjavac <teo@kde.org> 0006 SPDX-FileCopyrightText: 2018 Caio Jordão Carvalho <caiojcarvalho@gmail.com> 0007 SPDX-FileCopyrightText: 2019 Yuri Chornoivan <yurchor@ukr.net> 0008 0009 SPDX-License-Identifier: GPL-3.0-or-later 0010 */ 0011 0012 #ifndef KPMCORE_SMARTSTATUS_H 0013 #define KPMCORE_SMARTSTATUS_H 0014 0015 #include "util/libpartitionmanagerexport.h" 0016 #include "core/smartattribute.h" 0017 0018 #include <QtGlobal> 0019 #include <QString> 0020 #include <QList> 0021 0022 struct SkSmartAttributeParsedData; 0023 struct SkDisk; 0024 0025 class LIBKPMCORE_EXPORT SmartStatus 0026 { 0027 public: 0028 enum class Overall { 0029 Good, 0030 BadPast, 0031 BadSectors, 0032 BadNow, 0033 BadSectorsMany, 0034 Bad 0035 }; 0036 0037 enum class SelfTestStatus { 0038 Success, 0039 Aborted, 0040 Interrupted, 0041 Fatal, 0042 ErrorUnknown, 0043 ErrorEletrical, 0044 ErrorServo, 0045 ErrorRead, 0046 ErrorHandling, 0047 InProgress = 15, 0048 }; 0049 0050 public: 0051 typedef QList<SmartAttribute> Attributes; 0052 0053 public: 0054 explicit SmartStatus(const QString &device_path); 0055 0056 public: 0057 void update(); 0058 0059 const QString &devicePath() const 0060 { 0061 return m_DevicePath; 0062 } 0063 bool isValid() const 0064 { 0065 return m_InitSuccess; 0066 } 0067 bool status() const 0068 { 0069 return m_Status; 0070 } 0071 const QString &modelName() const 0072 { 0073 return m_ModelName; 0074 } 0075 const QString &serial() const 0076 { 0077 return m_Serial; 0078 } 0079 const QString &firmware() const 0080 { 0081 return m_Firmware; 0082 } 0083 quint64 temp() const 0084 { 0085 return m_Temp; 0086 } 0087 quint64 badSectors() const 0088 { 0089 return m_BadSectors; 0090 } 0091 quint64 powerCycles() const 0092 { 0093 return m_PowerCycles; 0094 } 0095 quint64 poweredOn() const 0096 { 0097 return m_PoweredOn; 0098 } 0099 const Attributes &attributes() const 0100 { 0101 return m_Attributes; 0102 } 0103 Overall overall() const 0104 { 0105 return m_Overall; 0106 } 0107 SelfTestStatus selfTestStatus() const 0108 { 0109 return m_SelfTestStatus; 0110 } 0111 0112 void addAttributes(QList<SmartAttributeParsedData> attr); 0113 0114 static QString tempToString(quint64 mkelvin); 0115 static QString overallAssessmentToString(Overall o); 0116 static QString selfTestStatusToString(SmartStatus::SelfTestStatus s); 0117 0118 private: 0119 void setStatus(bool s) 0120 { 0121 m_Status = s; 0122 } 0123 void setModelName(const QString &name) 0124 { 0125 m_ModelName = name; 0126 } 0127 void setSerial(const QString &s) 0128 { 0129 m_Serial = s; 0130 } 0131 void setFirmware(const QString &f) 0132 { 0133 m_Firmware = f; 0134 } 0135 void setTemp(quint64 t) 0136 { 0137 m_Temp = t; 0138 } 0139 void setInitSuccess(bool b) 0140 { 0141 m_InitSuccess = b; 0142 } 0143 void setBadSectors(quint64 s) 0144 { 0145 m_BadSectors = s; 0146 } 0147 void setPowerCycles(quint64 p) 0148 { 0149 m_PowerCycles = p; 0150 } 0151 void setPoweredOn(quint64 t) 0152 { 0153 m_PoweredOn = t; 0154 } 0155 void setOverall(Overall o) 0156 { 0157 m_Overall = o; 0158 } 0159 void setSelfTestStatus(SelfTestStatus s) 0160 { 0161 m_SelfTestStatus = s; 0162 } 0163 0164 private: 0165 const QString m_DevicePath; 0166 bool m_InitSuccess; 0167 bool m_Status; 0168 QString m_ModelName; 0169 QString m_Serial; 0170 QString m_Firmware; 0171 Overall m_Overall; 0172 SelfTestStatus m_SelfTestStatus; 0173 quint64 m_Temp; 0174 quint64 m_BadSectors; 0175 quint64 m_PowerCycles; 0176 quint64 m_PoweredOn; 0177 Attributes m_Attributes; 0178 }; 0179 0180 #endif