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 }