70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
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,
|
|
},
|
|
}
|
|
}
|