1
0
Fork 0

Allow link to reflector at startup.

ycs232-kbc
Jonathan Naylor 9 years ago
parent b2c33793b7
commit dda5ac7c57

@ -64,6 +64,7 @@ m_networkEnabled(false),
m_networkDataPort(0U), m_networkDataPort(0U),
m_networkStatusPort(0U), m_networkStatusPort(0U),
m_networkHosts(), m_networkHosts(),
m_networkStartup(),
m_networkDebug(false) m_networkDebug(false)
{ {
} }
@ -174,6 +175,8 @@ bool CConf::read()
m_networkStatusPort = (unsigned int)::atoi(value); m_networkStatusPort = (unsigned int)::atoi(value);
else if (::strcmp(key, "Hosts") == 0) else if (::strcmp(key, "Hosts") == 0)
m_networkHosts = value; m_networkHosts = value;
else if (::strcmp(key, "Startup") == 0)
m_networkStartup = value;
else if (::strcmp(key, "Debug") == 0) else if (::strcmp(key, "Debug") == 0)
m_networkDebug = ::atoi(value) == 1; m_networkDebug = ::atoi(value) == 1;
} }
@ -319,6 +322,11 @@ std::string CConf::getNetworkHosts() const
return m_networkHosts; return m_networkHosts;
} }
std::string CConf::getNetworkStartup() const
{
return m_networkStartup;
}
bool CConf::getNetworkDebug() const bool CConf::getNetworkDebug() const
{ {
return m_networkDebug; return m_networkDebug;

@ -66,6 +66,7 @@ public:
unsigned int getNetworkDataPort() const; unsigned int getNetworkDataPort() const;
unsigned int getNetworkStatusPort() const; unsigned int getNetworkStatusPort() const;
std::string getNetworkHosts() const; std::string getNetworkHosts() const;
std::string getNetworkStartup() const;
bool getNetworkDebug() const; bool getNetworkDebug() const;
private: private:
@ -101,6 +102,7 @@ private:
unsigned int m_networkDataPort; unsigned int m_networkDataPort;
unsigned int m_networkStatusPort; unsigned int m_networkStatusPort;
std::string m_networkHosts; std::string m_networkHosts;
std::string m_networkStartup;
bool m_networkDebug; bool m_networkDebug;
}; };

@ -221,6 +221,13 @@ CYSFReflector* CWiresX::getReflector() const
return m_reflector; return m_reflector;
} }
CYSFReflector* CWiresX::getReflector(const std::string& id)
{
m_reflector = m_reflectors.find(id);
return m_reflector;
}
void CWiresX::processDX(const unsigned char* source) void CWiresX::processDX(const unsigned char* source)
{ {
::LogDebug("Received DX from %10.10s", source); ::LogDebug("Received DX from %10.10s", source);

@ -52,6 +52,7 @@ public:
WX_STATUS process(const unsigned char* data, const unsigned char* source, unsigned char fi, unsigned char dt, unsigned char fn, unsigned char ft); WX_STATUS process(const unsigned char* data, const unsigned char* source, unsigned char fi, unsigned char dt, unsigned char fn, unsigned char ft);
CYSFReflector* getReflector() const; CYSFReflector* getReflector() const;
CYSFReflector* getReflector(const std::string& id);
void clock(unsigned int ms); void clock(unsigned int ms);

@ -81,7 +81,9 @@ m_gps(NULL),
m_wiresX(NULL), m_wiresX(NULL),
m_netNetwork(NULL), m_netNetwork(NULL),
m_linked(false), m_linked(false),
m_exclude(false) m_exclude(false),
m_startupTimer(1000U, 30U),
m_startup()
{ {
} }
@ -204,6 +206,10 @@ int CYSFGateway::run()
m_wiresX->setInfo(name, txFrequency, rxFrequency); m_wiresX->setInfo(name, txFrequency, rxFrequency);
m_wiresX->start(); m_wiresX->start();
m_startup = m_conf.getNetworkStartup();
if (!m_startup.empty())
m_startupTimer.start();
} }
CStopWatch stopWatch; CStopWatch stopWatch;
@ -239,12 +245,14 @@ int CYSFGateway::run()
CYSFReflector* reflector = m_wiresX->getReflector(); CYSFReflector* reflector = m_wiresX->getReflector();
LogMessage("Connect to %5.5s has been requested by %10.10s", reflector->m_id.c_str(), buffer + 14U); LogMessage("Connect to %5.5s has been requested by %10.10s", reflector->m_id.c_str(), buffer + 14U);
m_netNetwork->setDestination(reflector->m_address, reflector->m_port); m_netNetwork->setDestination(reflector->m_address, reflector->m_port);
m_startupTimer.stop();
m_linked = true; m_linked = true;
} }
break; break;
case WXS_DISCONNECT: case WXS_DISCONNECT:
LogMessage("Disconnect has been requested by %10.10s", buffer + 14U); LogMessage("Disconnect has been requested by %10.10s", buffer + 14U);
m_netNetwork->setDestination(); m_netNetwork->setDestination();
m_startupTimer.stop();
m_linked = false; m_linked = false;
break; break;
default: default:
@ -291,6 +299,17 @@ int CYSFGateway::run()
m_exclude = false; m_exclude = false;
} }
m_startupTimer.clock(ms);
if (m_startupTimer.isRunning() && m_startupTimer.hasExpired()) {
CYSFReflector* reflector = m_wiresX->getReflector(m_startup);
if (reflector != NULL) {
LogMessage("Automatic connection to %5.5s", reflector->m_id.c_str());
m_netNetwork->setDestination(reflector->m_address, reflector->m_port);
m_startupTimer.stop();
m_linked = true;
}
}
if (ms < 5U) if (ms < 5U)
CThread::sleep(5U); CThread::sleep(5U);
} }

@ -43,6 +43,8 @@ private:
CNetwork* m_netNetwork; CNetwork* m_netNetwork;
bool m_linked; bool m_linked;
bool m_exclude; bool m_exclude;
CTimer m_startupTimer;
std::string m_startup;
void createGPS(); void createGPS();
}; };

@ -37,4 +37,5 @@ Enable=1
DataPort=42000 DataPort=42000
StatusPort=42001 StatusPort=42001
Hosts=./YSFHosts.txt Hosts=./YSFHosts.txt
Startup=
Debug=0 Debug=0

Loading…
Cancel
Save