github.com/bluenviron/gomavlib/v2@v2.2.1-0.20240308101627-2c07e3da629c/pkg/dialects/common/enum_utm_data_avail_flags.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  // Flags for the global position report.
    12  type UTM_DATA_AVAIL_FLAGS uint64
    13  
    14  const (
    15  	// The field time contains valid data.
    16  	UTM_DATA_AVAIL_FLAGS_TIME_VALID UTM_DATA_AVAIL_FLAGS = 1
    17  	// The field uas_id contains valid data.
    18  	UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE UTM_DATA_AVAIL_FLAGS = 2
    19  	// The fields lat, lon and h_acc contain valid data.
    20  	UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE UTM_DATA_AVAIL_FLAGS = 4
    21  	// The fields alt and v_acc contain valid data.
    22  	UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE UTM_DATA_AVAIL_FLAGS = 8
    23  	// The field relative_alt contains valid data.
    24  	UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE UTM_DATA_AVAIL_FLAGS = 16
    25  	// The fields vx and vy contain valid data.
    26  	UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE UTM_DATA_AVAIL_FLAGS = 32
    27  	// The field vz contains valid data.
    28  	UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE UTM_DATA_AVAIL_FLAGS = 64
    29  	// The fields next_lat, next_lon and next_alt contain valid data.
    30  	UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE UTM_DATA_AVAIL_FLAGS = 128
    31  )
    32  
    33  var labels_UTM_DATA_AVAIL_FLAGS = map[UTM_DATA_AVAIL_FLAGS]string{
    34  	UTM_DATA_AVAIL_FLAGS_TIME_VALID:                  "UTM_DATA_AVAIL_FLAGS_TIME_VALID",
    35  	UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE:            "UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE",
    36  	UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE:          "UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE",
    37  	UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE:          "UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE",
    38  	UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE: "UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE",
    39  	UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE:   "UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE",
    40  	UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE:     "UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE",
    41  	UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE:     "UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE",
    42  }
    43  
    44  var values_UTM_DATA_AVAIL_FLAGS = map[string]UTM_DATA_AVAIL_FLAGS{
    45  	"UTM_DATA_AVAIL_FLAGS_TIME_VALID":                  UTM_DATA_AVAIL_FLAGS_TIME_VALID,
    46  	"UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE":            UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE,
    47  	"UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE":          UTM_DATA_AVAIL_FLAGS_POSITION_AVAILABLE,
    48  	"UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE":          UTM_DATA_AVAIL_FLAGS_ALTITUDE_AVAILABLE,
    49  	"UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE": UTM_DATA_AVAIL_FLAGS_RELATIVE_ALTITUDE_AVAILABLE,
    50  	"UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE":   UTM_DATA_AVAIL_FLAGS_HORIZONTAL_VELO_AVAILABLE,
    51  	"UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE":     UTM_DATA_AVAIL_FLAGS_VERTICAL_VELO_AVAILABLE,
    52  	"UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE":     UTM_DATA_AVAIL_FLAGS_NEXT_WAYPOINT_AVAILABLE,
    53  }
    54  
    55  // MarshalText implements the encoding.TextMarshaler interface.
    56  func (e UTM_DATA_AVAIL_FLAGS) 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 := UTM_DATA_AVAIL_FLAGS(1 << i)
    63  		if e&mask == mask {
    64  			names = append(names, labels_UTM_DATA_AVAIL_FLAGS[mask])
    65  		}
    66  	}
    67  	return []byte(strings.Join(names, " | ")), nil
    68  }
    69  
    70  // UnmarshalText implements the encoding.TextUnmarshaler interface.
    71  func (e *UTM_DATA_AVAIL_FLAGS) UnmarshalText(text []byte) error {
    72  	labels := strings.Split(string(text), " | ")
    73  	var mask UTM_DATA_AVAIL_FLAGS
    74  	for _, label := range labels {
    75  		if value, ok := values_UTM_DATA_AVAIL_FLAGS[label]; ok {
    76  			mask |= value
    77  		} else if value, err := strconv.Atoi(label); err == nil {
    78  			mask |= UTM_DATA_AVAIL_FLAGS(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 UTM_DATA_AVAIL_FLAGS) String() string {
    89  	val, _ := e.MarshalText()
    90  	return string(val)
    91  }