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 }