From aefae9381e8103c195eeb10a3071cffdb8662a45 Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Fri, 25 Aug 2017 11:49:28 -0700 Subject: [PATCH] AP_RPM: add static create method --- libraries/AP_RPM/AP_RPM.h | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/libraries/AP_RPM/AP_RPM.h b/libraries/AP_RPM/AP_RPM.h index 59158942d9..07b6e7b7c5 100644 --- a/libraries/AP_RPM/AP_RPM.h +++ b/libraries/AP_RPM/AP_RPM.h @@ -22,14 +22,20 @@ // Maximum number of RPM measurement instances available on this platform #define RPM_MAX_INSTANCES 2 -class AP_RPM_Backend; - +class AP_RPM_Backend; + class AP_RPM { -public: friend class AP_RPM_Backend; - AP_RPM(void); +public: + static AP_RPM create() { return AP_RPM{}; } + + constexpr AP_RPM(AP_RPM &&other) = default; + + /* Do not allow copies */ + AP_RPM(const AP_RPM &other) = delete; + AP_RPM &operator=(const AP_RPM&) = delete; // RPM driver types enum RPM_Type { @@ -55,7 +61,7 @@ public: AP_Float _quality_min[RPM_MAX_INSTANCES]; static const struct AP_Param::GroupInfo var_info[]; - + // Return the number of rpm sensor instances uint8_t num_sensors(void) const { return num_instances; @@ -89,10 +95,12 @@ public: bool enabled(uint8_t instance) const; private: + AP_RPM(); + RPM_State state[RPM_MAX_INSTANCES]; AP_RPM_Backend *drivers[RPM_MAX_INSTANCES]; uint8_t num_instances:2; void detect_instance(uint8_t instance); - void update_instance(uint8_t instance); + void update_instance(uint8_t instance); };