package wifi import ( "time" "github.com/nemunaire/repeater/internal/models" ) // WifiEvent represents a WiFi event to be sent over WebSocket type WifiEvent struct { Type string `json:"type"` Timestamp time.Time `json:"timestamp"` Data interface{} `json:"data"` } // ScanUpdateData contains network list update information type ScanUpdateData struct { Networks []models.WiFiNetwork `json:"networks"` } // StateChangeData contains connection state change information type StateChangeData struct { State string `json:"state"` SSID string `json:"ssid,omitempty"` PreviousState string `json:"previous_state,omitempty"` } // SignalUpdateData contains signal strength update information type SignalUpdateData struct { SSID string `json:"ssid"` Signal int `json:"signal"` // 1-5 scale DBm int `json:"dbm"` // Raw dBm value } // NewScanUpdateEvent creates a new scan update event func NewScanUpdateEvent(networks []models.WiFiNetwork) WifiEvent { return WifiEvent{ Type: "scan_update", Timestamp: time.Now(), Data: ScanUpdateData{ Networks: networks, }, } } // NewStateChangeEvent creates a new state change event func NewStateChangeEvent(state, ssid, previousState string) WifiEvent { return WifiEvent{ Type: "state_change", Timestamp: time.Now(), Data: StateChangeData{ State: state, SSID: ssid, PreviousState: previousState, }, } } // NewSignalUpdateEvent creates a new signal update event func NewSignalUpdateEvent(ssid string, signal, dbm int) WifiEvent { return WifiEvent{ Type: "signal_update", Timestamp: time.Now(), Data: SignalUpdateData{ SSID: ssid, Signal: signal, DBm: dbm, }, } }