record_controller.hpp 961 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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>
  9. class RecordController {
  10. public:
  11. /**
  12. * @brief Construct a new Record Controller object for record with record name
  13. *
  14. * @param record_name record name
  15. */
  16. RecordController(const char* record_name) {
  17. name = record_name;
  18. value = static_cast<TRecordClass*>(furi_record_open(name));
  19. };
  20. ~RecordController() {
  21. furi_record_close(name);
  22. }
  23. /**
  24. * @brief Record getter
  25. *
  26. * @return TRecordClass* record value
  27. */
  28. TRecordClass* get() {
  29. return value;
  30. }
  31. /**
  32. * @brief Record getter (by cast)
  33. *
  34. * @return TRecordClass* record value
  35. */
  36. operator TRecordClass*() const {
  37. return value;
  38. }
  39. private:
  40. const char* name;
  41. TRecordClass* value;
  42. };