using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Diagnostics; using System.Net.NetworkInformation; using System.Net.Sockets; namespace SafeNetLib { public class Utils { public static String ID2IP(string p_CAI, string p_radioIP) { uint radioID = Convert.ToUInt32(p_radioIP); if (radioID > 255 * 255 * 255) throw new Exception("Radio ID out of range"); byte c = (byte)(radioID & 0x0000FF); byte b = (byte)((radioID & 0x00FF00) >> 8); byte a = (byte)((radioID & 0xFF0000) >> 16); String toReturn = "" + p_CAI + "." + a + "." + b + "." + c; return toReturn; } public static byte[] ID2ByteARR(string p_CAI, string p_radioIP) { byte[] arr = new byte[4]; uint radioID = Convert.ToUInt32(p_radioIP); if (radioID > 255 * 255 * 255) throw new Exception("Radio ID out of range"); arr[0] = Convert.ToByte(p_CAI); arr[3] = (byte)(radioID & 0x0000FF); arr[2] = (byte)((radioID & 0x00FF00) >> 8); arr[1] = (byte)((radioID & 0xFF0000) >> 16); return arr; } public static string Byte2String(byte[] data, int startIndex, int len) { string sdata = ""; int i; if (startIndex > data.Length) return ""; for (i = startIndex; i < startIndex + len && i < data.Length; i++) { int ii; ii = (int)data[i]; sdata += "0x" + ii.ToString("X") + " "; } return sdata; } public static void printBytesArray(Byte[] receivedBytes) { Console.Write("\nData: "); for (int i = 0; i < receivedBytes.Length; i++) { Console.Write("0x{0:X} ", receivedBytes[i]); } Console.WriteLine(); } //temporat public static Int32 GetSecondsLocalFromDT(DateTime param) { System.DateTime datetime = param; long nOfSeconds; System.DateTime dt70 = new DateTime(1970, 1, 1, 0, 0, 0, 0); System.DateTime dttmp1 = new DateTime(1970, 1, 1, 0, 0, 0, 0); System.DateTime dttmp2; dttmp2 = dttmp1.ToLocalTime(); TimeSpan span2 = dttmp2 - dttmp1; TimeSpan span = datetime - dt70; //nOfSeconds = (long)span.TotalSeconds - (long)span2.TotalSeconds -3600; //mai scot o ora - 3600 if (System.TimeZone.CurrentTimeZone.IsDaylightSavingTime(param)) nOfSeconds = (long)span.TotalSeconds - (long)span2.TotalSeconds - 3600; //mai scot o ora - 3600 else nOfSeconds = (long)span.TotalSeconds - (long)span2.TotalSeconds; return ((Int32)nOfSeconds); } public static void ConsWrite(DebugMSG_Type type, string str) { try { if (type != DebugMSG_Type.DEV) Console.WriteLine("[### {0:H:mm:ss} ###] " + str, DateTime.Now); } catch (ThreadAbortException tae) { Console.WriteLine("[### {0:H:mm:ss} ###] " + str, DateTime.Now); } catch (Exception ex) { Console.WriteLine("####ConsWrite: Could not print debug information ####\n" + ex.ToString()); } //add to log file LOGS.LOG(str); /* //if (type == DebugMSG_Type.always) { LOGS.LOG_Error(str); } */ } public static void ConsWrite(DebugMSG_Type type, string[] strs) { foreach (string str in strs) { ConsWrite(type, str); } } public static void WriteLine(string str, ConsoleColor color) { Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write(String.Format("[### {0:H:mm:ss} ###] ", DateTime.Now)); Console.ForegroundColor = color; Console.Write(String.Format("{0}\n", str)); Console.ForegroundColor = ConsoleColor.Gray; //add to log file LOGS.LOG(str); } public static void WriteLine(string str, ConsoleColor color, bool isUnix) { if (!isUnix) Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write(String.Format("[### {0:H:mm:ss} ###] ", DateTime.Now)); if (!isUnix) Console.ForegroundColor = color; Console.Write(String.Format("{0}\n", str)); if (!isUnix) Console.ForegroundColor = ConsoleColor.Gray; //add to log file LOGS.LOG(str); } public static bool isUnix() { OperatingSystem os = Environment.OSVersion; PlatformID pid = os.Platform; switch (pid) { case PlatformID.Win32NT: case PlatformID.Win32S: case PlatformID.Win32Windows: case PlatformID.WinCE: return false; case PlatformID.Unix: return true; default: return false; } } public static string Compute4digitALG(double lat, double lng) { string ret = ""; //ret = Math.Round(lat, 4).ToString() + Math.Round(lng, 4).ToString(); ret = String.Format("{0:0.0000}", lat) + String.Format("{0:0.0000}", lng); return ret; } public static int GetDBidFromSUID(string suid) { int DBid = -1; //add data to ht_SUInfo lock (SN_Queues.ht_SUInfo.SyncRoot) { if (SN_Queues.ht_SUInfo != null) { if (SN_Queues.ht_SUInfo.ContainsKey(suid)) DBid = ((SUinfo)SN_Queues.ht_SUInfo[suid]).DBid; } } return DBid; } public static DateTime UnixTimeStampToDateTime(double unixTimeStamp) { // Unix timestamp is seconds past epoch System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0); dtDateTime = dtDateTime.AddSeconds(unixTimeStamp); return dtDateTime; } /// /// Get the unix timestamp of a specific Date /// /// Date which needs to be converted /// An int representing the number of seconds since 1 Jan 1970 public static uint DateTo70Format(DateTime param) { long nOfSeconds; //Console.WriteLine("DateTo70Format param=" + param); System.DateTime dt70 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); TimeSpan span = param - dt70; nOfSeconds = (long)span.TotalSeconds; return ((uint)nOfSeconds); } /// /// Check if the application is already running in order to prevent it from running multiple /// public static bool TestIfAlreadyRunning() { Process[] processlist = Process.GetProcesses(); Process curentP = Process.GetCurrentProcess(); int count = 0; foreach (Process theprocess in processlist) { if (theprocess.ProcessName.Equals(curentP.ProcessName) && !curentP.ProcessName.Contains("vshost")) { count++; } } if (count > 1) { return true; } return false; } public static void ShowActiveTcpConnections() { Console.WriteLine("Active TCP Connections"); IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); TcpConnectionInformation[] connections = properties.GetActiveTcpConnections(); foreach (TcpConnectionInformation c in connections) { Console.WriteLine("{0} <==> {1}", c.LocalEndPoint.ToString(), c.RemoteEndPoint.ToString(), c.State); } } public static void CloseClient(TcpClient whichClient) { whichClient.Client.Close(); // dispose of the client object System.GC.SuppressFinalize(whichClient); whichClient = null; } } public class Hyt_cmdMsg { public string m_suid; public int m_cmd; public string m_payload; } public enum Hyt_cmd { SET_REPORT_INTERVAL = 0x01, SEND_SMS = 0x02, SEND_POLL = 0x03 }; public class ARSmsg { public string SUID; public string status; } public enum DebugMSG_Type { ARS, SMS, CTRL, ALL, POLL, always, DB, GPS, DEV, Email, Debug, Address,CFG, Routes, ALERTS, test } public enum GatewayStatus { ONLINE = 1, OFFLINE = 0, LOADING = 2 }; public class TallysmanMsg { public Int64 Id { get; set; } public String EventType { get; set; } public Int64 RadioID { get; set; } public DateTime EventTime { get; set; } public Double GPSFixTime { get; set; } public Double Speed { get; set; } public Double Latitude { get; set; } public Double Longitude { get; set; } public Double Altitude { get; set; } public Double LevelOfConfidence { get; set; } public Double Bearing { get; set; } public Double HorizontalAccuracy { get; set; } public Double VerticalAccuracy { get; set; } public Double Odometer { get; set; } public Int64 RunTime { get; set; } public Int64 IdleTime { get; set; } public Int32 VioStatus { get; set; } public Int32 VioChanged { get; set; } public Double AverageSpeed { get; set; } public Int64 WaypointId { get; set; } public String FirmwareVersion { get; set; } public Double RSSI { get; set; } public Int64 VitalId { get; set; } public TallysmanMsg() { Id = 0; EventType = "BUS_STOP"; RadioID = 0; GPSFixTime = 0; EventTime = DateTime.Now; Speed = 0; Latitude = 0; Longitude = 0; Altitude = -1; LevelOfConfidence = -1; Bearing = -1; HorizontalAccuracy = 0; VerticalAccuracy = 0; Odometer = 0; RunTime = 0; IdleTime = 0; VioStatus = 0; VioChanged = 0; AverageSpeed = 0; WaypointId = 0; FirmwareVersion = ""; RSSI = 0; VitalId = 0; } } }