Example #1
0
        static void Main(string[] args)
        {
            bool go = true;

            srv = new RPCServer();

            db = new Database(ConfigurationManager.AppSettings.Get("dbConnectionString"));
            if (!db.IsSetup)
            {
                Console.WriteLine("Seting up DB...");
                db.CreateTables();
            }

            string masterIP   = "192.168.0.100";
            int    masterPort = 50000;

            if (args.Length > 1)
            {
                string[] parts = args[1].Split(':');
                masterIP = parts[0];
                if (parts.Length > 1)
                {
                    masterPort = int.Parse(parts[1]);
                }
            }

            RadioSystemType type = (RadioSystemType)RadioSystemType.Parse(typeof(RadioSystemType), ConfigurationManager.AppSettings.Get("systemType"));

            sys = new RadioSystem(uint.Parse(ConfigurationManager.AppSettings.Get("systemId")), type);
            srv.SetSystem(sys);
            sys.GotRadioCall += HandleUserCall;
            Radio master = sys.ConnectToMaster(masterIP, masterPort);

            Console.WriteLine("Master ID = {0}", master.ID);
            master.InitXNL();
            Console.WriteLine("    XNL ID = {0}", master.XNLID);
            Console.WriteLine("    XCMP Version = {0}", master.XCMPVersion);
            string serialNum = master.SerialNumber;
            string modelNum  = master.ModelNumber;
            string fwver     = master.FirmwareVersion;

            Console.WriteLine("    Serial Number = {0}", serialNum);
            Console.WriteLine("    Model Number = {0}", modelNum);
            Console.WriteLine("    Firmware Version = {0}", fwver);
            Console.WriteLine("    Alarms:");
            Dictionary <string, bool> alarms = master.GetAlarmStatus();

            foreach (KeyValuePair <string, bool> kvp in alarms)
            {
                Console.WriteLine("        {0}: {1}", kvp.Key, kvp.Value);
            }
            string name = db.UpdateRepeater(master.ID, serialNum, modelNum, fwver);

            sys.Master.Name = name;
            Tuple <float, float> rssis = master.RSSI;

            Console.WriteLine("    RSSI: {0} {1}", rssis.Item1, rssis.Item2);
            db.WriteRSSI(master.ID, rssis);
            Radio[] radios = sys.GetPeers();
            Console.WriteLine("Found {0} other radios...", radios.Length);
            foreach (Radio r in radios)
            {
                PeerRadio pr = (PeerRadio)r;
                pr.SendPeerRegistration();
                Console.WriteLine("Peer ID = {0}", r.ID);
                Console.WriteLine("    Peer IP = {0}", pr.Endpoint);
                if (r.InitXNL() == false)
                {
                    Console.WriteLine("    Retrying peer init!");
                    pr.SendPeerRegistration();
                    r.InitXNL();
                }
                Console.WriteLine("    XNL ID = {0}", r.XNLID);
                Console.WriteLine("    XCMP Version = {0}", r.XCMPVersion);
                serialNum = r.SerialNumber;
                modelNum  = r.ModelNumber;
                fwver     = r.FirmwareVersion;
                Console.WriteLine("    Serial Number = {0}", serialNum);
                Console.WriteLine("    Model Number = {0}", modelNum);
                Console.WriteLine("    Firmware Version = {0}", fwver);
                Console.WriteLine("    Alarms:");
                alarms = r.GetAlarmStatus();
                foreach (KeyValuePair <string, bool> kvp in alarms)
                {
                    Console.WriteLine("        {0}: {1}", kvp.Key, kvp.Value);
                }
                name   = db.UpdateRepeater(r.ID, serialNum, modelNum, fwver);
                r.Name = name;
                rssis  = r.RSSI;
                Console.WriteLine("    RSSI: {0} {1}", rssis.Item1, rssis.Item2);
                db.WriteRSSI(r.ID, rssis);
            }
            System.Timers.Timer t = new System.Timers.Timer(30000);
            t.Elapsed  += GetRSSI;
            t.Enabled   = true;
            t.AutoReset = true;
            lrrp        = new LRRPClient();
            tms         = new TMSClient();
            sys.RegisterLRRPClient(lrrp);
            sys.RegisterTMSClient(tms);
            CommandProcessor cmd = new CommandProcessor(sys, lrrp, tms);

            while (go)
            {
                Console.Write("cmd> ");
                string   cmdStr = Console.ReadLine();
                string[] parts  = cmdStr.Split(' ');
                switch (parts[0])
                {
                case "exit":
                    go = false;
                    break;

                case "":
                    //Just print the new command line
                    break;

                default:
                    CommandResult res = cmd.ProcessCommand(parts[0], parts.Skip(1).ToArray());
                    if (res.Success == false)
                    {
                        if (res.ex != null)
                        {
                            Console.WriteLine("Command Failed! " + res.ex);
                        }
                        else
                        {
                            Console.WriteLine("Command Failed!");
                        }
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
                        foreach (KeyValuePair <string, object> pair in res.Data)
                        {
                            sb.Append(pair.Key + ": " + pair.Value + ", ");
                        }
                        Console.WriteLine("Success! " + sb.ToString());
                    }
                    break;
                }
            }
            sys.Dispose();
            lrrp.Dispose();
            tms.Dispose();
        }
Example #2
0
 public CommandProcessor(RadioSystem sys, LRRPClient lrrp, TMSClient tms)
 {
     this.sys  = sys;
     this.lrrp = lrrp;
     this.tms  = tms;
 }
Example #3
0
 public void RegisterTMSClient(TMSClient client)
 {
     this.tms = client;
     this.tms.RetainRecentlySent = true;
     this.tms.Debounce           = true;
 }