"""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 AemRateFrameType(Enum):
REF_FRAME_A = "ref_frame_a"
REF_FRAME_A_1 = "REF_FRAME_A"
REF_FRAME_B = "ref_frame_b"
REF_FRAME_B_1 = "REF_FRAME_B"
[docs]
class AttitudeTypeType(Enum):
QUATERNION = "quaternion"
QUATERNION_1 = "QUATERNION"
QUATERNION_DERIVATIVE = "quaternion/derivative"
QUATERNION_DERIVATIVE_1 = "QUATERNION/DERIVATIVE"
QUATERNION_RATE = "quaternion/rate"
QUATERNION_RATE_1 = "QUATERNION/RATE"
EULER_ANGLE = "euler_angle"
EULER_ANGLE_1 = "EULER_ANGLE"
EULER_ANGLE_RATE = "euler_angle/rate"
EULER_ANGLE_RATE_1 = "EULER_ANGLE/RATE"
SPIN = "spin"
SPIN_1 = "SPIN"
SPIN_NUTATION = "spin/nutation"
SPIN_NUTATION_1 = "SPIN/NUTATION"
[docs]
class QuaternionTypeType(Enum):
FIRST = "first"
FIRST_1 = "FIRST"
LAST = "last"
LAST_1 = "LAST"
[docs]
@dataclass(kw_only=True)
class EulerAngleRateType:
class Meta:
name = "eulerAngleRateType"
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*)?",
}
)
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 EulerAngleType:
class Meta:
name = "eulerAngleType"
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*)?",
}
)
rotation_angles: None | RotationAngleType = field(
default=None,
metadata={
"name": "rotationAngles",
"type": "Element",
"namespace": "",
},
)
[docs]
@dataclass(kw_only=True)
class QuaternionDerivativeType:
class Meta:
name = "quaternionDerivativeType"
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*)?",
}
)
quaternion: QuaternionType = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
quaternion_rate: QuaternionRateType = field(
metadata={
"name": "quaternionRate",
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class QuaternionEphemerisType:
class Meta:
name = "quaternionEphemerisType"
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*)?",
}
)
quaternion: QuaternionType = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class QuaternionEulerRateType:
class Meta:
name = "quaternionEulerRateType"
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*)?",
}
)
quaternion: QuaternionType = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
rotation_rates: None | RotationRateType = field(
default=None,
metadata={
"name": "rotationRates",
"type": "Element",
"namespace": "",
},
)
[docs]
@dataclass(kw_only=True)
class SpinNutationType:
class Meta:
name = "spinNutationType"
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*)?",
}
)
spin_alpha: AngleType = field(
metadata={
"name": "SPIN_ALPHA",
"type": "Element",
"namespace": "",
"required": True,
}
)
spin_delta: AngleType = field(
metadata={
"name": "SPIN_DELTA",
"type": "Element",
"namespace": "",
"required": True,
}
)
spin_angle: AngleType = field(
metadata={
"name": "SPIN_ANGLE",
"type": "Element",
"namespace": "",
"required": True,
}
)
spin_angle_vel: AngleRateType = field(
metadata={
"name": "SPIN_ANGLE_VEL",
"type": "Element",
"namespace": "",
"required": True,
}
)
nutation: AngleType = field(
metadata={
"name": "NUTATION",
"type": "Element",
"namespace": "",
"required": True,
}
)
nutation_per: DurationType = field(
metadata={
"name": "NUTATION_PER",
"type": "Element",
"namespace": "",
"required": True,
}
)
nutation_phase: AngleType = field(
metadata={
"name": "NUTATION_PHASE",
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class SpinType:
class Meta:
name = "spinType"
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*)?",
}
)
spin_alpha: AngleType = field(
metadata={
"name": "SPIN_ALPHA",
"type": "Element",
"namespace": "",
"required": True,
}
)
spin_delta: AngleType = field(
metadata={
"name": "SPIN_DELTA",
"type": "Element",
"namespace": "",
"required": True,
}
)
spin_angle: AngleType = field(
metadata={
"name": "SPIN_ANGLE",
"type": "Element",
"namespace": "",
"required": True,
}
)
spin_angle_vel: AngleRateType = field(
metadata={
"name": "SPIN_ANGLE_VEL",
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class AttitudeStateType:
class Meta:
name = "attitudeStateType"
quaternion_state: None | QuaternionEphemerisType = field(
default=None,
metadata={
"name": "quaternionState",
"type": "Element",
"namespace": "",
},
)
quaternion_derivative: None | QuaternionDerivativeType = field(
default=None,
metadata={
"name": "quaternionDerivative",
"type": "Element",
"namespace": "",
},
)
quaternion_euler_rate: None | QuaternionEulerRateType = field(
default=None,
metadata={
"name": "quaternionEulerRate",
"type": "Element",
"namespace": "",
},
)
euler_angle: None | EulerAngleType = field(
default=None,
metadata={
"name": "eulerAngle",
"type": "Element",
"namespace": "",
},
)
euler_angle_rate: None | EulerAngleRateType = field(
default=None,
metadata={
"name": "eulerAngleRate",
"type": "Element",
"namespace": "",
},
)
spin: None | SpinType = field(
default=None,
metadata={
"type": "Element",
"namespace": "",
},
)
spin_nutation: None | SpinNutationType = field(
default=None,
metadata={
"name": "spinNutation",
"type": "Element",
"namespace": "",
},
)
[docs]
@dataclass(kw_only=True)
class AemData:
class Meta:
name = "aemData"
comment: list[str] = field(
default_factory=list,
metadata={
"name": "COMMENT",
"type": "Element",
"namespace": "",
},
)
attitude_state: list[AttitudeStateType] = field(
default_factory=list,
metadata={
"name": "attitudeState",
"type": "Element",
"namespace": "",
"min_occurs": 1,
},
)
[docs]
@dataclass(kw_only=True)
class AemSegment:
class Meta:
name = "aemSegment"
metadata: AemMetadata = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
data: AemData = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
[docs]
@dataclass(kw_only=True)
class AemBody:
class Meta:
name = "aemBody"
segment: list[AemSegment] = field(
default_factory=list,
metadata={
"type": "Element",
"namespace": "",
"min_occurs": 1,
},
)
[docs]
@dataclass(kw_only=True)
class AemType:
class Meta:
name = "aemType"
header: NdmHeader = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
body: AemBody = field(
metadata={
"type": "Element",
"namespace": "",
"required": True,
}
)
id: str = field(
init=False,
default="CCSDS_AEM_VERS",
metadata={
"type": "Attribute",
"required": True,
},
)
version: str = field(
init=False,
default="1.0",
metadata={
"type": "Attribute",
"required": True,
},
)