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()
}