github.com/bluenviron/gomavlib/v2@v2.2.1-0.20240308101627-2c07e3da629c/pkg/dialects/development/enum_mav_battery_status_flags.go (about)

     1  //autogenerated:yes
     2  //nolint:revive,misspell,govet,lll,dupl,gocritic
     3  package development
     4  
     5  import (
     6  	"fmt"
     7  	"strconv"
     8  	"strings"
     9  )
    10  
    11  // Battery status flags for fault, health and state indication.
    12  type MAV_BATTERY_STATUS_FLAGS uint64
    13  
    14  const (
    15  	// The battery is not ready to use (fly).
    16  	// Set if the battery has faults or other conditions that make it unsafe to fly with.
    17  	// Note: It will be the logical OR of other status bits (chosen by the manufacturer/integrator).
    18  	MAV_BATTERY_STATUS_FLAGS_NOT_READY_TO_USE MAV_BATTERY_STATUS_FLAGS = 1
    19  	// Battery is charging.
    20  	MAV_BATTERY_STATUS_FLAGS_CHARGING MAV_BATTERY_STATUS_FLAGS = 2
    21  	// Battery is cell balancing (during charging).
    22  	// Not ready to use (MAV_BATTERY_STATUS_FLAGS_NOT_READY_TO_USE may be set).
    23  	MAV_BATTERY_STATUS_FLAGS_CELL_BALANCING MAV_BATTERY_STATUS_FLAGS = 4
    24  	// Battery cells are not balanced.
    25  	// Not ready to use.
    26  	MAV_BATTERY_STATUS_FLAGS_FAULT_CELL_IMBALANCE MAV_BATTERY_STATUS_FLAGS = 8
    27  	// Battery is auto discharging (towards storage level).
    28  	// Not ready to use (MAV_BATTERY_STATUS_FLAGS_NOT_READY_TO_USE would be set).
    29  	MAV_BATTERY_STATUS_FLAGS_AUTO_DISCHARGING MAV_BATTERY_STATUS_FLAGS = 16
    30  	// Battery requires service (not safe to fly).
    31  	// This is set at vendor discretion.
    32  	// It is likely to be set for most faults, and may also be set according to a maintenance schedule (such as age, or number of recharge cycles, etc.).
    33  	MAV_BATTERY_STATUS_FLAGS_REQUIRES_SERVICE MAV_BATTERY_STATUS_FLAGS = 32
    34  	// Battery is faulty and cannot be repaired (not safe to fly).
    35  	// This is set at vendor discretion.
    36  	// The battery should be disposed of safely.
    37  	MAV_BATTERY_STATUS_FLAGS_BAD_BATTERY MAV_BATTERY_STATUS_FLAGS = 64
    38  	// Automatic battery protection monitoring is enabled.
    39  	// When enabled, the system will monitor for certain kinds of faults, such as cells being over-voltage.
    40  	// If a fault is triggered then and protections are enabled then a safety fault (MAV_BATTERY_STATUS_FLAGS_FAULT_PROTECTION_SYSTEM) will be set and power from the battery will be stopped.
    41  	// Note that battery protection monitoring should only be enabled when the vehicle is landed. Once the vehicle is armed, or starts moving, the protections should be disabled to prevent false positives from disabling the output.
    42  	MAV_BATTERY_STATUS_FLAGS_PROTECTIONS_ENABLED MAV_BATTERY_STATUS_FLAGS = 128
    43  	// The battery fault protection system had detected a fault and cut all power from the battery.
    44  	// This will only trigger if MAV_BATTERY_STATUS_FLAGS_PROTECTIONS_ENABLED is set.
    45  	// Other faults like MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_VOLT may also be set, indicating the cause of the protection fault.
    46  	MAV_BATTERY_STATUS_FLAGS_FAULT_PROTECTION_SYSTEM MAV_BATTERY_STATUS_FLAGS = 256
    47  	// One or more cells are above their maximum voltage rating.
    48  	MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_VOLT MAV_BATTERY_STATUS_FLAGS = 512
    49  	// One or more cells are below their minimum voltage rating.
    50  	// A battery that had deep-discharged might be irrepairably damaged, and set both MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_VOLT and MAV_BATTERY_STATUS_FLAGS_BAD_BATTERY.
    51  	MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_VOLT MAV_BATTERY_STATUS_FLAGS = 1024
    52  	// Over-temperature fault.
    53  	MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_TEMPERATURE MAV_BATTERY_STATUS_FLAGS = 2048
    54  	// Under-temperature fault.
    55  	MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_TEMPERATURE MAV_BATTERY_STATUS_FLAGS = 4096
    56  	// Over-current fault.
    57  	MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_CURRENT MAV_BATTERY_STATUS_FLAGS = 8192
    58  	// Short circuit event detected.
    59  	// The battery may or may not be safe to use (check other flags).
    60  	MAV_BATTERY_STATUS_FLAGS_FAULT_SHORT_CIRCUIT MAV_BATTERY_STATUS_FLAGS = 16384
    61  	// Voltage not compatible with power rail voltage (batteries on same power rail should have similar voltage).
    62  	MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_VOLTAGE MAV_BATTERY_STATUS_FLAGS = 32768
    63  	// Battery firmware is not compatible with current autopilot firmware.
    64  	MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_FIRMWARE MAV_BATTERY_STATUS_FLAGS = 65536
    65  	// Battery is not compatible due to cell configuration (e.g. 5s1p when vehicle requires 6s).
    66  	MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION MAV_BATTERY_STATUS_FLAGS = 131072
    67  	// Battery capacity_consumed and capacity_remaining values are relative to a full battery (they sum to the total capacity of the battery).
    68  	// This flag would be set for a smart battery that can accurately determine its remaining charge across vehicle reboots and discharge/recharge cycles.
    69  	// If unset the capacity_consumed indicates the consumption since vehicle power-on, as measured using a power monitor. The capacity_remaining, if provided, indicates the estimated remaining capacity on the assumption that the battery was full on vehicle boot.
    70  	// If unset a GCS is recommended to advise that users fully charge the battery on power on.
    71  	MAV_BATTERY_STATUS_FLAGS_CAPACITY_RELATIVE_TO_FULL MAV_BATTERY_STATUS_FLAGS = 262144
    72  	// Reserved (not used). If set, this will indicate that an additional status field exists for higher status values.
    73  	MAV_BATTERY_STATUS_FLAGS_EXTENDED MAV_BATTERY_STATUS_FLAGS = 4294967295
    74  )
    75  
    76  var labels_MAV_BATTERY_STATUS_FLAGS = map[MAV_BATTERY_STATUS_FLAGS]string{
    77  	MAV_BATTERY_STATUS_FLAGS_NOT_READY_TO_USE:                       "MAV_BATTERY_STATUS_FLAGS_NOT_READY_TO_USE",
    78  	MAV_BATTERY_STATUS_FLAGS_CHARGING:                               "MAV_BATTERY_STATUS_FLAGS_CHARGING",
    79  	MAV_BATTERY_STATUS_FLAGS_CELL_BALANCING:                         "MAV_BATTERY_STATUS_FLAGS_CELL_BALANCING",
    80  	MAV_BATTERY_STATUS_FLAGS_FAULT_CELL_IMBALANCE:                   "MAV_BATTERY_STATUS_FLAGS_FAULT_CELL_IMBALANCE",
    81  	MAV_BATTERY_STATUS_FLAGS_AUTO_DISCHARGING:                       "MAV_BATTERY_STATUS_FLAGS_AUTO_DISCHARGING",
    82  	MAV_BATTERY_STATUS_FLAGS_REQUIRES_SERVICE:                       "MAV_BATTERY_STATUS_FLAGS_REQUIRES_SERVICE",
    83  	MAV_BATTERY_STATUS_FLAGS_BAD_BATTERY:                            "MAV_BATTERY_STATUS_FLAGS_BAD_BATTERY",
    84  	MAV_BATTERY_STATUS_FLAGS_PROTECTIONS_ENABLED:                    "MAV_BATTERY_STATUS_FLAGS_PROTECTIONS_ENABLED",
    85  	MAV_BATTERY_STATUS_FLAGS_FAULT_PROTECTION_SYSTEM:                "MAV_BATTERY_STATUS_FLAGS_FAULT_PROTECTION_SYSTEM",
    86  	MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_VOLT:                        "MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_VOLT",
    87  	MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_VOLT:                       "MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_VOLT",
    88  	MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_TEMPERATURE:                 "MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_TEMPERATURE",
    89  	MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_TEMPERATURE:                "MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_TEMPERATURE",
    90  	MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_CURRENT:                     "MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_CURRENT",
    91  	MAV_BATTERY_STATUS_FLAGS_FAULT_SHORT_CIRCUIT:                    "MAV_BATTERY_STATUS_FLAGS_FAULT_SHORT_CIRCUIT",
    92  	MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_VOLTAGE:             "MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_VOLTAGE",
    93  	MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_FIRMWARE:            "MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_FIRMWARE",
    94  	MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION: "MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION",
    95  	MAV_BATTERY_STATUS_FLAGS_CAPACITY_RELATIVE_TO_FULL:              "MAV_BATTERY_STATUS_FLAGS_CAPACITY_RELATIVE_TO_FULL",
    96  	MAV_BATTERY_STATUS_FLAGS_EXTENDED:                               "MAV_BATTERY_STATUS_FLAGS_EXTENDED",
    97  }
    98  
    99  var values_MAV_BATTERY_STATUS_FLAGS = map[string]MAV_BATTERY_STATUS_FLAGS{
   100  	"MAV_BATTERY_STATUS_FLAGS_NOT_READY_TO_USE":                       MAV_BATTERY_STATUS_FLAGS_NOT_READY_TO_USE,
   101  	"MAV_BATTERY_STATUS_FLAGS_CHARGING":                               MAV_BATTERY_STATUS_FLAGS_CHARGING,
   102  	"MAV_BATTERY_STATUS_FLAGS_CELL_BALANCING":                         MAV_BATTERY_STATUS_FLAGS_CELL_BALANCING,
   103  	"MAV_BATTERY_STATUS_FLAGS_FAULT_CELL_IMBALANCE":                   MAV_BATTERY_STATUS_FLAGS_FAULT_CELL_IMBALANCE,
   104  	"MAV_BATTERY_STATUS_FLAGS_AUTO_DISCHARGING":                       MAV_BATTERY_STATUS_FLAGS_AUTO_DISCHARGING,
   105  	"MAV_BATTERY_STATUS_FLAGS_REQUIRES_SERVICE":                       MAV_BATTERY_STATUS_FLAGS_REQUIRES_SERVICE,
   106  	"MAV_BATTERY_STATUS_FLAGS_BAD_BATTERY":                            MAV_BATTERY_STATUS_FLAGS_BAD_BATTERY,
   107  	"MAV_BATTERY_STATUS_FLAGS_PROTECTIONS_ENABLED":                    MAV_BATTERY_STATUS_FLAGS_PROTECTIONS_ENABLED,
   108  	"MAV_BATTERY_STATUS_FLAGS_FAULT_PROTECTION_SYSTEM":                MAV_BATTERY_STATUS_FLAGS_FAULT_PROTECTION_SYSTEM,
   109  	"MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_VOLT":                        MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_VOLT,
   110  	"MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_VOLT":                       MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_VOLT,
   111  	"MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_TEMPERATURE":                 MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_TEMPERATURE,
   112  	"MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_TEMPERATURE":                MAV_BATTERY_STATUS_FLAGS_FAULT_UNDER_TEMPERATURE,
   113  	"MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_CURRENT":                     MAV_BATTERY_STATUS_FLAGS_FAULT_OVER_CURRENT,
   114  	"MAV_BATTERY_STATUS_FLAGS_FAULT_SHORT_CIRCUIT":                    MAV_BATTERY_STATUS_FLAGS_FAULT_SHORT_CIRCUIT,
   115  	"MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_VOLTAGE":             MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_VOLTAGE,
   116  	"MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_FIRMWARE":            MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_FIRMWARE,
   117  	"MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION": MAV_BATTERY_STATUS_FLAGS_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION,
   118  	"MAV_BATTERY_STATUS_FLAGS_CAPACITY_RELATIVE_TO_FULL":              MAV_BATTERY_STATUS_FLAGS_CAPACITY_RELATIVE_TO_FULL,
   119  	"MAV_BATTERY_STATUS_FLAGS_EXTENDED":                               MAV_BATTERY_STATUS_FLAGS_EXTENDED,
   120  }
   121  
   122  // MarshalText implements the encoding.TextMarshaler interface.
   123  func (e MAV_BATTERY_STATUS_FLAGS) MarshalText() ([]byte, error) {
   124  	if e == 0 {
   125  		return []byte("0"), nil
   126  	}
   127  	var names []string
   128  	for i := 0; i < 20; i++ {
   129  		mask := MAV_BATTERY_STATUS_FLAGS(1 << i)
   130  		if e&mask == mask {
   131  			names = append(names, labels_MAV_BATTERY_STATUS_FLAGS[mask])
   132  		}
   133  	}
   134  	return []byte(strings.Join(names, " | ")), nil
   135  }
   136  
   137  // UnmarshalText implements the encoding.TextUnmarshaler interface.
   138  func (e *MAV_BATTERY_STATUS_FLAGS) UnmarshalText(text []byte) error {
   139  	labels := strings.Split(string(text), " | ")
   140  	var mask MAV_BATTERY_STATUS_FLAGS
   141  	for _, label := range labels {
   142  		if value, ok := values_MAV_BATTERY_STATUS_FLAGS[label]; ok {
   143  			mask |= value
   144  		} else if value, err := strconv.Atoi(label); err == nil {
   145  			mask |= MAV_BATTERY_STATUS_FLAGS(value)
   146  		} else {
   147  			return fmt.Errorf("invalid label '%s'", label)
   148  		}
   149  	}
   150  	*e = mask
   151  	return nil
   152  }
   153  
   154  // String implements the fmt.Stringer interface.
   155  func (e MAV_BATTERY_STATUS_FLAGS) String() string {
   156  	val, _ := e.MarshalText()
   157  	return string(val)
   158  }