record_controller.hpp 961 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include <core/record.h>
  3. /**
  4. * @brief Class for opening, casting, holding and closing records
  5. *
  6. * @tparam TRecordClass record class
  7. */
  8. template <typename TRecordClass> class RecordController {
  9. public:
  10. /**
  11. * @brief Construct a new Record Controller object for record with record name
  12. *
  13. * @param record_name record name
  14. */
  15. RecordController(const char* record_name) {
  16. name = record_name;
  17. value = static_cast<TRecordClass*>(furi_record_open(name));
  18. };
  19. ~RecordController() {
  20. furi_record_close(name);
  21. }
  22. /**
  23. * @brief Record getter
  24. *
  25. * @return TRecordClass* record value
  26. */
  27. TRecordClass* get() {
  28. return value;
  29. }
  30. /**
  31. * @brief Record getter (by cast)
  32. *
  33. * @return TRecordClass* record value
  34. */
  35. operator TRecordClass*() const {
  36. return value;
  37. }
  38. private:
  39. const char* name;
  40. TRecordClass* value;
  41. };