using System;

namespace Plane.Copters
{
    /// <summary>
    /// 定义飞行器代理对象的事件。
    /// </summary>
    public partial interface ICopterEvents
    {
        /// <summary>
        /// 在高度变化时发生。
        /// </summary>
        event EventHandler AltitudeChanged;

        /// <summary>
        /// 在姿态变化时发生。
        /// </summary>
        event EventHandler AttitudeChanged;

#if PRIVATE
        /// <summary>
        /// 在收到数据流时发生。
        /// </summary>
        event EventHandler<DataStreamReceivedEventArgs> DataStreamReceived;
#endif

        /// <summary>
        /// 在收到心跳时发生。
        /// </summary>
        event EventHandler<HeartbeatReceivedEventArgs> HeartbeatReceived;

        /// <summary>
        /// 在位置变化时发生。
        /// </summary>
        event EventHandler LocationChanged;

        /// <summary>
        /// 在收到自动飞行任务详情时发生。
        /// </summary>
        event EventHandler<MissionItemReceivedEventArgs> MissionItemReceived;

        /// <summary>
        /// 在对频完成（成功或失败）时发生。
        /// </summary>
        event EventHandler<PairingCompletedEventArgs> PairingCompleted;

        /// <summary>
        /// 在收到传感器数据时发生。
        /// </summary>
        event EventHandler SensorDataReceived;

        /// <summary>
        /// 在收到系统状态信息时发生。
        /// </summary>
        event EventHandler<SystemStatusReceivedEventArgs> SystemStatusReceived;
    }
}
