-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #17 from OpenShock/feature/fix-captive-portal
Fix configuring and connecting to wifi via captive portal
- Loading branch information
Showing
25 changed files
with
1,130 additions
and
307 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
import { WebSocketClient } from './WebSocketClient'; | ||
import { WiFiStateStore } from './stores'; | ||
import type { WiFiNetwork } from './types/WiFiNetwork'; | ||
|
||
interface InvalidMessage { | ||
type: undefined | null; | ||
} | ||
|
||
interface PoggiesMessage { | ||
type: 'poggies'; | ||
} | ||
|
||
interface WiFiScanStartedMessage { | ||
type: 'wifi'; | ||
subject: 'scan'; | ||
status: 'started'; | ||
} | ||
|
||
interface WiFiScanDiscoveryMessage { | ||
type: 'wifi'; | ||
subject: 'scan'; | ||
status: 'discovery'; | ||
data: WiFiNetwork; | ||
} | ||
|
||
interface WiFiScanCompletedMessage { | ||
type: 'wifi'; | ||
subject: 'scan'; | ||
status: 'completed'; | ||
} | ||
|
||
interface WiFiScanErrorMessage { | ||
type: 'wifi'; | ||
subject: 'scan'; | ||
status: 'error'; | ||
} | ||
|
||
export type WiFiScanMessage = WiFiScanStartedMessage | WiFiScanDiscoveryMessage | WiFiScanCompletedMessage | WiFiScanErrorMessage; | ||
export type WiFiMessage = WiFiScanMessage; | ||
export type WebSocketMessage = InvalidMessage | PoggiesMessage | WiFiMessage; | ||
|
||
export function WebSocketMessageHandler(message: WebSocketMessage) { | ||
const type = message.type; | ||
if (!type) { | ||
console.warn('[WS] Received invalid message: ', message); | ||
return; | ||
} | ||
|
||
switch (type) { | ||
case 'poggies': | ||
handlePoggiesMessage(); | ||
break; | ||
case 'wifi': | ||
handleWiFiMessage(message); | ||
break; | ||
default: | ||
console.warn('[WS] Received invalid message: ', message); | ||
return; | ||
} | ||
} | ||
|
||
function handlePoggiesMessage() { | ||
WebSocketClient.Instance.Send('{ "type": "wifi", "action": "scan", "run": true }'); | ||
} | ||
|
||
function handleWiFiMessage(message: WiFiMessage) { | ||
switch (message.subject) { | ||
case 'scan': | ||
handleWiFiScanMessage(message); | ||
break; | ||
default: | ||
console.warn('[WS] Received invalid wifi message: ', message); | ||
return; | ||
} | ||
} | ||
|
||
function handleWiFiScanMessage(message: WiFiScanMessage) { | ||
switch (message.status) { | ||
case 'started': | ||
handleWiFiScanStartedMessage(); | ||
break; | ||
case 'discovery': | ||
handleWiFiScanDiscoveryMessage(message); | ||
break; | ||
case 'completed': | ||
handleWiFiScanCompletedMessage(); | ||
break; | ||
case 'error': | ||
handleWiFiScanErrorMessage(message); | ||
break; | ||
default: | ||
console.warn('[WS] Received invalid scan message: ', message); | ||
return; | ||
} | ||
} | ||
|
||
function handleWiFiScanStartedMessage() { | ||
WiFiStateStore.setScanning(true); | ||
} | ||
|
||
function handleWiFiScanDiscoveryMessage(message: WiFiScanDiscoveryMessage) { | ||
WiFiStateStore.addNetwork(message.data); | ||
} | ||
|
||
function handleWiFiScanCompletedMessage() { | ||
WiFiStateStore.setScanning(false); | ||
} | ||
|
||
function handleWiFiScanErrorMessage(message: WiFiScanErrorMessage) { | ||
console.error('[WS] Received WiFi scan error message: ', message); | ||
WiFiStateStore.setScanning(false); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,8 @@ | ||
export type WiFiNetwork = { | ||
index: number; | ||
ssid: string; | ||
bssid: string; | ||
rssi: number; | ||
channel: number; | ||
secure: boolean; | ||
security: 'Open' | 'WEP' | 'WPA PSK' | 'WPA2 PSK' | 'WPA/WPA2 PSK' | 'WPA2 Enterprise' | 'WPA3 PSK' | 'WPA2/WPA3 PSK' | 'WAPI PSK' | null; | ||
saved: boolean; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
import type { WiFiNetwork } from "./WiFiNetwork"; | ||
import type { WiFiNetwork } from './WiFiNetwork'; | ||
|
||
export type WiFiState = { | ||
initialized: boolean; | ||
scanning: boolean; | ||
networks: WiFiNetwork[]; | ||
networks: { [bssid: string]: WiFiNetwork }; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.