# radar_data_reader/core/structures/__init__.py

"""
This package contains all data structure definitions for the application.

This __init__.py file imports all the key structures from the submodules
and re-exports them. This provides a single, convenient entry point for
other parts of the application, maintaining backward compatibility with code
that used to import from a monolithic `data_structures` module.
"""

from .base_structures import (
    CtypesStructureBase,
    BaseBlock,
    c_boolean,
    c_radians_t,
    c_metres_t,
    c_metres_per_sec_t,
    c_timetag_t,
    BLOCK_TYPE_MAP,
    SIGNAL_DATA_MARKER,
    DataBatch,
)

from .ge_header_structures import (
    HeaderInfo,
    PacketDescriptor,
    SignalDescriptor,
    ModeDescriptor,
    ExpSettings,
    DetSettings,
    PcSettings,
    AgcSettings,
    SpSettings,
    MissionTime,
    NavAttitude,
    NavAttitudeRate,
    NavGeoPos,
    NavSpeed,
    NavAcceleration,
    Navigation,
    AntPos,
    AntEvent,
    Antenna,
    WaveformDescriptor,
    GeneralSettings,
    FunctionSettings,
    GeHeader,
    DspHeaderIn,
)

from .cdpsts_structures import (
    SharedMemoryHeader,
    BaseTimetag,
    ModeStatus,
    AntennaPosition,
    AntennaFeedback,
    DetectedTarget,
    GenericDetections,
    ChunkHeader,
    IdentifierChunk,
    create_chunk_type,
    TimetagChunk,
    StatusChunk,
    AntennaStatusChunk,
    DetectionsChunk,
    CdpDataLayout,
    CdpStsPayload,
    CdpStsBlock,
)

from .d1553_structures import (
    ICD1553_GEOPOS_DEG_LSB,
    ICD1553_SEMICIRCLE_DEG_LSB,
    ICD1553_BARO_ALT_METERS_LSB,
    ICD1553_VELOCITY_METERS_LSB,
    AvionicsMessage,
    D1553Payload,
    D1553Block,
)

from .generic_structures import (
    GrifoFwBlobHeader,
    ShiftRegisters,
    UniquePrtFifo,
    PrtFifo,
    DelayWithPeriod,
    DelayWidth,
    TimerRawIf,
    GrifoTimerBlob,
    TimerBlock,
    AesaSyntheticReport,
    AesaBlock,
    ExpanderBasicSettings,
    ExpRawIf,
    ExpBlock,
    PcBasicSettings,
    PcRawIf,
    PcBlock,
    DetectorBasicSettings,
    DetectorRawIf,
    DetBlock,
    SignalBlock,
    GenericBlock,
)

# It's good practice to define __all__ to specify what gets exported
# when a client does `from .structures import *`.

__all__ = [
    # from base_structures
    "CtypesStructureBase",
    "BaseBlock",
    "c_boolean",
    "c_radians_t",
    "c_metres_t",
    "c_metres_per_sec_t",
    "c_timetag_t",
    "BLOCK_TYPE_MAP",
    "SIGNAL_DATA_MARKER",
    "DataBatch",
    # from ge_header_structures
    "HeaderInfo",
    "PacketDescriptor",
    "SignalDescriptor",
    "ModeDescriptor",
    "ExpSettings",
    "DetSettings",
    "PcSettings",
    "AgcSettings",
    "SpSettings",
    "MissionTime",
    "NavAttitude",
    "NavAttitudeRate",
    "NavGeoPos",
    "NavSpeed",
    "NavAcceleration",
    "Navigation",
    "AntPos",
    "AntEvent",
    "Antenna",
    "WaveformDescriptor",
    "GeneralSettings",
    "FunctionSettings",
    "GeHeader",
    "DspHeaderIn",
    # from cdpsts_structures
    "SharedMemoryHeader",
    "BaseTimetag",
    "ModeStatus",
    "AntennaPosition",
    "AntennaFeedback",
    "DetectedTarget",
    "GenericDetections",
    "ChunkHeader",
    "IdentifierChunk",
    "create_chunk_type",
    "TimetagChunk",
    "StatusChunk",
    "AntennaStatusChunk",
    "DetectionsChunk",
    "CdpDataLayout",
    "CdpStsPayload",
    "CdpStsBlock",
    # from d1553_structures
    "ICD1553_GEOPOS_DEG_LSB",
    "ICD1553_SEMICIRCLE_DEG_LSB",
    "ICD1553_BARO_ALT_METERS_LSB",
    "ICD1553_VELOCITY_METERS_LSB",
    "AvionicsMessage",
    "D1553Payload",
    "D1553Block",
    # from generic_structures
    "GrifoFwBlobHeader",
    "ShiftRegisters",
    "UniquePrtFifo",
    "PrtFifo",
    "DelayWithPeriod",
    "DelayWidth",
    "TimerRawIf",
    "GrifoTimerBlob",
    "TimerBlock",
    "AesaSyntheticReport",
    "AesaBlock",
    "ExpanderBasicSettings",
    "ExpRawIf",
    "ExpBlock",
    "PcBasicSettings",
    "PcRawIf",
    "PcBlock",
    "DetectorBasicSettings",
    "DetectorRawIf",
    "DetBlock",
    "SignalBlock",
    "GenericBlock",
]
