MIL-STD-188-110C/main.cpp

56 lines
1.9 KiB
C++

#include <bitset>
#include <fstream>
#include <iostream>
#include <string>
#include <sndfile.h>
#include <vector>
#include "ModemController.h"
#include "PSKModulator.h"
int main() {
// Sample test data
std::string sample_string = "The quick brown fox jumps over the lazy dog 1234567890";
std::vector<uint8_t> 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 = 150;
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);
PSKModulator modulator(48000, is_frequency_hopping, 48);
const char* file_name = "modulated_signal_75bps_shortinterleave.wav";
// Perform transmit operation to generate modulated signal
std::vector<int16_t> modulated_signal = modem.transmit();
std::vector<uint8_t> demodulated_symbols = modulator.demodulate(modulated_signal);
//// 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;
}