diff --git a/include/printer.h b/include/printer.h new file mode 100644 index 0000000..7e1271c --- /dev/null +++ b/include/printer.h @@ -0,0 +1,55 @@ +/** + * @file printer.h + * @brief Send drive data to printer service using ipc msg queue + * @author Hendrik Schutter + * @date 24.11.2022 + */ + +#ifndef PRINTER_H_ +#define PRINTER_H_ + +#include "reHDD.h" + +#define STR_BUFFER_SIZE 64U + +typedef struct +{ +char caDriveIndex[STR_BUFFER_SIZE]; +char caDriveHours[STR_BUFFER_SIZE]; +char caDriveCycles[STR_BUFFER_SIZE]; +char caDriveErrors[STR_BUFFER_SIZE]; +char caDriveShredTimestamp[STR_BUFFER_SIZE]; +char caDriveShredDuration[STR_BUFFER_SIZE]; +char caDriveCapacity[STR_BUFFER_SIZE]; +char caDriveState[STR_BUFFER_SIZE]; +char caDriveModelFamiliy[STR_BUFFER_SIZE]; +char caDriveModelName[STR_BUFFER_SIZE]; +char caDriveSerialnumber[STR_BUFFER_SIZE]; +char caDriveReHddVersion[STR_BUFFER_SIZE]; + +} t_driveData; + +typedef struct +{ + long msg_queue_type; + t_driveData driveData; +} t_msgQueueData; + + +class Printer +{ +protected: + +public: + static Printer* getPrinter(); + void print(); + +private: + static bool instanceFlag; + static Printer *single; + Printer(); + ~Printer(); + + +}; +#endif // PRINTER_H_ \ No newline at end of file diff --git a/include/reHDD.h b/include/reHDD.h index c15069b..64a4e6a 100644 --- a/include/reHDD.h +++ b/include/reHDD.h @@ -64,6 +64,7 @@ using namespace std; #include "shred.h" #include "delete.h" #include "tui.h" +#include "printer.h" #include "logger/logger.h" extern Logger* logging; diff --git a/src/logger/logger.cpp b/src/logger/logger.cpp index 5708359..f77021d 100644 --- a/src/logger/logger.cpp +++ b/src/logger/logger.cpp @@ -18,8 +18,6 @@ Logger* Logger::single = NULL; /** * \brief create new logger instance - * \param path to log file - * \param struct with data * \return instance of Logger */ Logger::Logger() diff --git a/src/printer.cpp b/src/printer.cpp new file mode 100644 index 0000000..a0aa839 --- /dev/null +++ b/src/printer.cpp @@ -0,0 +1,59 @@ +/** + * @file printer.cpp + * @brief Send drive data to printer service using ipc msg queue + * @author Hendrik Schutter + * @date 24.11.2022 + */ + +#include "../include/reHDD.h" + + +bool Printer::instanceFlag = false; +Printer* Printer::single = NULL; + +/** + * \brief create new Printer instance + * \param path to log file + * \param struct with data + * \return instance of Printer + */ +Printer::Printer() +{ + +} + +/** + * \brief deconstructor + * \return void + */ +Printer::~Printer() +{ + instanceFlag = false; +} + +/** + * \brief send data to msg queue + * \return void + */ +void Printer::print(){ + +} + + +/** + * \brief return a instance of the printer + * \return printer obj + */ +Printer* Printer::getPrinter() +{ + if (!instanceFlag) + { + single = new Printer(); //create new obj + instanceFlag = true; + return single; + } + else + { + return single; //return existing obj + } +} \ No newline at end of file diff --git a/src/shred.cpp b/src/shred.cpp index f8d92c1..f39421b 100644 --- a/src/shred.cpp +++ b/src/shred.cpp @@ -202,6 +202,7 @@ int Shred::shredDrive(Drive* drive, int* ipSignalFd) { drive->state= Drive::NONE; drive->setTaskPercentage(0.0); + Printer::getPrinter()->print(); Logger::logThis()->info("Finished shred/check for: " + drive->getModelName() + "-" + drive->getSerial()); } return 0;