Change the voice to include the XLX number.

This commit is contained in:
Jonathan Naylor
2017-08-22 09:13:27 +01:00
parent aec4a08e46
commit a379d2447e
3 changed files with 13 additions and 12 deletions

View File

@@ -367,7 +367,7 @@ int CDMRGateway::run()
writeXLXLink(m_xlxId, m_xlxRoom, m_xlxNetwork); writeXLXLink(m_xlxId, m_xlxRoom, m_xlxNetwork);
LogMessage("XLX, Linking to reflector %u in XLX%03u", m_xlxRoom, m_xlxNumber); LogMessage("XLX, Linking to reflector %u in XLX%03u", m_xlxRoom, m_xlxNumber);
if (voice != NULL) if (voice != NULL)
voice->linkedTo(m_xlxRoom); voice->linkedTo(m_xlxNumber, m_xlxRoom);
} }
m_xlxReflector = m_xlxRoom; m_xlxReflector = m_xlxRoom;
@@ -405,7 +405,7 @@ int CDMRGateway::run()
if (m_xlxReflector == 4000U) if (m_xlxReflector == 4000U)
voice->unlinked(); voice->unlinked();
else 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); LogMessage("XLX, Unlinking from reflector %u in XLX%03u", m_xlxRoom, m_xlxNumber);
} else if (dstId == 5000U) { } else if (dstId == 5000U) {
if (m_xlxReflector != 4000U) if (m_xlxReflector != 4000U)
voice->linkedTo(m_xlxReflector); voice->linkedTo(m_xlxNumber, m_xlxReflector);
else else
voice->unlinked(); voice->unlinked();
} else { } else {
@@ -469,7 +469,7 @@ int CDMRGateway::run()
if (m_xlxReflector == 4000U) if (m_xlxReflector == 4000U)
voice->unlinked(); voice->unlinked();
else else
voice->linkedTo(m_xlxReflector); voice->linkedTo(m_xlxNumber, m_xlxReflector);
changed = false; changed = false;
} }
} }

View File

@@ -171,17 +171,18 @@ bool CVoice::open()
return true; return true;
} }
void CVoice::linkedTo(unsigned int id) void CVoice::linkedTo(unsigned int number, unsigned int room)
{ {
char number[10U]; char letters[10U];
::sprintf(number, "%04u", id); ::sprintf(letters, "%03u%02u", number, room % 100U);
std::vector<unsigned int> words; std::vector<unsigned int> words;
words.push_back(POSITION_CONNECTED); words.push_back(POSITION_CONNECTED);
words.push_back(number[0U] - '0'); words.push_back(letters[0U] - '0');
words.push_back(number[1U] - '0'); words.push_back(letters[1U] - '0');
words.push_back(number[2U] - '0'); words.push_back(letters[2U] - '0');
words.push_back(number[3U] - '0'); words.push_back(letters[3U] - '0');
words.push_back(letters[4U] - '0');
createVoice(words); createVoice(words);
} }

View File

@@ -46,7 +46,7 @@ public:
bool open(); bool open();
void linkedTo(unsigned int id); void linkedTo(unsigned int number, unsigned int room);
void unlinked(); void unlinked();
bool read(CDMRData& data); bool read(CDMRData& data);