irda-app-brute-force.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. #pragma once
  2. #include "furi/check.h"
  3. #include <unordered_map>
  4. #include "irda-app-file-parser.hpp"
  5. #include <memory>
  6. class IrdaAppBruteForce {
  7. const char* universal_db_filename;
  8. std::string current_record;
  9. std::unique_ptr<IrdaAppFileParser> file_parser;
  10. typedef struct {
  11. int index;
  12. int amount;
  13. } Record;
  14. // 'key' is record name, because we have to search by both, index and name,
  15. // but index search has place once per button press, and should not be
  16. // noticed, but name search should occur during entering universal menu,
  17. // and will go through container for every record in file, that's why
  18. // more critical to have faster search by record name.
  19. std::unordered_map<std::string, Record> records;
  20. public:
  21. bool calculate_messages();
  22. void stop_bruteforce();
  23. bool send_next_bruteforce();
  24. bool start_bruteforce(int index, int& record_amount);
  25. void add_record(int index, const char* name);
  26. IrdaAppBruteForce(const char* filename) : universal_db_filename (filename) {}
  27. ~IrdaAppBruteForce() {}
  28. };