22// Constructor, destructor, configuration, and TX functions
33
44#include " modem_engine.hpp"
5+ #include " gui/startup_trace.hpp"
56#include " ultra/logging.hpp"
67#include < cstring>
78#include < algorithm>
@@ -12,7 +13,9 @@ namespace ultra {
1213namespace gui {
1314
1415ModemEngine::ModemEngine () {
16+ startupTrace (" ModemEngine" , " ctor-enter" );
1517 config_ = presets::balanced ();
18+ startupTrace (" ModemEngine" , " presets-balanced" );
1619
1720 // CRITICAL: Disable pilots for DQPSK mode - uses all 30 carriers for data
1821 // This doubles throughput (30 data carriers vs 15 with pilots)
@@ -36,6 +39,7 @@ ModemEngine::ModemEngine() {
3639 chirp_cfg.use_dual_chirp = true ; // Enable dual chirp for CFO estimation
3740 chirp_cfg.tx_cfo_hz = config_.tx_cfo_hz ; // Pass TX CFO for simulation
3841 chirp_sync_ = std::make_unique<sync::ChirpSync>(chirp_cfg);
42+ startupTrace (" ModemEngine" , " chirp-sync-created" );
3943
4044 // Multi-Carrier DPSK (for fading channels - frequency diversity)
4145 // Using level8: 8 carriers, 93.75 baud, DQPSK (~735 bps)
@@ -50,16 +54,20 @@ ModemEngine::ModemEngine() {
5054
5155 // Initialize StreamingEncoder (unified TX path)
5256 streaming_encoder_ = std::make_unique<StreamingEncoder>();
57+ startupTrace (" ModemEngine" , " streaming-encoder-created" );
5358 streaming_encoder_->setOFDMConfig (config_);
5459 streaming_encoder_->setMCDPSKCarriers (mc_dpsk_config_.num_carriers );
60+ startupTrace (" ModemEngine" , " streaming-encoder-configured" );
5561
5662 // Initialize audio filters
5763 rebuildFilters ();
64+ startupTrace (" ModemEngine" , " filters-built" );
5865
5966 // ========================================================================
6067 // Initialize StreamingDecoder (primary RX path)
6168 // ========================================================================
6269 streaming_decoder_ = std::make_unique<StreamingDecoder>();
70+ startupTrace (" ModemEngine" , " streaming-decoder-created" );
6371 streaming_decoder_->setLogPrefix (log_prefix_);
6472
6573 // Set callbacks to wire into existing ModemEngine callbacks
@@ -99,15 +107,18 @@ ModemEngine::ModemEngine() {
99107 // When connected, use the negotiated waveform
100108 protocol::WaveformMode decoder_mode = connected_ ? waveform_mode_ : protocol::WaveformMode::MC_DPSK;
101109 streaming_decoder_->setMode (decoder_mode, connected_);
110+ startupTrace (" ModemEngine" , " decoder-mode-set" );
102111
103112 // Sync MC-DPSK carrier count with ModemEngine's config
104113 streaming_decoder_->setMCDPSKCarriers (mc_dpsk_config_.num_carriers );
114+ startupTrace (" ModemEngine" , " decoder-carriers-set" );
105115
106116 LOG_MODEM (INFO, " [%s] StreamingDecoder initialized (MC-DPSK: %d carriers)" ,
107117 log_prefix_.c_str (), mc_dpsk_config_.num_carriers );
108118
109119 // Defer RX decode thread startup until audio is actually fed.
110120 // This reduces startup-time failure surface on low-end systems.
121+ startupTrace (" ModemEngine" , " ctor-exit" );
111122}
112123
113124ModemEngine::~ModemEngine () {
0 commit comments