handle user input

This commit is contained in:
2025-12-11 20:48:18 +01:00
parent 1caa4ce6f2
commit 6732aacdc8
2 changed files with 50 additions and 1 deletions

View File

@ -31,7 +31,7 @@
#endif #endif
// Logic // Logic
// #define DRYRUN // don't touch the drives #define DRYRUN // don't touch the drives
#define FROZEN_ALERT // show alert if drive is frozen #define FROZEN_ALERT // show alert if drive is frozen
#define ZERO_CHECK // check drive after shred if all bytes are zero, show alert if this fails #define ZERO_CHECK // check drive after shred if all bytes are zero, show alert if this fails
@ -90,6 +90,8 @@ private:
static void filterInvalidDrives(list<Drive> *plistDrives); static void filterInvalidDrives(list<Drive> *plistDrives);
static void filterNewDrives(list<Drive> *plistOldDrives, list<Drive> *plistNewDrives); static void filterNewDrives(list<Drive> *plistOldDrives, list<Drive> *plistNewDrives);
static void addSMARTData(list<Drive> *plistDrives); static void addSMARTData(list<Drive> *plistDrives);
static void printAllDrives(list<Drive> *plistDrives);
static void printDrive(Drive *const pDrive);
static void ThreadScanDevices(); static void ThreadScanDevices();
static void ThreadUserInput(); static void ThreadUserInput();
static void ThreadShred(Drive *const pDrive); static void ThreadShred(Drive *const pDrive);

View File

@ -216,12 +216,59 @@ void reHDD::ThreadUserInput()
sleep(5); // sleep 5 sec sleep(5); // sleep 5 sec
std::exit(1); // Terminates main, doesn't wait for threads std::exit(1); // Terminates main, doesn't wait for threads
break; break;
case TUI::UserInput::Print:
// cout << "Print" << endl;
Logger::logThis()->info("User print single");
if (tmpSelectedDrive != nullptr)
{
// printDrive(tmpSelectedDrive);
}
// ui->updateTUI(&listDrives, u16SelectedEntry);
break;
case TUI::UserInput::PrintAll:
// cout << "PrintAll" << endl;
Logger::logThis()->info("User print all");
// printAllDrives(&listDrives);
// ui->updateTUI(&listDrives, u16SelectedEntry);
break;
default: default:
break; break;
} }
} }
} }
/**
* \brief start shred for all drives
* \param pointer of list <Drive>* plistDrives
* \return void
*/
void reHDD::printAllDrives(list<Drive> *plistDrives)
{
list<Drive>::iterator it;
mxDrives.lock();
for (it = plistDrives->begin(); it != plistDrives->end(); ++it)
{
Drive *pTmpDrive = iterator_to_pointer<Drive, std::list<Drive>::iterator>(it);
printDrive(pTmpDrive);
}
mxDrives.unlock();
}
void reHDD::printDrive(Drive *const pDrive)
{
if (pDrive->bWasShredded)
{
#ifdef ZERO_CHECK
if (pDrive->bWasChecked && (pDrive->u32DriveChecksumAfterShredding != 0U))
{
return; // Drive was shredded&checked but checksum failed, don't print label
}
#endif
Logger::logThis()->info("User print for: " + pDrive->getModelName() + "-" + pDrive->getSerial());
// TODO: Trigger printer for this drive
}
}
void reHDD::ThreadShred(Drive *const pDrive) void reHDD::ThreadShred(Drive *const pDrive)
{ {
if (pDrive != nullptr) if (pDrive != nullptr)