using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SIASUN.Autopilot.GNSS
{
    /// <summary> 
    /// WGS84坐标点
    /// </summary>
    public class WGS84Points 
    {
        // 经度
        public double x { get; set; }
        // 纬度
        public double y { get; set; }
        // 高度
        public double z { get; set; } 
    }

    /// <summary> 
    /// 各点到原点的距离信息
    /// </summary>
    public class PointsToOrigin 
    {
        // 距离 
        public double distance { get; set; }
        // 角度
        public double TanAngle { get; set; } 
        // 高度
        public double Height { get; set; }
        // 该点速度
        public double Speed { get; set; }
    }

    /// <summary>
    /// NMEA0183协议
    /// </summary>
    public class NMEA0183
    {
        public GPRMC gprmc { get; set; }
        public GPGGA gpgga { get; set; }
        public string pashr { get; set; }
    }

    /// <summary>
    /// NMEA0183协议-GPRMC
    /// </summary>
    public class GPRMC
    {
        // <1> UTC时间，hhmmss.ss时分秒格式
        public string utcTime { get; set; }
        // <2> 定位状态，A=有效定位，V=无效定位
        public string locationStatus { get; set; }
        // <3> 纬度ddmm.mmmmmmmm（度分）格式（前面的0也将被传输）
        public decimal Latitude { get; set; }  
        // <4> 纬度半球N（北半球）或S（南半球）
        public string LatType { get; set; }
        // <5> 经度dddmm.mmmmmmmm（度分）格式（前面的0也将被传输）
        public decimal Longitude { get; set; }  
        // <6> 经度半球E（东经）或W（西经）
        public string LonType { get; set; }
        // <7> 地面速率（000.0~999.9节，前面的0也将被传输）
        public decimal Speed { get; set; } 
        // <8> 地面航向（000.0~359.9度，以真北为参考基准，前面的0也将被传输）
        public decimal Deviated { get; set; } 
        // <9> UTC日期，ddmmyy（日月年）格式
        public string Date { get; set; }
        // <10> 磁偏角（000.0~180.0度，前面的0也将被传输）
        public decimal Magnetic { get; set; }
        // <11> 磁偏角方向，E（东）或W（西）
        public string MagneticDirection { get; set; }
        // <12> 模式指示（仅NMEA0183 3.00版本输出，A=自主定位，D=差分，E=估算，N=数据无效）
        public string Mode { get; set; }
    }

    /// <summary>
    /// NMEA0183协议-GPGGA
    /// </summary>
    public class GPGGA 
    {
        // 字段1：UTC 时间，hhmmss.sss，时分秒格式
        public string utcTime { get; set; }
        // 字段2：纬度ddmm.mmmmmmmm，度分格式（前导位数不足则补0）
        public decimal Latitude { get; set; } 
        // 字段3：纬度N（北纬）或S（南纬）
        public string LatType { get; set; }
        // 字段4：经度dddmm.mmmmmmmm，度分格式（前导位数不足则补0）
        public decimal Longitude { get; set; }
        // 字段5：经度E（东经）或W（西经）
        public string LonType { get; set; }
        // 字段6：GPS状态，0=未定位，1=非差分定位，2=差分定位，3=无效PPS，6=正在估算
        public int GPSStatus { get; set; } 
        // 字段7：正在使用的卫星数量（00 - 12）（前导位数不足则补0）
        public int SatelliteNumber { get; set; }  
        // 字段8：HDOP水平精度因子（0.5 - 99.9）
        public decimal Hdop { get; set; }
        // 字段9：海拔高度（-9999.9 - 99999.9）
        public decimal Height { get; set; } 
        // 字段10：地球椭球面相对大地水准面的高度
        public string ReleaveHeight { get; set; } 
        // 字段11：差分时间（从最近一次接收到差分信号开始的秒数，如果不是差分定位将为空）
        public string CTKTime { get; set; }
        // 字段12：差分站ID号0000 - 1023（前导位数不足则补0，如果不是差分定位将为空）
        public string CTKID { get; set; } 
        // 字段13：校验值 
        public string Check { get; set; }
    }
}
