/// <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); } }
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); }
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; } }
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; }
/*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()); } } }