コード例 #1
0
        /// <summary>
        /// Get the correct object for the modem which is in bootloader mode.
        /// </summary>
        /// <param name="Session">The session.  Must not be null.</param>
        /// <returns>null if could not generate modem object</returns>
        public static RFD900APU GetObjectForModem(TSession Session)
        {
            uploader.Uploader U = new uploader.Uploader();
            U.port = Session.Port;
            uploader.Uploader.Board     Board = uploader.Uploader.Board.FAILED;
            uploader.Uploader.Frequency Freq  = uploader.Uploader.Frequency.FAILED;

            U.getDevice(ref Board, ref Freq);
            switch (Board)
            {
            case uploader.Uploader.Board.DEVICE_ID_RFD900A:
                return(new RFD900a(Session));

            case uploader.Uploader.Board.DEVICE_ID_RFD900P:
                return(new RFD900p(Session));

            case uploader.Uploader.Board.DEVICE_ID_RFD900U:
                return(new RFD900u(Session));

            case Uploader.Board.DEVICE_ID_RFD900:
                return(new RFD900old(Session));

            case Uploader.Board.DEVICE_ID_HM_TRP:
                return(new HM_TRP(Session));

            default:
                return(null);
            }
        }
コード例 #2
0
ファイル: ConfigMap.cs プロジェクト: RFDesign/MissionPlanner
        static public TModemSettingMap GetMapForModem(uploader.Uploader.Board Board, uploader.Uploader.Frequency Freq, bool Async)
        {
            TModemSettingMap Result;

            switch (Board)
            {
            default:
            case uploader.Uploader.Board.DEVICE_ID_HM_TRP:
            case uploader.Uploader.Board.DEVICE_ID_RF50:
            case uploader.Uploader.Board.DEVICE_ID_RFD900:
            case uploader.Uploader.Board.DEVICE_ID_RFD900A:
            case uploader.Uploader.Board.DEVICE_ID_RFD900P:
                Result = RFD900;
                break;

            case uploader.Uploader.Board.DEVICE_ID_RFD900X:
                if (Async)
                {
                    Result = RFD900XAsync;
                }
                else
                {
                    Result = RFD900X;
                }
                break;

            case uploader.Uploader.Board.DEVICE_ID_RFD900U:
                Result = RFD900;
                ((TRFD900Map)Result).Set20dBmMax();
                break;

            case uploader.Uploader.Board.DEVICE_ID_RFD900UX:
                if (Async)
                {
                    Result = RFD900XAsync;
                }
                else
                {
                    Result = RFD900X;
                }
                ((TRFD900Map)Result).Set20dBmMax();
                break;
            }

            ((TRFD900Map)Result).SetFrequency(Freq);

            return(Result);
        }
コード例 #3
0
ファイル: ConfigMap.cs プロジェクト: RFDesign/MissionPlanner
        public void SetFrequency(uploader.Uploader.Frequency Freq)
        {
            switch (Freq)
            {
            case uploader.Uploader.Frequency.FREQ_915:
                AddMultiItem(TSettingID.MIN_FREQ, 895000, 935000, 1000);
                AddMultiItem(TSettingID.MAX_FREQ, 895000, 935000, 1000);
                break;

            case uploader.Uploader.Frequency.FREQ_433:
                AddMultiItem(TSettingID.MIN_FREQ, 414000, 460000, 50);
                AddMultiItem(TSettingID.MAX_FREQ, 414000, 460000, 50);
                break;

            case uploader.Uploader.Frequency.FREQ_868:
                AddMultiItem(TSettingID.MIN_FREQ, 849000, 889000, 1000);
                AddMultiItem(TSettingID.MAX_FREQ, 849000, 889000, 1000);
                break;
            }
        }
コード例 #4
0
        private void BUT_getcurrent_Click(object sender, EventArgs e)
        {
            ICommsSerial comPort;

            if (MainV2._connectionControl.CMB_serialport.Text == "TCP")
            {
                comPort = new TcpSerial();
            }
            else
            {
                comPort = new SerialPort();
            }

            try
            {
                comPort.PortName = MainV2.comPort.BaseStream.PortName;
                comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate;

                comPort.ReadTimeout = 4000;

                comPort.Open();
            }
            catch { CustomMessageBox.Show("Invalid ComPort or in use"); return; }

            lbl_status.Text = "Connecting";

            if (doConnect(comPort))
            {
                // cleanup
                doCommand(comPort, "AT&T");

                comPort.DiscardInBuffer();

                lbl_status.Text = "Doing Command ATI & RTI";

                ATI.Text = doCommand(comPort, "ATI");

                RTI.Text = doCommand(comPort, "RTI");

                uploader.Uploader.Frequency freq  = (uploader.Uploader.Frequency)Enum.Parse(typeof(uploader.Uploader.Frequency), doCommand(comPort, "ATI3"));
                uploader.Uploader.Board     board = (uploader.Uploader.Board)Enum.Parse(typeof(uploader.Uploader.Board), doCommand(comPort, "ATI2"));

                ATI3.Text = freq.ToString();

                ATI2.Text = board.ToString();
                try
                {
                    RTI2.Text = ((uploader.Uploader.Board)Enum.Parse(typeof(uploader.Uploader.Board), doCommand(comPort, "RTI2"))).ToString();
                }
                catch { }
                // 8 and 9
                if (freq == uploader.Uploader.Frequency.FREQ_915)
                {
                    S8.DataSource  = Range(895000, 1000, 935000);
                    RS8.DataSource = Range(895000, 1000, 935000);

                    S9.DataSource  = Range(895000, 1000, 935000);
                    RS9.DataSource = Range(895000, 1000, 935000);
                }
                else if (freq == uploader.Uploader.Frequency.FREQ_433)
                {
                    S8.DataSource  = Range(414000, 50, 460000);
                    RS8.DataSource = Range(414000, 50, 460000);

                    S9.DataSource  = Range(414000, 50, 460000);
                    RS9.DataSource = Range(414000, 50, 460000);
                }
                else if (freq == uploader.Uploader.Frequency.FREQ_868)
                {
                    S8.DataSource  = Range(849000, 1000, 889000);
                    RS8.DataSource = Range(849000, 1000, 889000);

                    S9.DataSource  = Range(849000, 1000, 889000);
                    RS9.DataSource = Range(849000, 1000, 889000);
                }

                if (board == uploader.Uploader.Board.DEVICE_ID_RFD900 || board == uploader.Uploader.Board.DEVICE_ID_RFD900A)
                {
                    S4.DataSource  = Range(1, 1, 30);
                    RS4.DataSource = Range(1, 1, 30);
                }


                RSSI.Text = doCommand(comPort, "ATI7").Trim();

                lbl_status.Text = "Doing Command ATI5";

                string answer = doCommand(comPort, "ATI5");

                string[] items = answer.Split('\n');

                foreach (string item in items)
                {
                    if (item.StartsWith("S"))
                    {
                        string[] values = item.Split(':', '=');

                        if (values.Length == 3)
                        {
                            Control[] controls = this.Controls.Find(values[0].Trim(), true);

                            if (controls.Length > 0)
                            {
                                controls[0].Enabled = true;

                                if (controls[0] is CheckBox)
                                {
                                    ((CheckBox)controls[0]).Checked = values[2].Trim() == "1";
                                }
                                else if (controls[0] is TextBox)
                                {
                                    ((TextBox)controls[0]).Text = values[2].Trim();
                                }
                                else if (controls[0].Name.Contains("S6")) //
                                {
                                    var ans = Enum.Parse(typeof(mavlink_option), values[2].Trim());
                                    ((ComboBox)controls[0]).Text = ans.ToString();
                                }
                                else if (controls[0] is ComboBox)
                                {
                                    ((ComboBox)controls[0]).Text = values[2].Trim();
                                }
                            }
                        }
                    }
                }

                // remote
                foreach (Control ctl in groupBox2.Controls)
                {
                    if (ctl.Name.StartsWith("RS") && ctl.Name != "RSSI")
                    {
                        ctl.ResetText();
                    }
                }

                comPort.DiscardInBuffer();

                lbl_status.Text = "Doing Command RTI5";

                answer = doCommand(comPort, "RTI5");

                items = answer.Split('\n');

                foreach (string item in items)
                {
                    if (item.StartsWith("S"))
                    {
                        string[] values = item.Split(':', '=');

                        if (values.Length == 3)
                        {
                            Control[] controls = this.Controls.Find("R" + values[0].Trim(), true);

                            if (controls.Length == 0)
                            {
                                continue;
                            }

                            controls[0].Enabled = true;

                            if (controls[0] is CheckBox)
                            {
                                ((CheckBox)controls[0]).Checked = values[2].Trim() == "1";
                            }
                            else if (controls[0] is TextBox)
                            {
                                ((TextBox)controls[0]).Text = values[2].Trim();
                            }
                            else if (controls[0].Name.Contains("S6")) //
                            {
                                var ans = Enum.Parse(typeof(mavlink_option), values[2].Trim());
                                ((ComboBox)controls[0]).Text = ans.ToString();
                            }
                            else if (controls[0] is ComboBox)
                            {
                                ((ComboBox)controls[0]).Text = values[2].Trim();
                            }
                        }
                        else
                        {
                            /*
                             * if (item.Contains("S15"))
                             * {
                             *  answer = doCommand(comPort, "RTS15?");
                             *  int rts15 = 0;
                             *  if (int.TryParse(answer, out rts15))
                             *  {
                             *      RS15.Enabled = true;
                             *      RS15.Text = rts15.ToString();
                             *  }
                             * }
                             */
                            log.Info("Odd config line :" + item);
                        }
                    }
                }

                // off hook
                doCommand(comPort, "ATO");

                lbl_status.Text = "Done";
            }
            else
            {
                // off hook
                doCommand(comPort, "ATO");

                lbl_status.Text = "Fail";
                CustomMessageBox.Show("Failed to enter command mode");
            }

            comPort.Close();

            BUT_Syncoptions.Enabled = true;

            BUT_savesettings.Enabled = true;
        }
コード例 #5
0
ファイル: Config.cs プロジェクト: RFDesign/MissionPlanner
        /*public string GenerateSetCommand(IParam Param)
         * {
         *  return "AT" + ATNumber + "=" + Param.ToString();
         * }*/

        public static ISetting GenerateSettingFromRFD900Setting(RFD.RFD900.TSetting Setting,
                                                                uploader.Uploader.Board Board, uploader.Uploader.Frequency Freq, bool Async)
        {
            TSettingDescription Desc = TDesignatorLookupTable.TABLE.GetDescription(Setting.Name);

            if (Desc == null)
            {
                Desc = new TSettingDescription(Setting.Name, Setting.Name, Setting.Name);
            }

            //If there's no range or options...
            if ((Setting.Options == null) && (Setting.Range == null))
            {
                if (Desc is TSettingDescWithID)
                {
                    //This has to be referred back to a lookup table for this modem model in order to generate its setting.
                    var TheMap = Map.TModemSettingMap.GetMapForModem(Board, Freq, Async);
                    return(TheMap.GenerateSetting(((TSettingDescWithID)Desc).ID, Setting));
                }
                else
                {
                    TIntegerSettingFromSettingDescriptor ISFSD =
                        new TIntegerSettingFromSettingDescriptor(Desc.Name, Desc.Description, Setting);
                    return(ISFSD.CreateNewSetting());
                }
            }
            else
            {
                if ((Setting.Options == null) && (Setting.Range.Min == 0) && (Setting.Range.Max == 1))
                {
                    TBoolSettingFromSettingDescriptor BSFSD =
                        new TBoolSettingFromSettingDescriptor(Desc.Name, Desc.Description, Setting);
                    return(BSFSD.CreateNewSetting());
                }
                else
                {
                    TMultiSettingDescriptor MSD = new TMultiSettingDescriptor(Desc.Name, Desc.Description, Setting);
                    return(MSD.CreateNewSetting());
                }
            }
        }