feat(api): get supported parameters from device
This commit is contained in:
parent
8d65004d3c
commit
5da536ed96
|
|
@ -47,6 +47,7 @@ func StartApi(a Api) {
|
||||||
iot.HandleFunc("/{sn}/add", a.deviceCreateMsg).Methods("PUT")
|
iot.HandleFunc("/{sn}/add", a.deviceCreateMsg).Methods("PUT")
|
||||||
iot.HandleFunc("/{sn}/del", a.deviceDeleteMsg).Methods("PUT")
|
iot.HandleFunc("/{sn}/del", a.deviceDeleteMsg).Methods("PUT")
|
||||||
iot.HandleFunc("/{sn}/set", a.deviceUpdateMsg).Methods("PUT")
|
iot.HandleFunc("/{sn}/set", a.deviceUpdateMsg).Methods("PUT")
|
||||||
|
iot.HandleFunc("/{sn}/parameters", a.deviceGetSupportedParametersMsg).Methods("PUT")
|
||||||
//TODO: Create operation action handler
|
//TODO: Create operation action handler
|
||||||
iot.HandleFunc("/device/{sn}/act", a.deviceUpdateMsg).Methods("PUT")
|
iot.HandleFunc("/device/{sn}/act", a.deviceUpdateMsg).Methods("PUT")
|
||||||
|
|
||||||
|
|
@ -91,6 +92,51 @@ func (a *Api) retrieveDevices(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *Api) deviceGetSupportedParametersMsg(w http.ResponseWriter, r *http.Request) {
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
sn := vars["sn"]
|
||||||
|
a.deviceExists(sn, w)
|
||||||
|
|
||||||
|
var receiver usp_msg.GetSupportedDM
|
||||||
|
|
||||||
|
err := json.NewDecoder(r.Body).Decode(&receiver)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msg := utils.NewGetSupportedParametersMsg(receiver)
|
||||||
|
encodedMsg, err := proto.Marshal(&msg)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
record := utils.NewUspRecord(encodedMsg, sn)
|
||||||
|
tr369Message, err := proto.Marshal(&record)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln("Failed to encode tr369 record:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
//a.Broker.Request(tr369Message, usp_msg.Header_GET, "oktopus/v1/agent/"+sn, "oktopus/v1/get/"+sn)
|
||||||
|
a.MsgQueue[msg.Header.MsgId] = make(chan usp_msg.Msg)
|
||||||
|
a.Broker.Publish(tr369Message, "oktopus/v1/agent/"+sn, "oktopus/v1/api/"+sn)
|
||||||
|
|
||||||
|
select {
|
||||||
|
case msg := <-a.MsgQueue[msg.Header.MsgId]:
|
||||||
|
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
||||||
|
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetSetResp())
|
||||||
|
return
|
||||||
|
case <-time.After(time.Second * 28):
|
||||||
|
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
||||||
|
w.WriteHeader(http.StatusGatewayTimeout)
|
||||||
|
json.NewEncoder(w).Encode("Request Timed Out")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (a *Api) deviceCreateMsg(w http.ResponseWriter, r *http.Request) {
|
func (a *Api) deviceCreateMsg(w http.ResponseWriter, r *http.Request) {
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
sn := vars["sn"]
|
sn := vars["sn"]
|
||||||
|
|
@ -128,7 +174,7 @@ func (a *Api) deviceCreateMsg(w http.ResponseWriter, r *http.Request) {
|
||||||
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
||||||
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetAddResp())
|
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetAddResp())
|
||||||
return
|
return
|
||||||
case <-time.After(time.Second * 5):
|
case <-time.After(time.Second * 28):
|
||||||
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
||||||
w.WriteHeader(http.StatusGatewayTimeout)
|
w.WriteHeader(http.StatusGatewayTimeout)
|
||||||
json.NewEncoder(w).Encode("Request Timed Out")
|
json.NewEncoder(w).Encode("Request Timed Out")
|
||||||
|
|
@ -173,7 +219,7 @@ func (a *Api) deviceGetMsg(w http.ResponseWriter, r *http.Request) {
|
||||||
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
||||||
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetGetResp())
|
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetGetResp())
|
||||||
return
|
return
|
||||||
case <-time.After(time.Second * 5):
|
case <-time.After(time.Second * 30):
|
||||||
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
||||||
w.WriteHeader(http.StatusGatewayTimeout)
|
w.WriteHeader(http.StatusGatewayTimeout)
|
||||||
json.NewEncoder(w).Encode("Request Timed Out")
|
json.NewEncoder(w).Encode("Request Timed Out")
|
||||||
|
|
@ -218,7 +264,7 @@ func (a *Api) deviceDeleteMsg(w http.ResponseWriter, r *http.Request) {
|
||||||
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
||||||
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetDeleteResp())
|
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetDeleteResp())
|
||||||
return
|
return
|
||||||
case <-time.After(time.Second * 5):
|
case <-time.After(time.Second * 28):
|
||||||
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
||||||
w.WriteHeader(http.StatusGatewayTimeout)
|
w.WriteHeader(http.StatusGatewayTimeout)
|
||||||
json.NewEncoder(w).Encode("Request Timed Out")
|
json.NewEncoder(w).Encode("Request Timed Out")
|
||||||
|
|
@ -263,7 +309,7 @@ func (a *Api) deviceUpdateMsg(w http.ResponseWriter, r *http.Request) {
|
||||||
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
log.Printf("Received Msg: %s", msg.Header.MsgId)
|
||||||
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetSetResp())
|
json.NewEncoder(w).Encode(msg.Body.GetResponse().GetSetResp())
|
||||||
return
|
return
|
||||||
case <-time.After(time.Second * 5):
|
case <-time.After(time.Second * 28):
|
||||||
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
log.Printf("Request %s Timed Out", msg.Header.MsgId)
|
||||||
w.WriteHeader(http.StatusGatewayTimeout)
|
w.WriteHeader(http.StatusGatewayTimeout)
|
||||||
json.NewEncoder(w).Encode("Request Timed Out")
|
json.NewEncoder(w).Encode("Request Timed Out")
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
)
|
)
|
||||||
|
|
||||||
//Status are saved at database as numbers
|
// Status are saved at database as numbers
|
||||||
const (
|
const (
|
||||||
Online = iota
|
Online = iota
|
||||||
Associating
|
Associating
|
||||||
|
|
@ -115,3 +115,21 @@ func NewSetMsg(updateStuff usp_msg.Set) usp_msg.Msg {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewGetSupportedParametersMsg(getStuff usp_msg.GetSupportedDM) usp_msg.Msg {
|
||||||
|
return usp_msg.Msg{
|
||||||
|
Header: &usp_msg.Header{
|
||||||
|
MsgId: uuid.NewString(),
|
||||||
|
MsgType: usp_msg.Header_GET_SUPPORTED_DM,
|
||||||
|
},
|
||||||
|
Body: &usp_msg.Body{
|
||||||
|
MsgBody: &usp_msg.Body_Request{
|
||||||
|
Request: &usp_msg.Request{
|
||||||
|
ReqType: &usp_msg.Request_GetSupportedDm{
|
||||||
|
GetSupportedDm: &getStuff,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user