Skip to content

Commit

Permalink
Get network configuration working
Browse files Browse the repository at this point in the history
  • Loading branch information
hhvrc committed Oct 16, 2023
1 parent 4af06a2 commit 8c54968
Show file tree
Hide file tree
Showing 71 changed files with 178 additions and 219 deletions.
26 changes: 13 additions & 13 deletions WebUI/src/lib/MessageHandlers/index.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import type { WebSocketClient } from '$lib/WebSocketClient';
import { WifiNetworkDiscoveredEvent } from '$lib/fbs/open-shock/serialization/local/wifi-network-discovered-event';
import { DeviceToLocalMessage } from '$lib/fbs/open-shock/serialization/local/device-to-local-message';
import { DeviceToLocalMessagePayload } from '$lib/fbs/open-shock/serialization/local/device-to-local-message-payload';
import { ReadyMessage } from '$lib/fbs/open-shock/serialization/local/ready-message';
import { WifiScanStatusMessage } from '$lib/fbs/open-shock/serialization/local/wifi-scan-status-message';
import { WifiNetworkDiscoveredEvent } from '$lib/_fbs/open-shock/serialization/local/wifi-network-discovered-event';
import { DeviceToLocalMessage } from '$lib/_fbs/open-shock/serialization/local/device-to-local-message';
import { DeviceToLocalMessagePayload } from '$lib/_fbs/open-shock/serialization/local/device-to-local-message-payload';
import { ReadyMessage } from '$lib/_fbs/open-shock/serialization/local/ready-message';
import { WifiScanStatusMessage } from '$lib/_fbs/open-shock/serialization/local/wifi-scan-status-message';
import { ByteBuffer } from 'flatbuffers';
import { WifiNetworkUpdatedEvent } from '$lib/fbs/open-shock/serialization/local/wifi-network-updated-event';
import { WifiNetworkLostEvent } from '$lib/fbs/open-shock/serialization/local/wifi-network-lost-event';
import { WifiNetworkSavedEvent } from '$lib/fbs/open-shock/serialization/local/wifi-network-saved-event';
import { WifiNetworkRemovedEvent } from '$lib/fbs/open-shock/serialization/local/wifi-network-removed-event';
import { WifiNetworkConnectedEvent } from '$lib/fbs/open-shock/serialization/local/wifi-network-connected-event';
import { WifiNetworkDisconnectedEvent } from '$lib/fbs/open-shock/serialization/local/wifi-network-disconnected-event';
import { WifiScanStatus } from '$lib/fbs/open-shock';
import { WifiNetworkUpdatedEvent } from '$lib/_fbs/open-shock/serialization/local/wifi-network-updated-event';
import { WifiNetworkLostEvent } from '$lib/_fbs/open-shock/serialization/local/wifi-network-lost-event';
import { WifiNetworkSavedEvent } from '$lib/_fbs/open-shock/serialization/local/wifi-network-saved-event';
import { WifiNetworkRemovedEvent } from '$lib/_fbs/open-shock/serialization/local/wifi-network-removed-event';
import { WifiNetworkConnectedEvent } from '$lib/_fbs/open-shock/serialization/local/wifi-network-connected-event';
import { WifiNetworkDisconnectedEvent } from '$lib/_fbs/open-shock/serialization/local/wifi-network-disconnected-event';
import { WifiScanStatus } from '$lib/_fbs/open-shock';
import { WiFiStateStore } from '$lib/stores';
import type { WiFiNetwork } from '$lib/types/WiFiNetwork';
import { WifiNetwork as FbsWifiNetwork } from '$lib/fbs/open-shock/serialization/local/wifi-network';
import { WifiNetwork as FbsWifiNetwork } from '$lib/_fbs/open-shock/serialization/local/wifi-network';
import { SerializeWifiScanCommand } from '$lib/Serializers/WifiScanCommand';

type MessageHandler = (wsClient: WebSocketClient, message: DeviceToLocalMessage) => void;
Expand Down
6 changes: 3 additions & 3 deletions WebUI/src/lib/Serializers/GatewayPairCommand.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Builder as FlatbufferBuilder } from 'flatbuffers';
import { LocalToDeviceMessage } from '$lib/fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/fbs/open-shock/serialization/local/local-to-device-message-payload';
import { GatewayPairCommand } from '$lib/fbs/open-shock/serialization/local/gateway-pair-command';
import { LocalToDeviceMessage } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message-payload';
import { GatewayPairCommand } from '$lib/_fbs/open-shock/serialization/local/gateway-pair-command';

export function SerializeGatewayPairCommand(pairCode: string): Uint8Array {
const fbb = new FlatbufferBuilder(64);
Expand Down
11 changes: 5 additions & 6 deletions WebUI/src/lib/Serializers/WifiNetworkConnectCommand.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { Builder as FlatbufferBuilder } from 'flatbuffers';
import { LocalToDeviceMessage } from '$lib/fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiNetworkConnectCommand } from '$lib/fbs/open-shock/serialization/local/wifi-network-connect-command';
import { LocalToDeviceMessage } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiNetworkConnectCommand } from '$lib/_fbs/open-shock/serialization/local/wifi-network-connect-command';

export function SerializeWifiNetworkConnectCommand(ssid: string, bssid: string): Uint8Array {
export function SerializeWifiNetworkConnectCommand(ssid: string): Uint8Array {
const fbb = new FlatbufferBuilder(128);

const ssidOffset = fbb.createString(ssid);
const bssidOffset = fbb.createString(bssid);

const cmdOffset = WifiNetworkConnectCommand.createWifiNetworkConnectCommand(fbb, ssidOffset, bssidOffset);
const cmdOffset = WifiNetworkConnectCommand.createWifiNetworkConnectCommand(fbb, ssidOffset);

const payloadOffset = LocalToDeviceMessage.createLocalToDeviceMessage(fbb, LocalToDeviceMessagePayload.WifiNetworkConnectCommand, cmdOffset);

Expand Down
6 changes: 3 additions & 3 deletions WebUI/src/lib/Serializers/WifiNetworkDisconnectCommand.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Builder as FlatbufferBuilder } from 'flatbuffers';
import { LocalToDeviceMessage } from '$lib/fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiNetworkDisconnectCommand } from '$lib/fbs/open-shock/serialization/local/wifi-network-disconnect-command';
import { LocalToDeviceMessage } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiNetworkDisconnectCommand } from '$lib/_fbs/open-shock/serialization/local/wifi-network-disconnect-command';

export function SerializeWifiNetworkDisconnectCommand(): Uint8Array {
const fbb = new FlatbufferBuilder(32);
Expand Down
11 changes: 5 additions & 6 deletions WebUI/src/lib/Serializers/WifiNetworkForgetCommand.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { Builder as FlatbufferBuilder } from 'flatbuffers';
import { LocalToDeviceMessage } from '$lib/fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiNetworkForgetCommand } from '$lib/fbs/open-shock/serialization/local/wifi-network-forget-command';
import { LocalToDeviceMessage } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiNetworkForgetCommand } from '$lib/_fbs/open-shock/serialization/local/wifi-network-forget-command';

export function SerializeWifiNetworkForgetCommand(ssid: string, bssid: string): Uint8Array {
export function SerializeWifiNetworkForgetCommand(ssid: string): Uint8Array {
const fbb = new FlatbufferBuilder(128);

const ssidOffset = fbb.createString(ssid);
const bssidOffset = fbb.createString(bssid);

const cmdOffset = WifiNetworkForgetCommand.createWifiNetworkForgetCommand(fbb, ssidOffset, bssidOffset);
const cmdOffset = WifiNetworkForgetCommand.createWifiNetworkForgetCommand(fbb, ssidOffset);

const payloadOffset = LocalToDeviceMessage.createLocalToDeviceMessage(fbb, LocalToDeviceMessagePayload.WifiNetworkForgetCommand, cmdOffset);

Expand Down
16 changes: 9 additions & 7 deletions WebUI/src/lib/Serializers/WifiNetworkSaveCommand.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import { Builder as FlatbufferBuilder } from 'flatbuffers';
import { LocalToDeviceMessage } from '$lib/fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiNetworkSaveCommand } from '$lib/fbs/open-shock/serialization/local/wifi-network-save-command';
import { LocalToDeviceMessage } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiNetworkSaveCommand } from '$lib/_fbs/open-shock/serialization/local/wifi-network-save-command';

export function SerializeWifiNetworkSaveCommand(ssid: string, bssid: string, password: string): Uint8Array {
export function SerializeWifiNetworkSaveCommand(ssid: string, password: string | null, connect: boolean): Uint8Array {
const fbb = new FlatbufferBuilder(128);

const ssidOffset = fbb.createString(ssid);
const bssidOffset = fbb.createString(bssid);
const passwordOffset = fbb.createString(password);
let passwordOffset = 0;
if (password) {
passwordOffset = fbb.createString(password);
}

const cmdOffset = WifiNetworkSaveCommand.createWifiNetworkSaveCommand(fbb, ssidOffset, bssidOffset, passwordOffset);
const cmdOffset = WifiNetworkSaveCommand.createWifiNetworkSaveCommand(fbb, ssidOffset, passwordOffset, connect);

const payloadOffset = LocalToDeviceMessage.createLocalToDeviceMessage(fbb, LocalToDeviceMessagePayload.WifiNetworkSaveCommand, cmdOffset);

Expand Down
6 changes: 3 additions & 3 deletions WebUI/src/lib/Serializers/WifiScanCommand.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Builder as FlatbufferBuilder } from 'flatbuffers';
import { WifiScanCommand } from '$lib/fbs/open-shock/serialization/local/wifi-scan-command';
import { LocalToDeviceMessage } from '$lib/fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/fbs/open-shock/serialization/local/local-to-device-message-payload';
import { WifiScanCommand } from '$lib/_fbs/open-shock/serialization/local/wifi-scan-command';
import { LocalToDeviceMessage } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message';
import { LocalToDeviceMessagePayload } from '$lib/_fbs/open-shock/serialization/local/local-to-device-message-payload';

export function SerializeWifiScanCommand(scan: boolean): Uint8Array {
const fbb = new FlatbufferBuilder(32);
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -27,34 +27,22 @@ ssid(optionalEncoding?:any):string|Uint8Array|null {
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}

bssid():string|null
bssid(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null
bssid(optionalEncoding?:any):string|Uint8Array|null {
const offset = this.bb!.__offset(this.bb_pos, 6);
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}

static startWifiNetworkConnectCommand(builder:flatbuffers.Builder) {
builder.startObject(2);
builder.startObject(1);
}

static addSsid(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset) {
builder.addFieldOffset(0, ssidOffset, 0);
}

static addBssid(builder:flatbuffers.Builder, bssidOffset:flatbuffers.Offset) {
builder.addFieldOffset(1, bssidOffset, 0);
}

static endWifiNetworkConnectCommand(builder:flatbuffers.Builder):flatbuffers.Offset {
const offset = builder.endObject();
return offset;
}

static createWifiNetworkConnectCommand(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset, bssidOffset:flatbuffers.Offset):flatbuffers.Offset {
static createWifiNetworkConnectCommand(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset):flatbuffers.Offset {
WifiNetworkConnectCommand.startWifiNetworkConnectCommand(builder);
WifiNetworkConnectCommand.addSsid(builder, ssidOffset);
WifiNetworkConnectCommand.addBssid(builder, bssidOffset);
return WifiNetworkConnectCommand.endWifiNetworkConnectCommand(builder);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,34 +27,22 @@ ssid(optionalEncoding?:any):string|Uint8Array|null {
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}

bssid():string|null
bssid(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null
bssid(optionalEncoding?:any):string|Uint8Array|null {
const offset = this.bb!.__offset(this.bb_pos, 6);
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}

static startWifiNetworkForgetCommand(builder:flatbuffers.Builder) {
builder.startObject(2);
builder.startObject(1);
}

static addSsid(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset) {
builder.addFieldOffset(0, ssidOffset, 0);
}

static addBssid(builder:flatbuffers.Builder, bssidOffset:flatbuffers.Offset) {
builder.addFieldOffset(1, bssidOffset, 0);
}

static endWifiNetworkForgetCommand(builder:flatbuffers.Builder):flatbuffers.Offset {
const offset = builder.endObject();
return offset;
}

static createWifiNetworkForgetCommand(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset, bssidOffset:flatbuffers.Offset):flatbuffers.Offset {
static createWifiNetworkForgetCommand(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset):flatbuffers.Offset {
WifiNetworkForgetCommand.startWifiNetworkForgetCommand(builder);
WifiNetworkForgetCommand.addSsid(builder, ssidOffset);
WifiNetworkForgetCommand.addBssid(builder, bssidOffset);
return WifiNetworkForgetCommand.endWifiNetworkForgetCommand(builder);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,18 +27,16 @@ ssid(optionalEncoding?:any):string|Uint8Array|null {
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}

bssid():string|null
bssid(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null
bssid(optionalEncoding?:any):string|Uint8Array|null {
password():string|null
password(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null
password(optionalEncoding?:any):string|Uint8Array|null {
const offset = this.bb!.__offset(this.bb_pos, 6);
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}

password():string|null
password(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null
password(optionalEncoding?:any):string|Uint8Array|null {
connect():boolean {
const offset = this.bb!.__offset(this.bb_pos, 8);
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;
}

static startWifiNetworkSaveCommand(builder:flatbuffers.Builder) {
Expand All @@ -49,24 +47,24 @@ static addSsid(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset) {
builder.addFieldOffset(0, ssidOffset, 0);
}

static addBssid(builder:flatbuffers.Builder, bssidOffset:flatbuffers.Offset) {
builder.addFieldOffset(1, bssidOffset, 0);
static addPassword(builder:flatbuffers.Builder, passwordOffset:flatbuffers.Offset) {
builder.addFieldOffset(1, passwordOffset, 0);
}

static addPassword(builder:flatbuffers.Builder, passwordOffset:flatbuffers.Offset) {
builder.addFieldOffset(2, passwordOffset, 0);
static addConnect(builder:flatbuffers.Builder, connect:boolean) {
builder.addFieldInt8(2, +connect, +false);
}

static endWifiNetworkSaveCommand(builder:flatbuffers.Builder):flatbuffers.Offset {
const offset = builder.endObject();
return offset;
}

static createWifiNetworkSaveCommand(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset, bssidOffset:flatbuffers.Offset, passwordOffset:flatbuffers.Offset):flatbuffers.Offset {
static createWifiNetworkSaveCommand(builder:flatbuffers.Builder, ssidOffset:flatbuffers.Offset, passwordOffset:flatbuffers.Offset, connect:boolean):flatbuffers.Offset {
WifiNetworkSaveCommand.startWifiNetworkSaveCommand(builder);
WifiNetworkSaveCommand.addSsid(builder, ssidOffset);
WifiNetworkSaveCommand.addBssid(builder, bssidOffset);
WifiNetworkSaveCommand.addPassword(builder, passwordOffset);
WifiNetworkSaveCommand.addConnect(builder, connect);
return WifiNetworkSaveCommand.endWifiNetworkSaveCommand(builder);
}
}
8 changes: 4 additions & 4 deletions WebUI/src/lib/components/WiFiList.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import type { WiFiNetwork } from '$lib/types/WiFiNetwork';
import { WiFiStateStore } from '$lib/stores';
import { WebSocketClient } from '$lib/WebSocketClient';
import { WifiAuthMode } from '$lib/fbs/open-shock/wifi-auth-mode';
import { WifiAuthMode } from '$lib/_fbs/open-shock/wifi-auth-mode';
import { SerializeWifiScanCommand } from '$lib/Serializers/WifiScanCommand';
import { SerializeWifiNetworkDisconnectCommand } from '$lib/Serializers/WifiNetworkDisconnectCommand';
import { SerializeWifiNetworkConnectCommand } from '$lib/Serializers/WifiNetworkConnectCommand';
Expand All @@ -27,17 +27,17 @@
value: '',
valueAttr: { type: 'password', minlength: 1, maxlength: 63, required: true },
response: (password: string) => {
const data = SerializeWifiNetworkSaveCommand(item.ssid, item.bssid, password);
const data = SerializeWifiNetworkSaveCommand(item.ssid, password, true);
WebSocketClient.Instance.Send(data);
},
});
} else {
const data = SerializeWifiNetworkSaveCommand(item.ssid, item.bssid, '');
const data = SerializeWifiNetworkSaveCommand(item.ssid, null, true);
WebSocketClient.Instance.Send(data);
}
}
function wifiConnect(item: WiFiNetwork) {
const data = SerializeWifiNetworkConnectCommand(item.ssid, item.bssid);
const data = SerializeWifiNetworkConnectCommand(item.ssid);
WebSocketClient.Instance.Send(data);
}
function wifiDisconnect(item: WiFiNetwork) {
Expand Down
6 changes: 3 additions & 3 deletions WebUI/src/lib/components/modals/WiFiDetails.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@
function AuthenticateWiFi() {
if (!item) return;
// TODO: Prompt for password
const data = SerializeWifiNetworkSaveCommand(item.ssid, item.bssid, '');
const data = SerializeWifiNetworkSaveCommand(item.ssid, '', true);
WebSocketClient.Instance.Send(data);
modalStore.close();
}
function ConnectWiFi() {
if (!item) return;
const data = SerializeWifiNetworkConnectCommand(item.ssid, item.bssid);
const data = SerializeWifiNetworkConnectCommand(item.ssid);
WebSocketClient.Instance.Send(data);
modalStore.close();
}
function ForgetWiFi() {
if (!item) return;
const data = SerializeWifiNetworkForgetCommand(item.ssid, item.bssid);
const data = SerializeWifiNetworkForgetCommand(item.ssid);
WebSocketClient.Instance.Send(data);
modalStore.close();
}
Expand Down
2 changes: 1 addition & 1 deletion WebUI/src/lib/types/WiFiNetwork.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { WifiAuthMode } from '$lib/fbs/open-shock/wifi-auth-mode';
import type { WifiAuthMode } from '$lib/_fbs/open-shock/wifi-auth-mode';

export type WiFiNetwork = {
ssid: string;
Expand Down
5 changes: 4 additions & 1 deletion include/WiFiManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
namespace OpenShock::WiFiManager {
bool Init();

bool Save(std::uint8_t (&bssid)[6], const std::string& password);
bool Save(const char* ssid, const std::string& password);
bool Save(const std::uint8_t (&bssid)[6], const std::string& password);
bool Forget(const char* ssid);
bool Forget(const std::uint8_t (&bssid)[6]);

bool IsSaved(const char* ssid);
bool IsSaved(const std::uint8_t (&bssid)[6]);
bool IsSaved(const char* ssid, const std::uint8_t (&bssid)[6]);

bool Connect(const char* ssid);
bool Connect(const std::uint8_t (&bssid)[6]);
void Disconnect();

Expand Down
Loading

0 comments on commit 8c54968

Please sign in to comment.