Subversion Repositories Projects

Rev

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