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

     1  //autogenerated:yes
     2  //nolint:revive,misspell,govet,lll,dupl,gocritic
     3  package minimal
     4  
     5  import (
     6  	"fmt"
     7  	"strconv"
     8  	"strings"
     9  )
    10  
    11  // These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.
    12  type MAV_MODE_FLAG_DECODE_POSITION uint64
    13  
    14  const (
    15  	// First bit:  10000000
    16  	MAV_MODE_FLAG_DECODE_POSITION_SAFETY MAV_MODE_FLAG_DECODE_POSITION = 128
    17  	// Second bit: 01000000
    18  	MAV_MODE_FLAG_DECODE_POSITION_MANUAL MAV_MODE_FLAG_DECODE_POSITION = 64
    19  	// Third bit:  00100000
    20  	MAV_MODE_FLAG_DECODE_POSITION_HIL MAV_MODE_FLAG_DECODE_POSITION = 32
    21  	// Fourth bit: 00010000
    22  	MAV_MODE_FLAG_DECODE_POSITION_STABILIZE MAV_MODE_FLAG_DECODE_POSITION = 16
    23  	// Fifth bit:  00001000
    24  	MAV_MODE_FLAG_DECODE_POSITION_GUIDED MAV_MODE_FLAG_DECODE_POSITION = 8
    25  	// Sixth bit:   00000100
    26  	MAV_MODE_FLAG_DECODE_POSITION_AUTO MAV_MODE_FLAG_DECODE_POSITION = 4
    27  	// Seventh bit: 00000010
    28  	MAV_MODE_FLAG_DECODE_POSITION_TEST MAV_MODE_FLAG_DECODE_POSITION = 2
    29  	// Eighth bit: 00000001
    30  	MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE MAV_MODE_FLAG_DECODE_POSITION = 1
    31  )
    32  
    33  var labels_MAV_MODE_FLAG_DECODE_POSITION = map[MAV_MODE_FLAG_DECODE_POSITION]string{
    34  	MAV_MODE_FLAG_DECODE_POSITION_SAFETY:      "MAV_MODE_FLAG_DECODE_POSITION_SAFETY",
    35  	MAV_MODE_FLAG_DECODE_POSITION_MANUAL:      "MAV_MODE_FLAG_DECODE_POSITION_MANUAL",
    36  	MAV_MODE_FLAG_DECODE_POSITION_HIL:         "MAV_MODE_FLAG_DECODE_POSITION_HIL",
    37  	MAV_MODE_FLAG_DECODE_POSITION_STABILIZE:   "MAV_MODE_FLAG_DECODE_POSITION_STABILIZE",
    38  	MAV_MODE_FLAG_DECODE_POSITION_GUIDED:      "MAV_MODE_FLAG_DECODE_POSITION_GUIDED",
    39  	MAV_MODE_FLAG_DECODE_POSITION_AUTO:        "MAV_MODE_FLAG_DECODE_POSITION_AUTO",
    40  	MAV_MODE_FLAG_DECODE_POSITION_TEST:        "MAV_MODE_FLAG_DECODE_POSITION_TEST",
    41  	MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE: "MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE",
    42  }
    43  
    44  var values_MAV_MODE_FLAG_DECODE_POSITION = map[string]MAV_MODE_FLAG_DECODE_POSITION{
    45  	"MAV_MODE_FLAG_DECODE_POSITION_SAFETY":      MAV_MODE_FLAG_DECODE_POSITION_SAFETY,
    46  	"MAV_MODE_FLAG_DECODE_POSITION_MANUAL":      MAV_MODE_FLAG_DECODE_POSITION_MANUAL,
    47  	"MAV_MODE_FLAG_DECODE_POSITION_HIL":         MAV_MODE_FLAG_DECODE_POSITION_HIL,
    48  	"MAV_MODE_FLAG_DECODE_POSITION_STABILIZE":   MAV_MODE_FLAG_DECODE_POSITION_STABILIZE,
    49  	"MAV_MODE_FLAG_DECODE_POSITION_GUIDED":      MAV_MODE_FLAG_DECODE_POSITION_GUIDED,
    50  	"MAV_MODE_FLAG_DECODE_POSITION_AUTO":        MAV_MODE_FLAG_DECODE_POSITION_AUTO,
    51  	"MAV_MODE_FLAG_DECODE_POSITION_TEST":        MAV_MODE_FLAG_DECODE_POSITION_TEST,
    52  	"MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE": MAV_MODE_FLAG_DECODE_POSITION_CUSTOM_MODE,
    53  }
    54  
    55  // MarshalText implements the encoding.TextMarshaler interface.
    56  func (e MAV_MODE_FLAG_DECODE_POSITION) MarshalText() ([]byte, error) {
    57  	if e == 0 {
    58  		return []byte("0"), nil
    59  	}
    60  	var names []string
    61  	for i := 0; i < 8; i++ {
    62  		mask := MAV_MODE_FLAG_DECODE_POSITION(1 << i)
    63  		if e&mask == mask {
    64  			names = append(names, labels_MAV_MODE_FLAG_DECODE_POSITION[mask])
    65  		}
    66  	}
    67  	return []byte(strings.Join(names, " | ")), nil
    68  }
    69  
    70  // UnmarshalText implements the encoding.TextUnmarshaler interface.
    71  func (e *MAV_MODE_FLAG_DECODE_POSITION) UnmarshalText(text []byte) error {
    72  	labels := strings.Split(string(text), " | ")
    73  	var mask MAV_MODE_FLAG_DECODE_POSITION
    74  	for _, label := range labels {
    75  		if value, ok := values_MAV_MODE_FLAG_DECODE_POSITION[label]; ok {
    76  			mask |= value
    77  		} else if value, err := strconv.Atoi(label); err == nil {
    78  			mask |= MAV_MODE_FLAG_DECODE_POSITION(value)
    79  		} else {
    80  			return fmt.Errorf("invalid label '%s'", label)
    81  		}
    82  	}
    83  	*e = mask
    84  	return nil
    85  }
    86  
    87  // String implements the fmt.Stringer interface.
    88  func (e MAV_MODE_FLAG_DECODE_POSITION) String() string {
    89  	val, _ := e.MarshalText()
    90  	return string(val)
    91  }