From 9482030fc2ceb4fcfecd5a0eaa5b6e23c62b8630 Mon Sep 17 00:00:00 2001 From: localhorst Date: Fri, 1 May 2020 22:18:01 +0200 Subject: [PATCH] changed device model from struct to class --- src/app.cpp | 45 ++++++++++++++++++++-------------------- src/app.h | 8 +++---- src/drive.cpp | 44 +++++++++++++++++++++++++++++++++++---- src/drive.h | 44 ++++++++++++++++++++++++--------------- src/refurbishingHddTool | Bin 73056 -> 73512 bytes vcCodium.code-workspace | 6 +++++- 6 files changed, 99 insertions(+), 48 deletions(-) diff --git a/src/app.cpp b/src/app.cpp index fd3ff36..d7fdc92 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -25,6 +25,8 @@ void App::app_logic(void) { cout << "app logic" << endl; + //Drive* tmp = new Drive("test"); + searchDrives(&listDrives); //search for new drives and store them in list filterIgnoredDrives(&listDrives); //filter out ignored drives printDrives(&listDrives); //print currently attached drives @@ -35,7 +37,7 @@ void App::app_logic(void) * \param pointer of list *listDrives * \return void */ -void App::searchDrives(list *listDrives) +void App::searchDrives(list *listDrives) { cout << "search drives ..." << endl; char * cLine = NULL; @@ -52,12 +54,11 @@ void App::searchDrives(list *listDrives) { if (string(cLine).find("/dev/sd") != string::npos) { - struct drive tmpDrive; - tmpDrive.u32ErrorCount = 0U; - tmpDrive.u32PowerOnHours = 0U; - tmpDrive.u32SpinUpCount = 0U; - tmpDrive.sPath = string(cLine).substr (2,8); - listDrives->push_back(tmpDrive); + //struct drive tmpDrive; + + Drive* tmpDrive = new Drive(string(cLine).substr (2,8)); + + listDrives->push_back(*tmpDrive); } } fclose(outputfileHwinfo); @@ -68,7 +69,7 @@ void App::searchDrives(list *listDrives) * \param pointer of list *listDrives * \return void */ -void App::filterIgnoredDrives(list *listDrives) +void App::filterIgnoredDrives(list *listDrives) { string sDelimiter = ":"; string sIgnoredDrivePath; @@ -101,18 +102,18 @@ void App::filterIgnoredDrives(list *listDrives) for(auto row : vtlIgnoredDevices) { //cout << get<0>(row) << " is " << get<1>(row) << endl; - list ::iterator it; + list ::iterator it; // loop through found drives for (it = listDrives->begin(); it != listDrives->end(); ++it) { string sUUID; - if (!get<0>(row).compare(it->sPath)) //find same drive based on path + if (!get<0>(row).compare(it->getPath())) //find same drive based on path { // cout << "Same drive path found" << endl; char * cLine = NULL; size_t len = 0; string sCMD = "./blkid "; - sCMD.append(it->sPath); + sCMD.append(it->getPath()); // cout << "cmd: " << sCMD << endl; FILE* outputfileBlkid = popen(sCMD.c_str(), "r"); //get UUID from drive if (outputfileBlkid == NULL) @@ -136,7 +137,7 @@ void App::filterIgnoredDrives(list *listDrives) if (get<1>(row).compare(sUUID)) //compare uuid from ignore file and uuid from drive { - cout << "[ERROR] different uuid found than in ignore file:" << it->sPath << endl; + cout << "[ERROR] different uuid found than in ignore file:" << it->getPath() << endl; exit(EXIT_FAILURE); // exit to prevent accidentally shred a system drive } else @@ -154,20 +155,20 @@ void App::filterIgnoredDrives(list *listDrives) * \param pointer of list *listDrives * \return void */ -void App::printDrives(list *listDrives) +void App::printDrives(list *listDrives) { cout << "------------DRIVES---------------" << endl; - list ::iterator it; + list ::iterator it; for (it = listDrives->begin(); it != listDrives->end(); ++it) { - cout << "Path: " << it->sPath << endl; - cout << "Model: " << it->sModel << endl; - cout << "Manufacturer: " << it->sManufacturer << endl; - cout << "Capacity: " << it->sCapacity << endl; - cout << "Serial: " << it->sSerial << endl; - cout << "PowerOnHours: " << it->u32PowerOnHours << endl; - cout << "SpinUpCount: " << it->u32SpinUpCount << endl; - cout << "ErrorCount: " << it->u32ErrorCount << endl; + cout << "Path: " << it->getPath() << endl; + cout << "Model: " << it->getModel() << endl; + cout << "Manufacturer: " << it->getManufacturer() << endl; + cout << "Capacity: " << it->getCapacity() << endl; + cout << "Serial: " << it->getSerial() << endl; + cout << "PowerOnHours: " << it->getPowerOnHours() << endl; + cout << "SpinUpCount: " << it->getSpinUpCount() << endl; + cout << "ErrorCount: " << it->getErrorCount() << endl; cout << endl; } cout << "---------------------------------" << endl; diff --git a/src/app.h b/src/app.h index 062ce73..c401972 100644 --- a/src/app.h +++ b/src/app.h @@ -21,11 +21,11 @@ public: private: - list listDrives; //stores all drive data + list listDrives; //stores all drive data - void searchDrives(list *listDrives); - void printDrives(list *listDrives); - void filterIgnoredDrives(list *listDrives); + void searchDrives(list *listDrives); + void printDrives(list *listDrives); + void filterIgnoredDrives(list *listDrives); }; diff --git a/src/drive.cpp b/src/drive.cpp index 95bd3d2..5339491 100644 --- a/src/drive.cpp +++ b/src/drive.cpp @@ -1,13 +1,49 @@ /** * @file drive.cpp - * @brief + * @brief represent physical drive * @author hendrik schutter - * @date + * @date 01.05.2020 */ #include "drive.h" -Drive::Drive(void) { - cout << "created drive" << endl; + +string Drive::getPath(void) +{ + return sPath; +} + +string Drive::getManufacturer(void) +{ + return sManufacturer; +} + +string Drive::getModel(void) +{ + return sModel; +} + +string Drive::getSerial(void) +{ + return sSerial; +} + +string Drive::getCapacity(void) +{ + return sCapacity; +} + +uint32_t Drive::getErrorCount(void) +{ + return u32ErrorCount; +} +uint32_t Drive::getPowerOnHours(void) +{ + return u32PowerOnHours; +} + +uint32_t Drive::getSpinUpCount(void) +{ + return u32SpinUpCount; } diff --git a/src/drive.h b/src/drive.h index 65bd343..c0bfd06 100644 --- a/src/drive.h +++ b/src/drive.h @@ -1,8 +1,8 @@ /** * @file drive.h - * @brief represent + * @brief represent physical drive * @author hendrik schutter - * @date 16.12.2017 + * @date 01.05.2020 */ #ifndef DRIVE_H_ @@ -10,9 +10,32 @@ #include "refurbishingHddTool.h" +class Drive { +protected: -struct drive -{ +public: + Drive(string path) { + sPath = path; + } + + string getPath(void); + string getManufacturer(void); + string getModel(void); + string getSerial(void); + string getCapacity(void); + uint32_t getErrorCount(void); + uint32_t getPowerOnHours(void); + uint32_t getSpinUpCount(void); + + void setDriveSMARTData( string manufacturer, + string model, + string serial, + string capacity, + uint32_t errorCount, + uint32_t powerOnHours, + uint32_t spinUpCount); + +private: string sPath; string sManufacturer; string sModel; @@ -21,20 +44,7 @@ struct drive uint32_t u32ErrorCount; uint32_t u32PowerOnHours; uint32_t u32SpinUpCount; -}; - - -class Drive { -protected: - - -public: - Drive(void); }; - - - - #endif // DRIVE_H_ \ No newline at end of file diff --git a/src/refurbishingHddTool b/src/refurbishingHddTool index f328664adbe21f3de9d555df4eb4fa4eb7ceeb55..6bb29a129ec331ddb1beba1132df147950d76bd8 100755 GIT binary patch delta 20387 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 diff --git a/vcCodium.code-workspace b/vcCodium.code-workspace index 876a149..a921fa8 100644 --- a/vcCodium.code-workspace +++ b/vcCodium.code-workspace @@ -4,5 +4,9 @@ "path": "." } ], - "settings": {} + "settings": { + "files.associations": { + "iostream": "cpp" + } + } } \ No newline at end of file