Files
pilotclient/src/blackcore/afv/audio/callsigndelaycache.cpp
Klaus Basan 384aa3ce19 Ref T730, namespace for BlackCore::Afv
* added namespace
* removed some *.pri files and added files to blackcore.pro
* added copyright etc.
2019-10-11 18:59:02 +01:00

83 lines
2.7 KiB
C++

/* Copyright (C) 2019
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
#include "callsigndelaycache.h"
namespace BlackCore
{
namespace Afv
{
namespace Audio
{
void CallsignDelayCache::initialise(const QString &callsign)
{
if (!m_delayCache.contains(callsign)) { m_delayCache[callsign] = delayDefault; }
if (!successfulTransmissionsCache.contains(callsign)) { successfulTransmissionsCache[callsign] = 0; }
}
int CallsignDelayCache::get(const QString &callsign)
{
return m_delayCache[callsign];
}
void CallsignDelayCache::underflow(const QString &callsign)
{
if (!successfulTransmissionsCache.contains(callsign))
return;
successfulTransmissionsCache[callsign] = 0;
increaseDelayMs(callsign);
}
void CallsignDelayCache::success(const QString &callsign)
{
if (!successfulTransmissionsCache.contains(callsign))
return;
successfulTransmissionsCache[callsign]++;
if (successfulTransmissionsCache[callsign] > 5)
{
decreaseDelayMs(callsign);
successfulTransmissionsCache[callsign] = 0;
}
}
void CallsignDelayCache::increaseDelayMs(const QString &callsign)
{
if (!m_delayCache.contains(callsign))
return;
m_delayCache[callsign] += delayIncrement;
if (m_delayCache[callsign] > delayMax)
{
m_delayCache[callsign] = delayMax;
}
}
void CallsignDelayCache::decreaseDelayMs(const QString &callsign)
{
if (!m_delayCache.contains(callsign))
return;
m_delayCache[callsign] -= delayIncrement;
if (m_delayCache[callsign] < delayMin)
{
m_delayCache[callsign] = delayMin;
}
}
CallsignDelayCache &CallsignDelayCache::instance()
{
static CallsignDelayCache cache;
return cache;
}
} // ns
} // ns
} // ns