Fix i2c svelte
This commit is contained in:
@@ -199,6 +199,9 @@ export interface I2CScanData {
|
||||
devices: I2CDevice[];
|
||||
}
|
||||
|
||||
export interface I2CScanDataRequest {
|
||||
}
|
||||
|
||||
export interface PeripheralSettingsData {
|
||||
sda: number;
|
||||
scl: number;
|
||||
@@ -286,6 +289,7 @@ export interface WebsocketMessage {
|
||||
analytics?: AnalyticsData | undefined;
|
||||
angles?: AnglesData | undefined;
|
||||
i2cScan?: I2CScanData | undefined;
|
||||
i2cScanDataRequest?: I2CScanDataRequest | undefined;
|
||||
peripheralSettings?: PeripheralSettingsData | undefined;
|
||||
peripheralSettingsDataRequest?: PeripheralSettingsDataRequest | undefined;
|
||||
kinematicData?: KinematicData | undefined;
|
||||
@@ -1856,6 +1860,49 @@ export const I2CScanData: MessageFns<I2CScanData> = {
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseI2CScanDataRequest(): I2CScanDataRequest {
|
||||
return {};
|
||||
}
|
||||
|
||||
export const I2CScanDataRequest: MessageFns<I2CScanDataRequest> = {
|
||||
encode(_: I2CScanDataRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
||||
return writer;
|
||||
},
|
||||
|
||||
decode(input: BinaryReader | Uint8Array, length?: number): I2CScanDataRequest {
|
||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
||||
const end = length === undefined ? reader.len : reader.pos + length;
|
||||
const message = createBaseI2CScanDataRequest();
|
||||
while (reader.pos < end) {
|
||||
const tag = reader.uint32();
|
||||
switch (tag >>> 3) {
|
||||
}
|
||||
if ((tag & 7) === 4 || tag === 0) {
|
||||
break;
|
||||
}
|
||||
reader.skip(tag & 7);
|
||||
}
|
||||
return message;
|
||||
},
|
||||
|
||||
fromJSON(_: any): I2CScanDataRequest {
|
||||
return {};
|
||||
},
|
||||
|
||||
toJSON(_: I2CScanDataRequest): unknown {
|
||||
const obj: any = {};
|
||||
return obj;
|
||||
},
|
||||
|
||||
create<I extends Exact<DeepPartial<I2CScanDataRequest>, I>>(base?: I): I2CScanDataRequest {
|
||||
return I2CScanDataRequest.fromPartial(base ?? ({} as any));
|
||||
},
|
||||
fromPartial<I extends Exact<DeepPartial<I2CScanDataRequest>, I>>(_: I): I2CScanDataRequest {
|
||||
const message = createBaseI2CScanDataRequest();
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBasePeripheralSettingsData(): PeripheralSettingsData {
|
||||
return { sda: 0, scl: 0, frequency: 0, pins: [] };
|
||||
}
|
||||
@@ -2932,6 +2979,7 @@ function createBaseWebsocketMessage(): WebsocketMessage {
|
||||
analytics: undefined,
|
||||
angles: undefined,
|
||||
i2cScan: undefined,
|
||||
i2cScanDataRequest: undefined,
|
||||
peripheralSettings: undefined,
|
||||
peripheralSettingsDataRequest: undefined,
|
||||
kinematicData: undefined,
|
||||
@@ -2979,6 +3027,9 @@ export const WebsocketMessage: MessageFns<WebsocketMessage> = {
|
||||
if (message.i2cScan !== undefined) {
|
||||
I2CScanData.encode(message.i2cScan, writer.uint32(1442).fork()).join();
|
||||
}
|
||||
if (message.i2cScanDataRequest !== undefined) {
|
||||
I2CScanDataRequest.encode(message.i2cScanDataRequest, writer.uint32(1450).fork()).join();
|
||||
}
|
||||
if (message.peripheralSettings !== undefined) {
|
||||
PeripheralSettingsData.encode(message.peripheralSettings, writer.uint32(1522).fork()).join();
|
||||
}
|
||||
@@ -3103,6 +3154,14 @@ export const WebsocketMessage: MessageFns<WebsocketMessage> = {
|
||||
message.i2cScan = I2CScanData.decode(reader, reader.uint32());
|
||||
continue;
|
||||
}
|
||||
case 181: {
|
||||
if (tag !== 1450) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.i2cScanDataRequest = I2CScanDataRequest.decode(reader, reader.uint32());
|
||||
continue;
|
||||
}
|
||||
case 190: {
|
||||
if (tag !== 1522) {
|
||||
break;
|
||||
@@ -3176,6 +3235,9 @@ export const WebsocketMessage: MessageFns<WebsocketMessage> = {
|
||||
analytics: isSet(object.analytics) ? AnalyticsData.fromJSON(object.analytics) : undefined,
|
||||
angles: isSet(object.angles) ? AnglesData.fromJSON(object.angles) : undefined,
|
||||
i2cScan: isSet(object.i2cScan) ? I2CScanData.fromJSON(object.i2cScan) : undefined,
|
||||
i2cScanDataRequest: isSet(object.i2cScanDataRequest)
|
||||
? I2CScanDataRequest.fromJSON(object.i2cScanDataRequest)
|
||||
: undefined,
|
||||
peripheralSettings: isSet(object.peripheralSettings)
|
||||
? PeripheralSettingsData.fromJSON(object.peripheralSettings)
|
||||
: undefined,
|
||||
@@ -3227,6 +3289,9 @@ export const WebsocketMessage: MessageFns<WebsocketMessage> = {
|
||||
if (message.i2cScan !== undefined) {
|
||||
obj.i2cScan = I2CScanData.toJSON(message.i2cScan);
|
||||
}
|
||||
if (message.i2cScanDataRequest !== undefined) {
|
||||
obj.i2cScanDataRequest = I2CScanDataRequest.toJSON(message.i2cScanDataRequest);
|
||||
}
|
||||
if (message.peripheralSettings !== undefined) {
|
||||
obj.peripheralSettings = PeripheralSettingsData.toJSON(message.peripheralSettings);
|
||||
}
|
||||
@@ -3285,6 +3350,9 @@ export const WebsocketMessage: MessageFns<WebsocketMessage> = {
|
||||
message.i2cScan = (object.i2cScan !== undefined && object.i2cScan !== null)
|
||||
? I2CScanData.fromPartial(object.i2cScan)
|
||||
: undefined;
|
||||
message.i2cScanDataRequest = (object.i2cScanDataRequest !== undefined && object.i2cScanDataRequest !== null)
|
||||
? I2CScanDataRequest.fromPartial(object.i2cScanDataRequest)
|
||||
: undefined;
|
||||
message.peripheralSettings = (object.peripheralSettings !== undefined && object.peripheralSettings !== null)
|
||||
? PeripheralSettingsData.fromPartial(object.peripheralSettings)
|
||||
: undefined;
|
||||
@@ -4205,6 +4273,18 @@ export const protoMetadata: ProtoMetadata = {
|
||||
"reservedRange": [],
|
||||
"reservedName": [],
|
||||
"visibility": 0,
|
||||
}, {
|
||||
"name": "I2CScanDataRequest",
|
||||
"field": [],
|
||||
"extension": [],
|
||||
"nestedType": [],
|
||||
"enumType": [],
|
||||
"extensionRange": [],
|
||||
"oneofDecl": [],
|
||||
"options": undefined,
|
||||
"reservedRange": [],
|
||||
"reservedName": [],
|
||||
"visibility": 0,
|
||||
}, {
|
||||
"name": "PeripheralSettingsData",
|
||||
"field": [{
|
||||
@@ -4855,6 +4935,18 @@ export const protoMetadata: ProtoMetadata = {
|
||||
"jsonName": "i2cScan",
|
||||
"options": undefined,
|
||||
"proto3Optional": false,
|
||||
}, {
|
||||
"name": "i2c_scan_data_request",
|
||||
"number": 181,
|
||||
"label": 1,
|
||||
"type": 11,
|
||||
"typeName": ".socket_message.I2CScanDataRequest",
|
||||
"extendee": "",
|
||||
"defaultValue": "",
|
||||
"oneofIndex": 0,
|
||||
"jsonName": "i2cScanDataRequest",
|
||||
"options": undefined,
|
||||
"proto3Optional": false,
|
||||
}, {
|
||||
"name": "peripheral_settings",
|
||||
"number": 190,
|
||||
@@ -4975,8 +5067,8 @@ export const protoMetadata: ProtoMetadata = {
|
||||
"trailingComments": "",
|
||||
"leadingDetachedComments": [],
|
||||
}, {
|
||||
"path": [4, 27],
|
||||
"span": [111, 0, 132, 1],
|
||||
"path": [4, 28],
|
||||
"span": [112, 0, 134, 1],
|
||||
"leadingComments": " WebSocket message wrapper\n Only ONE field will be set at a time (oneof ensures this)\n",
|
||||
"trailingComments": "",
|
||||
"leadingDetachedComments": [],
|
||||
@@ -5001,6 +5093,7 @@ export const protoMetadata: ProtoMetadata = {
|
||||
".socket_message.AnalyticsData": AnalyticsData,
|
||||
".socket_message.AnglesData": AnglesData,
|
||||
".socket_message.I2CScanData": I2CScanData,
|
||||
".socket_message.I2CScanDataRequest": I2CScanDataRequest,
|
||||
".socket_message.PeripheralSettingsData": PeripheralSettingsData,
|
||||
".socket_message.PeripheralSettingsDataRequest": PeripheralSettingsDataRequest,
|
||||
".socket_message.WifiSettingsData": WifiSettingsData,
|
||||
|
||||
@@ -54,13 +54,6 @@ export type Rssi = {
|
||||
|
||||
|
||||
|
||||
export interface I2CDevice {
|
||||
address: number
|
||||
part_number: string
|
||||
name: string
|
||||
}
|
||||
|
||||
|
||||
export type CameraSettings = {
|
||||
framesize: number
|
||||
quality: number
|
||||
|
||||
@@ -2,50 +2,43 @@
|
||||
import SettingsCard from '$lib/components/SettingsCard.svelte'
|
||||
import { onMount } from 'svelte'
|
||||
import { socket } from '$lib/stores'
|
||||
import { type I2CDevice } from '$lib/types/models'
|
||||
import { Connection } from '$lib/components/icons'
|
||||
import I2CSetting from './i2cSetting.svelte'
|
||||
import { I2CScanData } from '$lib/platform_shared/websocket_message'
|
||||
import { I2CDevice, I2CScanData, I2CScanDataRequest } from '$lib/platform_shared/websocket_message'
|
||||
|
||||
const i2cDevices = [
|
||||
{ address: 30, part_number: 'HMC5883', name: '3-Axis Digital Compass/Magnetometer IC' },
|
||||
{ address: 41, part_number: 'BNO055', name: '9-Axis Absolute Orientation Sensor' },
|
||||
{ address: 64, part_number: 'PCA9685', name: '16-channel PWM driver default address' },
|
||||
{ address: 72, part_number: 'ADS1115', name: '4-channel 16-bit ADC' },
|
||||
{
|
||||
address: 104,
|
||||
part_number: 'MPU6050',
|
||||
name: 'Six-Axis (Gyro + Accelerometer) MEMS MotionTracking™ Devices'
|
||||
},
|
||||
{ address: 115, part_number: 'PAJ7620U2', name: 'Gesture sensor' },
|
||||
{ address: 119, part_number: 'BMP085', name: 'Temp/Barometric' }
|
||||
]
|
||||
// TODO: Delete this completely, this should be done on esp side, as it decides what addresses are actually valid, as for example ICM20948 and MPU6050 can have same address
|
||||
// const i2cDevices = [
|
||||
// { address: 30, part_number: 'HMC5883', name: '3-Axis Digital Compass/Magnetometer IC' },
|
||||
// { address: 41, part_number: 'BNO055', name: '9-Axis Absolute Orientation Sensor' },
|
||||
// { address: 64, part_number: 'PCA9685', name: '16-channel PWM driver default address' },
|
||||
// { address: 72, part_number: 'ADS1115', name: '4-channel 16-bit ADC' },
|
||||
// {
|
||||
// address: 104,
|
||||
// part_number: 'MPU6050',
|
||||
// name: 'Six-Axis (Gyro + Accelerometer) MEMS MotionTracking™ Devices'
|
||||
// },
|
||||
// { address: 115, part_number: 'PAJ7620U2', name: 'Gesture sensor' },
|
||||
// { address: 119, part_number: 'BMP085', name: 'Temp/Barometric' }
|
||||
// ]
|
||||
|
||||
let active_devices: I2CDevice[] = $state([])
|
||||
|
||||
let isLoading = $state(false)
|
||||
|
||||
onMount(() => {
|
||||
socket.on(I2CScanData, handleScan)
|
||||
const unsub = socket.on(I2CScanData, handleScan)
|
||||
triggerScan()
|
||||
return () => socket.off(I2CScanData, handleScan)
|
||||
return () => unsub
|
||||
})
|
||||
|
||||
const handleScan = (data: { addresses: number[] }) => {
|
||||
active_devices = data.addresses.map(
|
||||
(address: number) =>
|
||||
i2cDevices.find(device => device.address === address) || {
|
||||
address,
|
||||
part_number: 'Unknown',
|
||||
name: 'Unknown'
|
||||
}
|
||||
)
|
||||
const handleScan = (data: I2CScanData) => {
|
||||
active_devices = data.devices
|
||||
isLoading = false
|
||||
}
|
||||
|
||||
const triggerScan = () => {
|
||||
isLoading = true
|
||||
socket.sendEvent(I2CScanData, '')
|
||||
socket.sendEvent(I2CScanDataRequest, {})
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ message AnalyticsData {
|
||||
}
|
||||
message AnglesData { repeated int32 angles = 1; }
|
||||
message I2CScanData { repeated I2CDevice devices = 1; }
|
||||
message I2CScanDataRequest {}
|
||||
message PeripheralSettingsData { int32 sda = 1; int32 scl = 2; int32 frequency = 3; repeated PinConfig pins = 4; }
|
||||
message PeripheralSettingsDataRequest {}
|
||||
message WifiSettingsData { string hostname = 1; bool priority_rssi = 2; repeated KnownNetworkItem wifi_networks = 3; }
|
||||
@@ -123,6 +124,7 @@ message WebsocketMessage {
|
||||
AnalyticsData analytics = 150;
|
||||
AnglesData angles = 170;
|
||||
I2CScanData i2c_scan = 180;
|
||||
I2CScanDataRequest i2c_scan_data_request = 181;
|
||||
PeripheralSettingsData peripheral_settings = 190;
|
||||
PeripheralSettingsDataRequest peripheral_settings_data_request = 191;
|
||||
KinematicData kinematic_data = 200;
|
||||
|
||||
Reference in New Issue
Block a user