DataFlash: add static create method

This commit is contained in:
Lucas De Marchi 2017-08-23 13:40:59 -07:00 committed by Francisco Ferreira
parent faf2c8fb36
commit a25320d522
2 changed files with 25 additions and 11 deletions

View File

@ -48,6 +48,18 @@ const AP_Param::GroupInfo DataFlash_Class::var_info[] = {
AP_GROUPEND
};
DataFlash_Class::DataFlash_Class(const char *firmware_string, const AP_Int32 &log_bitmask)
: _firmware_string(firmware_string)
, _log_bitmask(log_bitmask)
{
AP_Param::setup_object_defaults(this, var_info);
if (_instance != nullptr) {
AP_HAL::panic("DataFlash must be singleton");
}
_instance = this;
}
void DataFlash_Class::Init(const struct LogStructure *structures, uint8_t num_types)
{
gcs().send_text(MAV_SEVERITY_INFO, "Preparing log system");

View File

@ -50,22 +50,22 @@ class DataFlash_Class
public:
FUNCTOR_TYPEDEF(print_mode_fn, void, AP_HAL::BetterStream*, uint8_t);
FUNCTOR_TYPEDEF(vehicle_startup_message_Log_Writer, void);
DataFlash_Class(const char *firmware_string, const AP_Int32 &log_bitmask) :
_firmware_string(firmware_string),
_log_bitmask(log_bitmask)
{
AP_Param::setup_object_defaults(this, var_info);
if (_instance != nullptr) {
AP_HAL::panic("DataFlash must be singleton");
}
_instance = this;
}
static DataFlash_Class create(const char *firmware_string, const AP_Int32 &log_bitmask) {
return DataFlash_Class{firmware_string, log_bitmask};
}
// get singleton instance
static DataFlash_Class *instance(void) {
return _instance;
}
constexpr DataFlash_Class(DataFlash_Class &&other) = default;
/* Do not allow copies */
DataFlash_Class(const DataFlash_Class &other) = delete;
DataFlash_Class &operator=(const DataFlash_Class&) = delete;
void set_mission(const AP_Mission *mission);
// initialisation
@ -222,6 +222,8 @@ protected:
bool is_critical);
private:
DataFlash_Class(const char *firmware_string, const AP_Int32 &log_bitmask);
#define DATAFLASH_MAX_BACKENDS 2
uint8_t _next_backend;
DataFlash_Backend *backends[DATAFLASH_MAX_BACKENDS];