github.com/bluenviron/gomavlib/v2@v2.2.1-0.20240308101627-2c07e3da629c/pkg/dialects/uavionix/enum_uavionix_adsb_out_rf_select.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  // Transceiver RF control flags for ADS-B transponder dynamic reports
    12  type UAVIONIX_ADSB_OUT_RF_SELECT uint64
    13  
    14  const (
    15  	UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY    UAVIONIX_ADSB_OUT_RF_SELECT = 0
    16  	UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED UAVIONIX_ADSB_OUT_RF_SELECT = 1
    17  	UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED UAVIONIX_ADSB_OUT_RF_SELECT = 2
    18  )
    19  
    20  var labels_UAVIONIX_ADSB_OUT_RF_SELECT = map[UAVIONIX_ADSB_OUT_RF_SELECT]string{
    21  	UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY:    "UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY",
    22  	UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED: "UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED",
    23  	UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED: "UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED",
    24  }
    25  
    26  var values_UAVIONIX_ADSB_OUT_RF_SELECT = map[string]UAVIONIX_ADSB_OUT_RF_SELECT{
    27  	"UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY":    UAVIONIX_ADSB_OUT_RF_SELECT_STANDBY,
    28  	"UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED": UAVIONIX_ADSB_OUT_RF_SELECT_RX_ENABLED,
    29  	"UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED": UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED,
    30  }
    31  
    32  // MarshalText implements the encoding.TextMarshaler interface.
    33  func (e UAVIONIX_ADSB_OUT_RF_SELECT) MarshalText() ([]byte, error) {
    34  	if e == 0 {
    35  		return []byte("0"), nil
    36  	}
    37  	var names []string
    38  	for i := 0; i < 3; i++ {
    39  		mask := UAVIONIX_ADSB_OUT_RF_SELECT(1 << i)
    40  		if e&mask == mask {
    41  			names = append(names, labels_UAVIONIX_ADSB_OUT_RF_SELECT[mask])
    42  		}
    43  	}
    44  	return []byte(strings.Join(names, " | ")), nil
    45  }
    46  
    47  // UnmarshalText implements the encoding.TextUnmarshaler interface.
    48  func (e *UAVIONIX_ADSB_OUT_RF_SELECT) UnmarshalText(text []byte) error {
    49  	labels := strings.Split(string(text), " | ")
    50  	var mask UAVIONIX_ADSB_OUT_RF_SELECT
    51  	for _, label := range labels {
    52  		if value, ok := values_UAVIONIX_ADSB_OUT_RF_SELECT[label]; ok {
    53  			mask |= value
    54  		} else if value, err := strconv.Atoi(label); err == nil {
    55  			mask |= UAVIONIX_ADSB_OUT_RF_SELECT(value)
    56  		} else {
    57  			return fmt.Errorf("invalid label '%s'", label)
    58  		}
    59  	}
    60  	*e = mask
    61  	return nil
    62  }
    63  
    64  // String implements the fmt.Stringer interface.
    65  func (e UAVIONIX_ADSB_OUT_RF_SELECT) String() string {
    66  	val, _ := e.MarshalText()
    67  	return string(val)
    68  }