Merge branch 'bugfix/DV-G_SSID_#33' into develop

feature/ipv6_#35
Geoffrey Merck 3 years ago
commit 134965cf0a

10
.vscode/tasks.json vendored

@ -13,10 +13,7 @@
"USE_GPSD=1",
"all"
],
"group": {
"kind": "build",
"isDefault": true
},
"group": "build",
"problemMatcher": []
},
{
@ -94,7 +91,10 @@
"ENABLE_DEBUG=1",
"USE_GPSD=1"
],
"group": "build",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
}
]

@ -67,8 +67,8 @@ bool CHeardData::setIcomRepeaterData(const unsigned char *data, unsigned int len
std::string suser((const char *)data + 10U);
std::string srptr((const char *)data + 18U);
m_user = suser.substr(LONG_CALLSIGN_LENGTH);
m_repeater = srptr.substr(LONG_CALLSIGN_LENGTH);
m_user = suser.substr(0, LONG_CALLSIGN_LENGTH);
m_repeater = srptr.substr(0, LONG_CALLSIGN_LENGTH);
m_address = address;
m_port = port;

@ -107,6 +107,13 @@ bool CNMEASentenceCollector::getDataInt(std::string& data)
std::string fromCall = getMyCall1();
CAPRSUtils::dstarCallsignToAPRS(fromCall);
// 20230425 Fix for https://github.com/F4FXL/DStarGateway/issues/33
size_t hyphenIndex = fromCall.find('-');
if(hyphenIndex != std::string::npos) {
fromCall = fromCall.substr(0, hyphenIndex);
}
std::string aprsFrame(fromCall);
aprsFrame.append("-5>GPS30,DSTAR*:")
.append(nmea);

@ -145,6 +145,7 @@ The testing framwework used is Google Test.
# 5. Version History
## 5.1. Version 0.7
- [**Bugfix**] Malformed callsign in some cases when using DV-G (NMEA) ([#33](https://github.com/F4FXL/DStarGateway/issues/33))
- [**Bugfix**] Crash on startup with Icom Hardware. Thanks to Josh AB9FT for reporting the issue.([#31](https://github.com/F4FXL/DStarGateway/issues/31))
- [**Improvement**] Add/Fix DPRS Object support([#28](https://github.com/F4FXL/DStarGateway/issues/28))
- [**Improvement**] Log incoming DPRS frames so they can be used in e.g. dashboards([#29](https://github.com/F4FXL/DStarGateway/issues/29))

@ -20,7 +20,7 @@
#include "APRSUtils.h"
namespace APRStoDPRSTests
namespace APRSUtilsTests
{
class APRSUtils_calcGPSAIcomCRC : public ::testing::Test {
};

@ -0,0 +1,51 @@
/*
* Copyright (c) 2021-2023 by Geoffrey Merck F4FXL / KC3FRA
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <gtest/gtest.h>
#include "APRSUtils.h"
namespace APRSUtilsTests
{
class APRSUtils_dstarCallsignToAPRS : public ::testing::Test {
};
TEST_F(APRSUtils_dstarCallsignToAPRS, noBlanks)
{
std::string call("N0CALL");
CAPRSUtils::dstarCallsignToAPRS(call);
EXPECT_STRCASEEQ(call.c_str(), "N0CALL") << "Call shall not have changed";
}
TEST_F(APRSUtils_dstarCallsignToAPRS, twoBlanks)
{
std::string call("F4ABC B");
CAPRSUtils::dstarCallsignToAPRS(call);
EXPECT_STRCASEEQ(call.c_str(), "F4ABC-B") << "-H shall have been removed";
}
TEST_F(APRSUtils_dstarCallsignToAPRS, threeBlanks)
{
std::string call("F4AB B");
CAPRSUtils::dstarCallsignToAPRS(call);
EXPECT_STRCASEEQ(call.c_str(), "F4AB-B") << "-H shall have been removed";
}
}

@ -0,0 +1,87 @@
/*
* Copyright (C) 2021-2023 by Geoffrey Merck F4FXL / KC3FRA
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <gtest/gtest.h>
#include "NMEASentenceCollector.h"
namespace NMEASentenceCollectorTests
{
class NMEASentenceCollectorTests_getData: public ::testing::Test
{
protected:
CNMEASentenceCollector * m_collector;
void SetUp() override
{
m_collector = new CNMEASentenceCollector("$GPRMC");
std::string nmea("$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45\x0A");
unsigned char data[3];
unsigned int len = nmea.length() + (nmea.length() % 3);
bool first = true;
for (unsigned int i = 0; i < len;) {
if(first) {
data[0] = SLOW_DATA_TYPE_GPS ^ SCRAMBLER_BYTE1;
first = false;
}
else {
data[0] = (i < nmea.length() ? nmea[i] : 'f') ^ SCRAMBLER_BYTE1;
i++;
first = true;
}
data[1] = (i < nmea.length() ? nmea[i] : 'f') ^ SCRAMBLER_BYTE2;
i++;
data[2] = (i < nmea.length() ? nmea[i] : 'f') ^ SCRAMBLER_BYTE3;
i++;
m_collector->writeData(data);
}
}
void TearDown() override
{
delete m_collector;
}
};
TEST_F(NMEASentenceCollectorTests_getData, noSSIDinCallsign)
{
std::string data;
m_collector->setMyCall1("N0CALL");
m_collector->setMyCall2("5100");
m_collector->getData(data);
EXPECT_STREQ(data.c_str(), "N0CALL-5>GPS30,DSTAR*:$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45");
}
TEST_F(NMEASentenceCollectorTests_getData, SSIDinCallsign)
{
std::string data;
m_collector->setMyCall1("N0CALL H");
m_collector->setMyCall2("5100");
m_collector->getData(data);
EXPECT_STREQ(data.c_str(), "N0CALL-5>GPS30,DSTAR*:$GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A*45");
}
}
Loading…
Cancel
Save

Powered by TurnKey Linux.