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  }