Fix underflow bug when transmitting POCSAG data.

This commit is contained in:
Jonathan Naylor 2018-06-18 21:49:38 +01:00
parent 5cf86578fc
commit 282bffb3c4

View file

@ -164,14 +164,6 @@ void CPOCSAGControl::clock(unsigned int ms)
m_output.push_back(POCSAG_IDLE_WORD);
}
} else if (m_state == PS_SENDING) {
uint32_t w1 = m_buffer.front();
m_buffer.pop_front();
uint32_t w2 = m_buffer.front();
m_buffer.pop_front();
m_output.push_back(w1);
m_output.push_back(w2);
if (m_buffer.empty()) {
bool ret = processData();
if (ret) {
@ -181,6 +173,25 @@ void CPOCSAGControl::clock(unsigned int ms)
} else {
m_state = PS_ENDING;
}
} else {
uint32_t w1 = m_buffer.front();
m_buffer.pop_front();
uint32_t w2 = m_buffer.front();
m_buffer.pop_front();
m_output.push_back(w1);
m_output.push_back(w2);
if (m_buffer.empty()) {
bool ret = processData();
if (ret) {
m_display->writePOCSAG(m_ric, m_text);
m_state = PS_WAITING;
m_count++;
} else {
m_state = PS_ENDING;
}
}
}
} else { // PS_ENDING
m_output.push_back(POCSAG_IDLE_WORD);