Add 5 MCP tools (PatternImportMixin) and 1 prompt for importing external antenna pattern data. Pure-Python parsers with IDW interpolation on the sphere, single-cut-to-3D synthesis for EMCAR/2-col CSV, and Touchstone S1P bridge to the analytical pattern engine. Web UI gets a "Load File" button with multipart upload endpoint and WebSocket broadcast. 78 tools, 14 prompts.
57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
export interface PatternData {
|
|
antenna_type: string;
|
|
frequency_hz: number;
|
|
wavelength_m: number;
|
|
theta_deg: number[];
|
|
phi_deg: number[];
|
|
gain_dbi: number[][];
|
|
peak_gain_dbi: number;
|
|
e_plane: PlanePoint[];
|
|
h_plane: PlanePoint[];
|
|
model: string;
|
|
resonance?: ResonanceData;
|
|
raw_cut?: { angles_deg: number[]; gain_db: number[]; plane: string };
|
|
import_info?: { format: string; filename?: string; points: number };
|
|
}
|
|
|
|
export interface PlanePoint {
|
|
theta_deg?: number;
|
|
phi_deg?: number;
|
|
gain_dbi: number;
|
|
}
|
|
|
|
export interface ResonanceData {
|
|
frequency_hz: number;
|
|
swr: number;
|
|
return_loss_db: number;
|
|
impedance_real: number;
|
|
impedance_imag: number;
|
|
}
|
|
|
|
export interface ComputeParams {
|
|
antenna_type: string;
|
|
frequency_hz: number;
|
|
impedance_real: number;
|
|
impedance_imag: number;
|
|
}
|
|
|
|
export interface ScanParams {
|
|
antenna_type: string;
|
|
start_hz: number;
|
|
stop_hz: number;
|
|
points: number;
|
|
}
|
|
|
|
export type DisplayMode = 'surface' | 'wireframe' | 'e-plane' | 'h-plane';
|
|
|
|
export interface AppState {
|
|
connected: boolean;
|
|
loading: boolean;
|
|
pattern: PatternData | null;
|
|
displayMode: DisplayMode;
|
|
antennaType: string;
|
|
frequencyMhz: number;
|
|
impedanceReal: number;
|
|
impedanceImag: number;
|
|
}
|