mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 23:45:49 +08:00
Don't alter CSD2 for gateway data.
This commit is contained in:
@@ -428,19 +428,19 @@ void CYSFControl::writeNetwork()
|
|||||||
case YSF_FI_COMMUNICATIONS:
|
case YSF_FI_COMMUNICATIONS:
|
||||||
switch (dt) {
|
switch (dt) {
|
||||||
case YSF_DT_VD_MODE1:
|
case YSF_DT_VD_MODE1:
|
||||||
m_netPayload.processVDMode1Data(data + 35U, fn);
|
m_netPayload.processVDMode1Data(data + 35U, fn, gateway);
|
||||||
m_netErrs += m_netPayload.processVDMode1Audio(data + 35U);
|
m_netErrs += m_netPayload.processVDMode1Audio(data + 35U);
|
||||||
m_netBits += 235U;
|
m_netBits += 235U;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case YSF_DT_VD_MODE2:
|
case YSF_DT_VD_MODE2:
|
||||||
m_netPayload.processVDMode2Data(data + 35U, fn);
|
m_netPayload.processVDMode2Data(data + 35U, fn, gateway);
|
||||||
m_netErrs += m_netPayload.processVDMode2Audio(data + 35U);
|
m_netErrs += m_netPayload.processVDMode2Audio(data + 35U);
|
||||||
m_netBits += 135U;
|
m_netBits += 135U;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case YSF_DT_DATA_FR_MODE:
|
case YSF_DT_DATA_FR_MODE:
|
||||||
m_netPayload.processDataFRModeData(data + 35U, fn);
|
m_netPayload.processDataFRModeData(data + 35U, fn, gateway);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case YSF_DT_VOICE_FR_MODE:
|
case YSF_DT_VOICE_FR_MODE:
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ unsigned int CYSFPayload::processVDMode1Audio(unsigned char* data)
|
|||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CYSFPayload::processVDMode1Data(unsigned char* data, unsigned char fn)
|
bool CYSFPayload::processVDMode1Data(unsigned char* data, unsigned char fn, bool gateway)
|
||||||
{
|
{
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
|
|
||||||
@@ -319,10 +319,10 @@ bool CYSFPayload::processVDMode1Data(unsigned char* data, unsigned char fn)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 1U:
|
case 1U:
|
||||||
if (m_downlink != NULL)
|
if (m_downlink != NULL && !gateway)
|
||||||
::memcpy(output + 0U, m_downlink, YSF_CALLSIGN_LENGTH);
|
::memcpy(output + 0U, m_downlink, YSF_CALLSIGN_LENGTH);
|
||||||
|
|
||||||
if (m_uplink != NULL)
|
if (m_uplink != NULL && !gateway)
|
||||||
::memcpy(output + YSF_CALLSIGN_LENGTH, m_uplink, YSF_CALLSIGN_LENGTH);
|
::memcpy(output + YSF_CALLSIGN_LENGTH, m_uplink, YSF_CALLSIGN_LENGTH);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -450,7 +450,7 @@ unsigned int CYSFPayload::processVDMode2Audio(unsigned char* data)
|
|||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CYSFPayload::processVDMode2Data(unsigned char* data, unsigned char fn)
|
bool CYSFPayload::processVDMode2Data(unsigned char* data, unsigned char fn, bool gateway)
|
||||||
{
|
{
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
|
|
||||||
@@ -502,12 +502,12 @@ bool CYSFPayload::processVDMode2Data(unsigned char* data, unsigned char fn)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 2U:
|
case 2U:
|
||||||
if (m_downlink != NULL)
|
if (m_downlink != NULL && !gateway)
|
||||||
::memcpy(output, m_downlink, YSF_CALLSIGN_LENGTH);
|
::memcpy(output, m_downlink, YSF_CALLSIGN_LENGTH);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3U:
|
case 3U:
|
||||||
if (m_uplink != NULL)
|
if (m_uplink != NULL && !gateway)
|
||||||
::memcpy(output, m_uplink, YSF_CALLSIGN_LENGTH);
|
::memcpy(output, m_uplink, YSF_CALLSIGN_LENGTH);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -560,7 +560,7 @@ bool CYSFPayload::processVDMode2Data(unsigned char* data, unsigned char fn)
|
|||||||
return ret && (fn == 0U || fn == 1U);
|
return ret && (fn == 0U || fn == 1U);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CYSFPayload::processDataFRModeData(unsigned char* data, unsigned char fn)
|
bool CYSFPayload::processDataFRModeData(unsigned char* data, unsigned char fn, bool gateway)
|
||||||
{
|
{
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
|
|
||||||
@@ -708,10 +708,10 @@ bool CYSFPayload::processDataFRModeData(unsigned char* data, unsigned char fn)
|
|||||||
case 0U:
|
case 0U:
|
||||||
CUtils::dump(1U, "FR Mode Data, CSD2", output, 20U);
|
CUtils::dump(1U, "FR Mode Data, CSD2", output, 20U);
|
||||||
|
|
||||||
if (m_downlink != NULL)
|
if (m_downlink != NULL && !gateway)
|
||||||
::memcpy(output + 0U, m_downlink, YSF_CALLSIGN_LENGTH);
|
::memcpy(output + 0U, m_downlink, YSF_CALLSIGN_LENGTH);
|
||||||
|
|
||||||
if (m_uplink != NULL)
|
if (m_uplink != NULL && !gateway)
|
||||||
::memcpy(output + YSF_CALLSIGN_LENGTH, m_uplink, YSF_CALLSIGN_LENGTH);
|
::memcpy(output + YSF_CALLSIGN_LENGTH, m_uplink, YSF_CALLSIGN_LENGTH);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -30,13 +30,13 @@ public:
|
|||||||
|
|
||||||
bool processHeaderData(unsigned char* bytes);
|
bool processHeaderData(unsigned char* bytes);
|
||||||
|
|
||||||
bool processVDMode1Data(unsigned char* bytes, unsigned char fn);
|
bool processVDMode1Data(unsigned char* bytes, unsigned char fn, bool gateway = false);
|
||||||
unsigned int processVDMode1Audio(unsigned char* bytes);
|
unsigned int processVDMode1Audio(unsigned char* bytes);
|
||||||
|
|
||||||
bool processVDMode2Data(unsigned char* bytes, unsigned char fn);
|
bool processVDMode2Data(unsigned char* bytes, unsigned char fn, bool gateway = false);
|
||||||
unsigned int processVDMode2Audio(unsigned char* bytes);
|
unsigned int processVDMode2Audio(unsigned char* bytes);
|
||||||
|
|
||||||
bool processDataFRModeData(unsigned char* bytes, unsigned char fn);
|
bool processDataFRModeData(unsigned char* bytes, unsigned char fn, bool gateway = false);
|
||||||
|
|
||||||
unsigned int processVoiceFRModeAudio(unsigned char* bytes);
|
unsigned int processVoiceFRModeAudio(unsigned char* bytes);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user