devEUI, err := types.ParseDevEUI(in) if err != nil { ctx.Fatalf("Invalid DevEUI: %s", err) } dev.GetLorawanDevice().DevEui = &devEUI } if in, err := cmd.Flags().GetString("dev-addr"); err == nil && in != "" { ctx.Warn("Manually changing the DevAddr of a device might break routing for this device") if override, _ := cmd.Flags().GetBool("override"); !override { ctx.Warnf("Use the --override flag if you're really sure you want to do this") os.Exit(0) } devAddr, err := types.ParseDevAddr(in) if err != nil { ctx.Fatalf("Invalid DevAddr: %s", err) } dev.GetLorawanDevice().DevAddr = &devAddr } if in, err := cmd.Flags().GetString("nwk-s-key"); err == nil && in != "" { key, err := types.ParseNwkSKey(in) if err != nil { ctx.Fatalf("Invalid NwkSKey: %s", err) } dev.GetLorawanDevice().NwkSKey = &key } if in, err := cmd.Flags().GetString("app-s-key"); err == nil && in != "" {
"github.com/spf13/cobra" "github.com/spf13/viper" ) var uplinkCmd = &cobra.Command{ Hidden: true, Use: "uplink [DevAddr] [NwkSKey] [AppSKey] [FCnt] [Payload]", Short: "Simulate an uplink message to the network", Long: `ttnctl uplink simulates an uplink message to the network`, Run: func(cmd *cobra.Command, args []string) { if len(args) < 5 { cmd.UsageFunc()(cmd) return } devAddr, err := types.ParseDevAddr(args[0]) if err != nil { ctx.WithError(err).Fatal("Invalid DevAddr") } nwkSKey, err := types.ParseNwkSKey(args[1]) if err != nil { ctx.WithError(err).Fatal("Invalid NwkSKey") } appSKey, err := types.ParseAppSKey(args[2]) if err != nil { ctx.WithError(err).Fatal("Invalid AppSKey") } fCnt, err := strconv.Atoi(args[3])