unleashed-firmware/lib/app-scened-template/record_controller.hpp
あく e3c7201a20
Furi: core refactoring and CMSIS removal part 2 (#1410)
* Furi: rename and move core
* Furi: drop CMSIS_OS header and unused api, partially refactor and cleanup the rest
* Furi: CMSIS_OS drop and refactoring.
* Furi: refactoring, remove cmsis legacy
* Furi: fix incorrect assert on queue deallocation, cleanup timer
* Furi: improve delay api, get rid of floats
* hal: dropped furi_hal_crc
* Furi: move DWT based delay to cortex HAL
* Furi: update core documentation

Co-authored-by: hedger <hedger@nanode.su>
2022-07-20 13:56:33 +03:00

47 lines
961 B
C++

#pragma once
#include <core/record.h>
/**
* @brief Class for opening, casting, holding and closing records
*
* @tparam TRecordClass record class
*/
template <typename TRecordClass> class RecordController {
public:
/**
* @brief Construct a new Record Controller object for record with record name
*
* @param record_name record name
*/
RecordController(const char* record_name) {
name = record_name;
value = static_cast<TRecordClass*>(furi_record_open(name));
};
~RecordController() {
furi_record_close(name);
}
/**
* @brief Record getter
*
* @return TRecordClass* record value
*/
TRecordClass* get() {
return value;
}
/**
* @brief Record getter (by cast)
*
* @return TRecordClass* record value
*/
operator TRecordClass*() const {
return value;
}
private:
const char* name;
TRecordClass* value;
};