Example #1
0
        public object Read(NodeEntry node, BinaryReader reader, List <INodeParser> parsers)
        {
            var result = new RadioSystem();

            reader.Skip(4);
            result.Unknown = reader.ReadPackedString();

            result.Node = node;

            return(result);
        }
        private async Task HandleSystemsAsync(List <TR.System> systems, CancellationToken cancellationToken = default(CancellationToken))
        {
            foreach (var sys in systems)
            {
                var radioSystem = await DbContext
                                  .RadioSystems.FirstOrDefaultAsync(rs => rs.Name == sys.ShortName);

                if (radioSystem == null)
                {
                    radioSystem = RadioSystem.FromSystem(sys);
                    await DbContext.RadioSystems.AddAsync(radioSystem, cancellationToken);
                }
                else
                {
                    radioSystem.UpdateFromSystem(sys);
                }
            }
        }
Example #3
0
 public CommandProcessor(RadioSystem sys, LRRPClient lrrp, TMSClient tms)
 {
     this.sys  = sys;
     this.lrrp = lrrp;
     this.tms  = tms;
 }
Example #4
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();
        }
        public override void Initialize()
        {
            base.Initialize();

            _radioSystem = EntitySystem.Get <RadioSystem>();
        }
Example #6
0
        public bool SendText(string message, RadioID id, RadioSystem sys, bool confirmReciept)
        {
            IPAddress ip = sys.GetIPForRadio(id);

            return(this.SendText(message, ip.ToString(), confirmReciept));
        }
Example #7
0
        public Tuple <float, float, float?> GetCurrentLocation(RadioID id, RadioSystem sys)
        {
            IPAddress ip = sys.GetIPForRadio(id);

            return(this.GetCurrentLocation(ip.ToString()));
        }
Example #8
0
        public int GetRemoteRadioLRRPVersion(RadioID id, RadioSystem sys)
        {
            IPAddress ip = sys.GetIPForRadio(id);

            return(this.GetRemoteRadioLRRPVersion(ip.ToString()));
        }
Example #9
0
 public void SetSystem(RadioSystem sys)
 {
     this.sys = sys;
 }
 public async Task <RadioSystem> PostOneAsync([FromBody] RadioSystem radioSystem)
 {
     throw new NotImplementedException();
 }
 public async Task <bool> PatchOneAsync(uint id, [FromBody] RadioSystem radioSystem)
 {
     throw new NotImplementedException();
 }