🛜 Fixed wifi with protobuf, added rest message proto

This commit is contained in:
Niklas Jensen
2026-01-02 14:55:28 +01:00
committed by nikguin04
parent a98faabfba
commit 9c1ad30771
6 changed files with 751 additions and 104 deletions
+626
View File
@@ -0,0 +1,626 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.10.1
// protoc v6.33.2
// source: rest_message.proto
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import type { FileDescriptorProto } from "ts-proto-descriptors";
import { KnownNetworkItem, protoMetadata as protoMetadata1 } from "./websocket_message";
export const protobufPackage = "rest_message";
export interface WifiStatus {
status: number;
localIp: string;
macAddress: string;
rssi: number;
ssid: string;
bssid: string;
channel: number;
subnetMask: string;
gatewayIp: string;
dnsIp1: string;
dnsIp2?: string | undefined;
}
export interface WifiSettings {
hostname: string;
priorityRssi: boolean;
wifiNetworks: KnownNetworkItem[];
}
function createBaseWifiStatus(): WifiStatus {
return {
status: 0,
localIp: "",
macAddress: "",
rssi: 0,
ssid: "",
bssid: "",
channel: 0,
subnetMask: "",
gatewayIp: "",
dnsIp1: "",
dnsIp2: undefined,
};
}
export const WifiStatus: MessageFns<WifiStatus> = {
encode(message: WifiStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.status !== 0) {
writer.uint32(8).int32(message.status);
}
if (message.localIp !== "") {
writer.uint32(18).string(message.localIp);
}
if (message.macAddress !== "") {
writer.uint32(26).string(message.macAddress);
}
if (message.rssi !== 0) {
writer.uint32(37).float(message.rssi);
}
if (message.ssid !== "") {
writer.uint32(42).string(message.ssid);
}
if (message.bssid !== "") {
writer.uint32(50).string(message.bssid);
}
if (message.channel !== 0) {
writer.uint32(56).uint32(message.channel);
}
if (message.subnetMask !== "") {
writer.uint32(66).string(message.subnetMask);
}
if (message.gatewayIp !== "") {
writer.uint32(74).string(message.gatewayIp);
}
if (message.dnsIp1 !== "") {
writer.uint32(82).string(message.dnsIp1);
}
if (message.dnsIp2 !== undefined) {
writer.uint32(90).string(message.dnsIp2);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): WifiStatus {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseWifiStatus();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 8) {
break;
}
message.status = reader.int32();
continue;
}
case 2: {
if (tag !== 18) {
break;
}
message.localIp = reader.string();
continue;
}
case 3: {
if (tag !== 26) {
break;
}
message.macAddress = reader.string();
continue;
}
case 4: {
if (tag !== 37) {
break;
}
message.rssi = reader.float();
continue;
}
case 5: {
if (tag !== 42) {
break;
}
message.ssid = reader.string();
continue;
}
case 6: {
if (tag !== 50) {
break;
}
message.bssid = reader.string();
continue;
}
case 7: {
if (tag !== 56) {
break;
}
message.channel = reader.uint32();
continue;
}
case 8: {
if (tag !== 66) {
break;
}
message.subnetMask = reader.string();
continue;
}
case 9: {
if (tag !== 74) {
break;
}
message.gatewayIp = reader.string();
continue;
}
case 10: {
if (tag !== 82) {
break;
}
message.dnsIp1 = reader.string();
continue;
}
case 11: {
if (tag !== 90) {
break;
}
message.dnsIp2 = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): WifiStatus {
return {
status: isSet(object.status) ? globalThis.Number(object.status) : 0,
localIp: isSet(object.localIp) ? globalThis.String(object.localIp) : "",
macAddress: isSet(object.macAddress) ? globalThis.String(object.macAddress) : "",
rssi: isSet(object.rssi) ? globalThis.Number(object.rssi) : 0,
ssid: isSet(object.ssid) ? globalThis.String(object.ssid) : "",
bssid: isSet(object.bssid) ? globalThis.String(object.bssid) : "",
channel: isSet(object.channel) ? globalThis.Number(object.channel) : 0,
subnetMask: isSet(object.subnetMask) ? globalThis.String(object.subnetMask) : "",
gatewayIp: isSet(object.gatewayIp) ? globalThis.String(object.gatewayIp) : "",
dnsIp1: isSet(object.dnsIp1) ? globalThis.String(object.dnsIp1) : "",
dnsIp2: isSet(object.dnsIp2) ? globalThis.String(object.dnsIp2) : undefined,
};
},
toJSON(message: WifiStatus): unknown {
const obj: any = {};
if (message.status !== 0) {
obj.status = Math.round(message.status);
}
if (message.localIp !== "") {
obj.localIp = message.localIp;
}
if (message.macAddress !== "") {
obj.macAddress = message.macAddress;
}
if (message.rssi !== 0) {
obj.rssi = message.rssi;
}
if (message.ssid !== "") {
obj.ssid = message.ssid;
}
if (message.bssid !== "") {
obj.bssid = message.bssid;
}
if (message.channel !== 0) {
obj.channel = Math.round(message.channel);
}
if (message.subnetMask !== "") {
obj.subnetMask = message.subnetMask;
}
if (message.gatewayIp !== "") {
obj.gatewayIp = message.gatewayIp;
}
if (message.dnsIp1 !== "") {
obj.dnsIp1 = message.dnsIp1;
}
if (message.dnsIp2 !== undefined) {
obj.dnsIp2 = message.dnsIp2;
}
return obj;
},
create<I extends Exact<DeepPartial<WifiStatus>, I>>(base?: I): WifiStatus {
return WifiStatus.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<WifiStatus>, I>>(object: I): WifiStatus {
const message = createBaseWifiStatus();
message.status = object.status ?? 0;
message.localIp = object.localIp ?? "";
message.macAddress = object.macAddress ?? "";
message.rssi = object.rssi ?? 0;
message.ssid = object.ssid ?? "";
message.bssid = object.bssid ?? "";
message.channel = object.channel ?? 0;
message.subnetMask = object.subnetMask ?? "";
message.gatewayIp = object.gatewayIp ?? "";
message.dnsIp1 = object.dnsIp1 ?? "";
message.dnsIp2 = object.dnsIp2 ?? undefined;
return message;
},
};
function createBaseWifiSettings(): WifiSettings {
return { hostname: "", priorityRssi: false, wifiNetworks: [] };
}
export const WifiSettings: MessageFns<WifiSettings> = {
encode(message: WifiSettings, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.hostname !== "") {
writer.uint32(10).string(message.hostname);
}
if (message.priorityRssi !== false) {
writer.uint32(16).bool(message.priorityRssi);
}
for (const v of message.wifiNetworks) {
KnownNetworkItem.encode(v!, writer.uint32(26).fork()).join();
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): WifiSettings {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
const end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseWifiSettings();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.hostname = reader.string();
continue;
}
case 2: {
if (tag !== 16) {
break;
}
message.priorityRssi = reader.bool();
continue;
}
case 3: {
if (tag !== 26) {
break;
}
message.wifiNetworks.push(KnownNetworkItem.decode(reader, reader.uint32()));
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): WifiSettings {
return {
hostname: isSet(object.hostname) ? globalThis.String(object.hostname) : "",
priorityRssi: isSet(object.priorityRssi) ? globalThis.Boolean(object.priorityRssi) : false,
wifiNetworks: globalThis.Array.isArray(object?.wifiNetworks)
? object.wifiNetworks.map((e: any) => KnownNetworkItem.fromJSON(e))
: [],
};
},
toJSON(message: WifiSettings): unknown {
const obj: any = {};
if (message.hostname !== "") {
obj.hostname = message.hostname;
}
if (message.priorityRssi !== false) {
obj.priorityRssi = message.priorityRssi;
}
if (message.wifiNetworks?.length) {
obj.wifiNetworks = message.wifiNetworks.map((e) => KnownNetworkItem.toJSON(e));
}
return obj;
},
create<I extends Exact<DeepPartial<WifiSettings>, I>>(base?: I): WifiSettings {
return WifiSettings.fromPartial(base ?? ({} as any));
},
fromPartial<I extends Exact<DeepPartial<WifiSettings>, I>>(object: I): WifiSettings {
const message = createBaseWifiSettings();
message.hostname = object.hostname ?? "";
message.priorityRssi = object.priorityRssi ?? false;
message.wifiNetworks = object.wifiNetworks?.map((e) => KnownNetworkItem.fromPartial(e)) || [];
return message;
},
};
type ProtoMetaMessageOptions = {
options?: { [key: string]: any };
fields?: { [key: string]: { [key: string]: any } };
oneof?: { [key: string]: { [key: string]: any } };
nested?: { [key: string]: ProtoMetaMessageOptions };
};
export interface ProtoMetadata {
fileDescriptor: FileDescriptorProto;
references: { [key: string]: any };
dependencies?: ProtoMetadata[];
options?: {
options?: { [key: string]: any };
services?: {
[key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };
};
messages?: { [key: string]: ProtoMetaMessageOptions };
enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };
};
}
export const protoMetadata: ProtoMetadata = {
fileDescriptor: {
"name": "rest_message.proto",
"package": "rest_message",
"dependency": ["websocket_message.proto"],
"publicDependency": [],
"weakDependency": [],
"optionDependency": [],
"messageType": [{
"name": "WifiStatus",
"field": [{
"name": "status",
"number": 1,
"label": 1,
"type": 5,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "status",
"options": undefined,
"proto3Optional": false,
}, {
"name": "local_ip",
"number": 2,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "localIp",
"options": undefined,
"proto3Optional": false,
}, {
"name": "mac_address",
"number": 3,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "macAddress",
"options": undefined,
"proto3Optional": false,
}, {
"name": "rssi",
"number": 4,
"label": 1,
"type": 2,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "rssi",
"options": undefined,
"proto3Optional": false,
}, {
"name": "ssid",
"number": 5,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "ssid",
"options": undefined,
"proto3Optional": false,
}, {
"name": "bssid",
"number": 6,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "bssid",
"options": undefined,
"proto3Optional": false,
}, {
"name": "channel",
"number": 7,
"label": 1,
"type": 13,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "channel",
"options": undefined,
"proto3Optional": false,
}, {
"name": "subnet_mask",
"number": 8,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "subnetMask",
"options": undefined,
"proto3Optional": false,
}, {
"name": "gateway_ip",
"number": 9,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "gatewayIp",
"options": undefined,
"proto3Optional": false,
}, {
"name": "dns_ip_1",
"number": 10,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "dnsIp1",
"options": undefined,
"proto3Optional": false,
}, {
"name": "dns_ip_2",
"number": 11,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "dnsIp2",
"options": undefined,
"proto3Optional": true,
}],
"extension": [],
"nestedType": [],
"enumType": [],
"extensionRange": [],
"oneofDecl": [{ "name": "_dns_ip_2", "options": undefined }],
"options": undefined,
"reservedRange": [],
"reservedName": [],
"visibility": 0,
}, {
"name": "WifiSettings",
"field": [{
"name": "hostname",
"number": 1,
"label": 1,
"type": 9,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "hostname",
"options": undefined,
"proto3Optional": false,
}, {
"name": "priority_rssi",
"number": 2,
"label": 1,
"type": 8,
"typeName": "",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "priorityRssi",
"options": undefined,
"proto3Optional": false,
}, {
"name": "wifi_networks",
"number": 3,
"label": 3,
"type": 11,
"typeName": ".socket_message.KnownNetworkItem",
"extendee": "",
"defaultValue": "",
"oneofIndex": 0,
"jsonName": "wifiNetworks",
"options": undefined,
"proto3Optional": false,
}],
"extension": [],
"nestedType": [],
"enumType": [],
"extensionRange": [],
"oneofDecl": [],
"options": undefined,
"reservedRange": [],
"reservedName": [],
"visibility": 0,
}],
"enumType": [],
"service": [],
"extension": [],
"options": undefined,
"sourceCodeInfo": {
"location": [{
"path": [2],
"span": [5, 0, 21],
"leadingComments":
' Note: This is most likely a "temporary" proto that will be redone, as these endpoints are static for the esp32, which means we are forced to use WiFi for communication\n',
"trailingComments": "",
"leadingDetachedComments": [],
}],
},
"syntax": "proto3",
"edition": 0,
},
references: { ".rest_message.WifiStatus": WifiStatus, ".rest_message.WifiSettings": WifiSettings },
dependencies: [protoMetadata1],
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P
: P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
function isSet(value: any): boolean {
return value !== null && value !== undefined;
}
export interface MessageFns<T> {
encode(message: T, writer?: BinaryWriter): BinaryWriter;
decode(input: BinaryReader | Uint8Array, length?: number): T;
fromJSON(object: any): T;
toJSON(message: T): unknown;
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
}
@@ -2,13 +2,13 @@
// versions: // versions:
// protoc-gen-ts_proto v2.10.1 // protoc-gen-ts_proto v2.10.1
// protoc v6.33.2 // protoc v6.33.2
// source: platform_shared/websocket_message.proto // source: websocket_message.proto
/* eslint-disable */ /* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import type { FileDescriptorProto } from "ts-proto-descriptors"; import type { FileDescriptorProto } from "ts-proto-descriptors";
export const protobufPackage = ""; export const protobufPackage = "socket_message";
export enum ModesEnum { export enum ModesEnum {
DEACTIVATED = 0, DEACTIVATED = 0,
@@ -3192,8 +3192,8 @@ export interface ProtoMetadata {
export const protoMetadata: ProtoMetadata = { export const protoMetadata: ProtoMetadata = {
fileDescriptor: { fileDescriptor: {
"name": "platform_shared/websocket_message.proto", "name": "websocket_message.proto",
"package": "", "package": "socket_message",
"dependency": [], "dependency": [],
"publicDependency": [], "publicDependency": [],
"weakDependency": [], "weakDependency": [],
@@ -3751,7 +3751,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 1, "number": 1,
"label": 1, "label": 1,
"type": 14, "type": 14,
"typeName": ".ModesEnum", "typeName": ".socket_message.ModesEnum",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -3775,7 +3775,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 1, "number": 1,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".Vector", "typeName": ".socket_message.Vector",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -3787,7 +3787,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 2, "number": 2,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".Vector", "typeName": ".socket_message.Vector",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4039,7 +4039,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 1, "number": 1,
"label": 3, "label": 3,
"type": 11, "type": 11,
"typeName": ".I2CDevice", "typeName": ".socket_message.I2CDevice",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4099,7 +4099,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 4, "number": 4,
"label": 3, "label": 3,
"type": 11, "type": 11,
"typeName": ".PinConfig", "typeName": ".socket_message.PinConfig",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4147,7 +4147,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 3, "number": 3,
"label": 3, "label": 3,
"type": 11, "type": 11,
"typeName": ".KnownNetworkItem", "typeName": ".socket_message.KnownNetworkItem",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4267,7 +4267,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 10, "number": 10,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".Vector", "typeName": ".socket_message.Vector",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4279,7 +4279,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 11, "number": 11,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".Vector", "typeName": ".socket_message.Vector",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4339,7 +4339,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 1, "number": 1,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".AnalyticsData", "typeName": ".socket_message.AnalyticsData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4351,7 +4351,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 2, "number": 2,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".StaticSystemInformation", "typeName": ".socket_message.StaticSystemInformation",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4375,7 +4375,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 1, "number": 1,
"label": 1, "label": 1,
"type": 14, "type": 14,
"typeName": ".WalkGaits", "typeName": ".socket_message.WalkGaits",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4555,7 +4555,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 20, "number": 20,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".SubscribeNotification", "typeName": ".socket_message.SubscribeNotification",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4567,7 +4567,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 21, "number": 21,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".UnsubscribeNotification", "typeName": ".socket_message.UnsubscribeNotification",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4579,7 +4579,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 30, "number": 30,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".PingMsg", "typeName": ".socket_message.PingMsg",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4591,7 +4591,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 31, "number": 31,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".PongMsg", "typeName": ".socket_message.PongMsg",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4603,7 +4603,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 110, "number": 110,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".IMUData", "typeName": ".socket_message.IMUData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4615,7 +4615,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 120, "number": 120,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".IMUCalibrateData", "typeName": ".socket_message.IMUCalibrateData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4627,7 +4627,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 130, "number": 130,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".ModeData", "typeName": ".socket_message.ModeData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4639,7 +4639,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 140, "number": 140,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".ControllerInputData", "typeName": ".socket_message.ControllerInputData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4651,7 +4651,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 150, "number": 150,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".AnalyticsData", "typeName": ".socket_message.AnalyticsData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4663,7 +4663,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 170, "number": 170,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".AnglesData", "typeName": ".socket_message.AnglesData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4675,7 +4675,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 180, "number": 180,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".I2CScanData", "typeName": ".socket_message.I2CScanData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4687,7 +4687,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 190, "number": 190,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".PeripheralSettingsData", "typeName": ".socket_message.PeripheralSettingsData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4699,7 +4699,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 200, "number": 200,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".KinematicData", "typeName": ".socket_message.KinematicData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4711,7 +4711,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 240, "number": 240,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".WifiSettingsData", "typeName": ".socket_message.WifiSettingsData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4723,7 +4723,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 250, "number": 250,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".HumanInputData", "typeName": ".socket_message.HumanInputData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4735,7 +4735,7 @@ export const protoMetadata: ProtoMetadata = {
"number": 260, "number": 260,
"label": 1, "label": 1,
"type": 11, "type": 11,
"typeName": ".RSSIData", "typeName": ".socket_message.RSSIData",
"extendee": "", "extendee": "",
"defaultValue": "", "defaultValue": "",
"oneofIndex": 0, "oneofIndex": 0,
@@ -4785,13 +4785,13 @@ export const protoMetadata: ProtoMetadata = {
"sourceCodeInfo": { "sourceCodeInfo": {
"location": [{ "location": [{
"path": [4, 4], "path": [4, 4],
"span": [8, 0, 16, 1], "span": [12, 0, 20, 1],
"leadingComments": " Individual message data types\n", "leadingComments": " Individual message data types\n",
"trailingComments": "", "trailingComments": "",
"leadingDetachedComments": [], "leadingDetachedComments": [],
}, { }, {
"path": [4, 25], "path": [4, 25],
"span": [105, 0, 124, 1], "span": [109, 0, 128, 1],
"leadingComments": " WebSocket message wrapper\n Only ONE field will be set at a time (oneof ensures this)\n", "leadingComments": " WebSocket message wrapper\n Only ONE field will be set at a time (oneof ensures this)\n",
"trailingComments": "", "trailingComments": "",
"leadingDetachedComments": [], "leadingDetachedComments": [],
@@ -4801,34 +4801,34 @@ export const protoMetadata: ProtoMetadata = {
"edition": 0, "edition": 0,
}, },
references: { references: {
".ModesEnum": ModesEnum, ".socket_message.ModesEnum": ModesEnum,
".WalkGaits": WalkGaits, ".socket_message.WalkGaits": WalkGaits,
".Vector": Vector, ".socket_message.Vector": Vector,
".I2CDevice": I2CDevice, ".socket_message.I2CDevice": I2CDevice,
".PinConfig": PinConfig, ".socket_message.PinConfig": PinConfig,
".KnownNetworkItem": KnownNetworkItem, ".socket_message.KnownNetworkItem": KnownNetworkItem,
".IMUData": IMUData, ".socket_message.IMUData": IMUData,
".StaticSystemInformation": StaticSystemInformation, ".socket_message.StaticSystemInformation": StaticSystemInformation,
".IMUCalibrateData": IMUCalibrateData, ".socket_message.IMUCalibrateData": IMUCalibrateData,
".ModeData": ModeData, ".socket_message.ModeData": ModeData,
".ControllerInputData": ControllerInputData, ".socket_message.ControllerInputData": ControllerInputData,
".AnalyticsData": AnalyticsData, ".socket_message.AnalyticsData": AnalyticsData,
".AnglesData": AnglesData, ".socket_message.AnglesData": AnglesData,
".I2CScanData": I2CScanData, ".socket_message.I2CScanData": I2CScanData,
".PeripheralSettingsData": PeripheralSettingsData, ".socket_message.PeripheralSettingsData": PeripheralSettingsData,
".WifiSettingsData": WifiSettingsData, ".socket_message.WifiSettingsData": WifiSettingsData,
".RSSIData": RSSIData, ".socket_message.RSSIData": RSSIData,
".DownloadOTAData": DownloadOTAData, ".socket_message.DownloadOTAData": DownloadOTAData,
".SonarData": SonarData, ".socket_message.SonarData": SonarData,
".HumanInputData": HumanInputData, ".socket_message.HumanInputData": HumanInputData,
".SystemInformation": SystemInformation, ".socket_message.SystemInformation": SystemInformation,
".WalkGaitData": WalkGaitData, ".socket_message.WalkGaitData": WalkGaitData,
".KinematicData": KinematicData, ".socket_message.KinematicData": KinematicData,
".SubscribeNotification": SubscribeNotification, ".socket_message.SubscribeNotification": SubscribeNotification,
".UnsubscribeNotification": UnsubscribeNotification, ".socket_message.UnsubscribeNotification": UnsubscribeNotification,
".PingMsg": PingMsg, ".socket_message.PingMsg": PingMsg,
".PongMsg": PongMsg, ".socket_message.PongMsg": PongMsg,
".WebsocketMessage": WebsocketMessage, ".socket_message.WebsocketMessage": WebsocketMessage,
}, },
dependencies: [], dependencies: [],
}; };
+33 -31
View File
@@ -34,6 +34,7 @@
} from '$lib/components/icons' } from '$lib/components/icons'
import StatusItem from '$lib/components/StatusItem.svelte' import StatusItem from '$lib/components/StatusItem.svelte'
import { KnownNetworkItem } from '$lib/platform_shared/websocket_message' import { KnownNetworkItem } from '$lib/platform_shared/websocket_message'
import { WifiSettings, type WifiStatus } from '$lib/rest_message'
let networkEditable: KnownNetworkItem = $state( KnownNetworkItem.create() ) let networkEditable: KnownNetworkItem = $state( KnownNetworkItem.create() )
@@ -49,7 +50,7 @@
let showWifiDetails = $state(false) let showWifiDetails = $state(false)
let formField: Record<string, unknown> = $state() let formField: HTMLFormElement = $state()!
let formErrors = $state({ let formErrors = $state({
ssid: false, ssid: false,
@@ -79,19 +80,19 @@
return return
} }
wifiSettings = result.inner wifiSettings = result.inner
dndNetworkList = wifiSettings.wifi_networks dndNetworkList = wifiSettings.wifiNetworks
return wifiSettings return wifiSettings
} }
onDestroy(() => socket.off(MessageTopic.WiFiSettings)) let unsub_obj: (() => void) | undefined = undefined;
onMount(() => { onMount(() => {
socket.on<WifiSettings>(MessageTopic.WiFiSettings, data => { unsub_obj = socket.on<WifiSettings>(WifiSettings, data => {
wifiSettings = data wifiSettings = data
dndNetworkList = wifiSettings.wifi_networks dndNetworkList = wifiSettings.wifiNetworks
}) })
}) })
onDestroy(() => { if (unsub_obj) unsub_obj() } )
async function postWiFiSettings(data: WifiSettings) { async function postWiFiSettings(data: WifiSettings) {
const result = await api.post<WifiSettings>('/api/wifi/sta/settings', data) const result = await api.post<WifiSettings>('/api/wifi/sta/settings', data)
if (result.isErr()) { if (result.isErr()) {
@@ -110,7 +111,7 @@
} else { } else {
formErrorhostname = false formErrorhostname = false
// Update global wifiSettings object // Update global wifiSettings object
wifiSettings.wifi_networks = dndNetworkList wifiSettings.wifiNetworks = dndNetworkList
// Post to REST API // Post to REST API
postWiFiSettings(wifiSettings) postWiFiSettings(wifiSettings)
console.log(wifiSettings) console.log(wifiSettings)
@@ -129,15 +130,15 @@
formErrors.ssid = false formErrors.ssid = false
} }
networkEditable.static_ip_config = static_ip_config networkEditable.staticIp = static_ip_config
if (networkEditable.static_ip_config) { if (networkEditable.staticIp) {
// RegEx for IPv4 // RegEx for IPv4
const regexExp = const regexExp =
/\b(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))\b/ /\b(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))\b/
// Validate gateway IP // Validate gateway IP
if (!regexExp.test(networkEditable.gateway_ip!)) { if (!regexExp.test(networkEditable.gatewayIp!)) {
valid = false valid = false
formErrors.gateway_ip = true formErrors.gateway_ip = true
} else { } else {
@@ -145,7 +146,7 @@
} }
// Validate Subnet Mask // Validate Subnet Mask
if (!regexExp.test(networkEditable.subnet_mask!)) { if (!regexExp.test(networkEditable.subnetMask!)) {
valid = false valid = false
formErrors.subnet_mask = true formErrors.subnet_mask = true
} else { } else {
@@ -153,7 +154,7 @@
} }
// Validate local IP // Validate local IP
if (!regexExp.test(networkEditable.local_ip!)) { if (!regexExp.test(networkEditable.localIp!)) {
valid = false valid = false
formErrors.local_ip = true formErrors.local_ip = true
} else { } else {
@@ -161,7 +162,7 @@
} }
// Validate DNS 1 // Validate DNS 1
if (!regexExp.test(networkEditable.dns_ip_1!)) { if (!regexExp.test(networkEditable.dnsIp1!)) {
valid = false valid = false
formErrors.dns_1 = true formErrors.dns_1 = true
} else { } else {
@@ -169,7 +170,8 @@
} }
// Validate DNS 2 // Validate DNS 2
if (!regexExp.test(networkEditable.dns_ip_2!)) { // TODO: This is optional, make sure to handle correctly?
if (!regexExp.test(networkEditable.dnsIp2!)) {
valid = false valid = false
formErrors.dns_2 = true formErrors.dns_2 = true
} else { } else {
@@ -211,12 +213,12 @@
networkEditable = { networkEditable = {
ssid: '', ssid: '',
password: '', password: '',
static_ip_config: false, staticIp: false,
local_ip: undefined, localIp: undefined,
subnet_mask: undefined, subnetMask: undefined,
gateway_ip: undefined, gatewayIp: undefined,
dns_ip_1: undefined, dnsIp1: undefined,
dns_ip_2: undefined dnsIp2: undefined
} }
} }
@@ -302,7 +304,7 @@
<StatusItem <StatusItem
icon={Home} icon={Home}
title="IP Address" title="IP Address"
description={wifiStatus.local_ip} description={wifiStatus.localIp}
/> />
<StatusItem icon={WiFi} title="RSSI" description={`${wifiStatus.rssi} dBm`}> <StatusItem icon={WiFi} title="RSSI" description={`${wifiStatus.rssi} dBm`}>
@@ -333,7 +335,7 @@
<StatusItem <StatusItem
icon={MAC} icon={MAC}
title="MAC Address" title="MAC Address"
description={wifiStatus.mac_address} description={wifiStatus.macAddress}
/> />
<StatusItem <StatusItem
@@ -345,16 +347,16 @@
<StatusItem <StatusItem
icon={Gateway} icon={Gateway}
title="Gateway IP" title="Gateway IP"
description={wifiStatus.gateway_ip} description={wifiStatus.gatewayIp}
/> />
<StatusItem <StatusItem
icon={Subnet} icon={Subnet}
title="Subnet Mask" title="Subnet Mask"
description={wifiStatus.subnet_mask} description={wifiStatus.subnetMask}
/> />
<StatusItem icon={DNS} title="DNS" description={wifiStatus.dns_ip_1} /> <StatusItem icon={DNS} title="DNS" description={wifiStatus.dnsIp1} />
</div> </div>
{/if} {/if}
{/if} {/if}
@@ -471,7 +473,7 @@
> >
<input <input
type="checkbox" type="checkbox"
bind:checked={wifiSettings.priority_RSSI} bind:checked={wifiSettings.priorityRssi}
class="checkbox checkbox-primary sm:-mb-5" class="checkbox checkbox-primary sm:-mb-5"
/> />
<span class="sm:-mb-5">Connect to strongest WiFi</span> <span class="sm:-mb-5">Connect to strongest WiFi</span>
@@ -545,7 +547,7 @@
minlength="7" minlength="7"
maxlength="15" maxlength="15"
size="15" size="15"
bind:value={networkEditable.local_ip} bind:value={networkEditable.localIp}
id="localIP" id="localIP"
required required
/> />
@@ -574,7 +576,7 @@
minlength="7" minlength="7"
maxlength="15" maxlength="15"
size="15" size="15"
bind:value={networkEditable.gateway_ip} bind:value={networkEditable.gatewayIp}
required required
/> />
<label class="label" for="gateway"> <label class="label" for="gateway">
@@ -601,7 +603,7 @@
minlength="7" minlength="7"
maxlength="15" maxlength="15"
size="15" size="15"
bind:value={networkEditable.subnet_mask} bind:value={networkEditable.subnetMask}
required required
/> />
<label class="label" for="subnet"> <label class="label" for="subnet">
@@ -628,7 +630,7 @@
minlength="7" minlength="7"
maxlength="15" maxlength="15"
size="15" size="15"
bind:value={networkEditable.dns_ip_1} bind:value={networkEditable.dnsIp1}
required required
/> />
<label class="label" for="gateway"> <label class="label" for="gateway">
@@ -653,7 +655,7 @@
minlength="7" minlength="7"
maxlength="15" maxlength="15"
size="15" size="15"
bind:value={networkEditable.dns_ip_2} bind:value={networkEditable.dnsIp2}
required required
/> />
<label class="label" for="subnet"> <label class="label" for="subnet">
+2 -2
View File
@@ -3,8 +3,8 @@ This file is temporary, just to show how ot compile the proto files
Make sure to actually create the output directories before executing the commands Make sure to actually create the output directories before executing the commands
TS: TS:
protoc --plugin="protoc-gen-ts_proto=$(Resolve-Path app\node_modules\.bin\protoc-gen-ts_proto.CMD)" --ts_proto_out="./app/src/lib" --ts_proto_opt=outputSchema=true --proto_path ".\platform_shared\" ".\platform_shared\websocket_message.proto" protoc --plugin="protoc-gen-ts_proto=$(Resolve-Path app\node_modules\.bin\protoc-gen-ts_proto.CMD)" --ts_proto_out="./app/src/lib/platform_shared" --ts_proto_opt=outputSchema=true --proto_path ".\platform_shared\" ".\platform_shared\websocket_message.proto"
protoc --plugin="protoc-gen-ts_proto=$(Resolve-Path app\node_modules\.bin\protoc-gen-ts_proto.CMD)" --ts_proto_out="./app/src/lib" --ts_proto_opt=outputSchema=true --proto_path ".\platform_shared\" ".\platform_shared\rest_message.proto" protoc --plugin="protoc-gen-ts_proto=$(Resolve-Path app\node_modules\.bin\protoc-gen-ts_proto.CMD)" --ts_proto_out="./app/src/lib/platform_shared" --ts_proto_opt=outputSchema=true --proto_path ".\platform_shared\" ".\platform_shared\rest_message.proto"
C++: C++:
protoc -I=platform_shared --cpp_out=esp32/src/platform_shared platform_shared/example.proto protoc -I=platform_shared --cpp_out=esp32/src/platform_shared platform_shared/example.proto
+27
View File
@@ -0,0 +1,27 @@
syntax = "proto3";
import "websocket_message.proto";
// Note: This is most likely a "temporary" proto that will be redone, as these endpoints are static for the esp32, which means we are forced to use WiFi for communication
package rest_message;
message WifiStatus {
int32 status = 1;
string local_ip = 2;
string mac_address = 3;
float rssi = 4;
string ssid = 5;
string bssid = 6;
uint32 channel = 7;
string subnet_mask = 8;
string gateway_ip = 9;
string dns_ip_1 = 10;
optional string dns_ip_2 = 11;
}
message WifiSettings {
string hostname = 1;
bool priority_rssi = 2;
repeated socket_message.KnownNetworkItem wifi_networks = 3;
}
+1 -9
View File
@@ -1,15 +1,7 @@
syntax = "proto3"; syntax = "proto3";
// REST MESSAGE TYPES package socket_message;
// TODO: i am too lazy to create a new file and compile it manually, so move this to a new proto before merging
// END REST MESSAGE TYPES
message Vector { float x = 1; float y = 2; } message Vector { float x = 1; float y = 2; }