"""This file was generated by xsdata, v26.1, on 2026-02-18 00:40:52
Generator: DataclassGenerator
See: https://xsdata.readthedocs.io/
"""
from __future__ import annotations
from dataclasses import dataclass, field
from enum import Enum
from ccsds_ndm.models.ndmxml1.ndmxml_1_0_navwg_common import (
AngleRateType,
AngleType,
DurationType,
NdmHeader,
QuaternionRateType,
QuaternionType,
RotationAngleType,
RotationRateType,
RotDirectionType,
RotseqType,
TimeSystemType,
)
__NAMESPACE__ = "urn:ccsds:recommendation:navigation:schema:ndmxml"
[docs]
class ApmRateFrameType(Enum):
EULER_FRAME_A = "EULER_FRAME_A"
EULER_FRAME_B = "EULER_FRAME_B"
[docs]
class MomentUnits(Enum):
KG_M_2 = "kg*m**2"
[docs]
class TorqueUnits(Enum):
N_M = "N*m"
[docs]
@dataclass(kw_only=True)
class EulerElementsSpinType:
class Meta:
name = "eulerElementsSpinType"
comment: list[str] = field(
default_factory=list,
metadata={
"name": "COMMENT",
"type": "Element",
"namespace": "",
},
)
spin_frame_a: str = field(
metadata={
"name": "SPIN_FRAME_A",
"type": "Element",
"namespace": "",
"required": True,
}
)
spin_frame_b: str = field(
metadata={
"name": "SPIN_FRAME_B",
"type": "Element",
"namespace": "",
"required": True,
}
)
spin_dir: None | RotDirectionType = field(
default=None,
metadata={
"name": "SPIN_DIR",
"type": "Element",
"namespace": "",
},
)
spin_alpha: None | AngleType = field(
default=None,
metadata={
"name": "SPIN_ALPHA",
"type": "Element",
"namespace": "",
},
)
spin_delta: None | AngleType = field(
default=None,
metadata={
"name": "SPIN_DELTA",
"type": "Element",
"namespace": "",
},
)
spin_angle: None | AngleType = field(
default=None,
metadata={
"name": "SPIN_ANGLE",
"type": "Element",
"namespace": "",
},
)
spin_angle_vel: None | AngleRateType = field(
default=None,
metadata={
"name": "SPIN_ANGLE_VEL",
"type": "Element",
"namespace": "",
},
)
nutation: None | AngleType = field(
default=None,
metadata={
"name": "NUTATION",
"type": "Element",
"namespace": "",
},
)
nutation_per: None | DurationType = field(
default=None,
metadata={
"name": "NUTATION_PER",
"type": "Element",
"namespace": "",
},
)
nutation_phase: None | AngleType = field(
default=None,
metadata={
"name": "NUTATION_PHASE",
"type": "Element",
"namespace": "",
},
)
[docs]
@dataclass(kw_only=True)
class EulerElementsThreeType:
class Meta:
name = "eulerElementsThreeType"
comment: list[str] = field(
default_factory=list,
metadata={
"name": "COMMENT",
"type": "Element",
"namespace": "",
},
)
euler_frame_a: None | str = field(
default=None,
metadata={
"name": "EULER_FRAME_A",
"type": "Element",
"namespace": "",
},
)
euler_frame_b: None | str = field(
default=None,
metadata={
"name": "EULER_FRAME_B",
"type": "Element",
"namespace": "",
},
)
euler_dir: None | RotDirectionType = field(
default=None,
metadata={
"name": "EULER_DIR",
"type": "Element",
"namespace": "",
},
)
euler_rot_seq: None | RotseqType = field(
default=None,
metadata={
"name": "EULER_ROT_SEQ",
"type": "Element",
"namespace": "",
},
)
rate_frame: None | ApmRateFrameType = field(
default=None,
metadata={
"name": "RATE_FRAME",
"type": "Element",
"namespace": "",
},
)
rotation_angles: None | RotationAngleType = field(
default=None,
metadata={
"name": "rotationAngles",
"type": "Element",
"namespace": "",
},
)
rotation_rates: None | RotationRateType = field(
default=None,
metadata={
"name": "rotationRates",
"type": "Element",
"namespace": "",
},
)
[docs]
@dataclass(kw_only=True)
class MomentType:
class Meta:
name = "momentType"
value: float = field(
metadata={
"required": True,
}
)
units: None | MomentUnits = field(
default=None,
metadata={
"type": "Attribute",
},
)
[docs]
@dataclass(kw_only=True)
class QuaternionStateType:
class Meta:
name = "quaternionStateType"
comment: list[str] = field(
default_factory=list,
metadata={
"name": "COMMENT",
"type": "Element",
"namespace": "",
},
)
epoch: str = field(
metadata={
"name": "EPOCH",
"type": "Element",
"namespace": "",
"required": True,
"pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
}
)
q_frame_a: str = field(
metadata={
"name": "Q_FRAME_A",
"type": "Element",
"namespace": "",
"required": True,
}
)
q_frame_b: str = field(
metadata={
"name": "Q_FRAME_B",
"type": "Element",
"namespace": "",
"required": True,
}
)
q_dir: RotDirectionType = field(
metadata={
"name": "Q_DIR",
"type": "Element",
"namespace": "",
"required": True,
}
)
quaternion: QuaternionType = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
quaternion_rate: None | QuaternionRateType = field(
default=None,
metadata={
"name": "quaternionRate",
"type": "Element",
"namespace": "",
},
)
[docs]
@dataclass(kw_only=True)
class TorqueType:
class Meta:
name = "torqueType"
value: float = field(
metadata={
"required": True,
}
)
units: None | TorqueUnits = field(
default=None,
metadata={
"type": "Attribute",
},
)
[docs]
@dataclass(kw_only=True)
class AttManeuverParametersType:
class Meta:
name = "attManeuverParametersType"
comment: list[str] = field(
default_factory=list,
metadata={
"name": "COMMENT",
"type": "Element",
"namespace": "",
},
)
man_epoch_start: str = field(
metadata={
"name": "MAN_EPOCH_START",
"type": "Element",
"namespace": "",
"required": True,
"pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
}
)
man_duration: DurationType = field(
metadata={
"name": "MAN_DURATION",
"type": "Element",
"namespace": "",
"required": True,
}
)
man_ref_frame: str = field(
metadata={
"name": "MAN_REF_FRAME",
"type": "Element",
"namespace": "",
"required": True,
}
)
man_tor_1: TorqueType = field(
metadata={
"name": "MAN_TOR_1",
"type": "Element",
"namespace": "",
"required": True,
}
)
man_tor_2: TorqueType = field(
metadata={
"name": "MAN_TOR_2",
"type": "Element",
"namespace": "",
"required": True,
}
)
man_tor_3: TorqueType = field(
metadata={
"name": "MAN_TOR_3",
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class AttSpacecraftParametersType:
class Meta:
name = "attSpacecraftParametersType"
comment: list[str] = field(
default_factory=list,
metadata={
"name": "COMMENT",
"type": "Element",
"namespace": "",
},
)
inertia_ref_frame: None | str = field(
default=None,
metadata={
"name": "INERTIA_REF_FRAME",
"type": "Element",
"namespace": "",
},
)
i11: MomentType = field(
metadata={
"name": "I11",
"type": "Element",
"namespace": "",
"required": True,
}
)
i22: MomentType = field(
metadata={
"name": "I22",
"type": "Element",
"namespace": "",
"required": True,
}
)
i33: MomentType = field(
metadata={
"name": "I33",
"type": "Element",
"namespace": "",
"required": True,
}
)
i12: MomentType = field(
metadata={
"name": "I12",
"type": "Element",
"namespace": "",
"required": True,
}
)
i13: MomentType = field(
metadata={
"name": "I13",
"type": "Element",
"namespace": "",
"required": True,
}
)
i23: MomentType = field(
metadata={
"name": "I23",
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class ApmData:
class Meta:
name = "apmData"
comment: list[str] = field(
default_factory=list,
metadata={
"name": "COMMENT",
"type": "Element",
"namespace": "",
},
)
quaternion_state: QuaternionStateType = field(
metadata={
"name": "quaternionState",
"type": "Element",
"namespace": "",
"required": True,
}
)
euler_elements_three: None | EulerElementsThreeType = field(
default=None,
metadata={
"name": "eulerElementsThree",
"type": "Element",
"namespace": "",
},
)
euler_elements_spin: None | EulerElementsSpinType = field(
default=None,
metadata={
"name": "eulerElementsSpin",
"type": "Element",
"namespace": "",
},
)
spacecraft_parameters: None | AttSpacecraftParametersType = field(
default=None,
metadata={
"name": "spacecraftParameters",
"type": "Element",
"namespace": "",
},
)
maneuver_parameters: list[AttManeuverParametersType] = field(
default_factory=list,
metadata={
"name": "maneuverParameters",
"type": "Element",
"namespace": "",
},
)
[docs]
@dataclass(kw_only=True)
class ApmSegment:
class Meta:
name = "apmSegment"
metadata: ApmMetadata = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
data: ApmData = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class ApmBody:
class Meta:
name = "apmBody"
segment: ApmSegment = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class ApmType:
class Meta:
name = "apmType"
header: NdmHeader = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
body: ApmBody = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
id: str = field(
init=False,
default="CCSDS_APM_VERS",
metadata={
"type": "Attribute",
"required": True,
},
)
version: str = field(
init=False,
default="1.0",
metadata={
"type": "Attribute",
"required": True,
},
)