mirror of
https://github.com/eried/portapack-mayhem.git
synced 2025-08-09 07:02:26 -04:00
Microphone tx is mostly working, Voice activation, PTT, CTCSS...
Transmit bandwidth bugfix TX LED is now only lit when using rf amp VU-meter widget Added gain parameter for baseband audio TX
This commit is contained in:
parent
71999f216f
commit
69b0ef9a40
32 changed files with 523 additions and 194 deletions
|
@ -29,9 +29,9 @@
|
|||
#include "ui_navigation.hpp"
|
||||
#include "ui_font_fixed_8x16.hpp"
|
||||
#include "message.hpp"
|
||||
#include "volume.hpp"
|
||||
#include "ui_receiver.hpp"
|
||||
#include "transmitter_model.hpp"
|
||||
#include "ctcss.hpp"
|
||||
|
||||
namespace ui {
|
||||
|
||||
|
@ -46,40 +46,130 @@ public:
|
|||
AudioTXView& operator=(AudioTXView&&) = delete;
|
||||
|
||||
void focus() override;
|
||||
void paint(Painter& painter) override;
|
||||
|
||||
// PTT: Enable through KeyEvent (only works with presses), disable by polling :(
|
||||
bool on_key(const KeyEvent key) {
|
||||
if ((key == KeyEvent::Left) && (!va_enabled)) {
|
||||
set_tx(true);
|
||||
return true;
|
||||
} else
|
||||
return false;
|
||||
};
|
||||
|
||||
std::string title() const override { return "Microphone TX"; };
|
||||
|
||||
private:
|
||||
void draw_vumeter();
|
||||
void update_vumeter();
|
||||
void do_timing();
|
||||
void set_tx(bool enable);
|
||||
void on_tuning_frequency_changed(rf::Frequency f);
|
||||
void on_ctcss_changed(uint32_t v);
|
||||
|
||||
bool transmitting { false };
|
||||
bool va_enabled { };
|
||||
uint32_t mic_gain_x10 { };
|
||||
uint32_t audio_level { 0 };
|
||||
Painter * _painter { };
|
||||
uint32_t va_level { };
|
||||
uint32_t attack_ms { };
|
||||
uint32_t decay_ms { };
|
||||
uint32_t attack_timer { 0 };
|
||||
uint32_t decay_timer { 0 };
|
||||
|
||||
Text text_power {
|
||||
{ 6 * 8, 28 * 8, 16 * 8, 16 },
|
||||
"-"
|
||||
Labels labels {
|
||||
{ { 7 * 8, 1 * 8 }, "Mic. gain:", Color::light_grey() },
|
||||
{ { 7 * 8, 4 * 8 }, "Voice activation:", Color::light_grey() },
|
||||
{ { 8 * 8, 9 * 8 }, "Level: /255", Color::light_grey() },
|
||||
{ { 8 * 8, 11 * 8 }, "Attack: ms", Color::light_grey() },
|
||||
{ { 8 * 8, 13 * 8 }, "Decay: ms", Color::light_grey() },
|
||||
{ { 7 * 8, 17 * 8 }, "Bandwidth: kHz", Color::light_grey() },
|
||||
{ { 7 * 8, 19 * 8 }, "Frequency:", Color::light_grey() },
|
||||
{ { 11 * 8, 21 * 8 }, "CTCSS:", Color::light_grey() }
|
||||
};
|
||||
|
||||
VuMeter vumeter {
|
||||
{ 1 * 8, 2 * 8, 5 * 8, 26 * 8 },
|
||||
16
|
||||
};
|
||||
|
||||
OptionsField options_gain {
|
||||
{ 17 * 8, 1 * 8 },
|
||||
4,
|
||||
{
|
||||
{ "x0.5", 5 },
|
||||
{ "x1.0", 10 },
|
||||
{ "x1.5", 15 },
|
||||
{ "x2.0", 20 }
|
||||
}
|
||||
};
|
||||
|
||||
Checkbox check_va {
|
||||
{ 8 * 8, 6 * 8 },
|
||||
7,
|
||||
"Enabled",
|
||||
false
|
||||
};
|
||||
|
||||
NumberField field_va_level {
|
||||
{ 14 * 8, 9 * 8 },
|
||||
3,
|
||||
{ 0, 255 },
|
||||
2,
|
||||
' '
|
||||
};
|
||||
NumberField field_va_attack {
|
||||
{ 15 * 8, 11 * 8 },
|
||||
3,
|
||||
{ 0, 999 },
|
||||
20,
|
||||
' '
|
||||
};
|
||||
NumberField field_va_decay {
|
||||
{ 14 * 8, 13 * 8 },
|
||||
4,
|
||||
{ 0, 9999 },
|
||||
100,
|
||||
' '
|
||||
};
|
||||
|
||||
NumberField field_bw {
|
||||
{ 17 * 8, 17 * 8 },
|
||||
3,
|
||||
{ 0, 150 },
|
||||
1,
|
||||
' '
|
||||
};
|
||||
FrequencyField field_frequency {
|
||||
{ 6 * 8, 30 * 8 },
|
||||
{ 17 * 8, 19 * 8 },
|
||||
};
|
||||
|
||||
Button button_transmit {
|
||||
{ 1 * 8, 33 * 8, 12 * 8, 32 },
|
||||
"Transmit"
|
||||
OptionsField options_ctcss {
|
||||
{ 17 * 8, 21 * 8 },
|
||||
8,
|
||||
{ }
|
||||
};
|
||||
|
||||
Checkbox check_rogerbeep {
|
||||
{ 8 * 8, 23 * 8 },
|
||||
10,
|
||||
"Roger beep",
|
||||
false
|
||||
};
|
||||
|
||||
Text text_ptt {
|
||||
{ 7 * 8, 28 * 8, 16 * 8, 16 },
|
||||
"PTT: LEFT BUTTON"
|
||||
};
|
||||
|
||||
Button button_exit {
|
||||
{ 16 * 8, 33 * 8, 12 * 8, 32 },
|
||||
{ 18 * 8, 32 * 8, 10 * 8, 40 },
|
||||
"Exit"
|
||||
};
|
||||
|
||||
MessageHandlerRegistration message_handler_lcd_sync {
|
||||
Message::ID::DisplayFrameSync,
|
||||
[this](const Message* const) {
|
||||
this->draw_vumeter();
|
||||
this->update_vumeter();
|
||||
this->do_timing();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue