github.com/bluenviron/gomavlib/v2@v2.2.1-0.20240308101627-2c07e3da629c/pkg/dialects/uavionix/enum_uavionix_adsb_out_dynamic_state.go (about)

     1  //autogenerated:yes
     2  //nolint:revive,misspell,govet,lll,dupl,gocritic
     3  package uavionix
     4  
     5  import (
     6  	"fmt"
     7  	"strconv"
     8  	"strings"
     9  )
    10  
    11  // State flags for ADS-B transponder dynamic report
    12  type UAVIONIX_ADSB_OUT_DYNAMIC_STATE uint64
    13  
    14  const (
    15  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE        UAVIONIX_ADSB_OUT_DYNAMIC_STATE = 1
    16  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED    UAVIONIX_ADSB_OUT_DYNAMIC_STATE = 2
    17  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED UAVIONIX_ADSB_OUT_DYNAMIC_STATE = 4
    18  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND            UAVIONIX_ADSB_OUT_DYNAMIC_STATE = 8
    19  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT                UAVIONIX_ADSB_OUT_DYNAMIC_STATE = 16
    20  )
    21  
    22  var labels_UAVIONIX_ADSB_OUT_DYNAMIC_STATE = map[UAVIONIX_ADSB_OUT_DYNAMIC_STATE]string{
    23  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE:        "UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE",
    24  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED:    "UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED",
    25  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED: "UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED",
    26  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND:            "UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND",
    27  	UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT:                "UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT",
    28  }
    29  
    30  var values_UAVIONIX_ADSB_OUT_DYNAMIC_STATE = map[string]UAVIONIX_ADSB_OUT_DYNAMIC_STATE{
    31  	"UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE":        UAVIONIX_ADSB_OUT_DYNAMIC_STATE_INTENT_CHANGE,
    32  	"UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED":    UAVIONIX_ADSB_OUT_DYNAMIC_STATE_AUTOPILOT_ENABLED,
    33  	"UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED": UAVIONIX_ADSB_OUT_DYNAMIC_STATE_NICBARO_CROSSCHECKED,
    34  	"UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND":            UAVIONIX_ADSB_OUT_DYNAMIC_STATE_ON_GROUND,
    35  	"UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT":                UAVIONIX_ADSB_OUT_DYNAMIC_STATE_IDENT,
    36  }
    37  
    38  // MarshalText implements the encoding.TextMarshaler interface.
    39  func (e UAVIONIX_ADSB_OUT_DYNAMIC_STATE) 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 := UAVIONIX_ADSB_OUT_DYNAMIC_STATE(1 << i)
    46  		if e&mask == mask {
    47  			names = append(names, labels_UAVIONIX_ADSB_OUT_DYNAMIC_STATE[mask])
    48  		}
    49  	}
    50  	return []byte(strings.Join(names, " | ")), nil
    51  }
    52  
    53  // UnmarshalText implements the encoding.TextUnmarshaler interface.
    54  func (e *UAVIONIX_ADSB_OUT_DYNAMIC_STATE) UnmarshalText(text []byte) error {
    55  	labels := strings.Split(string(text), " | ")
    56  	var mask UAVIONIX_ADSB_OUT_DYNAMIC_STATE
    57  	for _, label := range labels {
    58  		if value, ok := values_UAVIONIX_ADSB_OUT_DYNAMIC_STATE[label]; ok {
    59  			mask |= value
    60  		} else if value, err := strconv.Atoi(label); err == nil {
    61  			mask |= UAVIONIX_ADSB_OUT_DYNAMIC_STATE(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 UAVIONIX_ADSB_OUT_DYNAMIC_STATE) String() string {
    72  	val, _ := e.MarshalText()
    73  	return string(val)
    74  }