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 }