irda-app-brute-force.hpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  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. File file;
  9. std::string current_record;
  10. std::unique_ptr<IrdaAppFileParser> file_parser;
  11. typedef struct {
  12. int index;
  13. int amount;
  14. } Record;
  15. // 'key' is record name, because we have to search by both, index and name,
  16. // but index search has place once per button press, and should not be
  17. // noticed, but name search should occur during entering universal menu,
  18. // and will go through container for every record in file, that's why
  19. // more critical to have faster search by record name.
  20. std::unordered_map<std::string, Record> records;
  21. public:
  22. bool calculate_messages();
  23. void stop_bruteforce();
  24. bool send_next_bruteforce();
  25. bool start_bruteforce(int index, int& record_amount);
  26. void add_record(int index, const char* name);
  27. IrdaAppBruteForce(const char* filename) : universal_db_filename (filename) {}
  28. ~IrdaAppBruteForce() {}
  29. };