FT8 demod: added message type column im nessages table

This commit is contained in:
f4exb 2023-01-28 12:29:58 +01:00
parent e265ddf887
commit 5980dda8a9
8 changed files with 37 additions and 15 deletions

View File

@ -367,8 +367,6 @@ std::string Packing::unpack_0_1(int a77[], std::string& call1str, std::string& c
{ {
// bit fields: c28 c28 h10 r5 // bit fields: c28 c28 h10 r5
int i = 0; int i = 0;
int tu = a77[i];
i += 1;
int call1 = un64(a77, i, 28); // c28 int call1 = un64(a77, i, 28); // c28
i += 28; i += 28;
int call2 = un64(a77, i, 28); // c28 int call2 = un64(a77, i, 28); // c28

View File

@ -40,12 +40,14 @@ private:
std::string unpackcall(int x); std::string unpackcall(int x);
std::string unpackgrid(int ng, int ir, int i3); std::string unpackgrid(int ng, int ir, int i3);
void remember_call(std::string call); void remember_call(std::string call);
std::string unpack_4(int a77[], std::string& call1str, std::string& call2str, std::string& locstr);
std::string unpack_1(int a77[], std::string& call1str, std::string& call2str, std::string& locstr);
std::string unpack_0_0(int a77[], std::string& call1str, std::string& call2str, std::string& locstr); std::string unpack_0_0(int a77[], std::string& call1str, std::string& call2str, std::string& locstr);
std::string unpack_0_1(int a77[], std::string& call1str, std::string& call2str, std::string& locstr); std::string unpack_0_1(int a77[], std::string& call1str, std::string& call2str, std::string& locstr);
std::string unpack_3(int a77[], std::string& call1str, std::string& call2str, std::string& locstr); // 0.3 and 0.4
std::string unpack_0_3(int a77[], int n3, std::string& call1str, std::string& call2str, std::string& locstr); std::string unpack_0_3(int a77[], int n3, std::string& call1str, std::string& call2str, std::string& locstr);
// 1 and 2
std::string unpack_1(int a77[], std::string& call1str, std::string& call2str, std::string& locstr);
std::string unpack_3(int a77[], std::string& call1str, std::string& call2str, std::string& locstr);
std::string unpack_4(int a77[], std::string& call1str, std::string& call2str, std::string& locstr);
QRecursiveMutex hashes_mu; QRecursiveMutex hashes_mu;
std::map<int, std::string> hashes10; std::map<int, std::string> hashes10;

View File

@ -69,6 +69,8 @@ QVariant FT8MessagesTableModel::data(const QModelIndex &index, int role) const
switch (index.column()) { switch (index.column()) {
case FT8DemodSettings::MESSAGE_COL_UTC: case FT8DemodSettings::MESSAGE_COL_UTC:
return ft8Message.m_utc; return ft8Message.m_utc;
case FT8DemodSettings::MESSAGE_COL_TYPE:
return ft8Message.m_type;
case FT8DemodSettings::MESSAGE_COL_PASS: case FT8DemodSettings::MESSAGE_COL_PASS:
return ft8Message.m_pass; return ft8Message.m_pass;
case FT8DemodSettings::MESSAGE_COL_OKBITS: case FT8DemodSettings::MESSAGE_COL_OKBITS:
@ -95,6 +97,7 @@ QVariant FT8MessagesTableModel::data(const QModelIndex &index, int role) const
if (role == Qt::TextAlignmentRole) if (role == Qt::TextAlignmentRole)
{ {
switch (index.column()) { switch (index.column()) {
case FT8DemodSettings::MESSAGE_COL_TYPE:
case FT8DemodSettings::MESSAGE_COL_DT: case FT8DemodSettings::MESSAGE_COL_DT:
case FT8DemodSettings::MESSAGE_COL_DF: case FT8DemodSettings::MESSAGE_COL_DF:
case FT8DemodSettings::MESSAGE_COL_SNR: case FT8DemodSettings::MESSAGE_COL_SNR:
@ -114,6 +117,8 @@ QVariant FT8MessagesTableModel::headerData(int section, Qt::Orientation orientat
switch (section) { switch (section) {
case FT8DemodSettings::MESSAGE_COL_UTC: case FT8DemodSettings::MESSAGE_COL_UTC:
return tr("UTC"); return tr("UTC");
case FT8DemodSettings::MESSAGE_COL_TYPE:
return tr("Typ");
case FT8DemodSettings::MESSAGE_COL_PASS: case FT8DemodSettings::MESSAGE_COL_PASS:
return tr("P"); return tr("P");
case FT8DemodSettings::MESSAGE_COL_OKBITS: case FT8DemodSettings::MESSAGE_COL_OKBITS:
@ -142,6 +147,8 @@ QVariant FT8MessagesTableModel::headerData(int section, Qt::Orientation orientat
switch (section) { switch (section) {
case FT8DemodSettings::MESSAGE_COL_UTC: case FT8DemodSettings::MESSAGE_COL_UTC:
return tr("Sequence UTC time HHMMSS"); return tr("Sequence UTC time HHMMSS");
case FT8DemodSettings::MESSAGE_COL_TYPE:
return tr("Message type (see documentation)");
case FT8DemodSettings::MESSAGE_COL_PASS: case FT8DemodSettings::MESSAGE_COL_PASS:
return tr("Successful decoder pass index"); return tr("Successful decoder pass index");
case FT8DemodSettings::MESSAGE_COL_OKBITS: case FT8DemodSettings::MESSAGE_COL_OKBITS:
@ -183,6 +190,7 @@ void FT8MessagesTableModel::messagesReceived(const QList<FT8Message>& messages)
{ {
m_ft8Messages.push_back(FT8MesssageData{ m_ft8Messages.push_back(FT8MesssageData{
message.ts.toString("HHmmss"), message.ts.toString("HHmmss"),
message.type,
message.pass, message.pass,
message.nbCorrectBits, message.nbCorrectBits,
message.dt, message.dt,
@ -207,6 +215,7 @@ void FT8MessagesTableModel::setDefaultMessage()
beginInsertRows(QModelIndex(), 0, 0); beginInsertRows(QModelIndex(), 0, 0);
m_ft8Messages.push_back(FT8MesssageData{ m_ft8Messages.push_back(FT8MesssageData{
"000000", "000000",
"0.0",
0, 0,
174, 174,
-8.0, -8.0,

View File

@ -44,6 +44,7 @@ namespace Ui {
struct FT8MesssageData struct FT8MesssageData
{ {
QString m_utc; QString m_utc;
QString m_type;
int m_pass; int m_pass;
int m_okBits; int m_okBits;
float m_dt; float m_dt;
@ -73,7 +74,7 @@ public:
private: private:
QVector<FT8MesssageData> m_ft8Messages; QVector<FT8MesssageData> m_ft8Messages;
static const int m_columnCount = 10; static const int m_columnCount = 11;
}; };
class FT8DemodGUI : public ChannelGUI { class FT8DemodGUI : public ChannelGUI {

View File

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>520</width> <width>542</width>
<height>731</height> <height>731</height>
</rect> </rect>
</property> </property>
@ -18,7 +18,7 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>520</width> <width>542</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
@ -36,7 +36,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>501</width> <width>531</width>
<height>181</height> <height>181</height>
</rect> </rect>
</property> </property>
@ -648,9 +648,9 @@
<widget class="QWidget" name="spectrumContainer" native="true"> <widget class="QWidget" name="spectrumContainer" native="true">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>10</x> <x>0</x>
<y>193</y> <y>193</y>
<width>218</width> <width>531</width>
<height>261</height> <height>261</height>
</rect> </rect>
</property> </property>
@ -719,12 +719,12 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tft8Container" native="true"> <widget class="QWidget" name="ft8Container" native="true">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>460</y> <y>460</y>
<width>501</width> <width>531</width>
<height>251</height> <height>251</height>
</rect> </rect>
</property> </property>
@ -754,7 +754,7 @@
<number>3</number> <number>3</number>
</property> </property>
<property name="rightMargin"> <property name="rightMargin">
<number>2</number> <number>0</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>3</number> <number>3</number>

View File

@ -52,6 +52,7 @@ struct FT8DemodSettings
{ {
enum MessageCol { enum MessageCol {
MESSAGE_COL_UTC, MESSAGE_COL_UTC,
MESSAGE_COL_TYPE,
MESSAGE_COL_PASS, MESSAGE_COL_PASS,
MESSAGE_COL_OKBITS, MESSAGE_COL_OKBITS,
MESSAGE_COL_DT, MESSAGE_COL_DT,

View File

@ -78,7 +78,7 @@ int FT8DemodWorker::FT8Callback::hcb(
pass, pass,
(int) snr, (int) snr,
correct_bits, correct_bits,
off - 0.5, off - 0.5f,
hz0, hz0,
QString(call1.c_str()).simplified(), QString(call1.c_str()).simplified(),
QString(call2.c_str()).simplified(), QString(call2.c_str()).simplified(),

View File

@ -183,6 +183,17 @@ Where date is the slot date in YYYYMMDD format (in WSJT-X this is YYMMDD) and ti
Displays the received messages in a table which columns are the following: Displays the received messages in a table which columns are the following:
- **UTC**: UTC time in HHmmss format of the FT8 slot - **UTC**: UTC time in HHmmss format of the FT8 slot
- **Typ**: Message type according to the i3.n3 format described in the protocol (see reference at the top):
- **0.0**: Free text
- **0.1**: DXpedition. Message carries two compacted messages (one for RR73 and one for report to two different callees). They will be de-compacted for dispplay.
- **0.3**: ARRL field day
- **0.4**: ARRL field day
- **0.5**: Telemetry
- **1**: Standard message (the most common)
- **2**: European VHF (4 char locator) minor change to standard message
- **3**: Russian RTTY
- **4**: Non standard call
- **5**: European VHF (6 char locator)
- **P**: LDPC decoder pass index that was successful (0 to 2) as there are 3 passes - **P**: LDPC decoder pass index that was successful (0 to 2) as there are 3 passes
- **OKb**: Number of correct bits in the message before FEC correction. Maximum is 174 in which case no FEC would be needed. - **OKb**: Number of correct bits in the message before FEC correction. Maximum is 174 in which case no FEC would be needed.
- **dt**: Message start time shift in seconds from standard FT8 time slot - **dt**: Message start time shift in seconds from standard FT8 time slot