Files
tcad-bodeplot/dea/schemas.py
T
2026-05-26 15:34:24 +08:00

63 lines
2.1 KiB
Python
Executable File

from typing import List, Optional
from pydantic import BaseModel, Field
from .config import MAX_COEFFICIENTS
class DesignParams(BaseModel):
filter_type: str
fs: float = Field(gt=0)
lp_fc: float = Field(default=1000.0, gt=0)
lp_order: int = Field(default=1, ge=1, le=8)
hp_fc: float = Field(default=1000.0, gt=0)
hp_order: int = Field(default=1, ge=1, le=8)
bp_f_low: float = Field(default=500.0, gt=0)
bp_f_high: float = Field(default=2000.0, gt=0)
bp_order: int = Field(default=1, ge=1, le=8)
notch_f0: float = Field(default=120.0, gt=0)
notch_q: float = Field(default=1.0, gt=0)
opoz_fz: float = Field(default=15000.0, gt=0)
opoz_fp: float = Field(default=10.0, gt=0)
tp1z_fz: float = Field(default=200.0, gt=0)
tp1z_fp1: float = Field(default=10.0, gt=0)
tp1z_fp2: float = Field(default=5000.0, gt=0)
tptz_fz1: float = Field(default=200.0, gt=0)
tptz_fz2: float = Field(default=25000.0, gt=0)
tptz_fp1: float = Field(default=10.0, gt=0)
tptz_fp2: float = Field(default=5000.0, gt=0)
pid_kp: float = 0.003
pid_ki: float = 10.0
pid_kd: float = 0.000016
sogi_f0: float = Field(default=60.0, gt=0)
sogi_k: float = Field(default=1.414, gt=0)
class BodeParams(BaseModel):
b: List[float] = Field(min_length=1, max_length=MAX_COEFFICIENTS)
a: List[float] = Field(min_length=1, max_length=MAX_COEFFICIENTS)
fs: float = Field(gt=0)
class BodeCompareParams(BaseModel):
ideal: BodeParams
fixed: BodeParams
class MCUWriteParams(BaseModel):
command: str = Field(min_length=1, max_length=128)
port: Optional[str] = Field(default=None, max_length=256)
class CascadeStageParams(BaseModel):
b: List[float] = Field(min_length=1, max_length=MAX_COEFFICIENTS)
a: List[float] = Field(min_length=1, max_length=MAX_COEFFICIENTS)
b_fixed: List[float] = Field(min_length=1, max_length=MAX_COEFFICIENTS)
a_fixed: List[float] = Field(min_length=1, max_length=MAX_COEFFICIENTS)
isActive: bool = True
class BodeCascadeParams(BaseModel):
stages: List[CascadeStageParams] = Field(min_length=1)
fs: float = Field(gt=0)