diff --git a/DMRGateway.cpp b/DMRGateway.cpp index 692702d..7d96b89 100644 --- a/DMRGateway.cpp +++ b/DMRGateway.cpp @@ -367,7 +367,7 @@ int CDMRGateway::run() writeXLXLink(m_xlxId, m_xlxRoom, m_xlxNetwork); LogMessage("XLX, Linking to reflector %u in XLX%03u", m_xlxRoom, m_xlxNumber); if (voice != NULL) - voice->linkedTo(m_xlxRoom); + voice->linkedTo(m_xlxNumber, m_xlxRoom); } m_xlxReflector = m_xlxRoom; @@ -405,7 +405,7 @@ int CDMRGateway::run() if (m_xlxReflector == 4000U) voice->unlinked(); else - voice->linkedTo(m_xlxStartup); + voice->linkedTo(m_xlxNumber, m_xlxReflector); } } } @@ -437,7 +437,7 @@ int CDMRGateway::run() LogMessage("XLX, Unlinking from reflector %u in XLX%03u", m_xlxRoom, m_xlxNumber); } else if (dstId == 5000U) { if (m_xlxReflector != 4000U) - voice->linkedTo(m_xlxReflector); + voice->linkedTo(m_xlxNumber, m_xlxReflector); else voice->unlinked(); } else { @@ -469,7 +469,7 @@ int CDMRGateway::run() if (m_xlxReflector == 4000U) voice->unlinked(); else - voice->linkedTo(m_xlxReflector); + voice->linkedTo(m_xlxNumber, m_xlxReflector); changed = false; } } diff --git a/Voice.cpp b/Voice.cpp index 6203d24..6fd5860 100644 --- a/Voice.cpp +++ b/Voice.cpp @@ -171,17 +171,18 @@ bool CVoice::open() return true; } -void CVoice::linkedTo(unsigned int id) +void CVoice::linkedTo(unsigned int number, unsigned int room) { - char number[10U]; - ::sprintf(number, "%04u", id); + char letters[10U]; + ::sprintf(letters, "%03u%02u", number, room % 100U); std::vector words; words.push_back(POSITION_CONNECTED); - words.push_back(number[0U] - '0'); - words.push_back(number[1U] - '0'); - words.push_back(number[2U] - '0'); - words.push_back(number[3U] - '0'); + words.push_back(letters[0U] - '0'); + words.push_back(letters[1U] - '0'); + words.push_back(letters[2U] - '0'); + words.push_back(letters[3U] - '0'); + words.push_back(letters[4U] - '0'); createVoice(words); } diff --git a/Voice.h b/Voice.h index 3280955..8d789a5 100644 --- a/Voice.h +++ b/Voice.h @@ -46,7 +46,7 @@ public: bool open(); - void linkedTo(unsigned int id); + void linkedTo(unsigned int number, unsigned int room); void unlinked(); bool read(CDMRData& data);