Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2287 - 1
using System;
2
using System.Collections.Generic;
3
using System.Data;
4
using System.Linq;
5
using System.Text;
6
 
7
namespace MKLiveView
8
{
9
    static class Waypoints
10
    {
11
 
2312 - 12
        public enum pointType
2287 - 13
        {
14
            INVALID= 255,
15
            WP =  0,
2356 - 16
            POI = 1,
17
            FS = 2
2287 - 18
        }
19
 
2312 - 20
        public enum status
2287 - 21
        {
22
            INVALID= 255,
23
            NEW =  0,
24
            DONE = 1
25
        }
26
 
2312 - 27
        public static string CAMAngle(int iVal)
2287 - 28
        {
2313 - 29
            if (iVal == 255 | iVal < 0)
2287 - 30
                return "Auto";
2313 - 31
            //if (iVal < 0)
32
            //    return "WP " + (Math.Abs(iVal)).ToString();
2287 - 33
            if (iVal == 0)
34
                return "- - -";
35
 
2313 - 36
            return iVal.ToString("0 °");
2287 - 37
        }
38
 
2312 - 39
        public static string WPSpeed(int iVal)
2287 - 40
        {
41
            if (iVal == 0)
42
                return "MAX";
43
            if (iVal > 0 && iVal < 248)
44
                return ((double)iVal * 0.1).ToString("0.0 m/s");
2356 - 45
            if (iVal > 247)
2287 - 46
                return "Poti" + (256 - iVal).ToString();
47
 
48
            return iVal.ToString();
49
        }
50
 
2313 - 51
        public static string Heading(int iVal)
52
        {
53
            if (iVal == 0)
54
                return "- - -";
55
            if (iVal > 0 && iVal < 360)
56
                return iVal.ToString("0 °");
57
            if (iVal < 0)
58
                return "WP " + (Math.Abs(iVal)).ToString();
59
 
60
            return iVal.ToString();
61
        }
2287 - 62
       public static DataRow toDataRow(byte[]data, DataRow dr)
63
        {
64
            double longitude = 0, latitude = 0, altitude = 0;
65
            int pstatus = 0, heading = 0, tolRadius = 0, holdTime = 0, eventFlag = 0, index = 0, type = 0, WPeventChanVal = 0, altitudeRate = 0, speed = 0, camAngle = 0, autoTrigger=0;
66
            string name = "";
67
 
68
            if (data.Length >= 28)
69
            {
70
                int i_32, iVal;
2313 - 71
 
2287 - 72
                i_32 = data[5];
73
                iVal = i_32 << 24;
74
                i_32 = data[4];
75
                iVal += i_32 << 16;
76
                i_32 = data[3];
77
                iVal += i_32 << 8;
78
                iVal += data[2];
79
                longitude = (double)iVal / Math.Pow(10, 7);
80
 
81
                i_32 = data[9];
82
                iVal = i_32 << 24;
83
                i_32 = data[8];
84
                iVal += i_32 << 16;
85
                i_32 = data[7];
86
                iVal += i_32 << 8;
87
                iVal += data[6];
88
                latitude = (double)iVal / Math.Pow(10, 7);
89
 
90
 
91
                i_32 = data[13];
2313 - 92
                iVal = (i_32 << 24);
2287 - 93
                i_32 = data[12];
94
                iVal += i_32 << 16;
95
                i_32 = data[11];
96
                iVal += i_32 << 8;
97
                iVal += data[10];
2313 - 98
                altitude = (double)iVal/10;
2287 - 99
 
100
                pstatus = data[14];
101
 
2313 - 102
                i_32 = (int)(sbyte)data[16];
2287 - 103
                iVal = i_32 << 8;
104
                iVal += data[15];
2313 - 105
                heading = iVal;
2287 - 106
 
107
                tolRadius = data[17];
108
                holdTime = data[18];
109
                eventFlag = data[19];
110
                index = data[1];
111
//                index = data[20];
112
                type = data[21];
113
                WPeventChanVal = data[22];
114
                altitudeRate = data[23];
115
                speed = data[24];
2313 - 116
                camAngle = (int)(sbyte)data[25];
2287 - 117
 
118
                name = new string(ASCIIEncoding.ASCII.GetChars(data, 26, 4)).Trim('\0');
119
 
120
                autoTrigger = data[30];
2313 - 121
                dr.ItemArray = new object[] { data[1], type, name, latitude, longitude, altitude, heading, speed, altitudeRate, tolRadius, holdTime, autoTrigger, camAngle, eventFlag, WPeventChanVal, pstatus};
2287 - 122
 
2313 - 123
 //               dr.ItemArray = new object[] { data[1], ((pointType)type).ToString(), name, longitude, latitude, altitude, heading, WPSpeed(speed), altitudeRate, tolRadius, holdTime, autoTrigger, CAMAngle(camAngle), eventFlag, WPeventChanVal, ((status)pstatus).ToString() };
2287 - 124
               // dr.ItemArray = new object[] {data[1],((pointType)type).ToString(),name,longitude,latitude,altitude,heading,speed,altitudeRate,tolRadius,holdTime,autoTrigger, CAMAngle(camAngle),((status)pstatus).ToString() };
125
                return dr;
126
 
127
            }
128
            return null;
129
 
130
 
131
        }
132
 
133
 
2312 - 134
 
2287 - 135
    }
136
}