Compare commits

...

4 commits

Author SHA1 Message Date
Jonathan Naylor 3cccc40d3f Merge branch 'pocsag' into pocsag_test 2018-07-04 21:51:55 +01:00
Jonathan Naylor a04d3a9825 Merge branch 'master' into pocsag_test 2018-07-04 19:04:26 +01:00
Jonathan Naylor 6e614560fa Merge branch 'pocsag' into pocsag_test 2018-06-28 07:08:58 +01:00
Jonathan Naylor 1bfd30a91d Debug version of the host for POCSAG testing. 2018-06-27 20:57:28 +01:00
3 changed files with 15 additions and 4 deletions

View file

@ -698,6 +698,8 @@ void CModem::clock(unsigned int ms)
m_txPOCSAGData.getData(&len, 1U);
m_txPOCSAGData.getData(m_buffer, len);
LogMessage("POCSAG, sending message %u", m_buffer[3U]);
if (m_trace)
CUtils::dump(1U, "TX POCSAG Data", m_buffer, len);
@ -1049,6 +1051,8 @@ bool CModem::writePOCSAGData(const unsigned char* data, unsigned int length)
::memcpy(buffer + 3U, data, length);
LogMessage("POCSAG, queueing message %u", buffer[3U]);
unsigned char len = length + 3U; // XXX Check lengths
m_txPOCSAGData.addData(&len, 1U);
m_txPOCSAGData.addData(buffer, len);

View file

@ -67,7 +67,8 @@ m_buffer(),
m_ric(0U),
m_text(),
m_state(PS_NONE),
m_fp(NULL)
m_fp(NULL),
m_sequence(0U)
{
assert(display != NULL);
}
@ -312,8 +313,13 @@ void CPOCSAGControl::addBCHAndParity(uint32_t& word) const
void CPOCSAGControl::writeQueue()
{
// Convert 32-bit words to bytes
unsigned char data[POCSAG_FRAME_LENGTH_BYTES];
unsigned char len = 0U;
unsigned char data[POCSAG_FRAME_LENGTH_BYTES + 1U];
data[0U] = m_sequence++;
LogMessage("POCSAG, creating message %u", data[0U]);
unsigned char len = 1U;
for (std::deque<uint32_t>::const_iterator it = m_output.cbegin(); it != m_output.cend(); ++it) {
uint32_t word = *it;
@ -331,7 +337,7 @@ void CPOCSAGControl::writeQueue()
CUtils::dump(1U, "Data to MMDVM", data, len);
assert(len == POCSAG_FRAME_LENGTH_BYTES);
assert(len == (POCSAG_FRAME_LENGTH_BYTES + 1U));
unsigned int space = m_queue.freeSpace();
if (space < (len + 1U)) {

View file

@ -59,6 +59,7 @@ private:
std::string m_text;
POCSAG_STATE m_state;
FILE* m_fp;
uint8_t m_sequence;
bool processData();
void writeQueue();