Skip to content

Commit

Permalink
Add device state logic to scanning
Browse files Browse the repository at this point in the history
  • Loading branch information
Otterverse committed Feb 24, 2025
1 parent 6b65133 commit cb3f523
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 14 deletions.
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.23.1

require (
github.com/Masterminds/semver/v3 v3.3.0
github.com/Otterverse/gonetworkmanager/v2 v2.2.1
github.com/Otterverse/gonetworkmanager/v2 v2.2.2
github.com/gabriel-vasile/mimetype v1.4.8
github.com/google/uuid v1.6.0
github.com/jessevdk/go-flags v1.6.1
Expand Down Expand Up @@ -33,7 +33,7 @@ require (
github.com/edaniels/golog v0.0.0-20230215213219-28954395e8d0 // indirect
github.com/edaniels/zeroconf v1.0.10 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/godbus/dbus/v5 v5.1.1-0.20241109141230-b9236d654833 // indirect
github.com/golang-jwt/jwt/v4 v4.5.1 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
Expand Down
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+
github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM=
github.com/Otterverse/gonetworkmanager/v2 v2.2.1 h1:yNov3VIkatRprIhCkoshWEeUG4pyNPJQMLHSFXqi09g=
github.com/Otterverse/gonetworkmanager/v2 v2.2.1/go.mod h1:Bc8kOugBgzCBC0R8oLa3wHnGet7k2ZpMHUobZtxlwhU=
github.com/Otterverse/gonetworkmanager/v2 v2.2.2 h1:dMB1cEH+NTgrh9PtQ6DmUL8vJxCQPwF3fXB1hsI9MIA=
github.com/Otterverse/gonetworkmanager/v2 v2.2.2/go.mod h1:C4DIH4n0H6mdK8gMlGv8OTpJfKjmd0QJPWjq2O7s64w=
github.com/PuerkitoBio/goquery v1.6.0/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
Expand Down Expand Up @@ -186,8 +186,8 @@ github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm
github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/godbus/dbus/v5 v5.1.1-0.20241109141230-b9236d654833 h1:A7XBviVuF5Nm40bUCz6T7vppvvhVmSMeVMbtUSp/mtI=
github.com/godbus/dbus/v5 v5.1.1-0.20241109141230-b9236d654833/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c=
github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
Expand Down
26 changes: 18 additions & 8 deletions subsystems/networking/scanning.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,31 @@ func (n *Networking) networkScan(ctx context.Context) error {
return errw.Errorf("cannot find hotspot interface: %s", n.Config().HotspotInterface)
}

state, reason, err := wifiDev.GetPropertyStateReason()
if err != nil {
return errw.Wrap(err, "getting wifi state and reason")
}

if state != gnm.NmDeviceStateDisconnected && state != gnm.NmDeviceStateActivated {
n.logger.Debugf("wifi device state: %s, reason: %s, skipping scan", state, reason)
return nil
}

prevScan, err := wifiDev.GetPropertyLastScan()
if err != nil {
return errw.Wrap(err, "scanning wifi")
return errw.Wrap(err, "getting last wifi scan")
}

err = wifiDev.RequestScan()
if err != nil {
return errw.Wrap(err, "scanning wifi")
return errw.Wrap(err, "requesting wifi scan")
}

scanDeadline := time.Now().Add(scanTimeout)
for {
lastScan, err := wifiDev.GetPropertyLastScan()
if err != nil {
return errw.Wrap(err, "scanning wifi")
return errw.Wrap(err, "getting last wifi scan")
}
if lastScan > prevScan {
if n.connState.getProvisioning() {
Expand Down Expand Up @@ -74,7 +84,7 @@ func (n *Networking) networkScan(ctx context.Context) error {
}
ssid, err := ap.GetPropertySSID()
if err != nil {
n.logger.Warn(errw.Wrap(err, "scanning wifi"))
n.logger.Warn(errw.Wrap(err, "getting ssid of discovered wifi network"))
continue
}

Expand All @@ -85,25 +95,25 @@ func (n *Networking) networkScan(ctx context.Context) error {

signal, err := ap.GetPropertyStrength()
if err != nil {
n.logger.Warn(errw.Wrap(err, "scanning wifi"))
n.logger.Warn(errw.Wrap(err, "getting signal strength of discovered wifi network"))
continue
}

apFlags, err := ap.GetPropertyFlags()
if err != nil {
n.logger.Warn(errw.Wrap(err, "scanning wifi"))
n.logger.Warn(errw.Wrap(err, "getting flags of discovered wifi network"))
continue
}

wpaFlags, err := ap.GetPropertyWPAFlags()
if err != nil {
n.logger.Warn(errw.Wrap(err, "scanning wifi"))
n.logger.Warn(errw.Wrap(err, "getting wpa flags of discovered wifi network"))
continue
}

rsnFlags, err := ap.GetPropertyRSNFlags()
if err != nil {
n.logger.Warn(errw.Wrap(err, "scanning wifi"))
n.logger.Warn(errw.Wrap(err, "getting rsn flags of discovered wifi network"))
continue
}

Expand Down

0 comments on commit cb3f523

Please sign in to comment.