Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 2286 → Rev 2287

/MKLiveView/v1.0/Waypoints.cs
0,0 → 1,122
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
 
namespace MKLiveView
{
static class Waypoints
{
 
enum pointType
{
INVALID= 255,
WP = 0,
POI = 1
}
 
enum status
{
INVALID= 255,
NEW = 0,
DONE = 1
}
 
static string CAMAngle(int iVal)
{
if (iVal == 255)
return "Auto";
if (iVal < 0)
return "POI " + iVal.ToString();
if (iVal == 0)
return "- - -";
 
return iVal.ToString();
}
 
static string WPSpeed(int iVal)
{
if (iVal == 0)
return "MAX";
if (iVal > 0 && iVal < 248)
return ((double)iVal * 0.1).ToString("0.0 m/s");
if (iVal < 247)
return "Poti" + (256 - iVal).ToString();
 
return iVal.ToString();
}
 
public static DataRow toDataRow(byte[]data, DataRow dr)
{
double longitude = 0, latitude = 0, altitude = 0;
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;
string name = "";
 
if (data.Length >= 28)
{
int i_32, iVal;
i_32 = data[5];
iVal = i_32 << 24;
i_32 = data[4];
iVal += i_32 << 16;
i_32 = data[3];
iVal += i_32 << 8;
iVal += data[2];
 
longitude = (double)iVal / Math.Pow(10, 7);
 
i_32 = data[9];
iVal = i_32 << 24;
i_32 = data[8];
iVal += i_32 << 16;
i_32 = data[7];
iVal += i_32 << 8;
iVal += data[6];
latitude = (double)iVal / Math.Pow(10, 7);
 
 
i_32 = data[13];
iVal = i_32 << 24;
i_32 = data[12];
iVal += i_32 << 16;
i_32 = data[11];
iVal += i_32 << 8;
iVal += data[10];
altitude = (double)iVal / Math.Pow(10, 7);
 
pstatus = data[14];
 
i_32 = data[16];
iVal = i_32 << 8;
iVal += data[15];
 
heading = iVal;
tolRadius = data[17];
holdTime = data[18];
eventFlag = data[19];
index = data[1];
// index = data[20];
type = data[21];
WPeventChanVal = data[22];
altitudeRate = data[23];
speed = data[24];
camAngle = data[25];
 
name = new string(ASCIIEncoding.ASCII.GetChars(data, 26, 4)).Trim('\0');
 
autoTrigger = data[30];
 
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() };
// dr.ItemArray = new object[] {data[1],((pointType)type).ToString(),name,longitude,latitude,altitude,heading,speed,altitudeRate,tolRadius,holdTime,autoTrigger, CAMAngle(camAngle),((status)pstatus).ToString() };
return dr;
 
}
return null;
 
 
}
 
 
}
}