func registerCmd()

in newtmgr/cli/interactive.go [193:247]


func registerCmd(c *ishell.Context) {
	s, err := GetSesn()
	if err != nil {
		nmUsage(nil, err)
	}

	m, err := extractResKv(c.Args)
	if err != nil || len(c.Args) == 0 {
		c.Println("Incorrect or no parameters provided ... using cached ones")
	} else {
		getPath(m)
	}

	if hasStoredParams() == false {
		c.Println("Missing resource path")
		c.Println(c.HelpText())
		return
	}

	c.Println(m)

	c.Println("Register for notifications")
	c.Println("path: ", ResourcePath)
	c.Println()

	mc := nmcoap.MsgCriteria{Token: nmxutil.NextToken()}
	cl, err := s.ListenCoap(mc)
	if err != nil {
		fmt.Printf("error: %s\n", err.Error())
		return
	}

	cmd := xact.NewResNoRxCmd()
	cmd.MsgParams = nmcoap.MsgParams{
		Code:    coap.GET,
		Uri:     ResourcePath,
		Observe: nmcoap.OBSERVE_START,
		Token:   mc.Token,
	}
	if _, err := cmd.Run(s); err != nil {
		fmt.Printf("error: %s\n", err.Error())
		return
	}

	if _, err := sesn.RxCoap(cl, nmutil.TxOptions().Timeout); err != nil {
		s.StopListenCoap(mc)
		fmt.Printf("error: %s\n", err.Error())
		return
	}

	o := addObserver(ResourcePath, cl)
	c.Println("Observer added:")
	c.Println("id:", o.Id, "path:", ResourcePath, "token:", mc.Token)
	c.Println()
}