#include #include #include #include #include #include #include "ModemController.h" int main() { // Sample test data std::string sample_string = "The quick brown fox jumps over the lazy dog 1234567890"; std::vector sample_data(sample_string.begin(), sample_string.end()); // Convert sample data to a BitStream object BitStream input_data(sample_data, sample_data.size() * 8); // Configuration for modem size_t baud_rate = 2400; bool is_voice = false; // False indicates data mode bool is_frequency_hopping = false; // Fixed frequency operation size_t interleave_setting = 1; // Short interleave // Create ModemController instance ModemController modem(baud_rate, is_voice, is_frequency_hopping, interleave_setting, input_data); const char* file_name = "modulated_signal_2400bps_voice.wav"; // Perform transmit operation to generate modulated signal std::vector modulated_signal = modem.transmit(); // Output modulated signal to a WAV file using libsndfile SF_INFO sfinfo; sfinfo.channels = 1; sfinfo.samplerate = 48000; sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16; SNDFILE* sndfile = sf_open(file_name, SFM_WRITE, &sfinfo); if (sndfile == nullptr) { std::cerr << "Unable to open WAV file for writing modulated signal: " << sf_strerror(sndfile) << "\n"; return 1; } sf_write_short(sndfile, modulated_signal.data(), modulated_signal.size()); sf_close(sndfile); std::cout << "Modulated signal written to " << file_name << '\n'; // Success message std::cout << "Modem test completed successfully.\n"; return 0; }