mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-29 06:25:41 +08:00
Reformat code and make small alterations.
This commit is contained in:
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()
|
||||
|
||||
Reference in New Issue
Block a user