| 1871 | } |
| 1872 | |
| 1873 | void |
| 1874 | TimeWindow::onCostasRecovery(void) |
| 1875 | { |
| 1876 | if (!this->ui->realWaveform->isComplete()) |
| 1877 | return; |
| 1878 | |
| 1879 | try { |
| 1880 | enum sigutils_costas_kind kind = SU_COSTAS_KIND_BPSK; |
| 1881 | |
| 1882 | SUFLOAT relBw = SU_ABS2NORM_FREQ( |
| 1883 | this->fs, |
| 1884 | this->ui->costasBwSpin->value()); |
| 1885 | |
| 1886 | SUFLOAT tau = 1. / SU_ABS2NORM_BAUD( |
| 1887 | this->fs, |
| 1888 | this->ui->costasArmBwSpin->value()); |
| 1889 | const SUCOMPLEX *orig; |
| 1890 | SUCOMPLEX *dest; |
| 1891 | SUSCOUNT len; |
| 1892 | |
| 1893 | this->getTransformRegion( |
| 1894 | orig, |
| 1895 | dest, |
| 1896 | len, |
| 1897 | this->ui->afcSelCheck->isChecked()); |
| 1898 | |
| 1899 | switch (this->ui->costasOrderCombo->currentIndex()) { |
| 1900 | case 0: |
| 1901 | kind = SU_COSTAS_KIND_BPSK; |
| 1902 | break; |
| 1903 | |
| 1904 | case 1: |
| 1905 | kind = SU_COSTAS_KIND_QPSK; |
| 1906 | break; |
| 1907 | |
| 1908 | case 2: |
| 1909 | kind = SU_COSTAS_KIND_8PSK; |
| 1910 | break; |
| 1911 | } |
| 1912 | |
| 1913 | CostasRecoveryTask *task = new CostasRecoveryTask( |
| 1914 | orig, |
| 1915 | dest, |
| 1916 | len, |
| 1917 | tau, |
| 1918 | relBw, |
| 1919 | kind); |
| 1920 | |
| 1921 | this->notifyTaskRunning(true); |
| 1922 | this->taskController.process("costas", task); |
| 1923 | } catch (Suscan::Exception &e) { |
| 1924 | QMessageBox::warning( |
| 1925 | this, |
| 1926 | "Costas carrier recovery", |
| 1927 | "Cannot perform operation: " + QString(e.what())); |
| 1928 | } |
| 1929 | } |
| 1930 |
nothing calls this directly
no test coverage detected