mirror of https://github.com/f4exb/sdrangel.git
FT8 demod: added message type column im nessages table
This commit is contained in:
parent
e265ddf887
commit
5980dda8a9
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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(),
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue