00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef QPSKDISC
00019 #define QPSKDISC
00020 #include <complex.h>
00021 #include <delay.h>
00022 namespace SPUC {
00027 class qpsk_discriminators
00028 {
00029 public:
00030 int bpsk_mode;
00031 complex<long> fmf;
00032 complex<long> prev_sam,prev_sym,data;
00033 complex<long> hard_decision_prev,decision;
00034 delay< complex<long> > hard_decision_delay,timing_disc_delay;
00035
00036 void update(complex<long> data_in, complex<long> decision_in, int sym_pls);
00037 void sample(complex<long> fmf_in, complex<long> data_in, complex<long> decision_in, int sym_pls);
00038 qpsk_discriminators(int bpsk=0) : hard_decision_delay(2), timing_disc_delay(3)
00039 { bpsk_mode = bpsk;}
00040 void set_mode(int bpsk=0) { bpsk_mode = bpsk;}
00041 long cross_prod_afc(void);
00042 long quad(void);
00043 long rcfd(void);
00044 long dd_timing_disc(void);
00045 long nda_timing_disc(void);
00046 long symbol_lock_out(void);
00047 long pll_disc(void);
00048 };
00049 }
00050 #endif