mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-03-12 09:33:59 -03:00
DataFlash: add static create method
This commit is contained in:
parent
faf2c8fb36
commit
a25320d522
@ -48,6 +48,18 @@ const AP_Param::GroupInfo DataFlash_Class::var_info[] = {
|
|||||||
AP_GROUPEND
|
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)
|
void DataFlash_Class::Init(const struct LogStructure *structures, uint8_t num_types)
|
||||||
{
|
{
|
||||||
gcs().send_text(MAV_SEVERITY_INFO, "Preparing log system");
|
gcs().send_text(MAV_SEVERITY_INFO, "Preparing log system");
|
||||||
|
@ -50,22 +50,22 @@ class DataFlash_Class
|
|||||||
public:
|
public:
|
||||||
FUNCTOR_TYPEDEF(print_mode_fn, void, AP_HAL::BetterStream*, uint8_t);
|
FUNCTOR_TYPEDEF(print_mode_fn, void, AP_HAL::BetterStream*, uint8_t);
|
||||||
FUNCTOR_TYPEDEF(vehicle_startup_message_Log_Writer, void);
|
FUNCTOR_TYPEDEF(vehicle_startup_message_Log_Writer, void);
|
||||||
DataFlash_Class(const char *firmware_string, const AP_Int32 &log_bitmask) :
|
|
||||||
_firmware_string(firmware_string),
|
static DataFlash_Class create(const char *firmware_string, const AP_Int32 &log_bitmask) {
|
||||||
_log_bitmask(log_bitmask)
|
return DataFlash_Class{firmware_string, log_bitmask};
|
||||||
{
|
}
|
||||||
AP_Param::setup_object_defaults(this, var_info);
|
|
||||||
if (_instance != nullptr) {
|
|
||||||
AP_HAL::panic("DataFlash must be singleton");
|
|
||||||
}
|
|
||||||
_instance = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get singleton instance
|
// get singleton instance
|
||||||
static DataFlash_Class *instance(void) {
|
static DataFlash_Class *instance(void) {
|
||||||
return _instance;
|
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);
|
void set_mission(const AP_Mission *mission);
|
||||||
|
|
||||||
// initialisation
|
// initialisation
|
||||||
@ -222,6 +222,8 @@ protected:
|
|||||||
bool is_critical);
|
bool is_critical);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
DataFlash_Class(const char *firmware_string, const AP_Int32 &log_bitmask);
|
||||||
|
|
||||||
#define DATAFLASH_MAX_BACKENDS 2
|
#define DATAFLASH_MAX_BACKENDS 2
|
||||||
uint8_t _next_backend;
|
uint8_t _next_backend;
|
||||||
DataFlash_Backend *backends[DATAFLASH_MAX_BACKENDS];
|
DataFlash_Backend *backends[DATAFLASH_MAX_BACKENDS];
|
||||||
|
Loading…
Reference in New Issue
Block a user