153 lines
3.2 KiB
TypeScript
153 lines
3.2 KiB
TypeScript
export interface GpsTelemetry {
|
|
has_fix: boolean
|
|
utc_time: string
|
|
latitude: number | null
|
|
longitude: number | null
|
|
satellites: number | null
|
|
altitude_m: number | null
|
|
coordinate_system: string
|
|
source_sentence: string
|
|
raw_coordinate_format: string
|
|
source_mode: string
|
|
updated_at: string
|
|
}
|
|
|
|
export interface SessionAppStats {
|
|
connected: number
|
|
send_calls?: number
|
|
send_bytes?: number
|
|
send_errors?: number
|
|
recv_calls?: number
|
|
recv_bytes?: number
|
|
recv_timeouts?: number
|
|
recv_errors?: number
|
|
}
|
|
|
|
export interface SessionKcpStats {
|
|
connected?: number
|
|
conv?: number
|
|
rto_ms?: number
|
|
srtt_ms?: number
|
|
srttvar_ms?: number
|
|
snd_queue?: number
|
|
rcv_queue?: number
|
|
snd_buffer?: number
|
|
xmit_total?: number
|
|
}
|
|
|
|
export interface SessionTelemetry {
|
|
app: SessionAppStats
|
|
kcp: SessionKcpStats
|
|
}
|
|
|
|
export interface NativeUdpIngress {
|
|
started: boolean
|
|
bind_addr: string
|
|
packets_received: number
|
|
invalid_packets: number
|
|
last_sender: string
|
|
last_error: string
|
|
}
|
|
|
|
export interface ControlArbiterStatus {
|
|
active_source: string | null
|
|
control_lease_remaining_ms: number
|
|
packet_counts: Record<string, number>
|
|
send_rate_hz: number
|
|
source_lease_ms: number
|
|
zero_burst_packets: number
|
|
last_error: string
|
|
last_sent_at_monotonic: number
|
|
}
|
|
|
|
export interface ControlSenderStatus {
|
|
backend_ready: boolean
|
|
started: boolean
|
|
connected: boolean
|
|
peer_id: string
|
|
target_peer: string
|
|
send_count: number
|
|
send_errors: number
|
|
drain_errors: number
|
|
last_error: string
|
|
}
|
|
|
|
export interface NetworkTelemetry {
|
|
peer_status: string
|
|
latency_ms: number | null
|
|
jitter_ms: number | null
|
|
packet_loss_pct: number | null
|
|
tx_kbps: number
|
|
rx_kbps: number
|
|
transport: string
|
|
source_mode: string
|
|
updated_at: string
|
|
active_control_source: string | null
|
|
control_lease_remaining_ms: number
|
|
combined: {
|
|
connected_sessions: number
|
|
send_bytes: number
|
|
recv_bytes: number
|
|
tx_kbps: number
|
|
rx_kbps: number
|
|
}
|
|
sessions: {
|
|
video: SessionTelemetry
|
|
control: SessionTelemetry
|
|
}
|
|
ingress: {
|
|
native_udp: NativeUdpIngress
|
|
}
|
|
control: {
|
|
arbiter: ControlArbiterStatus
|
|
sender: ControlSenderStatus
|
|
}
|
|
}
|
|
|
|
export interface VideoStatus {
|
|
available: boolean
|
|
source_mode: string
|
|
frame_count: number
|
|
fps: number
|
|
frame_dir: string
|
|
source_detail?: string
|
|
timing?: {
|
|
available: boolean
|
|
latest_delta_ms: number | null
|
|
delta_samples_ms: number[]
|
|
sample_count: number
|
|
sample_window_size: number
|
|
timestamp_unit: string | null
|
|
timestamp_endianness: string | null
|
|
}
|
|
receiver?: {
|
|
backend_ready: boolean
|
|
mode: string
|
|
connected: boolean
|
|
has_recent_frame: boolean
|
|
frames_received: number
|
|
latest_sequence: number | null
|
|
last_error: string
|
|
config_path: string
|
|
server_addr?: string
|
|
relay_via?: string
|
|
peer_id?: string
|
|
buffer_bytes?: number
|
|
timing?: {
|
|
available: boolean
|
|
latest_delta_ms: number | null
|
|
delta_samples_ms: number[]
|
|
sample_count: number
|
|
sample_window_size: number
|
|
timestamp_unit: string | null
|
|
timestamp_endianness: string | null
|
|
}
|
|
}
|
|
}
|
|
|
|
export interface DashboardSnapshot {
|
|
gps: GpsTelemetry
|
|
network: NetworkTelemetry
|
|
video: VideoStatus
|
|
}
|