Reformat code and make small alterations.
This commit is contained in:
parent
4e6bfb3682
commit
711bcbf745
146
DMRSlot.cpp
146
DMRSlot.cpp
|
@ -128,6 +128,7 @@ CDMRSlot::~CDMRSlot()
|
|||
delete[] m_rfEmbeddedData;
|
||||
delete[] m_netEmbeddedData;
|
||||
delete[] m_lastFrame;
|
||||
delete[] m_rfTalkerAlias;
|
||||
}
|
||||
|
||||
bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
|
||||
|
@ -333,7 +334,9 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
|
|||
LogMessage("DMR Slot %u, received RF end of voice transmission, %.1f seconds, BER: %.1f%%, RSSI: -%u/-%u/-%u dBm", m_slotNo, float(m_rfFrames) / 16.667F, float(m_rfErrs * 100U) / float(m_rfBits), m_minRSSI, m_maxRSSI, m_aveRSSI / m_rssiCount);
|
||||
else
|
||||
LogMessage("DMR Slot %u, received RF end of voice transmission, %.1f seconds, BER: %.1f%%", m_slotNo, float(m_rfFrames) / 16.667F, float(m_rfErrs * 100U) / float(m_rfBits));
|
||||
m_display->writeDMRTA(m_slotNo,NULL," ");
|
||||
|
||||
m_display->writeDMRTA(m_slotNo, NULL, " ");
|
||||
|
||||
if (m_rfTimeout) {
|
||||
writeEndRF();
|
||||
return false;
|
||||
|
@ -619,9 +622,11 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
|
|||
m_network->writeTalkerAlias(m_rfLC->getSrcId(), 0U, data);
|
||||
|
||||
if (!(m_rfTalkerId & TALKER_ID_HEADER)) {
|
||||
if (m_rfTalkerId==TALKER_ID_NONE) memset(m_rfTalkerAlias,0,32U);
|
||||
if (m_rfTalkerId == TALKER_ID_NONE)
|
||||
::memset(m_rfTalkerAlias, '\0', 32U);
|
||||
::memcpy(m_rfTalkerAlias, data, 6U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias,"R");
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias, "R");
|
||||
|
||||
if (m_dumpTAData) {
|
||||
::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo);
|
||||
CUtils::dump(2U, text, data, 9U);
|
||||
|
@ -636,9 +641,11 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
|
|||
m_network->writeTalkerAlias(m_rfLC->getSrcId(), 1U, data);
|
||||
|
||||
if (!(m_rfTalkerId & TALKER_ID_BLOCK1)) {
|
||||
if (m_rfTalkerId==TALKER_ID_NONE) memset(m_rfTalkerAlias,0,32U);
|
||||
::memcpy(m_rfTalkerAlias+6U, data, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias,"R");
|
||||
if (m_rfTalkerId == TALKER_ID_NONE)
|
||||
::memset(m_rfTalkerAlias, '\0', 32U);
|
||||
::memcpy(m_rfTalkerAlias + 6U, data, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias, "R");
|
||||
|
||||
if (m_dumpTAData) {
|
||||
::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo);
|
||||
CUtils::dump(2U, text, data, 9U);
|
||||
|
@ -653,10 +660,11 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
|
|||
m_network->writeTalkerAlias(m_rfLC->getSrcId(), 2U, data);
|
||||
|
||||
if (!(m_rfTalkerId & TALKER_ID_BLOCK2)) {
|
||||
if (m_rfTalkerId==TALKER_ID_NONE) memset(m_rfTalkerAlias,0,32U);
|
||||
m_rfTalkerId |= TALKER_ID_BLOCK2;
|
||||
::memcpy(m_rfTalkerAlias+6U+7U, data, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias,"R");
|
||||
if (m_rfTalkerId == TALKER_ID_NONE)
|
||||
::memset(m_rfTalkerAlias, 0, 32U);
|
||||
::memcpy(m_rfTalkerAlias + 6U + 7U, data, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias, "R");
|
||||
|
||||
if (m_dumpTAData) {
|
||||
::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo);
|
||||
CUtils::dump(2U, text, data, 9U);
|
||||
|
@ -671,9 +679,11 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
|
|||
m_network->writeTalkerAlias(m_rfLC->getSrcId(), 3U, data);
|
||||
|
||||
if (!(m_rfTalkerId & TALKER_ID_BLOCK3)) {
|
||||
if (m_rfTalkerId==TALKER_ID_NONE) ::memset(m_rfTalkerAlias,0,32U);
|
||||
::memcpy(m_rfTalkerAlias+6U+7U+7U, data, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias,"R");
|
||||
if (m_rfTalkerId == TALKER_ID_NONE)
|
||||
::memset(m_rfTalkerAlias, '\0', 32U);
|
||||
::memcpy(m_rfTalkerAlias + 6U + 7U + 7U, data, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias, "R");
|
||||
|
||||
if (m_dumpTAData) {
|
||||
::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo);
|
||||
CUtils::dump(2U, text, data, 9U);
|
||||
|
@ -1186,7 +1196,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
// We've received the voice header and terminator haven't we?
|
||||
m_netFrames += 2U;
|
||||
LogMessage("DMR Slot %u, received network end of voice transmission, %.1f seconds, %u%% packet loss, BER: %.1f%%", m_slotNo, float(m_netFrames) / 16.667F, (m_netLost * 100U) / m_netFrames, float(m_netErrs * 100U) / float(m_netBits));
|
||||
m_display->writeDMRTA(m_slotNo,NULL," ");
|
||||
m_display->writeDMRTA(m_slotNo, NULL, " ");
|
||||
writeEndNet();
|
||||
} else if (dataType == DT_DATA_HEADER) {
|
||||
if (m_netState == RS_NET_DATA)
|
||||
|
@ -1398,9 +1408,11 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
break;
|
||||
case FLCO_TALKER_ALIAS_HEADER:
|
||||
if (!(m_netTalkerId & TALKER_ID_HEADER)) {
|
||||
if (!m_netTalkerId) memset(m_rfTalkerAlias,0,32U);
|
||||
::memcpy(m_rfTalkerAlias, data+2U, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias,"N");
|
||||
if (!m_netTalkerId)
|
||||
::memset(m_rfTalkerAlias, '\0', 32U);
|
||||
::memcpy(m_rfTalkerAlias, data + 2U, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias, "N");
|
||||
|
||||
if (m_dumpTAData) {
|
||||
::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo);
|
||||
CUtils::dump(2U, text, data, 9U);
|
||||
|
@ -1411,9 +1423,11 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
break;
|
||||
case FLCO_TALKER_ALIAS_BLOCK1:
|
||||
if (!(m_netTalkerId & TALKER_ID_BLOCK1)) {
|
||||
if (!m_netTalkerId) memset(m_rfTalkerAlias,0,32U);
|
||||
::memcpy(m_rfTalkerAlias+7U, data+2U, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias,"N");
|
||||
if (!m_netTalkerId)
|
||||
::memset(m_rfTalkerAlias, '\0', 32U);
|
||||
::memcpy(m_rfTalkerAlias + 7U, data + 2U, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias, "N");
|
||||
|
||||
if (m_dumpTAData) {
|
||||
::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo);
|
||||
CUtils::dump(2U, text, data, 9U);
|
||||
|
@ -1424,9 +1438,11 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
break;
|
||||
case FLCO_TALKER_ALIAS_BLOCK2:
|
||||
if (!(m_netTalkerId & TALKER_ID_BLOCK2)) {
|
||||
if (!m_netTalkerId) ::memset(m_rfTalkerAlias,0,32U);
|
||||
::memcpy(m_rfTalkerAlias+7U+7U, data+2U, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias,"N");
|
||||
if (!m_netTalkerId)
|
||||
::memset(m_rfTalkerAlias, '\0', 32U);
|
||||
::memcpy(m_rfTalkerAlias + 7U + 7U, data + 2U, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias, "N");
|
||||
|
||||
if (m_dumpTAData) {
|
||||
::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo);
|
||||
CUtils::dump(2U, text, data, 9U);
|
||||
|
@ -1437,9 +1453,11 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
break;
|
||||
case FLCO_TALKER_ALIAS_BLOCK3:
|
||||
if (!(m_netTalkerId & TALKER_ID_BLOCK3)) {
|
||||
if (!m_netTalkerId) memset(m_rfTalkerAlias,0,32U);
|
||||
::memcpy(m_rfTalkerAlias+7U+7U+7U, data+2U, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias,"N");
|
||||
if (!m_netTalkerId)
|
||||
::memset(m_rfTalkerAlias, '\0', 32U);
|
||||
::memcpy(m_rfTalkerAlias + 7U + 7U + 7U, data+2U, 7U);
|
||||
m_display->writeDMRTA(m_slotNo, m_rfTalkerAlias, "N");
|
||||
|
||||
if (m_dumpTAData) {
|
||||
::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo);
|
||||
CUtils::dump(2U, text, data, 9U);
|
||||
|
@ -1619,51 +1637,51 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
|
||||
void CDMRSlot::logGPSposition(const unsigned char* data)
|
||||
{
|
||||
signed long longitudeI,latitudeI;
|
||||
unsigned int errorI;
|
||||
float longitude,latitude;
|
||||
char errorS[30];
|
||||
unsigned int errorI = (data[2U] & 0x0E) >> 1U;
|
||||
|
||||
errorI=((data[2U]&0x0E) >> 1U);
|
||||
char errorS[30];
|
||||
switch (errorI) {
|
||||
case 0U:
|
||||
::sprintf(errorS, "< 2m");
|
||||
break;
|
||||
case 1U:
|
||||
::sprintf(errorS, "< 20m");
|
||||
break;
|
||||
case 2U:
|
||||
::sprintf(errorS, "< 200m");
|
||||
break;
|
||||
case 3U:
|
||||
::sprintf(errorS, "< 2km");
|
||||
break;
|
||||
case 4U:
|
||||
::sprintf(errorS, "< 20km");
|
||||
break;
|
||||
case 5U:
|
||||
::sprintf(errorS, "< 200km");
|
||||
break;
|
||||
case 6U:
|
||||
::sprintf(errorS, "> 200km");
|
||||
break;
|
||||
default:
|
||||
::sprintf(errorS, "not known or position invalid");
|
||||
break;
|
||||
case 0U:
|
||||
::strcpy(errorS, "< 2m");
|
||||
break;
|
||||
case 1U:
|
||||
::strcpy(errorS, "< 20m");
|
||||
break;
|
||||
case 2U:
|
||||
::strcpy(errorS, "< 200m");
|
||||
break;
|
||||
case 3U:
|
||||
::strcpy(errorS, "< 2km");
|
||||
break;
|
||||
case 4U:
|
||||
::strcpy(errorS, "< 20km");
|
||||
break;
|
||||
case 5U:
|
||||
::strcpy(errorS, "< 200km");
|
||||
break;
|
||||
case 6U:
|
||||
::strcpy(errorS, "> 200km");
|
||||
break;
|
||||
default:
|
||||
::strcpy(errorS, "not known or position invalid");
|
||||
break;
|
||||
}
|
||||
|
||||
longitudeI=(data[3U]<<16U)+(data[4U]<<8U)+(data[5U]);
|
||||
if ((data[2]&0x01U)==0x01U) longitudeI=-longitudeI;
|
||||
long longitudeI = (data[3U] << 16) + (data[4U] << 8) + data[5U];
|
||||
if ((data[2U] & 0x01U) == 0x01U)
|
||||
longitudeI = -longitudeI;
|
||||
|
||||
latitudeI=((data[6U]&0x7FU)<<16U)+(data[7U]<<8U)+(data[8U]);
|
||||
if ((data[6U]&0x80U)==0x80U) latitudeI=-latitudeI;
|
||||
long latitudeI = ((data[6U] & 0x7FU) << 16) + (data[7U] << 8) + data[8U];
|
||||
if ((data[6U] & 0x80U) == 0x80U)
|
||||
latitudeI = -latitudeI;
|
||||
|
||||
longitude=(float)360/33554432; // 360/2^25 steps
|
||||
latitude=(float)180/16777216; // 180/2^24 steps
|
||||
float longitude = 360.0F / 33554432.0F; // 360/2^25 steps
|
||||
float latitude = 180.0F / 16777216.0F; // 180/2^24 steps
|
||||
|
||||
longitude*=longitudeI;
|
||||
latitude*=latitudeI;
|
||||
LogMessage("GPS position [%08f,%09f] (Position error %s)",latitude,longitude,errorS);
|
||||
longitude *= longitudeI;
|
||||
latitude *= latitudeI;
|
||||
|
||||
LogMessage("GPS position [%08f,%09f] (Position error %s)",latitude,longitude,errorS);
|
||||
}
|
||||
|
||||
void CDMRSlot::clock()
|
||||
|
|
|
@ -1107,10 +1107,18 @@ void CMMDVMHost::createDisplay()
|
|||
if (displayClock)
|
||||
LogInfo(" Display UTC: %s", utc ? "yes" : "no");
|
||||
LogInfo(" Idle Brightness: %u", idleBrightness);
|
||||
if (screenLayout==0)
|
||||
LogInfo(" Screen Layout: Default (G4KLX)");
|
||||
else
|
||||
LogInfo(" Screen Layout: %u (ON7LDS)", screenLayout);
|
||||
|
||||
switch (screenLayout) {
|
||||
case 0U:
|
||||
LogInfo(" Screen Layout: G4KLX (Default)");
|
||||
break;
|
||||
case 2U:
|
||||
LogInfo(" Screen Layout: ON7LDS");
|
||||
break;
|
||||
default:
|
||||
LogInfo(" Screen Layout: %u (Unknown)", screenLayout);
|
||||
break;
|
||||
}
|
||||
|
||||
if (port == "modem") {
|
||||
ISerialPort* serial = new CModemSerialPort(m_modem);
|
||||
|
|
|
@ -189,7 +189,7 @@
|
|||
<ClInclude Include="Modem.h" />
|
||||
<ClInclude Include="ModemSerialPort.h" />
|
||||
<ClInclude Include="Mutex.h" />
|
||||
<ClInclude Include="Network.h" />
|
||||
<ClInclude Include="NetworkInfo.h" />
|
||||
<ClInclude Include="Nextion.h" />
|
||||
<ClInclude Include="NullDisplay.h" />
|
||||
<ClInclude Include="P25Audio.h" />
|
||||
|
@ -259,7 +259,7 @@
|
|||
<ClCompile Include="Modem.cpp" />
|
||||
<ClCompile Include="ModemSerialPort.cpp" />
|
||||
<ClCompile Include="Mutex.cpp" />
|
||||
<ClCompile Include="Network.cpp" />
|
||||
<ClCompile Include="NetworkInfo.cpp" />
|
||||
<ClCompile Include="Nextion.cpp" />
|
||||
<ClCompile Include="NullDisplay.cpp" />
|
||||
<ClCompile Include="P25Audio.cpp" />
|
||||
|
|
|
@ -221,7 +221,7 @@
|
|||
<ClInclude Include="RSSIInterpolator.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Network.h">
|
||||
<ClInclude Include="NetworkInfo.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
|
@ -415,7 +415,7 @@
|
|||
<ClCompile Include="RSSIInterpolator.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Network.cpp">
|
||||
<ClCompile Include="NetworkInfo.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
|
|
6
Makefile
6
Makefile
|
@ -9,9 +9,9 @@ LDFLAGS = -g
|
|||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Network.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \
|
||||
P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o \
|
||||
Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \
|
||||
P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o \
|
||||
Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
Golay24128.o Hamming.o OLED.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ LDFLAGS = -g -L/usr/local/lib
|
|||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
Golay24128.o Hamming.o HD44780.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o \
|
||||
P25Data.o P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o \
|
||||
Sync.o TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ LDFLAGS = -g
|
|||
OBJECTS = \
|
||||
AMBEFEC.o BCH.o BPTC19696.o Conf.o CRC.o Display.o DMRControl.o DMRCSBK.o DMRData.o DMRDataHeader.o DMREMB.o DMREmbeddedData.o DMRFullLC.o DMRLookup.o DMRLC.o \
|
||||
DMRNetwork.o DMRShortLC.o DMRSlot.o DMRSlotType.o DMRAccessControl.o DMRTrellis.o DStarControl.o DStarHeader.o DStarNetwork.o DStarSlowData.o Golay2087.o \
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o P25LowSpeedData.o \
|
||||
P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o TFTSerial.o Thread.o \
|
||||
Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
Golay24128.o Hamming.o LCDproc.o Log.o MMDVMHost.o Modem.o ModemSerialPort.o Mutex.o NetworkInfo.o Nextion.o NullDisplay.o P25Audio.o P25Control.o P25Data.o \
|
||||
P25LowSpeedData.o P25Network.o P25NID.o P25Utils.o QR1676.o RS129.o RS241213.o RSSIInterpolator.o SerialController.o SerialPort.o SHA256.o StopWatch.o Sync.o \
|
||||
TFTSerial.o Thread.o Timer.o UDPSocket.o UMP.o Utils.o YSFControl.o YSFConvolution.o YSFFICH.o YSFNetwork.o YSFPayload.o
|
||||
|
||||
all: MMDVMHost
|
||||
|
||||
|
|
180
Network.cpp
180
Network.cpp
|
@ -1,180 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2017 by Lieven De Samblanx ON7LDS
|
||||
*
|
||||
* 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 "Network.h"
|
||||
#include "Log.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
#include <clocale>
|
||||
|
||||
#include <sys/types.h>
|
||||
#if !defined(_WIN32) && !defined(_WIN64)
|
||||
#include <ifaddrs.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#else
|
||||
#include <ws2tcpip.h>
|
||||
#include <iphlpapi.h>
|
||||
#pragma comment(lib, "iphlpapi.lib")
|
||||
#ifndef NO_ERROR
|
||||
#define NO_ERROR 0
|
||||
#endif
|
||||
#ifndef ERROR_BUFFER_OVERFLOW
|
||||
#define ERROR_BUFFER_OVERFLOW 111
|
||||
#endif
|
||||
#ifndef ERROR_INSUFFICIENT_BUFFER
|
||||
#define ERROR_INSUFFICIENT_BUFFER 122
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void CNetworkInfo::getNetworkInterface(unsigned char* info)
|
||||
{
|
||||
LogInfo("Interfaces Info");
|
||||
::strcpy((char*)info, "(address unknown)");
|
||||
|
||||
|
||||
#if !defined(_WIN32) && !defined(_WIN64)
|
||||
|
||||
#define IFLISTSIZ 25
|
||||
|
||||
struct ifaddrs *ifaddr, *ifa;
|
||||
int family, s, n, ifnr;
|
||||
char host[NI_MAXHOST];
|
||||
char interfacelist[IFLISTSIZ][50+INET6_ADDRSTRLEN];
|
||||
char *dflt, *p;
|
||||
FILE *f;
|
||||
char line[100U];
|
||||
|
||||
dflt=NULL;
|
||||
f = fopen("/proc/net/route" , "r");
|
||||
while(fgets(line , 100U , f)) {
|
||||
dflt = strtok(line , " \t");
|
||||
p = strtok(NULL , " \t");
|
||||
if(dflt!=NULL && p!=NULL) {
|
||||
if(strcmp(p , "00000000") == 0) { break; }
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
|
||||
|
||||
for(n=0;n<IFLISTSIZ;n++) {
|
||||
interfacelist[n][0]=0;
|
||||
}
|
||||
ifnr=0;
|
||||
if (getifaddrs(&ifaddr) == -1) {
|
||||
LogError("getifaddrs failure");
|
||||
} else {
|
||||
for (ifa = ifaddr, n = 0; ifa != NULL; ifa = ifa->ifa_next, n++) {
|
||||
if (ifa->ifa_addr == NULL) continue;
|
||||
family = ifa->ifa_addr->sa_family;
|
||||
if (family == AF_INET || family == AF_INET6) {
|
||||
s = getnameinfo(ifa->ifa_addr,(family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6), host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
|
||||
if (s != 0) {
|
||||
LogError("getnameinfo() failed: %s\n", gai_strerror(s));
|
||||
continue;
|
||||
}
|
||||
if (family == AF_INET) {
|
||||
sprintf(interfacelist[ifnr], "%s: %s", ifa->ifa_name,host);
|
||||
LogInfo(" IPv4: %s", interfacelist[ifnr] );
|
||||
} else {
|
||||
sprintf(interfacelist[ifnr], "%s: %s", ifa->ifa_name,host);
|
||||
LogInfo(" IPv6: %s", interfacelist[ifnr] );
|
||||
}
|
||||
ifnr++;
|
||||
}
|
||||
}
|
||||
freeifaddrs(ifaddr);
|
||||
|
||||
LogInfo(" Default interface is : %s" , dflt);
|
||||
|
||||
for(n=0;n<(ifnr);n++) {
|
||||
p=strchr(interfacelist[n],'%');
|
||||
if (p!=NULL) *p=0;
|
||||
if(strstr(interfacelist[n], dflt) != 0) {
|
||||
::strcpy((char*)info,interfacelist[n]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
LogInfo(" IP to show: %s", info );
|
||||
}
|
||||
#else
|
||||
PMIB_IPFORWARDTABLE pIpForwardTable;
|
||||
DWORD dwSize = 0;
|
||||
DWORD dwRetVal = 0;
|
||||
int i, ifnr;
|
||||
|
||||
pIpForwardTable = (MIB_IPFORWARDTABLE *)malloc(sizeof(MIB_IPFORWARDTABLE));
|
||||
if (pIpForwardTable == NULL) {
|
||||
LogError("Error allocating memory");
|
||||
return;
|
||||
}
|
||||
if (GetIpForwardTable(pIpForwardTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) {
|
||||
free(pIpForwardTable);
|
||||
pIpForwardTable = (MIB_IPFORWARDTABLE *)malloc(dwSize);
|
||||
if (pIpForwardTable == NULL) {
|
||||
LogError("Error allocating memory");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if ((dwRetVal = GetIpForwardTable(pIpForwardTable, &dwSize, 0)) == NO_ERROR) {
|
||||
for (i = 0; i < (int)pIpForwardTable->dwNumEntries; i++) {
|
||||
if (pIpForwardTable->table[i].dwForwardDest == 0) break;
|
||||
}
|
||||
ifnr = pIpForwardTable->table[i].dwForwardIfIndex;
|
||||
free(pIpForwardTable);
|
||||
|
||||
PIP_ADAPTER_INFO pAdapterInfo;
|
||||
pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));
|
||||
ULONG buflen = sizeof(IP_ADAPTER_INFO);
|
||||
|
||||
if (GetAdaptersInfo(pAdapterInfo, &buflen) == ERROR_BUFFER_OVERFLOW) {
|
||||
free(pAdapterInfo);
|
||||
pAdapterInfo = (IP_ADAPTER_INFO *)malloc(buflen);
|
||||
if (pAdapterInfo == NULL) {
|
||||
LogError("Error allocating memory");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (GetAdaptersInfo(pAdapterInfo, &buflen) == NO_ERROR) {
|
||||
PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
|
||||
while (pAdapter) {
|
||||
LogInfo(" IP : %s", pAdapter->IpAddressList.IpAddress.String);
|
||||
if (pAdapter->Index == ifnr) {
|
||||
::strcpy((char*)info, pAdapter->IpAddressList.IpAddress.String);
|
||||
}
|
||||
pAdapter = pAdapter->Next;
|
||||
}
|
||||
LogInfo(" IP to show: %s", info);
|
||||
|
||||
}
|
||||
else {
|
||||
LogError("Call to GetAdaptersInfo failed.");
|
||||
}
|
||||
return;
|
||||
}
|
||||
else {
|
||||
LogError("GetIpForwardTable failed.");
|
||||
free(pIpForwardTable);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -0,0 +1,213 @@
|
|||
/*
|
||||
* Copyright (C) 2017 by Lieven De Samblanx ON7LDS
|
||||
*
|
||||
* 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 "NetworkInfo.h"
|
||||
#include "Log.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
#include <clocale>
|
||||
|
||||
#include <sys/types.h>
|
||||
#if !defined(_WIN32) && !defined(_WIN64)
|
||||
#include <ifaddrs.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#else
|
||||
#include <ws2tcpip.h>
|
||||
#include <iphlpapi.h>
|
||||
#pragma comment(lib, "iphlpapi.lib")
|
||||
#ifndef NO_ERROR
|
||||
#define NO_ERROR 0
|
||||
#endif
|
||||
#ifndef ERROR_BUFFER_OVERFLOW
|
||||
#define ERROR_BUFFER_OVERFLOW 111
|
||||
#endif
|
||||
#ifndef ERROR_INSUFFICIENT_BUFFER
|
||||
#define ERROR_INSUFFICIENT_BUFFER 122
|
||||
#endif
|
||||
#endif
|
||||
|
||||
CNetworkInfo::CNetworkInfo()
|
||||
{
|
||||
}
|
||||
|
||||
CNetworkInfo::~CNetworkInfo()
|
||||
{
|
||||
}
|
||||
|
||||
void CNetworkInfo::getNetworkInterface(unsigned char* info)
|
||||
{
|
||||
LogInfo("Interfaces Info");
|
||||
|
||||
::strcpy((char*)info, "(address unknown)");
|
||||
|
||||
#if !defined(_WIN32) && !defined(_WIN64)
|
||||
const unsigned int IFLISTSIZ = 25U;
|
||||
|
||||
FILE* fp = ::fopen("/proc/net/route" , "r");
|
||||
if (fp == NULL) {
|
||||
LogError("Unabled to open /proc/route");
|
||||
return;
|
||||
}
|
||||
|
||||
char line[100U];
|
||||
while (::fgets(line, 100U, fp)) {
|
||||
char* dflt = strtok(line , " \t");
|
||||
char* p = strtok(NULL , " \t");
|
||||
|
||||
if (dflt != NULL && p != NULL) {
|
||||
if (::strcmp(p , "00000000") == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
::fclose(fp);
|
||||
|
||||
char interfacelist[IFLISTSIZ][50+INET6_ADDRSTRLEN];
|
||||
for (unsigned int n = 0U; n < IFLISTSIZ; n++)
|
||||
interfacelist[n][0] = 0;
|
||||
|
||||
struct ifaddrs* ifaddr;
|
||||
if (::getifaddrs(&ifaddr) == -1) {
|
||||
LogError("getifaddrs failure");
|
||||
return;
|
||||
}
|
||||
|
||||
unsigned int ifnr = 0U;
|
||||
for (struct ifaddrs* ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
|
||||
if (ifa->ifa_addr == NULL)
|
||||
continue;
|
||||
|
||||
int family = ifa->ifa_addr->sa_family;
|
||||
if (family == AF_INET || family == AF_INET6) {
|
||||
char host[NI_MAXHOST];
|
||||
int s = ::getnameinfo(ifa->ifa_addr, family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6), host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
|
||||
if (s != 0) {
|
||||
LogError("getnameinfo() failed: %s\n", gai_strerror(s));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (family == AF_INET) {
|
||||
::sprintf(interfacelist[ifnr], "%s: %s", ifa->ifa_name, host);
|
||||
LogInfo(" IPv4: %s", interfacelist[ifnr]);
|
||||
} else {
|
||||
::sprintf(interfacelist[ifnr], "%s: %s", ifa->ifa_name, host);
|
||||
LogInfo(" IPv6: %s", interfacelist[ifnr]);
|
||||
}
|
||||
|
||||
ifnr++;
|
||||
}
|
||||
}
|
||||
|
||||
::freeifaddrs(ifaddr);
|
||||
|
||||
LogInfo(" Default interface is : %s" , dflt);
|
||||
|
||||
for (unsigned int n = 0U; n < ifnr; n++) {
|
||||
char* p = ::strchr(interfacelist[n], '%');
|
||||
if (p != NULL)
|
||||
*p = 0;
|
||||
|
||||
if (::strstr(interfacelist[n], dflt) != 0) {
|
||||
::strcpy((char*)info, interfacelist[n]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
LogInfo(" IP to show: %s", info );
|
||||
#else
|
||||
PMIB_IPFORWARDTABLE pIpForwardTable = (MIB_IPFORWARDTABLE *)::malloc(sizeof(MIB_IPFORWARDTABLE));
|
||||
if (pIpForwardTable == NULL) {
|
||||
LogError("Error allocating memory");
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD dwSize = 0U;
|
||||
if (::GetIpForwardTable(pIpForwardTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) {
|
||||
::free(pIpForwardTable);
|
||||
pIpForwardTable = (MIB_IPFORWARDTABLE *)::malloc(dwSize);
|
||||
if (pIpForwardTable == NULL) {
|
||||
LogError("Error allocating memory");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
DWORD ret = ::GetIpForwardTable(pIpForwardTable, &dwSize, 0);
|
||||
if (ret != NO_ERROR) {
|
||||
::free(pIpForwardTable);
|
||||
LogError("GetIpForwardTable failed.");
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD found = 999U;
|
||||
for (DWORD i = 0U; i < pIpForwardTable->dwNumEntries; i++) {
|
||||
if (pIpForwardTable->table[i].dwForwardDest == 0U) {
|
||||
found = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (found == 999U) {
|
||||
::free(pIpForwardTable);
|
||||
LogError("Unable to find the default destination in the routing table.");
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD ifnr = pIpForwardTable->table[found].dwForwardIfIndex;
|
||||
::free(pIpForwardTable);
|
||||
|
||||
PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *)::malloc(sizeof(IP_ADAPTER_INFO));
|
||||
if (pAdapterInfo == NULL) {
|
||||
LogError("Error allocating memory");
|
||||
return;
|
||||
}
|
||||
|
||||
ULONG buflen = sizeof(IP_ADAPTER_INFO);
|
||||
if (::GetAdaptersInfo(pAdapterInfo, &buflen) == ERROR_BUFFER_OVERFLOW) {
|
||||
::free(pAdapterInfo);
|
||||
pAdapterInfo = (IP_ADAPTER_INFO *)::malloc(buflen);
|
||||
if (pAdapterInfo == NULL) {
|
||||
LogError("Error allocating memory");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (::GetAdaptersInfo(pAdapterInfo, &buflen) != NO_ERROR) {
|
||||
::free(pAdapterInfo);
|
||||
LogError("Call to GetAdaptersInfo failed.");
|
||||
return;
|
||||
}
|
||||
|
||||
PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
|
||||
while (pAdapter != NULL) {
|
||||
LogInfo(" IP : %s", pAdapter->IpAddressList.IpAddress.String);
|
||||
if (pAdapter->Index == ifnr)
|
||||
::strcpy((char*)info, pAdapter->IpAddressList.IpAddress.String);
|
||||
|
||||
pAdapter = pAdapter->Next;
|
||||
}
|
||||
|
||||
::free(pAdapterInfo);
|
||||
|
||||
LogInfo(" IP to show: %s", info);
|
||||
#endif
|
||||
}
|
|
@ -16,16 +16,17 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#if !defined(NETWORK_H)
|
||||
#define NETWORK_H
|
||||
|
||||
#if !defined(NETWORKINFO_H)
|
||||
#define NETWORKINFO_H
|
||||
|
||||
class CNetworkInfo {
|
||||
public:
|
||||
CNetworkInfo();
|
||||
~CNetworkInfo();
|
||||
|
||||
void getNetworkInterface(unsigned char* info);
|
||||
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif
|
93
Nextion.cpp
93
Nextion.cpp
|
@ -16,9 +16,9 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "NetworkInfo.h"
|
||||
#include "Nextion.h"
|
||||
#include "Log.h"
|
||||
#include "Network.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cassert>
|
||||
|
@ -243,16 +243,18 @@ void CNextion::writeDMRInt(unsigned int slotNo, const std::string& src, bool gro
|
|||
sendCommand("page DMR");
|
||||
|
||||
if (slotNo == 1U) {
|
||||
if (m_screenLayout==2U) {
|
||||
if (m_screenLayout == 2U) {
|
||||
sendCommand("t2.pco=0");
|
||||
sendCommand("t2.font=4");
|
||||
}
|
||||
|
||||
sendCommand("t2.txt=\"2 Listening\"");
|
||||
} else {
|
||||
if (m_screenLayout==2U) {
|
||||
if (m_screenLayout == 2U) {
|
||||
sendCommand("t0.pco=0");
|
||||
sendCommand("t0.font=4");
|
||||
}
|
||||
|
||||
sendCommand("t0.txt=\"1 Listening\"");
|
||||
}
|
||||
}
|
||||
|
@ -263,20 +265,24 @@ void CNextion::writeDMRInt(unsigned int slotNo, const std::string& src, bool gro
|
|||
|
||||
if (slotNo == 1U) {
|
||||
::sprintf(text, "t0.txt=\"1 %s %s\"", type, src.c_str());
|
||||
if (m_screenLayout==2U) {
|
||||
|
||||
if (m_screenLayout == 2U) {
|
||||
sendCommand("t0.pco=0");
|
||||
sendCommand("t0.font=4");
|
||||
}
|
||||
|
||||
sendCommand(text);
|
||||
|
||||
::sprintf(text, "t1.txt=\"%s%s\"", group ? "TG" : "", dst.c_str());
|
||||
sendCommand(text);
|
||||
} else {
|
||||
::sprintf(text, "t2.txt=\"2 %s %s\"", type, src.c_str());
|
||||
if (m_screenLayout==2U) {
|
||||
|
||||
if (m_screenLayout == 2U) {
|
||||
sendCommand("t2.pco=0");
|
||||
sendCommand("t2.font=4");
|
||||
}
|
||||
|
||||
sendCommand(text);
|
||||
|
||||
::sprintf(text, "t3.txt=\"%s%s\"", group ? "TG" : "", dst.c_str());
|
||||
|
@ -339,40 +345,49 @@ void CNextion::writeDMRRSSIInt(unsigned int slotNo, unsigned char rssi)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void CNextion::writeDMRTAInt(unsigned int slotNo, unsigned char* talkerAlias, const char* type)
|
||||
void CNextion::writeDMRTAInt(unsigned int slotNo, unsigned char* talkerAlias, const char* type)
|
||||
{
|
||||
char text[40U];
|
||||
if (m_screenLayout < 2U)
|
||||
return;
|
||||
|
||||
if (m_screenLayout<2U) return;
|
||||
|
||||
if (type[0]==' ') {
|
||||
if (slotNo == 1U) {
|
||||
sendCommand("t0.pco=33808");
|
||||
} else {
|
||||
sendCommand("t2.pco=33808");
|
||||
}
|
||||
return;
|
||||
if (type[0] == ' ') {
|
||||
if (slotNo == 1U)
|
||||
sendCommand("t0.pco=33808");
|
||||
else
|
||||
sendCommand("t2.pco=33808");
|
||||
return;
|
||||
}
|
||||
|
||||
if (slotNo == 1U) {
|
||||
::sprintf(text, "t0.txt=\"1 %s %s\"",type,talkerAlias);
|
||||
if (m_screenLayout==2U) {
|
||||
if (::strlen((char*)talkerAlias)>(16U-4U)) sendCommand("t0.font=3");
|
||||
if (::strlen((char*)talkerAlias)>(20U-4U)) sendCommand("t0.font=2");
|
||||
if (::strlen((char*)talkerAlias)>(24U-4U)) sendCommand("t0.font=1");
|
||||
}
|
||||
sendCommand("t0.pco=1024");
|
||||
sendCommand(text);
|
||||
} else {
|
||||
::sprintf(text, "t2.txt=\"2 %s %s\"",type,talkerAlias);
|
||||
if (m_screenLayout==2U) {
|
||||
if (::strlen((char*)talkerAlias)>(16U-4U)) sendCommand("t2.font=3");
|
||||
if (::strlen((char*)talkerAlias)>(20U-4U)) sendCommand("t2.font=2");
|
||||
if (::strlen((char*)talkerAlias)>(24U-4U)) sendCommand("t2.font=1");
|
||||
}
|
||||
sendCommand("t2.pco=1024");
|
||||
sendCommand(text);
|
||||
if (slotNo == 1U) {
|
||||
char text[40U];
|
||||
::sprintf(text, "t0.txt=\"1 %s %s\"", type, talkerAlias);
|
||||
|
||||
if (m_screenLayout == 2U) {
|
||||
if (::strlen((char*)talkerAlias) > (16U-4U))
|
||||
sendCommand("t0.font=3");
|
||||
if (::strlen((char*)talkerAlias) > (20U-4U))
|
||||
sendCommand("t0.font=2");
|
||||
if (::strlen((char*)talkerAlias) > (24U-4U))
|
||||
sendCommand("t0.font=1");
|
||||
}
|
||||
|
||||
sendCommand("t0.pco=1024");
|
||||
sendCommand(text);
|
||||
} else {
|
||||
char text[40U];
|
||||
::sprintf(text, "t2.txt=\"2 %s %s\"", type, talkerAlias);
|
||||
|
||||
if (m_screenLayout == 2U) {
|
||||
if (::strlen((char*)talkerAlias) > (16U-4U))
|
||||
sendCommand("t2.font=3");
|
||||
if (::strlen((char*)talkerAlias) > (20U-4U))
|
||||
sendCommand("t2.font=2");
|
||||
if (::strlen((char*)talkerAlias) > (24U-4U))
|
||||
sendCommand("t2.font=1");
|
||||
}
|
||||
|
||||
sendCommand("t2.pco=1024");
|
||||
sendCommand(text);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -423,19 +438,23 @@ void CNextion::clearDMRInt(unsigned int slotNo)
|
|||
{
|
||||
if (slotNo == 1U) {
|
||||
sendCommand("t0.txt=\"1 Listening\"");
|
||||
if (m_screenLayout==2U) {
|
||||
|
||||
if (m_screenLayout == 2U) {
|
||||
sendCommand("t0.pco=0");
|
||||
sendCommand("t0.font=4");
|
||||
}
|
||||
|
||||
sendCommand("t1.txt=\"\"");
|
||||
sendCommand("t4.txt=\"\"");
|
||||
sendCommand("t6.txt=\"\"");
|
||||
} else {
|
||||
sendCommand("t2.txt=\"2 Listening\"");
|
||||
if (m_screenLayout==2U) {
|
||||
|
||||
if (m_screenLayout == 2U) {
|
||||
sendCommand("t2.pco=0");
|
||||
sendCommand("t2.font=4");
|
||||
}
|
||||
|
||||
sendCommand("t3.txt=\"\"");
|
||||
sendCommand("t5.txt=\"\"");
|
||||
sendCommand("t7.txt=\"\"");
|
||||
|
|
Loading…
Reference in New Issue