From 28a0e3e4913cca7c16ed2415686e74f4ef531e26 Mon Sep 17 00:00:00 2001 From: leandrofars Date: Tue, 23 Apr 2024 15:22:49 -0300 Subject: [PATCH] fix(adapter): usp handler online status | closes #248 --- .../internal/events/usp_handler/status.go | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/backend/services/mtp/adapter/internal/events/usp_handler/status.go b/backend/services/mtp/adapter/internal/events/usp_handler/status.go index b9e2c40..af170f3 100644 --- a/backend/services/mtp/adapter/internal/events/usp_handler/status.go +++ b/backend/services/mtp/adapter/internal/events/usp_handler/status.go @@ -5,6 +5,9 @@ import ( "strconv" "github.com/OktopUSP/oktopus/backend/services/mtp/adapter/internal/db" + "github.com/OktopUSP/oktopus/backend/services/mtp/adapter/internal/usp" + "github.com/OktopUSP/oktopus/backend/services/mtp/adapter/internal/usp/usp_msg" + "google.golang.org/protobuf/proto" ) func (h *Handler) HandleDeviceStatus(device, subject string, data []byte, mtp string, ack func()) { @@ -15,6 +18,8 @@ func (h *Handler) HandleDeviceStatus(device, subject string, data []byte, mtp st } switch payload { + case ONLINE: + h.deviceOnline(device, mtp) case OFFLINE: h.deviceOffline(device, mtp) default: @@ -22,6 +27,35 @@ func (h *Handler) HandleDeviceStatus(device, subject string, data []byte, mtp st } } +func (h *Handler) deviceOnline(device, mtp string) { + + log.Printf("Device %s is online", device) + + msg := usp.NewGetMsg(usp_msg.Get{ + ParamPaths: []string{ + "Device.DeviceInfo.Manufacturer", + "Device.DeviceInfo.ModelName", + "Device.DeviceInfo.SoftwareVersion", + "Device.DeviceInfo.SerialNumber", + "Device.DeviceInfo.ProductClass", + }, + MaxDepth: 1, + }) + + payload, _ := proto.Marshal(&msg) + record := usp.NewUspRecord(payload, device, h.cid) + + tr369Message, err := proto.Marshal(&record) + if err != nil { + log.Fatalln("Failed to encode tr369 record:", err) + } + + err = h.nc.Publish(mtp+"-adapter.usp.v1."+device+".info", tr369Message) + if err != nil { + log.Printf("Failed to publish online device message: %v", err) + } +} + func (h *Handler) deviceOffline(device, mtp string) { log.Printf("Device %s is offline", device)