SafeNet/SafeNetLib/Definitions.cs

410 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace SafeNetLib
{
public enum CallType { ALLCALL = 101, PRIVATECALL = 102, GROUPCALL = 103, EMERGENCYCALL = 104 };
public enum CallStatus { INPROGRESS = 1, HANGTIME = 2, ENDED = 3 };
public class Definitions
{
public static string GetCallStatus4UI(int callStatus)
{
switch (callStatus)
{
case (int)CallStatus.INPROGRESS: return "In Progress";
case (int)CallStatus.HANGTIME: return "Hang Time";
case (int)CallStatus.ENDED: return "Ended";
default: return "Unknown";
}
}
public static string GetCallType4UI(int callType)
{
switch (callType)
{
case (int)CallType.ALLCALL: return "All Call";
case (int)CallType.PRIVATECALL: return "Private Call";
case (int)CallType.GROUPCALL: return "Group Call";
case (int)CallType.EMERGENCYCALL: return "Emergency Call";
default: return "Unknown";
}
}
}
public class htCell_t
{
public string lat, lng, spd, spd_v; // GPS data
public DateTime location_time;
public double radius;
public string di;
public DateTime activity_time; // = min(gpstime, arstime)
public string suid;
public byte requestID;
public bool triggered;
public double d_lat, d_lng;
public int altitude;
public int altitude_accuracy;
public int level_confidence;
public string seq_ID;
public Int64 seqID;
public bool isCSBK;
public List<Telemetry> telemetryList;
}
public class Telemetry
{
private int id;
public int ID
{
get { return id; }
set { id = value; }
}
private int telemetryValue;
public int TelemetryValue
{
get { return telemetryValue; }
set { telemetryValue = value; }
}
}
public class landmark
{
public string name;
public string address;
public decimal lng;
public decimal lat;
public string icon;
public int userID;
public int radius;
public string innerException;
}
public enum Result_Codes_ENUM
{
SUCCESS = 0x0,
UNSUPPORTED_VERSION = 0x8,
SYNTAX_ERROR = 0xA,
PROTOCOL_ELEMENT_NOT_SUPPORTED = 0xB,
PROTOCOL_ELEMENT_VALUE_OUT_OF_RANGE = 0xD,
QUERY_INFO_NOT_ATTAINABLE = 0xF,
QUERY_INFO_NOT_CURRENTLY_ATTAINABLE = 0x10,
NO_SUCH_REQUEST = 0x15,
DUPLICATE_REQUEST_ID = 0x16,
/*
INSUFFICIENT_GPS_SATELLITES = 0x200,
BAD_GPS_GEOMETRY = 0x201,
IRRS_RES_INSUFF_DATA = 0x1005,
IRRS_RES_NO_PROVIDERS = 0x1006
* */
};
public enum Document_Identifiers_ENUM
{
Immediate_Location_Request = 0x04,
Immediate_Location_Request_NoCDT = 0x05,
Immediate_Location_Report = 0x06,
Immediate_Location_Report_NoCDT = 0x07,
Triggered_Location_Request = 0x08,
Triggered_Location_Request_NoCDT = 0x09,
Triggered_Location_Answer = 0x0A,
Triggered_Location_Answer_NoCDT = 0x0B,
Triggered_Location_Report = 0x0C,
Triggered_Location_Report_NoCDT = 0x0D,
Triggered_Location_Stop_Request = 0x0E,
Triggered_Location_Stop_Request_NoCDT = 0x0F,
Triggered_Location_Stop_Answer = 0x10,
Triggered_Location_Stop_Answer_NoCDT = 0x11,
Unsolicited_Location_Report = 0x12,
Unsolicited_Location_Report_NoCDT = 0x13,
Location_Protocol_Request_NoCDT = 0x14,
Location_Protocol_Report_NoCDT = 0x15
};
// -------------------------------------------------------------------
// ARS Service
// -------------------------------------------------------------------
public enum header_event
{
Unqualified_Event = 0x00,
Initial_Event = 0x01,
Refresh_Event = 0x02,
UNKNOWN = 0x03
}
// -------------------------------------------------------------------
// Location Service
// -------------------------------------------------------------------
public enum Common_Element_Tokens_ENUM
{
request_id = 0x22,
request_id1 = 0x23,
request_id2 = 0x24
};
public enum Query_Request_Messages_Tokens_ENUM
{
interval = 0x31,
oneshot_trigger = 0x33,
periodic_trigger = 0x34,
request_altitude = 0x54,
request_altitude_acc = 0x55,
request_altitude_acc1 = 0x56,
request_direction_hor = 0x57,
request_hor_acc = 0x5F,
request_hor_acc1 = 0x60,
request_lev_conf = 0x61,
request_protocol_version = 0x3F,
request_speed_hor = 0x62,
request_speed_vrt = 0x64,
require_max_info_age = 0x42,
require_altitude = 0x66,
require_altitude_acc = 0x67,
require_altitude_acc1 = 0x68,
require_direction_hor = 0x69,
require_hor_acc = 0x71,
require_hor_acc1 = 0x72,
require_lev_conf = 0x73,
require_speed_hor = 0x74,
require_speed_vrt = 0x76,
ret_info = 0x50,
ret_info1 = 0x51,
ret_info2 = 0x52,
ret_info3 = 0x53,
trg_condition = 0x4A,
SU_IPv4 = 0x26
};
public enum Report_Messages_Tokens_ENUM
{
circle_2d = 0x51,
circle_3d = 0x54,
circle_3d1 = 0x55,
direction_hor = 0x56,
info_time = 0x34,
info_time1 = 0x35,
lev_conf = 0x65,
point_2d = 0x66,
point_3d = 0x69,
point_3d1 = 0x6A,
protocol_version = 0x36,
result = 0x37,
result1 = 0x38,
result2 = 0x39,
speed_hor = 0x6C,
speed_vrt = 0x70,
SU_IPv4 = 0x26
};
public enum Attribute_Tokens_ENUM
{
result_code = 0x22,
result_code1 = 0x23,
ret_info_accuracy = 0x50,
ret_info_accuracy1 = 0x51,
ret_info_no_req_id = 0x52,
ret_info_no_req_id1 = 0x53,
ret_info_time = 0x54,
ret_info_time1 = 0x55
};
// -------------------------------------------------------------------
// Voip Service
// -------------------------------------------------------------------
public enum OPCODE_ENUM
{
XNL_MASTER_STATUS_BRDCST = 0x0002,
DEVICE_AUTH_KEY_REQUEST = 0x0004,
DEVICE_AUTH_KEY_REPLY = 0x0005,
DEVICE_CONN_REQUEST = 0x0006,
DEVICE_CONN_REPLY = 0x0007,
DATA_MSG = 0x000b,
DATA_MSG_ACK = 0x000c,
SPKRSTAT = 0xb407 // Speaker State broadcast message
};
public enum MotoTRBOcmd
{
SET_REPORT_INTERVAL = 0x01,
SEND_SMS = 0x02,
SEND_POLL = 0x03
};
public enum Alert_TYPE
{
SPEED = 0x01,
LANDMARK = 0x02,
GEOFENCE = 0x03,
DI = 0x04
};
public enum Connection_TYPE
{
TCP,
UDP
}
public class GeoPoint
{
public double lat;
public double lng;
public int speed;
}
public class MotoTRBOcmdMsg
{
public string m_suid;
public int m_cmd;
public string m_payload;
public Int32 m_seqID; //seqID when it was last sent
public DateTime m_time; //time when it was last sent
}
public class GWstatus
{
public string gw_id;
public int status;
public string message;
}
public class OC4Jrfid
{
public string suid;
public string rfid;
}
public class SMSmsg
{
public string suid;
public string msg;
public bool conf; //sent confirmation
public uint DBmsg_id;//message ID from database (for message confirmation)
public int seq_no;
public bool req_conf;
DateTime added;
public DateTime waitConfSMSList_time;
public SMSmsg()
{
req_conf = true;
conf = false;
added = DateTime.Now;
}
}
public class POLLmsg
{
public int DBid;
public string suid;
public DateTime created;
public DateTime read;
public DateTime sent;
public DateTime response;
public string lat;
public string lng;
public string speed;
public Int32 requestID;
}
public struct header_T
{
public bool ext, ext2, ack, cntl;
public byte pdu_type;
public byte seq_no;
public byte encoding;
public byte header;
public string message;
}
public class ArsMSG
{
public string suid;
public string msg;
public string imei;
public string gatewayID;
}
public class gpsMSG
{
public byte[] data = null;
}
public class SUinfo
{
public int DBid;
public string suid;
public bool ARSon;
public int repInterval;
public DateTime arsCheckTime;
public DateTime GPSlasttime = DateTime.UtcNow;
public List<Alert> alertList;
}
public class InterthreadMessageQueue<T>
{
System.Collections.Generic.Queue<T> _queue = new
System.Collections.Generic.Queue<T>();
/// <summary>
/// Post a message to the queue.
/// </summary>
public void PostItem(T item)
{
lock (_queue)
{
_queue.Enqueue(item);
if (_queue.Count == 1)
Monitor.Pulse(_queue);
}
}
/// <summary>
/// Retrieve a message from the queue.
/// </summary>
/// <param name="maxWait">Number of milliseconds to block ifnothing is available. -1 means "block indefinitely"</param>
/// <returns>The next item in the queue, or default(T) if queue is empty</returns>
public T GetItem(int maxWait)
{
lock (_queue)
{
if (_queue.Count == 0)
{
if (maxWait == 0)
return default(T);
Monitor.Wait(_queue, maxWait);
if (_queue.Count == 0)
return default(T);
}
return _queue.Dequeue();
}
}
public int Count
{
get
{
lock (_queue)
{
return _queue.Count;
}
}
}
public void Clear()
{
lock (_queue)
{
_queue.Clear();
}
}
}
}