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

     1  //autogenerated:yes
     2  //nolint:revive,misspell,govet,lll,dupl,gocritic
     3  package common
     4  
     5  import (
     6  	"fmt"
     7  	"strconv"
     8  	"strings"
     9  )
    10  
    11  // Bitmap to indicate which dimensions should be ignored by the vehicle: a value of 0b00000000 indicates that none of the setpoint dimensions should be ignored.
    12  type ATTITUDE_TARGET_TYPEMASK uint64
    13  
    14  const (
    15  	// Ignore body roll rate
    16  	ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE ATTITUDE_TARGET_TYPEMASK = 1
    17  	// Ignore body pitch rate
    18  	ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE ATTITUDE_TARGET_TYPEMASK = 2
    19  	// Ignore body yaw rate
    20  	ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE ATTITUDE_TARGET_TYPEMASK = 4
    21  	// Use 3D body thrust setpoint instead of throttle
    22  	ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET ATTITUDE_TARGET_TYPEMASK = 32
    23  	// Ignore throttle
    24  	ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE ATTITUDE_TARGET_TYPEMASK = 64
    25  	// Ignore attitude
    26  	ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE ATTITUDE_TARGET_TYPEMASK = 128
    27  )
    28  
    29  var labels_ATTITUDE_TARGET_TYPEMASK = map[ATTITUDE_TARGET_TYPEMASK]string{
    30  	ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE:  "ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE",
    31  	ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE: "ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE",
    32  	ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE:   "ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE",
    33  	ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET:        "ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET",
    34  	ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE:        "ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE",
    35  	ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE:        "ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE",
    36  }
    37  
    38  var values_ATTITUDE_TARGET_TYPEMASK = map[string]ATTITUDE_TARGET_TYPEMASK{
    39  	"ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE":  ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE,
    40  	"ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE": ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE,
    41  	"ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE":   ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE,
    42  	"ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET":        ATTITUDE_TARGET_TYPEMASK_THRUST_BODY_SET,
    43  	"ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE":        ATTITUDE_TARGET_TYPEMASK_THROTTLE_IGNORE,
    44  	"ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE":        ATTITUDE_TARGET_TYPEMASK_ATTITUDE_IGNORE,
    45  }
    46  
    47  // MarshalText implements the encoding.TextMarshaler interface.
    48  func (e ATTITUDE_TARGET_TYPEMASK) MarshalText() ([]byte, error) {
    49  	if e == 0 {
    50  		return []byte("0"), nil
    51  	}
    52  	var names []string
    53  	for i := 0; i < 6; i++ {
    54  		mask := ATTITUDE_TARGET_TYPEMASK(1 << i)
    55  		if e&mask == mask {
    56  			names = append(names, labels_ATTITUDE_TARGET_TYPEMASK[mask])
    57  		}
    58  	}
    59  	return []byte(strings.Join(names, " | ")), nil
    60  }
    61  
    62  // UnmarshalText implements the encoding.TextUnmarshaler interface.
    63  func (e *ATTITUDE_TARGET_TYPEMASK) UnmarshalText(text []byte) error {
    64  	labels := strings.Split(string(text), " | ")
    65  	var mask ATTITUDE_TARGET_TYPEMASK
    66  	for _, label := range labels {
    67  		if value, ok := values_ATTITUDE_TARGET_TYPEMASK[label]; ok {
    68  			mask |= value
    69  		} else if value, err := strconv.Atoi(label); err == nil {
    70  			mask |= ATTITUDE_TARGET_TYPEMASK(value)
    71  		} else {
    72  			return fmt.Errorf("invalid label '%s'", label)
    73  		}
    74  	}
    75  	*e = mask
    76  	return nil
    77  }
    78  
    79  // String implements the fmt.Stringer interface.
    80  func (e ATTITUDE_TARGET_TYPEMASK) String() string {
    81  	val, _ := e.MarshalText()
    82  	return string(val)
    83  }