#include #include #include #include "costas-beacon-sync.h" #include "fft-beacon-finder.h" const size_t buffer_size = 4069; int main(int argc, char const* argv[]) { FILE* output = fopen("output.raw", "w"); FILE* input = fopen("input.raw", "r"); FFTBeaconFinder finder(1000000); CostasBeaconSync sync(0.03, -0.1, 0.1); int sample_count = 0; clock_t start_time = clock(); std::complex in_buffer[buffer_size]; std::complex out_buffer[buffer_size]; size_t len = fread(in_buffer, sizeof(std::complex), buffer_size, input); while (len > 0) { for (size_t i = 0; i < len; i++) { std::complex coarse_synced = finder.work(in_buffer[i]); std::complex sync_correction = sync.work(coarse_synced); out_buffer[i] = coarse_synced * sync_correction; } sample_count += len; fwrite(out_buffer, sizeof(std::complex), buffer_size, output); len = fread(&in_buffer, sizeof(std::complex), buffer_size, input); }; clock_t end_time = clock(); clock_t result = end_time - start_time; std::cout << "Processed " << sample_count << " samples (" << sample_count / 1000000.0 << "s) " << "in " << result / CLOCKS_PER_SEC << " s" << std::endl; fclose(input); fclose(output); return 0; }