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