From e8c8c3eabb986d329dfd395e665a7bee56fd27e1 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 10 Feb 2022 13:40:11 +0100 Subject: [PATCH] Improve link up/down behaviour --- .../files/etc/syndicate/services/network.pr | 23 ++++++++++++------- .../files/etc/syndicate/services/wifi.pr | 1 + .../synit/python/synit/daemon/wifi_daemon.py | 16 ++++--------- protocols/schema-bundle.bin | 2 +- protocols/schemas/network.prs | 15 +++++++++--- squeak.pr | 4 +--- 6 files changed, 35 insertions(+), 26 deletions(-) diff --git a/packaging/packages/synit-config/files/etc/syndicate/services/network.pr b/packaging/packages/synit-config/files/etc/syndicate/services/network.pr index d47346c..564d5f6 100644 --- a/packaging/packages/synit-config/files/etc/syndicate/services/network.pr +++ b/packaging/packages/synit-config/files/etc/syndicate/services/network.pr @@ -3,20 +3,19 @@ > ready>> -> +> ? > [ - ! - ?- ! + ! + ?- ! ] ? > [ - ! - ?- ! >> ] ? >> [ + ; We use a custom script that gives mobile-data devices a sensible routing metric ["udhcpc" "-i" $ifname "-fR" "-s" "/usr/lib/synit/udhcpc.script"]> ] @@ -32,11 +31,19 @@ } ] - $machine ? [ + $machine ? [ + $log ! + $config [ + ! + ?- ! + ] + ] + + $machine ? [ $config > ] - $machine ? [ - $config + $machine ? [ + $config ] ] diff --git a/packaging/packages/synit-config/files/etc/syndicate/services/wifi.pr b/packaging/packages/synit-config/files/etc/syndicate/services/wifi.pr index 4318dd6..5ecc021 100644 --- a/packaging/packages/synit-config/files/etc/syndicate/services/wifi.pr +++ b/packaging/packages/synit-config/files/etc/syndicate/services/wifi.pr @@ -17,6 +17,7 @@ argv: "/usr/lib/synit/wifi-daemon" protocol: application/syndicate }> + ? [ ? > ?cap> [ $cap { diff --git a/packaging/packages/synit-config/files/usr/lib/synit/python/synit/daemon/wifi_daemon.py b/packaging/packages/synit-config/files/usr/lib/synit/python/synit/daemon/wifi_daemon.py index 634db9f..01768d3 100644 --- a/packaging/packages/synit-config/files/usr/lib/synit/python/synit/daemon/wifi_daemon.py +++ b/packaging/packages/synit-config/files/usr/lib/synit/python/synit/daemon/wifi_daemon.py @@ -57,7 +57,7 @@ class WPASupplicantClient: self.sock.settimeout(timeout_sec) try: reply = self.sock.recv(65536) - self.log.info(f'Raw input: {repr(reply)}') + self.log.debug(f'Raw input: {repr(reply)}') return reply.strip().decode('utf-8') except TimeoutError: return None @@ -89,7 +89,6 @@ def main(args): client = WPASupplicantClient(ifname, turn.log) commands = [] - active_network_id = None def send_next_command(): while len(commands) > 0: @@ -113,17 +112,12 @@ def main(args): continue turn.log.info(f'Cleaning out old network: {repr(line)}') send_command('REMOVE_NETWORK ' + line.split('\t')[0]) - send_command('ADD_NETWORK', remember_network_id) - - def remember_network_id(netid): - nonlocal active_network_id - active_network_id = netid - turn.log.info(f'Network ID: {active_network_id}') - def handle_scan_failure(reply): - if reply == 'FAIL': - send_command('TERMINATE') send_command('SCAN', handle_scan_failure) + def handle_scan_failure(reply): + if reply == 'FAIL': + send_command('TERMINATE') + send_command('LEVEL 3') send_command('LIST_NETWORKS', cleanout_networks) diff --git a/protocols/schema-bundle.bin b/protocols/schema-bundle.bin index 94a72b4..05e9221 100644 --- a/protocols/schema-bundle.bin +++ b/protocols/schema-bundle.bin @@ -4,7 +4,7 @@ horizontal WidgetType´³orµµ±NodeType´³refµ„³NodeType„„µ±LeafType´³refµ„³LeafType„„„„³ WindowTitle´³rec´³lit³ window-title„´³tupleµ´³named³title´³atom³String„„„„„³WidgetInstance´³rec´³lit³widget-instance„´³tupleµ´³named³id´³refµ„³WidgetId„„´³named³instance´³embedded³any„„„„„³WindowCloseable´³rec´³lit³window-closeable„´³tupleµ„„„„³ embeddedType€„„µ³mime„´³schema·³version‘³ definitions·³Value´³rec´³lit³mime„´³tupleµ´³named³type´³atom³Symbol„„´³named³data´³atom³ ByteString„„„„„„³ embeddedType€„„µ³time„´³schema·³version‘³ definitions·³Stamp´³rec´³lit³rfc3339„´³tupleµ´³named³value´³atom³String„„„„„„³ embeddedType€„„µ³audio„´³schema·³version‘³ definitions·³Sink´³orµµ±speaker´³lit³speaker„„µ±headset´³lit³headset„„µ±earpiece´³lit³earpiece„„„„³Source´³orµµ± speakerphone´³lit³ speakerphone„„µ±headset´³lit³headset„„µ±handset´³lit³handset„„„„³ SinkMapping´³rec´³lit³alsa-sink-mapping„´³tupleµ´³named³abstract´³refµ„³Sink„„´³named³concrete´³atom³String„„„„„³HeadsetSpeakerPresent´³rec´³lit³headset-speaker-present„´³tupleµ„„„³HeadsetMicrophonePresent´³rec´³lit³headset-microphone-present„´³tupleµ„„„„³ embeddedType€„„µ³hayes„´³schema·³version‘³ definitions·³Result´³rec´³lit³result„´³tupleµ´³named³text´³atom³String„„´³named³tag´³refµ„³ MaybeString„„´³named³fields´³refµ„³ MaybeStrings„„„„„³ MaybeString´³orµµ±present´³atom³String„„µ±absent´³lit€„„„„³ MaybeStrings´³orµµ±present´³seqof´³atom³String„„„µ±absent´³lit€„„„„³ ModemPresent´³rec´³lit³modem„´³tupleµ´³lit³hayes„´³named³ devicePath´³atom³String„„´³named³ dataspace´³embedded´³refµ„³InternalProtocol„„„„„„³ CommandResult´³rec´³lit³command-result„´³tupleµ´³named³ commandText´³atom³String„„´³named³results´³seqof´³refµ„³Result„„„´³named³ finalResult´³atom³String„„„„„³ExecuteCommand´³rec´³lit³execute-command„´³tupleµ´³named³ commandText´³atom³String„„´³named³replyTo´³refµ„³CommandContinuation„„„„„³InternalProtocol³any³CommandContinuation´³orµµ± replyWanted´³embedded´³refµ„³ CommandResult„„„µ± fireAndForget´³lit€„„„„³UnsolicitedResultCode´³rec´³lit³ unsolicited„´³tupleµ´³named³result´³refµ„³Result„„„„„„³ embeddedType€„„µ³network„´³schema·³version‘³ definitions·³Route´³rec´³lit³route„´³tupleµ´³named³ addressFamily´³refµ„³ AddressFamily„„´³named³ destination´³refµ„³RouteDestination„„´³named³priority´³atom³ SignedInteger„„´³named³ typeOfService´³atom³ SignedInteger„„´³named³ interfaceName´³refµ„³RouteInterface„„´³named³gateway´³refµ„³Gateway„„„„„³Gateway´³orµµ±addr´³atom³String„„µ±none´³lit€„„„„³Hotspot´³rec´³lit³hotspot„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„´³named³authentication´³refµ„³WifiAuthentication„„„„„³ Interface´³rec´³lit³ interface„´³tupleµ´³named³name´³atom³String„„´³named³index´³atom³ SignedInteger„„´³named³type´³refµ„³ InterfaceType„„´³named³administrativeState´³refµ„³AdministrativeState„„´³named³operationalState´³refµ„³OperationalState„„´³named³carrier´³refµ„³ CarrierState„„´³named³linkAddr´³atom³String„„„„„³ CarrierState´³orµµ± noCarrier´³lit³ -no-carrier„„µ±carrier´³lit³carrier„„„„³ DefaultRoute´³rec´³lit³ default-route„´³tupleµ´³named³ addressFamily´³refµ„³ AddressFamily„„„„„³ HotspotState´³rec´³lit³ hotspot-state„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„´³named³ stationCount´³atom³ SignedInteger„„„„„³ AddressFamily´³orµµ±ipv4´³lit³ipv4„„µ±ipv6´³lit³ipv6„„µ±other´³atom³ SignedInteger„„„„³ InterfaceType´³orµµ±loopback´³lit³loopback„„µ±normal´³lit³normal„„µ±wireless´³lit³wireless„„„„³ MobileDataApn´³rec´³lit³mobile-data-apn„´³tupleµ´³named³apn´³atom³String„„„„„³RouteInterface´³orµµ±name´³atom³String„„µ±none´³lit€„„„„³WifiAssociation´³rec´³lit³wifi-association„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„´³named³state´³refµ„³WifiAssociationState„„„„„³OperationalState´³orµµ±unknown´³lit³unknown„„µ±down´³lit³down„„µ±lowerLayerDown´³lit³lower-layer-down„„µ±testing´³lit³testing„„µ±dormant´³lit³dormant„„µ±up´³lit³up„„„„³RouteDestination´³orµµ±default´³lit³default„„µ±prefix´³rec´³lit³prefix„´³tupleµ´³named³net´³atom³String„„´³named³bits´³atom³ SignedInteger„„„„„„„„³SavedWifiNetwork´³rec´³lit³saved-wifi-network„´³tupleµ´³named³ssid´³atom³String„„´³named³authentication´³refµ„³WifiAuthentication„„´³named³priority´³atom³Double„„„„„³WifiAuthentication´³orµµ±open´³lit³open„„µ±psk´³rec´³lit³psk„´³tupleµ´³named³password´³atom³String„„„„„„µ±other³any„„„³AdministrativeState´³orµµ±unknown´³lit³unknown„„µ±down´³lit³down„„µ±up´³lit³up„„„„³SelectedWifiNetwork´³rec´³lit³selected-wifi-network„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„´³named³authentication´³refµ„³WifiAuthentication„„„„„³AvailableAccessPoint´³rec´³lit³ available-ap„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„„„„³WifiAssociationState´³orµµ± +no-carrier„„µ±carrier´³lit³carrier„„„„³ DefaultRoute´³rec´³lit³ default-route„´³tupleµ´³named³ addressFamily´³refµ„³ AddressFamily„„„„„³ HotspotState´³rec´³lit³ hotspot-state„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„´³named³ stationCount´³atom³ SignedInteger„„„„„³ AddressFamily´³orµµ±ipv4´³lit³ipv4„„µ±ipv6´³lit³ipv6„„µ±other´³atom³ SignedInteger„„„„³ InterfaceType´³orµµ±loopback´³lit³loopback„„µ±normal´³lit³normal„„µ±wireless´³lit³wireless„„„„³ MobileDataApn´³rec´³lit³mobile-data-apn„´³tupleµ´³named³apn´³atom³String„„„„„³RouteInterface´³orµµ±name´³atom³String„„µ±none´³lit€„„„„³WifiAssociation´³rec´³lit³wifi-association„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„´³named³state´³refµ„³WifiAssociationState„„„„„³OperationalState´³orµµ±unknown´³lit³unknown„„µ±down´³lit³down„„µ±lowerLayerDown´³lit³lower-layer-down„„µ±testing´³lit³testing„„µ±dormant´³lit³dormant„„µ±up´³lit³up„„„„³RouteDestination´³orµµ±default´³lit³default„„µ±prefix´³rec´³lit³prefix„´³tupleµ´³named³net´³atom³String„„´³named³bits´³atom³ SignedInteger„„„„„„„„³SavedWifiNetwork´³rec´³lit³saved-wifi-network„´³tupleµ´³named³ssid´³atom³String„„´³named³authentication´³refµ„³WifiAuthentication„„´³named³priority´³atom³Double„„„„„³MobileDataEnabled´³rec´³lit³mobile-data-enabled„´³tupleµ„„„³WifiAuthentication´³orµµ±open´³lit³open„„µ±psk´³rec´³lit³psk„´³tupleµ´³named³password´³atom³String„„„„„„µ±other³any„„„³AdministrativeState´³orµµ±unknown´³lit³unknown„„µ±down´³lit³down„„µ±up´³lit³up„„„„³SelectedWifiNetwork´³rec´³lit³selected-wifi-network„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„´³named³authentication´³refµ„³WifiAuthentication„„„„„³AvailableAccessPoint´³rec´³lit³ available-ap„´³tupleµ´³named³ interfaceName´³atom³String„„´³named³ssid´³atom³String„„„„„³WifiAssociationState´³orµµ± inProgress´³lit³ in-progress„„µ±ready´³lit³ready„„„„„³ embeddedType€„„µ³ telephony„´³schema·³version‘³ definitions·³CallId´³atom³ SignedInteger„³Address´³rec´³lit³address„´³tupleµ´³named³ numberType´³refµ„³ NumberType„„´³named³number´³atom³String„„„„„³CallType´³orµµ±voice´³lit³voice„„µ±data´³lit³data„„µ±fax´³lit³fax„„„„³ CallState´³orµµ±hold´³lit³hold„„µ±original´³lit³original„„µ±connect´³lit³connect„„µ±incoming´³lit³incoming„„µ±waiting´³lit³waiting„„µ±end´³lit³end„„µ±alerting´³lit³alerting„„„„³ PlaceCall´³rec´³lit³ diff --git a/protocols/schemas/network.prs b/protocols/schemas/network.prs index 8d12b4e..3b556e4 100644 --- a/protocols/schemas/network.prs +++ b/protocols/schemas/network.prs @@ -76,9 +76,6 @@ AvailableAccessPoint = . WifiAssociation = . WifiAssociationState = @inProgress =in-progress / =ready . -SelectedWifiNetwork = . - -Hotspot = . HotspotState = . ;--------------------------------------------------------------------------- @@ -86,6 +83,8 @@ HotspotState = . +MobileDataEnabled = . + SavedWifiNetwork = . + +Hotspot = . diff --git a/squeak.pr b/squeak.pr index 933a11b..0c8e758 100644 --- a/squeak.pr +++ b/squeak.pr @@ -1,7 +1,7 @@ > @@ -12,8 +12,6 @@ } ] -; > - complete>> /sys/class/graphics/fb0/state">>