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 }