Files
SpotMicroESP32-Leika/app/src/lib/stores/imu.ts
T
2026-01-03 22:15:00 +01:00

43 lines
1.4 KiB
TypeScript

import { writable } from 'svelte/store'
import type { IMUMsg } from '$lib/types/models'
import type { IMUReport } from '$lib/platform_shared/imu_report'
const maxIMUData = 100
export const imu = (() => {
const { subscribe, update } = writable({
x: [] as number[],
y: [] as number[],
z: [] as number[],
heading: [] as number[],
altitude: [] as number[],
pressure: [] as number[],
bmp_temp: [] as number[]
})
const addData = (content: IMUReport) => {
update(data => {
if (content.success) {
data.x = [...data.x, content.x].slice(-maxIMUData)
data.y = [...data.y, content.y].slice(-maxIMUData)
data.z = [...data.z, content.z].slice(-maxIMUData)
}
// TODO: Temporarily disabled
// if (content.mag && content.mag[4]) {
// data.heading = [...data.heading, content.mag[3]].slice(-maxIMUData)
// }
// if (content.bmp && content.bmp[3]) {
// data.pressure = [...data.pressure, content.bmp[0]].slice(-maxIMUData)
// data.altitude = [...data.altitude, content.bmp[1]].slice(-maxIMUData)
// data.bmp_temp = [...data.bmp_temp, content.bmp[2]].slice(-maxIMUData)
// }
return data
})
}
return { subscribe, addData }
})()