LCOV - code coverage report
Current view: top level - AC_Autorotation - RSC_Autorotation.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 3 3 100.0 %
Date: 2026-09-09 11:02:08 Functions: 3 3 100.0 %

          Line data    Source code
       1             : // Class supporting autorotation state within the heli rotor speed controller
       2             : 
       3             : #pragma once
       4             : 
       5             : #include <AP_Param/AP_Param.h>
       6             : 
       7             : // helper class to manage autorotation state and variables within RSC
       8             : class RSC_Autorotation
       9             : {
      10             : public:
      11             : 
      12             :     RSC_Autorotation(void);
      13             : 
      14             :     enum class State {
      15             :         DEACTIVATED,
      16             :         BAILING_OUT,
      17             :         ACTIVE,
      18             :     };
      19             : 
      20             :     // state accessors
      21    19022494 :     bool active(void) const { return state == State::ACTIVE; }
      22    22194469 :     bool bailing_out(void) const { return state == State::BAILING_OUT; }
      23     4198056 :     bool enabled(void) const { return enable.get() == 1; }
      24             : 
      25             :     // update idle throttle when in autorotation
      26             :     bool get_idle_throttle(float& idle_throttle);
      27             : 
      28             :     // get the throttle ramp rate needed when bailing out of autorotation
      29             :     float get_bailout_ramp(void) const;
      30             : 
      31             :     // get the allowed run-up time that we expect the rotor to need to complete a bailout
      32             :     float get_runup_time(void) const;
      33             : 
      34             :     // request changes in autorotation state
      35             :     void set_active(bool active, bool force_state);
      36             : 
      37             :     // sanity check of parameters, should be called only whilst disarmed
      38             :     bool arming_checks(size_t buflen, char *buffer) const;
      39             : 
      40             :     // var_info for holding Parameter information
      41             :     static const struct AP_Param::GroupInfo var_info[];
      42             : 
      43             : private:
      44             : 
      45             :     AP_Int8  idle_output;             // (percent) rsc output used when in autorotation, used for setting autorotation window on ESCs
      46             :     AP_Int8  bailout_throttle_time;   // (seconds) time for in-flight power re-engagement when bailing-out of an autorotation
      47             :     AP_Int8  bailout_runup_time;      // (seconds) expected time for the motor to fully engage and for the rotor to regain safe head speed if necessary
      48             :     AP_Int8  enable;                  // enables autorotation state within the RSC
      49             : 
      50             :     State state;
      51             :     uint32_t bail_out_started_ms;     // (milliseconds) time that bailout started, used to time transition from "bailing out" to "autorotation stopped"
      52             : 
      53             : };

Generated by: LCOV version 1.14