You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
6.1 KiB
170 lines
6.1 KiB
// SPDX-License-Identifier: GPL-2.0-only
|
|
/**
|
|
* Digital Voice Modem - Modem Host Software
|
|
* GPLv2 Open Source. Use is subject to license terms.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* @package DVM / Modem Host Software
|
|
* @license GPLv2 License (https://opensource.org/licenses/GPL-2.0)
|
|
*
|
|
* Copyright (C) 2023 Bryan Biedenkapp, N2PLL
|
|
*
|
|
*/
|
|
#if !defined(__SYMB_LEVEL_ADJUST_WND_H__)
|
|
#define __SYMB_LEVEL_ADJUST_WND_H__
|
|
|
|
#include "common/Thread.h"
|
|
#include "setup/HostSetup.h"
|
|
|
|
#include "setup/AdjustWndBase.h"
|
|
|
|
#include <final/final.h>
|
|
using namespace finalcut;
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Class Declaration
|
|
// This class implements the symbol level adjustment window.
|
|
// ---------------------------------------------------------------------------
|
|
|
|
class HOST_SW_API SymbLevelAdjustWnd final : public AdjustWndBase {
|
|
public:
|
|
/// <summary>
|
|
/// Initializes a new instance of the SymbLevelAdjustWnd class.
|
|
/// </summary>
|
|
/// <param name="setup"></param>
|
|
/// <param name="widget"></param>
|
|
explicit SymbLevelAdjustWnd(HostSetup* setup, FWidget* widget = nullptr) : AdjustWndBase{setup, widget}
|
|
{
|
|
/* stub */
|
|
}
|
|
|
|
private:
|
|
FLabel m_symbLevelLabel{"Symbol Levels", this};
|
|
FLabel m_dmr3LevelLabel{"DMR +/- 3 Symbol Level: ", this};
|
|
FLabel m_dmr1LevelLabel{"DMR +/- 1 Symbol Level: ", this};
|
|
FLabel m_p253LevelLabel{"P25 +/- 3 Symbol Level: ", this};
|
|
FLabel m_p251LevelLabel{"P25 +/- 1 Symbol Level: ", this};
|
|
FLabel m_nxdn3LevelLabel{"NXDN +/- 3 Symbol Level: ", this};
|
|
FLabel m_nxdn1LevelLabel{"NXDN +/- 1 Symbol Level: ", this};
|
|
|
|
FSpinBox m_dmr3Level{this};
|
|
FSpinBox m_dmr1Level{this};
|
|
FSpinBox m_p253Level{this};
|
|
FSpinBox m_p251Level{this};
|
|
FSpinBox m_nxdn3Level{this};
|
|
FSpinBox m_nxdn1Level{this};
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
void initLayout() override
|
|
{
|
|
FDialog::setText("Symbol Level Adjustment");
|
|
FDialog::setSize(FSize{60, 16});
|
|
|
|
AdjustWndBase::initLayout();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
void initControls() override
|
|
{
|
|
// symbol levels
|
|
{
|
|
m_symbLevelLabel.setGeometry(FPoint(2, 1), FSize(20, 2));
|
|
m_symbLevelLabel.setEmphasis();
|
|
m_symbLevelLabel.setAlignment(Align::Center);
|
|
|
|
m_dmr3LevelLabel.setGeometry(FPoint(2, 3), FSize(25, 1));
|
|
m_dmr3Level.setGeometry(FPoint(28, 3), FSize(10, 1));
|
|
m_dmr3Level.setRange(-127, 127);
|
|
m_dmr3Level.setValue(m_setup->m_modem->m_dmrSymLevel3Adj);
|
|
m_dmr3Level.setShadow(false);
|
|
m_dmr3Level.addCallback("changed", [&]() {
|
|
m_setup->m_modem->m_dmrSymLevel3Adj = m_dmr3Level.getValue();
|
|
Thread::sleep(2);
|
|
m_setup->writeConfig();
|
|
});
|
|
|
|
m_dmr1LevelLabel.setGeometry(FPoint(2, 4), FSize(25, 1));
|
|
m_dmr1Level.setGeometry(FPoint(28, 4), FSize(10, 1));
|
|
m_dmr1Level.setRange(-127, 127);
|
|
m_dmr1Level.setValue(m_setup->m_modem->m_dmrSymLevel1Adj);
|
|
m_dmr1Level.setShadow(false);
|
|
m_dmr1Level.addCallback("changed", [&]() {
|
|
m_setup->m_modem->m_dmrSymLevel1Adj = m_dmr1Level.getValue();
|
|
Thread::sleep(2);
|
|
m_setup->writeConfig();
|
|
});
|
|
|
|
m_p253LevelLabel.setGeometry(FPoint(2, 5), FSize(25, 1));
|
|
m_p253Level.setGeometry(FPoint(28, 5), FSize(10, 1));
|
|
m_p253Level.setRange(-127, 127);
|
|
m_p253Level.setValue(m_setup->m_modem->m_p25SymLevel3Adj);
|
|
m_p253Level.setShadow(false);
|
|
m_p253Level.addCallback("changed", [&]() {
|
|
m_setup->m_modem->m_p25SymLevel3Adj = m_p253Level.getValue();
|
|
Thread::sleep(2);
|
|
m_setup->writeConfig();
|
|
});
|
|
|
|
m_p251LevelLabel.setGeometry(FPoint(2, 6), FSize(25, 1));
|
|
m_p251Level.setGeometry(FPoint(28, 6), FSize(10, 1));
|
|
m_p251Level.setRange(-127, 127);
|
|
m_p251Level.setValue(m_setup->m_modem->m_p25SymLevel1Adj);
|
|
m_p251Level.setShadow(false);
|
|
m_p251Level.addCallback("changed", [&]() {
|
|
m_setup->m_modem->m_p25SymLevel1Adj = m_p251Level.getValue();
|
|
Thread::sleep(2);
|
|
m_setup->writeConfig();
|
|
});
|
|
|
|
m_nxdn3LevelLabel.setGeometry(FPoint(2, 7), FSize(25, 1));
|
|
m_nxdn3Level.setGeometry(FPoint(28, 7), FSize(10, 1));
|
|
m_nxdn3Level.setRange(-127, 127);
|
|
m_nxdn3Level.setValue(m_setup->m_modem->m_nxdnSymLevel3Adj);
|
|
m_nxdn3Level.setShadow(false);
|
|
m_nxdn3Level.addCallback("changed", [&]() {
|
|
m_setup->m_modem->m_nxdnSymLevel3Adj = m_nxdn3Level.getValue();
|
|
Thread::sleep(2);
|
|
m_setup->writeConfig();
|
|
});
|
|
|
|
m_nxdn1LevelLabel.setGeometry(FPoint(2, 8), FSize(25, 1));
|
|
m_nxdn1Level.setGeometry(FPoint(28, 8), FSize(10, 1));
|
|
m_nxdn1Level.setRange(-127, 127);
|
|
m_nxdn1Level.setValue(m_setup->m_modem->m_nxdnSymLevel1Adj);
|
|
m_nxdn1Level.setShadow(false);
|
|
m_nxdn1Level.addCallback("changed", [&]() {
|
|
m_setup->m_modem->m_nxdnSymLevel1Adj = m_nxdn1Level.getValue();
|
|
Thread::sleep(2);
|
|
m_setup->writeConfig();
|
|
});
|
|
}
|
|
|
|
// setup control states
|
|
if (m_setup->m_isConnected) {
|
|
if (m_setup->m_modem->m_isHotspot) {
|
|
m_dmr3Level.setDisable();
|
|
m_dmr1Level.setDisable();
|
|
m_p253Level.setDisable();
|
|
m_p251Level.setDisable();
|
|
m_nxdn3Level.setDisable();
|
|
m_nxdn1Level.setDisable();
|
|
}
|
|
else {
|
|
m_dmr3Level.setEnable();
|
|
m_dmr1Level.setEnable();
|
|
m_p253Level.setEnable();
|
|
m_p251Level.setEnable();
|
|
m_nxdn3Level.setEnable();
|
|
m_nxdn1Level.setEnable();
|
|
}
|
|
}
|
|
|
|
AdjustWndBase::initControls();
|
|
}
|
|
};
|
|
|
|
#endif // __SYMB_LEVEL_ADJUST_WND_H__
|