github.com/bluenviron/gomavlib/v2@v2.2.1-0.20240308101627-2c07e3da629c/pkg/dialects/development/enum_target_absolute_sensor_capability_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 // These flags indicate the sensor reporting capabilities for TARGET_ABSOLUTE. 12 type TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS uint64 13 14 const ( 15 TARGET_ABSOLUTE_SENSOR_CAPABILITY_POSITION TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS = 1 16 TARGET_ABSOLUTE_SENSOR_CAPABILITY_VELOCITY TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS = 2 17 TARGET_ABSOLUTE_SENSOR_CAPABILITY_ACCELERATION TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS = 4 18 TARGET_ABSOLUTE_SENSOR_CAPABILITY_ATTITUDE TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS = 8 19 TARGET_ABSOLUTE_SENSOR_CAPABILITY_RATES TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS = 16 20 ) 21 22 var labels_TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS = map[TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS]string{ 23 TARGET_ABSOLUTE_SENSOR_CAPABILITY_POSITION: "TARGET_ABSOLUTE_SENSOR_CAPABILITY_POSITION", 24 TARGET_ABSOLUTE_SENSOR_CAPABILITY_VELOCITY: "TARGET_ABSOLUTE_SENSOR_CAPABILITY_VELOCITY", 25 TARGET_ABSOLUTE_SENSOR_CAPABILITY_ACCELERATION: "TARGET_ABSOLUTE_SENSOR_CAPABILITY_ACCELERATION", 26 TARGET_ABSOLUTE_SENSOR_CAPABILITY_ATTITUDE: "TARGET_ABSOLUTE_SENSOR_CAPABILITY_ATTITUDE", 27 TARGET_ABSOLUTE_SENSOR_CAPABILITY_RATES: "TARGET_ABSOLUTE_SENSOR_CAPABILITY_RATES", 28 } 29 30 var values_TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS = map[string]TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS{ 31 "TARGET_ABSOLUTE_SENSOR_CAPABILITY_POSITION": TARGET_ABSOLUTE_SENSOR_CAPABILITY_POSITION, 32 "TARGET_ABSOLUTE_SENSOR_CAPABILITY_VELOCITY": TARGET_ABSOLUTE_SENSOR_CAPABILITY_VELOCITY, 33 "TARGET_ABSOLUTE_SENSOR_CAPABILITY_ACCELERATION": TARGET_ABSOLUTE_SENSOR_CAPABILITY_ACCELERATION, 34 "TARGET_ABSOLUTE_SENSOR_CAPABILITY_ATTITUDE": TARGET_ABSOLUTE_SENSOR_CAPABILITY_ATTITUDE, 35 "TARGET_ABSOLUTE_SENSOR_CAPABILITY_RATES": TARGET_ABSOLUTE_SENSOR_CAPABILITY_RATES, 36 } 37 38 // MarshalText implements the encoding.TextMarshaler interface. 39 func (e TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS) MarshalText() ([]byte, error) { 40 if e == 0 { 41 return []byte("0"), nil 42 } 43 var names []string 44 for i := 0; i < 5; i++ { 45 mask := TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS(1 << i) 46 if e&mask == mask { 47 names = append(names, labels_TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS[mask]) 48 } 49 } 50 return []byte(strings.Join(names, " | ")), nil 51 } 52 53 // UnmarshalText implements the encoding.TextUnmarshaler interface. 54 func (e *TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS) UnmarshalText(text []byte) error { 55 labels := strings.Split(string(text), " | ") 56 var mask TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS 57 for _, label := range labels { 58 if value, ok := values_TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS[label]; ok { 59 mask |= value 60 } else if value, err := strconv.Atoi(label); err == nil { 61 mask |= TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS(value) 62 } else { 63 return fmt.Errorf("invalid label '%s'", label) 64 } 65 } 66 *e = mask 67 return nil 68 } 69 70 // String implements the fmt.Stringer interface. 71 func (e TARGET_ABSOLUTE_SENSOR_CAPABILITY_FLAGS) String() string { 72 val, _ := e.MarshalText() 73 return string(val) 74 }