Add DMR calibration.

This commit is contained in:
Jonathan Naylor 2016-04-14 17:42:38 +01:00
parent 8bfff17ace
commit 51f26b1330
13 changed files with 184 additions and 46 deletions

View file

@ -1,5 +1,6 @@
/*
* Copyright (C) 2009-2016 by Jonathan Naylor G4KLX
* Copyright (C) 2016 by Colin Durbridge G4EML
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -97,7 +98,11 @@ void CDMRTX::process()
createData(1U);
m_state = DMRTXSTATE_CACH1;
break;
case DMRTXSTATE_CAL:
createCal();
break;
default:
createCACH(0U, 1U);
m_state = DMRTXSTATE_SLOT1;
@ -193,6 +198,13 @@ void CDMRTX::setStart(bool start)
m_count = 0U;
}
void CDMRTX::setCal(bool start)
{
m_state = start ? DMRTXSTATE_CAL : DMRTXSTATE_IDLE;
m_count = 0U;
}
void CDMRTX::writeByte(uint8_t c, uint8_t control)
{
q15_t inBuffer[DMR_RADIO_SYMBOL_LENGTH * 4U + 1U];
@ -279,6 +291,17 @@ void CDMRTX::createData(uint8_t slotIndex)
m_poPtr = 0U;
}
void CDMRTX::createCal()
{
for (unsigned int i = 0U; i < DMR_FRAME_LENGTH_BYTES; i++) {
m_poBuffer[i] = 0x5FU; // +3, +3, -3, -3 pattern for deviation cal.
m_markBuffer[i] = MARK_NONE;
}
m_poLen = DMR_FRAME_LENGTH_BYTES;
m_poPtr = 0U;
}
void CDMRTX::createCACH(uint8_t txSlotIndex, uint8_t rxSlotIndex)
{
if (m_cachPtr >= 12U)