from typing import Optional

from mavtel_models.mavlink.metrics import *


class MetricsMixin:
    """
    This is an autogenerated class!
    """

    async def actuator_control_target(self) -> Optional[ActuatorControlTarget]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(ActuatorControlTarget)

    async def actuator_output_status(self) -> Optional[ActuatorOutputStatus]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(ActuatorOutputStatus)

    async def attitude_angular_velocity_body(self) -> Optional[AttitudeAngularVelocityBody]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(AttitudeAngularVelocityBody)

    async def attitude_euler(self) -> Optional[AttitudeEuler]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(AttitudeEuler)

    async def attitude_quaternion(self) -> Optional[AttitudeQuaternion]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(AttitudeQuaternion)

    async def armed(self) -> Optional[Armed]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(Armed)

    async def battery(self) -> Optional[Battery]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(Battery)

    async def camera_attitude_euler(self) -> Optional[CameraAttitudeEuler]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(CameraAttitudeEuler)

    async def camera_attitude_quaternion(self) -> Optional[CameraAttitudeQuaternion]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(CameraAttitudeQuaternion)

    async def distance_sensor(self) -> Optional[DistanceSensor]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(DistanceSensor)

    async def fixedwing_metrics(self) -> Optional[FixedwingMetrics]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(FixedwingMetrics)

    async def flight_mode(self) -> Optional[FlightMode]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(FlightMode)

    async def gps_info(self) -> Optional[GpsInfo]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(GpsInfo)

    async def ground_truth(self) -> Optional[GroundTruth]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(GroundTruth)

    async def heading(self) -> Optional[Heading]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(Heading)

    async def health(self) -> Optional[Health]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(Health)

    async def health_all_ok(self) -> Optional[HealthAllOk]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(HealthAllOk)

    async def home(self) -> Optional[Home]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(Home)

    async def imu(self) -> Optional[Imu]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(Imu)

    async def in_air(self) -> Optional[InAir]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(InAir)

    async def landed_state(self) -> Optional[LandedState]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(LandedState)

    async def odometry(self) -> Optional[Odometry]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(Odometry)

    async def position(self) -> Optional[Position]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(Position)

    async def position_velocity_ned(self) -> Optional[PositionVelocityNed]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(PositionVelocityNed)

    async def raw_gps(self) -> Optional[RawGps]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(RawGps)

    async def raw_imu(self) -> Optional[RawImu]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(RawImu)

    async def rc_status(self) -> Optional[RcStatus]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(RcStatus)

    async def unix_epoch_time(self) -> Optional[UnixEpochTime]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(UnixEpochTime)

    async def velocity_ned(self) -> Optional[VelocityNed]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(VelocityNed)

    async def vtol_state(self) -> Optional[VtolState]:
        # noinspection PyUnresolvedReferences
        return await self.get_metric_by_class(VtolState)
