@startuml Wifi participant OS as OS participant Script as Script participant SW as SW participant UI as UI actor USER as US 'Possible actions and interaction types ' External on CANBus ' TD -> SW: MSG: Message ' SW -> TD: MSG: Message ' Internal to the application ' XX -> YY: CMD: Command ' XX -> XX: ACT: Action ' External on OS/FS ' SW -> Script: ACT: Command ' Script -> OS: CMD: Command ' Script -> SW: MSG: Message ' OS -> Script: MSG: Message ' US -> UI: User actions are: ' ASK: Display a ' ENT: User enters a value or string ' TCH: User touches a button (RadioButton, CheckBox, ...) ' SCL: User scrolls a flip-able area == Wi-Fi Scan == group Wi-Fi Scan US -> UI: TCH: Settings Menu UI -> UI: ACT: Device Settings Screen US -> UI: TCH: Wi-Fi Menu UI -> UI: ACT: Wi-Fi Settings Screen UI -> SW: ACT: Request Wi-Fi Scan SW -> Script: ACT: wifi_scan.sh ( ) activate Script Script -> OS: CMD: sudo nmcli -t -f $COLUMNS dev wifi list --rescan yes \n\t| sed 's/:/,/g;s/\\,/:/g' \n\t| sort OS -> Script: MSG: SSID list Script -> SW: MSG: \ \n - echo SSID list < \ \n\tSSID \ \n\tBSSID \ \n\tFREQ \ \n\tRATE \ \n\tSIGNAL \ \n\tSECURITY \ \n\tWPA-FLAGS \ \n\tRSN-FLAGS \ \n\tIN-USE \ \n > \ \n - exit # deactivate Script alt successful ( exit == 0 ) SW -> UI: ACT: SSID list information UI -> UI: ACT: \ \n - populate SSID list \ \n - highlight connected \ \n - disable unsupported group Wi-Fi Information SW --> SW: ... end else failed SW -> UI: ACT: Empty SSID list UI -> UI: ACT: SSID list Cleanup UI -> US: ACT: Notify user end end == Wi-Fi Information == group Wi-Fi Information SW -> SW: ACT: Request connected Wi-Fi information SW -> Script: ACT: wifi_info.sh ( ) activate Script Script -> OS: CMD: \ \n\t SSID : sudo nmcli -t -f NAME connection show --active \ \n\t IPMASK : sudo nmcli -t -g IP4.ADDRESS device show wlan0 \ \n\t ADDR : echo $IPMASK | sed 's/\/.*//g' \ \n\t MASK : sudo ipcalc -m "$(echo $IPMASK)" | sed "s/NETMASK=//g") \ \n\t GATEWAY: sudo nmcli -t -g IP4.GATEWAY device show wlan0)" \ \n\t DNS : sudo nmcli -t -g IP4.DNS device show wlan0 | sed "s/ //g" | sed 's/|/,/g' OS -> Script: MSG: Connection Information Script -> SW: MSG: \ \n - echo < \ \n\t SSID \ \n\t ADDR \ \n\t MASK \ \n\t GATEWAY \ \n\t DNS \ \n > \ \n - exit # deactivate Script alt successful ( exit == 0 ) SW -> UI: CMD: Update Items else failed SW -> UI: ACT: Empty Items UI -> US: ACT: Notify user end end == Wi-Fi Connection == group Wi-Fi Connection US -> UI: SCL: SSID list US -> UI: TCH: SSID selection of Not-Connected UI -> UI: ACT: Ask for password US -> UI: ENT: Enter password US -> UI: TCH: Confirm Button UI -> SW: ACT: Connection request SW -> Script: CMD: wifi_connect.sh ( SSID, password ) activate Script Script -> OS: CMD: sudo nmcli dev wifi \ \n\t connect "$SSID_NAME" \ \n\t password "$SSID_PASS" OS -> Script: MSG: Command Result Script -> SW: MSG: \ \n - echo <> \ \n - exit # deactivate Script alt successful ( exit == 0 ) group Wi-Fi Information SW --> SW: ... end UI -> UI: ACT: \ \n - Highlight connected else failed UI -> UI: ACT: \ \n - highlight removal UI -> US: ACT: Notify user end end == Wi-Fi Disconnection == group Wi-Fi Disconnection US -> UI: TCH: SSID selection of Connected UI -> US: ASK: Confirm the disconnection of the SSID US -> UI: TCH: Confirm Button UI -> SW: ACT: Request disconnection SW -> Script: ACT: wifi_disconnect.sh ( SSID ) activate Script Script -> OS: CMD: sudo nmcli connection \ \n\t delete "$SSID_NAME" OS -> Script: MSG: Command Result Script -> SW: MSG: \ \n - echo <> \ \n - exit # deactivate Script alt successful ( exit == 0 ) group Wi-Fi Information SW --> SW: ... end UI -> UI: ACT: \ \n - Highlight connected else failed UI -> UI: ACT: \ \n - highlight removal UI -> US: ACT: Notify user end end @enduml