refactor how the P25 tx hang (tail) was handled, do not transmit sync instead transmit silence;

usb-support 2022-05-07
Bryan Biedenkapp 4 years ago
parent 40992342a2
commit 00e72d9629

@ -48,6 +48,7 @@ P25TX::P25TX() :
m_poLen(0U),
m_poPtr(0U),
m_preambleCnt(P25_FIXED_DELAY),
m_txHang(P25_FIXED_TX_HANG),
m_tailCnt(0U)
{
/* stub */
@ -64,7 +65,7 @@ void P25TX::process()
uint16_t space = io.getSpace();
while (space > 8U) {
writeByte(P25_START_SYNC);
writeSilence();
space -= 8U;
m_tailCnt--;
@ -105,7 +106,7 @@ void P25TX::process()
writeByte(c);
space -= 8U;
m_tailCnt = P25_FIXED_TAIL;
m_tailCnt = m_txHang;
if (m_poPtr >= m_poLen) {
m_poPtr = 0U;
@ -155,14 +156,29 @@ void P25TX::clear()
/// <param name="preambleCnt">Count of preambles.</param>
void P25TX::setPreambleCount(uint8_t preambleCnt)
{
uint32_t preambles = (uint32_t)((float)preambleCnt / 0.2083F);
m_preambleCnt = P25_FIXED_DELAY + preambles;
m_preambleCnt = P25_FIXED_DELAY + preambleCnt;
// clamp preamble count to 250ms maximum
if (m_preambleCnt > 1200U)
m_preambleCnt = 1200U;
}
/// <summary>
/// Sets the Tx hang time.
/// </summary>
/// <param name="txHang">Transmit hang time in seconds.</param>
void P25TX::setTxHang(uint8_t txHang)
{
if (txHang > 0U)
m_txHang = txHang * 1200U;
else
m_txHang = P25_FIXED_TX_HANG;
// clamp tx hang count to 13s maximum
if (txHang > 13U)
m_txHang = 13U * 1200U;
}
/// <summary>
/// Helper to set the calibration state for Tx.
/// </summary>

@ -41,9 +41,8 @@ namespace p25
// Constants
// ---------------------------------------------------------------------------
#define P25_FIXED_DELAY 300 // 300 = 62.49ms
// Delay Value * 0.2083 = Preamble Length (ms)
#define P25_FIXED_TAIL 600 // 600 = 500ms
#define P25_FIXED_DELAY 90 // 90 = 20ms
#define P25_FIXED_TX_HANG 750 // 750 = 625ms
enum P25TXSTATE {
P25TXSTATE_NORMAL,
@ -71,6 +70,8 @@ namespace p25
/// <summary>Sets the FDMA preamble count.</summary>
void setPreambleCount(uint8_t preambleCnt);
/// <summary>Sets the transmit hang time.</summary>
void setTxHang(uint8_t txHang);
/// <summary>Helper to set the calibration state for Tx.</summary>
void setCal(bool start);
@ -87,7 +88,8 @@ namespace p25
uint16_t m_poPtr;
uint16_t m_preambleCnt;
uint16_t m_tailCnt;
uint32_t m_txHang;
uint32_t m_tailCnt;
/// <summary></summary>
void createData();

Loading…
Cancel
Save

Powered by TurnKey Linux.