Skip to content

Commit ab69e53

Browse files
committed
fixed LLA/Observer/TLE to show an error when misconfigured.
1 parent 9b12ff9 commit ab69e53

7 files changed

+49
-26
lines changed

FOSSAGSCP/mainwindow.cpp

+13-4
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
1515
assert(ui != nullptr);
1616

1717
// create the interpreter
18-
m_interpreter = new DatagramInterpreter(ui);
18+
m_interpreter = new DatagramInterpreter(ui, m_messageLogFrame);
1919

2020
// load the system information pane
2121
m_sytemInfoPane = new systeminformationpane(m_interpreter);
2222
m_sytemInfoPane->setWindowFlag(Qt::WindowType::WindowStaysOnTopHint);
2323
m_sytemInfoPane->show();
2424

25+
m_interpreter->SetSystemInformationPane(m_sytemInfoPane->ui);
26+
2527
// create the processor
26-
m_processor = new DatagramProcessor(ui, m_sytemInfoPane->ui);
28+
m_processor = new DatagramProcessor(ui, m_sytemInfoPane->ui, m_messageLogFrame);
2729

2830
// initialize the 4 main tabs.
2931
this->LoadControlPanelSettingsUI();
@@ -40,7 +42,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
4042
connect(&(this->m_serialPortThread), &SerialPortThread::HandleTimeout, this, &MainWindow::TimeoutReceived, Qt::AutoConnection);
4143

4244
// signal piping from the interpeter to this.
43-
connect(m_interpreter, &DatagramInterpreter::ReceivedHandshake, this, &MainWindow::StartDopplerCorrector);
45+
connect(m_processor, &DatagramProcessor::StartDopplerCorrector, this, &MainWindow::StartDopplerCorrector);
4446

4547
// data piping from message log frame to serial port thread.
4648
connect(m_messageLogFrame, &MessageLogFrame::SendDataFromMessageLogFrame, this, &MainWindow::ReceivedMessagefromMessageLog);
@@ -246,7 +248,14 @@ void MainWindow::SendDopplerShiftedFrequency()
246248
double dopplerShiftedFreq;
247249
bool dopplerShiftOk = m_dopplerShiftCorrector.GetDopplerShiftNow(currentSatelliteNameStdStr, &dopplerShiftedFreq);
248250

249-
if (!dopplerShiftOk) return;
251+
if (!dopplerShiftOk)
252+
{
253+
QMessageBox msgBox;
254+
msgBox.setText("TLE, LLA or Observer Position are invalid.");
255+
msgBox.exec();
256+
throw "tle lla or observer are invalid";
257+
return;
258+
}
250259

251260

252261
// current configured frequency.

FOSSAGSCP/messagelogframe.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class MessageLogFrame : public QWidget
2525
bool GetEnableSerialSniffingState();
2626
void RawWriteToLog(QString msg);
2727

28+
Ui::MessageLogFrame *ui;
2829
public slots:
2930
void WriteDatagram(const IDatagram* datagram); // attached to MessageLog.h
3031
signals:
@@ -38,7 +39,6 @@ private slots:
3839

3940

4041
private:
41-
Ui::MessageLogFrame *ui;
4242
QStringListModel * m_messageLogListModel;
4343

4444
bool m_logTimestamps = false;

FOSSAGSCP/src/DatagramInterpreter.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
#include "DatagramInterpreter.h"
22

3-
DatagramInterpreter::DatagramInterpreter(Ui::MainWindow *mainWindowUI)
4-
: m_mainWindowUI(mainWindowUI)
3+
DatagramInterpreter::DatagramInterpreter(Ui::MainWindow *mainWindowUI, MessageLogFrame* messageLogFrame)
4+
: m_mainWindowUI(mainWindowUI), m_messageLog(messageLogFrame)
55
{
66
}
77

8+
void DatagramInterpreter::SetSystemInformationPane(Ui::systeminformationpane *systemInfoUI)
9+
{
10+
m_systemInfoUI = systemInfoUI;
11+
}
12+
813
IDatagram *DatagramInterpreter::SerialData_To_Datagram(QByteArray datagramData)
914
{
1015
// first byte is the control byte.
@@ -13,11 +18,6 @@ IDatagram *DatagramInterpreter::SerialData_To_Datagram(QByteArray datagramData)
1318
// second byte is the payload length.
1419
uint8_t lengthByte = (uint8_t)datagramData[1];
1520

16-
if (lengthByte < (datagramData.size() - 4))
17-
{
18-
return nullptr;
19-
}
20-
2121
// third and fourth byte is the radiolib status code.
2222
/// @todo handle status codes.
2323
int16_t radiolibStatusCode = datagramData[2] | (datagramData[3] << 8);

FOSSAGSCP/src/DatagramInterpreter.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
#include "ui_mainwindow.h"
1919
#include "ui_systeminformationpane.h"
20+
#include "ui_messagelogframe.h"
21+
#include "messagelogframe.h"
2022

2123
#include <FOSSA-Comms.h>
2224
#include <QObject>
@@ -58,9 +60,11 @@ class DatagramInterpreter : public QObject
5860
{
5961
Q_OBJECT
6062
public:
61-
DatagramInterpreter(Ui::MainWindow* mainWindowUI);
63+
DatagramInterpreter(Ui::MainWindow* mainWindowUI, MessageLogFrame* messageLogFrame);
6264
virtual ~DatagramInterpreter() {}
6365

66+
void SetSystemInformationPane(Ui::systeminformationpane* systemInfoUI);
67+
6468
IDatagram *SerialData_To_Datagram(QByteArray datagramData);
6569
IDatagram *Create_Datagram(char operationId, uint8_t functionId, uint8_t optDataLength, char *optData);
6670

@@ -128,6 +132,7 @@ class DatagramInterpreter : public QObject
128132
protected:
129133
Ui::MainWindow* m_mainWindowUI = nullptr;
130134
Ui::systeminformationpane* m_systemInfoUI = nullptr;
135+
MessageLogFrame* m_messageLog = nullptr;
131136
};
132137

133138
#endif // Interpreter_H

FOSSAGSCP/src/DatagramProcessor.cpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "DatagramProcessor.h"
22

3-
DatagramProcessor::DatagramProcessor(Ui::MainWindow* mainWindowUI, Ui::systeminformationpane* systemInfoIUI)
4-
: m_mainWindowUI(mainWindowUI), m_systemInfoUI(systemInfoIUI)
3+
DatagramProcessor::DatagramProcessor(Ui::MainWindow *mainWindowUI, Ui::systeminformationpane* systemInfoUI, MessageLogFrame* messageLogFrame)
4+
: m_mainWindowUI(mainWindowUI), m_messageLog(messageLogFrame), m_systemInfoUI(systemInfoUI)
55
{
66

77
}
@@ -79,8 +79,8 @@ void DatagramProcessor::ProcessFrame(IDatagram *datagram)
7979

8080
// for (int i = 0; i < payloadLength; i++)
8181
//{
82-
qInfo() << functionId;
83-
qInfo() << optionalDataLength;
82+
// qInfo() << functionId;
83+
//qInfo() << optionalDataLength;
8484
//}
8585
if (optionalDataLength >= 0)
8686
{
@@ -107,6 +107,9 @@ void DatagramProcessor::ProcessFrame(IDatagram *datagram)
107107
}
108108
else if (functionId == RESP_SYSTEM_INFO)
109109
{
110+
// message the messageframe
111+
m_messageLog->RawWriteToLog("[System information frame]");
112+
110113
if (Settings::GetSatVersion() == VERSION_1B)
111114
{
112115
uint8_t batteryVoltage = optionalData[0];

FOSSAGSCP/src/DatagramProcessor.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
#include "ui_mainwindow.h"
1414
#include "ui_systeminformationpane.h"
15+
#include "ui_messagelogframe.h"
16+
#include "messagelogframe.h"
1517

1618
#include <FOSSA-Comms.h>
1719
#include <QObject>
@@ -22,7 +24,7 @@ class DatagramProcessor : public QObject
2224
{
2325
Q_OBJECT
2426
public:
25-
DatagramProcessor(Ui::MainWindow* mainWindowUI, Ui::systeminformationpane* systemInfoUI);
27+
DatagramProcessor(Ui::MainWindow* mainWindowUI, Ui::systeminformationpane* systemInfoUI, MessageLogFrame* messageLogFrame);
2628

2729
void ProcessDatagram(IDatagram* datagram);
2830

@@ -36,6 +38,7 @@ class DatagramProcessor : public QObject
3638
private:
3739
Ui::MainWindow* m_mainWindowUI;
3840
Ui::systeminformationpane* m_systemInfoUI;
41+
MessageLogFrame* m_messageLog;
3942

4043
void ProcessHandshake(IDatagram *datagram);
4144
void ProcessGroundStationConfigurationChange(IDatagram *datagram);

FOSSAGSCP/src/InboundDatagram.cpp

+11-8
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,19 @@ QString InboundDatagram::ToString() const
3636
hexChar[4] = '\0';
3737
datagramStr.append(hexChar);
3838

39-
sprintf(&(hexChar[0]), "%02x, ", (uint8_t)m_radiolibStatusCode);
40-
hexChar[4] = '\0';
41-
datagramStr.append(hexChar);
39+
if (m_lengthByte != 0)
40+
{
41+
sprintf(&(hexChar[0]), "%02x, ", (uint8_t)m_radiolibStatusCode);
42+
hexChar[4] = '\0';
43+
datagramStr.append(hexChar);
4244

43-
sprintf(&(hexChar[0]), "%02x, ", (uint8_t)(m_radiolibStatusCode >> 8));
44-
hexChar[4] = '\0';
45-
datagramStr.append(hexChar);
45+
sprintf(&(hexChar[0]), "%02x, ", (uint8_t)(m_radiolibStatusCode >> 8));
46+
hexChar[4] = '\0';
47+
datagramStr.append(hexChar);
4648

47-
QString frameStr = m_frame->ToString();
48-
datagramStr.append(frameStr);
49+
QString frameStr = m_frame->ToString();
50+
datagramStr.append(frameStr);
51+
}
4952

5053
return datagramStr;
5154
}

0 commit comments

Comments
 (0)