def __init__(self, side="A", gain=35, sync_check=False, freq=1700.5e6, decim=16, satellite='FENGYUN-1D', frames_file=os.environ['HOME'] + '/FENGYUN-1D.hrpt'): grc_wxgui.top_block_gui.__init__(self, title="USRP Feng Yun 1 HRPT Receiver") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Parameters ################################################## self.side = side self.gain = gain self.sync_check = sync_check self.freq = freq self.decim = decim self.satellite = satellite self.frames_file = frames_file ################################################## # Variables ################################################## self.sym_rate = sym_rate = 600 * 1109 * 2 self.samp_rate = samp_rate = 64e6 / decim self.config_filename = config_filename = os.environ[ 'HOME'] + '/.gnuradio/fy1_hrpt.conf' self.sps = sps = samp_rate / sym_rate self._saved_pll_alpha_config = ConfigParser.ConfigParser() self._saved_pll_alpha_config.read(config_filename) try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat( "satname", 'pll_alpha') except: saved_pll_alpha = 0.005 self.saved_pll_alpha = saved_pll_alpha self._saved_clock_alpha_config = ConfigParser.ConfigParser() self._saved_clock_alpha_config.read(config_filename) try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat( "satname", 'clock_alpha') except: saved_clock_alpha = 0.001 self.saved_clock_alpha = saved_clock_alpha self.sync_check_txt = sync_check_txt = sync_check self.side_text = side_text = side self._saved_gain_config = ConfigParser.ConfigParser() self._saved_gain_config.read(config_filename) try: saved_gain = self._saved_gain_config.getfloat("satname", 'gain') except: saved_gain = gain self.saved_gain = saved_gain self.satellite_text = satellite_text = satellite self.sample_rate_text = sample_rate_text = samp_rate self.pll_alpha = pll_alpha = saved_pll_alpha self.max_clock_offset = max_clock_offset = 0.1 self.max_carrier_offset = max_carrier_offset = 2 * math.pi * 100e3 / samp_rate self.hs = hs = int(sps / 2.0) self.gain_slider = gain_slider = gain self.freq_tb = freq_tb = freq self.frames_outfile_text = frames_outfile_text = frames_file self.decim_tb = decim_tb = decim self.datetime_text = datetime_text = strftime("%A, %B %d %Y %H:%M:%S", localtime()) self.clock_alpha = clock_alpha = saved_clock_alpha ################################################## # Notebooks ################################################## self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.displays.AddPage(grc_wxgui.Panel(self.displays), "RX Feng Yun 1 HRPT") self.displays.AddPage(grc_wxgui.Panel(self.displays), "Information") self.Add(self.displays) ################################################## # Controls ################################################## self._sync_check_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.sync_check_txt, callback=self.set_sync_check_txt, label="Sync check", converter=forms.float_converter(), ) self.GridAdd(self._sync_check_txt_static_text, 0, 2, 1, 1) self._side_text_static_text = forms.static_text( parent=self.GetWin(), value=self.side_text, callback=self.set_side_text, label="USRP Side", converter=forms.str_converter(), ) self.GridAdd(self._side_text_static_text, 0, 0, 1, 1) self._satellite_text_static_text = forms.static_text( parent=self.GetWin(), value=self.satellite_text, callback=self.set_satellite_text, label="Satellite", converter=forms.str_converter(), ) self.GridAdd(self._satellite_text_static_text, 0, 1, 1, 1) self._sample_rate_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.sample_rate_text, callback=self.set_sample_rate_text, label="Sample rate", converter=forms.float_converter(), ) self.displays.GetPage(1).GridAdd(self._sample_rate_text_static_text, 3, 0, 1, 1) _pll_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._pll_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, label="PLL Alpha", converter=forms.float_converter(), proportion=0, ) self._pll_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, minimum=0.005, maximum=0.5, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_pll_alpha_sizer, 2, 1, 1, 1) _gain_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, label="Gain", converter=forms.int_converter(), proportion=0, ) self._gain_slider_slider = forms.slider( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.GridAdd(_gain_slider_sizer, 2, 0, 1, 1) self._freq_tb_text_box = forms.text_box( parent=self.GetWin(), value=self.freq_tb, callback=self.set_freq_tb, label="Frequency", converter=forms.float_converter(), ) self.GridAdd(self._freq_tb_text_box, 1, 1, 1, 1) self._frames_outfile_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.frames_outfile_text, callback=self.set_frames_outfile_text, label="Frames filename", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._frames_outfile_text_static_text, 4, 0, 1, 1) self._decim_tb_text_box = forms.text_box( parent=self.GetWin(), value=self.decim_tb, callback=self.set_decim_tb, label="Decimation", converter=forms.int_converter(), ) self.GridAdd(self._decim_tb_text_box, 1, 0, 1, 1) self._datetime_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.datetime_text, callback=self.set_datetime_text, label="Acquisition start", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._datetime_text_static_text, 2, 0, 1, 1) _clock_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._clock_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, label="Clock alpha", converter=forms.float_converter(), proportion=0, ) self._clock_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, minimum=0.001, maximum=0.1, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_clock_alpha_sizer, 2, 2, 1, 1) ################################################## # Blocks ################################################## self.agc = gr.agc_cc(1e-5, 1.0, 1.0 / 32768.0, 1.0) self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() self.gr_clock_recovery_mm_xx_0 = gr.clock_recovery_mm_ff( sps / 2.0, clock_alpha**2 / 4.0, 0.5, clock_alpha, max_clock_offset) self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_short * 1, frames_file) self.gr_file_sink_0_0.set_unbuffered(False) self.gr_interleaved_short_to_complex_0 = gr.interleaved_short_to_complex( ) self.gr_moving_average_xx_0 = gr.moving_average_ff(hs, 1.0 / hs, 4000) self.gr_rms_xx_0 = gr.rms_cf(0.2) self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2 / 4.0, max_carrier_offset) self.poesweather_fy1_hrpt_decoder_0 = poesweather.fy1_hrpt_decoder( True, False) self.poesweather_fy1_hrpt_deframer_0 = poesweather.fy1_hrpt_deframer( sync_check) self.usrp_simple_source_x_0 = grc_usrp.simple_source_s(which=0, side=side, rx_ant="RXA") self.usrp_simple_source_x_0.set_decim_rate(decim) self.usrp_simple_source_x_0.set_frequency(freq, verbose=True) self.usrp_simple_source_x_0.set_gain(gain) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.displays.GetPage(0).GetWin(), baseband_freq=0, y_per_div=5, y_divs=10, ref_level=45, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=30, average=True, avg_alpha=0.1, title="Feng Yun 1 HRPT FFT Spectrum", peak_hold=False, ) self.displays.GetPage(0).Add(self.wxgui_fftsink2_0.win) self.wxgui_numbersink2_0 = numbersink2.number_sink_f( self.GetWin(), unit="Units", minval=0, maxval=5000, factor=1.0, decimal_places=4, ref_level=0, sample_rate=samp_rate, number_rate=15, average=True, avg_alpha=0.07, label="S-Meter", peak_hold=False, show_gauge=True, ) self.Add(self.wxgui_numbersink2_0.win) ################################################## # Connections ################################################## self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.poesweather_fy1_hrpt_decoder_0, 0)) self.connect((self.gr_binary_slicer_fb_0, 0), (self.poesweather_fy1_hrpt_deframer_0, 0)) self.connect((self.usrp_simple_source_x_0, 0), (self.gr_interleaved_short_to_complex_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.agc, 0)) self.connect((self.gr_clock_recovery_mm_xx_0, 0), (self.gr_binary_slicer_fb_0, 0)) self.connect((self.agc, 0), (self.pll, 0)) self.connect((self.pll, 0), (self.gr_moving_average_xx_0, 0)) self.connect((self.gr_moving_average_xx_0, 0), (self.gr_clock_recovery_mm_xx_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.gr_rms_xx_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.gr_file_sink_0_0, 0)) self.connect((self.gr_rms_xx_0, 0), (self.wxgui_numbersink2_0, 0))
def __init__(self, side="A", gain=35, sync_check=False, freq=1700.5e6, decim=16, satellite='FENGYUN-1D', frames_file=os.environ['HOME'] + '/FENGYUN-1D.hrpt'): grc_wxgui.top_block_gui.__init__(self, title="USRP Feng Yun 1 HRPT Receiver") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Parameters ################################################## self.side = side self.gain = gain self.sync_check = sync_check self.freq = freq self.decim = decim self.satellite = satellite self.frames_file = frames_file ################################################## # Variables ################################################## self.sym_rate = sym_rate = 600*1109*2 self.samp_rate = samp_rate = 64e6/decim self.config_filename = config_filename = os.environ['HOME']+'/.gnuradio/fy1_hrpt.conf' self.sps = sps = samp_rate/sym_rate self._saved_pll_alpha_config = ConfigParser.ConfigParser() self._saved_pll_alpha_config.read(config_filename) try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat("satname", 'pll_alpha') except: saved_pll_alpha = 0.005 self.saved_pll_alpha = saved_pll_alpha self._saved_clock_alpha_config = ConfigParser.ConfigParser() self._saved_clock_alpha_config.read(config_filename) try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat("satname", 'clock_alpha') except: saved_clock_alpha = 0.001 self.saved_clock_alpha = saved_clock_alpha self.sync_check_txt = sync_check_txt = sync_check self.side_text = side_text = side self._saved_gain_config = ConfigParser.ConfigParser() self._saved_gain_config.read(config_filename) try: saved_gain = self._saved_gain_config.getfloat("satname", 'gain') except: saved_gain = gain self.saved_gain = saved_gain self.satellite_text = satellite_text = satellite self.sample_rate_text = sample_rate_text = samp_rate self.pll_alpha = pll_alpha = saved_pll_alpha self.max_clock_offset = max_clock_offset = 0.1 self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/samp_rate self.hs = hs = int(sps/2.0) self.gain_slider = gain_slider = gain self.freq_tb = freq_tb = freq self.frames_outfile_text = frames_outfile_text = frames_file self.decim_tb = decim_tb = decim self.datetime_text = datetime_text = strftime("%A, %B %d %Y %H:%M:%S", localtime()) self.clock_alpha = clock_alpha = saved_clock_alpha ################################################## # Notebooks ################################################## self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.displays.AddPage(grc_wxgui.Panel(self.displays), "RX Feng Yun 1 HRPT") self.displays.AddPage(grc_wxgui.Panel(self.displays), "Information") self.Add(self.displays) ################################################## # Controls ################################################## self._sync_check_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.sync_check_txt, callback=self.set_sync_check_txt, label="Sync check", converter=forms.float_converter(), ) self.GridAdd(self._sync_check_txt_static_text, 0, 2, 1, 1) self._side_text_static_text = forms.static_text( parent=self.GetWin(), value=self.side_text, callback=self.set_side_text, label="USRP Side", converter=forms.str_converter(), ) self.GridAdd(self._side_text_static_text, 0, 0, 1, 1) self._satellite_text_static_text = forms.static_text( parent=self.GetWin(), value=self.satellite_text, callback=self.set_satellite_text, label="Satellite", converter=forms.str_converter(), ) self.GridAdd(self._satellite_text_static_text, 0, 1, 1, 1) self._sample_rate_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.sample_rate_text, callback=self.set_sample_rate_text, label="Sample rate", converter=forms.float_converter(), ) self.displays.GetPage(1).GridAdd(self._sample_rate_text_static_text, 3, 0, 1, 1) _pll_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._pll_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, label="PLL Alpha", converter=forms.float_converter(), proportion=0, ) self._pll_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, minimum=0.005, maximum=0.5, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_pll_alpha_sizer, 2, 1, 1, 1) _gain_slider_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_slider_text_box = forms.text_box( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, label="Gain", converter=forms.int_converter(), proportion=0, ) self._gain_slider_slider = forms.slider( parent=self.GetWin(), sizer=_gain_slider_sizer, value=self.gain_slider, callback=self.set_gain_slider, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=int, proportion=1, ) self.GridAdd(_gain_slider_sizer, 2, 0, 1, 1) self._freq_tb_text_box = forms.text_box( parent=self.GetWin(), value=self.freq_tb, callback=self.set_freq_tb, label="Frequency", converter=forms.float_converter(), ) self.GridAdd(self._freq_tb_text_box, 1, 1, 1, 1) self._frames_outfile_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.frames_outfile_text, callback=self.set_frames_outfile_text, label="Frames filename", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._frames_outfile_text_static_text, 4, 0, 1, 1) self._decim_tb_text_box = forms.text_box( parent=self.GetWin(), value=self.decim_tb, callback=self.set_decim_tb, label="Decimation", converter=forms.int_converter(), ) self.GridAdd(self._decim_tb_text_box, 1, 0, 1, 1) self._datetime_text_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.datetime_text, callback=self.set_datetime_text, label="Acquisition start", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._datetime_text_static_text, 2, 0, 1, 1) _clock_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._clock_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, label="Clock alpha", converter=forms.float_converter(), proportion=0, ) self._clock_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, minimum=0.001, maximum=0.1, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_clock_alpha_sizer, 2, 2, 1, 1) ################################################## # Blocks ################################################## self.agc = gr.agc_cc(1e-5, 1.0, 1.0/32768.0, 1.0) self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() self.gr_clock_recovery_mm_xx_0 = gr.clock_recovery_mm_ff(sps/2.0, clock_alpha**2/4.0, 0.5, clock_alpha, max_clock_offset) self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_short*1, frames_file) self.gr_file_sink_0_0.set_unbuffered(False) self.gr_interleaved_short_to_complex_0 = gr.interleaved_short_to_complex() self.gr_moving_average_xx_0 = gr.moving_average_ff(hs, 1.0/hs, 4000) self.gr_rms_xx_0 = gr.rms_cf(0.2) self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) self.poesweather_fy1_hrpt_decoder_0 = poesweather.fy1_hrpt_decoder(True,False) self.poesweather_fy1_hrpt_deframer_0 = poesweather.fy1_hrpt_deframer(sync_check) self.usrp_simple_source_x_0 = grc_usrp.simple_source_s(which=0, side=side, rx_ant="RXA") self.usrp_simple_source_x_0.set_decim_rate(decim) self.usrp_simple_source_x_0.set_frequency(freq, verbose=True) self.usrp_simple_source_x_0.set_gain(gain) self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.displays.GetPage(0).GetWin(), baseband_freq=0, y_per_div=5, y_divs=10, ref_level=45, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=30, average=True, avg_alpha=0.1, title="Feng Yun 1 HRPT FFT Spectrum", peak_hold=False, ) self.displays.GetPage(0).Add(self.wxgui_fftsink2_0.win) self.wxgui_numbersink2_0 = numbersink2.number_sink_f( self.GetWin(), unit="Units", minval=0, maxval=5000, factor=1.0, decimal_places=4, ref_level=0, sample_rate=samp_rate, number_rate=15, average=True, avg_alpha=0.07, label="S-Meter", peak_hold=False, show_gauge=True, ) self.Add(self.wxgui_numbersink2_0.win) ################################################## # Connections ################################################## self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.poesweather_fy1_hrpt_decoder_0, 0)) self.connect((self.gr_binary_slicer_fb_0, 0), (self.poesweather_fy1_hrpt_deframer_0, 0)) self.connect((self.usrp_simple_source_x_0, 0), (self.gr_interleaved_short_to_complex_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.agc, 0)) self.connect((self.gr_clock_recovery_mm_xx_0, 0), (self.gr_binary_slicer_fb_0, 0)) self.connect((self.agc, 0), (self.pll, 0)) self.connect((self.pll, 0), (self.gr_moving_average_xx_0, 0)) self.connect((self.gr_moving_average_xx_0, 0), (self.gr_clock_recovery_mm_xx_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.wxgui_fftsink2_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.gr_rms_xx_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.gr_file_sink_0_0, 0)) self.connect((self.gr_rms_xx_0, 0), (self.wxgui_numbersink2_0, 0))
def __init__(self, gain=35, side="A", sync_check=False, freq=1700.5e6, satellite='FENGYUN-1D', frames_file=os.environ['HOME'] + '/FENGYUN-1D.hrpt', baseband_file=os.environ['HOME'] + '/FENGYUN-1D.dat', decim=16): gr.top_block.__init__(self, "USRP Feng-Yun 1 HRPT Receiver") ################################################## # Parameters ################################################## self.gain = gain self.side = side self.sync_check = sync_check self.freq = freq self.satellite = satellite self.frames_file = frames_file self.baseband_file = baseband_file self.decim = decim ################################################## # Variables ################################################## self.sym_rate = sym_rate = 600*1109*2 self.samp_rate = samp_rate = 64e6/decim self.sps = sps = samp_rate/sym_rate self.config_filename = config_filename = os.environ['HOME']+'/.gnuradio/fy1_hrpt.conf' self._saved_pll_alpha_config = ConfigParser.ConfigParser() self._saved_pll_alpha_config.read(config_filename) try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat("satname", 'pll_alpha') except: saved_pll_alpha = 0.005 self.saved_pll_alpha = saved_pll_alpha self._saved_gain_config = ConfigParser.ConfigParser() self._saved_gain_config.read(config_filename) try: saved_gain = self._saved_gain_config.getfloat("satname", 'gain') except: saved_gain = gain self.saved_gain = saved_gain self._saved_clock_alpha_config = ConfigParser.ConfigParser() self._saved_clock_alpha_config.read(config_filename) try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat("satname", 'clock_alpha') except: saved_clock_alpha = 0.001 self.saved_clock_alpha = saved_clock_alpha self.max_clock_offset = max_clock_offset = 0.1 self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/samp_rate self.hs = hs = int(sps/2.0) ################################################## # Blocks ################################################## self.agc = gr.agc_cc(1e-5, 1.0, 1.0/32768.0, 1.0) self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() self.gr_clock_recovery_mm_xx_0 = gr.clock_recovery_mm_ff(sps/2.0, saved_clock_alpha**2/4.0, 0.5, saved_clock_alpha, max_clock_offset) self.gr_file_sink_0 = gr.file_sink(gr.sizeof_short*1, baseband_file) self.gr_file_sink_0.set_unbuffered(False) self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_short*1, frames_file) self.gr_file_sink_0_0.set_unbuffered(False) self.gr_interleaved_short_to_complex_0 = gr.interleaved_short_to_complex() self.gr_moving_average_xx_0 = gr.moving_average_ff(hs, 1.0/hs, 4000) self.pll = noaa.hrpt_pll_cf(saved_pll_alpha, saved_pll_alpha**2/4.0, max_carrier_offset) self.poesweather_fy1_hrpt_decoder_0 = poesweather.fy1_hrpt_decoder(True,False) self.poesweather_fy1_hrpt_deframer_0 = poesweather.fy1_hrpt_deframer(sync_check) self.usrp_simple_source_x_0 = grc_usrp.simple_source_s(which=0, side=side, rx_ant="RXA") self.usrp_simple_source_x_0.set_decim_rate(decim) self.usrp_simple_source_x_0.set_frequency(freq, verbose=True) self.usrp_simple_source_x_0.set_gain(gain) ################################################## # Connections ################################################## self.connect((self.gr_binary_slicer_fb_0, 0), (self.poesweather_fy1_hrpt_deframer_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.poesweather_fy1_hrpt_decoder_0, 0)) self.connect((self.usrp_simple_source_x_0, 0), (self.gr_interleaved_short_to_complex_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.agc, 0)) self.connect((self.usrp_simple_source_x_0, 0), (self.gr_file_sink_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.gr_file_sink_0_0, 0)) self.connect((self.gr_moving_average_xx_0, 0), (self.gr_clock_recovery_mm_xx_0, 0)) self.connect((self.pll, 0), (self.gr_moving_average_xx_0, 0)) self.connect((self.agc, 0), (self.pll, 0)) self.connect((self.gr_clock_recovery_mm_xx_0, 0), (self.gr_binary_slicer_fb_0, 0))
def __init__(self, sync_check=False, baseband_file=os.environ['HOME'] + '/FENGYUN-1D.dat', frames_file=os.environ['HOME'] + '/FENGYUN-1D.hrpt', decim=16, satellite='FENGYUN-1D'): grc_wxgui.top_block_gui.__init__(self, title="Feng Yun 1 HRPT Baseband To Frames") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Parameters ################################################## self.sync_check = sync_check self.baseband_file = baseband_file self.frames_file = frames_file self.decim = decim self.satellite = satellite ################################################## # Variables ################################################## self.sym_rate = sym_rate = 600*1109*2 self.sample_rate = sample_rate = 64e6/decim self.config_filename = config_filename = os.environ['HOME']+'/.gnuradio/fy1_hrpt.conf' self.sps = sps = sample_rate/sym_rate self._saved_pll_alpha_config = ConfigParser.ConfigParser() self._saved_pll_alpha_config.read(config_filename) try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat("satname", 'pll_alpha') except: saved_pll_alpha = 0.01 self.saved_pll_alpha = saved_pll_alpha self._saved_clock_alpha_config = ConfigParser.ConfigParser() self._saved_clock_alpha_config.read(config_filename) try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat("satname", 'clock_alpha') except: saved_clock_alpha = 0.01 self.saved_clock_alpha = saved_clock_alpha self.sync_check_txt = sync_check_txt = sync_check self.satname_txt = satname_txt = satellite self.pll_alpha = pll_alpha = saved_pll_alpha self.max_clock_offset = max_clock_offset = 100e-6 self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate self.hs = hs = int(sps/2.0) self.frames_file_txt = frames_file_txt = frames_file self.decim_txt = decim_txt = decim self.clock_alpha = clock_alpha = saved_clock_alpha self.baseband_file_txt = baseband_file_txt = baseband_file ################################################## # Notebooks ################################################## self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.displays.AddPage(grc_wxgui.Panel(self.displays), "Feng Yun 1 HRPT Spectrum") self.displays.AddPage(grc_wxgui.Panel(self.displays), "Information") self.Add(self.displays) ################################################## # Controls ################################################## self._sync_check_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.sync_check_txt, callback=self.set_sync_check_txt, label="Sync check", converter=forms.int_converter(), ) self.GridAdd(self._sync_check_txt_static_text, 0, 3, 1, 1) self._satname_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.satname_txt, callback=self.set_satname_txt, label="Satellite", converter=forms.str_converter(), ) self.GridAdd(self._satname_txt_static_text, 0, 0, 1, 1) _pll_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._pll_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, label="PLL Alpha", converter=forms.float_converter(), proportion=0, ) self._pll_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, minimum=0.0, maximum=0.5, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_pll_alpha_sizer, 1, 0, 1, 1) self._frames_file_txt_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.frames_file_txt, callback=self.set_frames_file_txt, label="Frames output filename", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._frames_file_txt_static_text, 2, 0, 1, 1) self._decim_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.decim_txt, callback=self.set_decim_txt, label="Decimation", converter=forms.str_converter(), ) self.GridAdd(self._decim_txt_static_text, 0, 1, 1, 1) _clock_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._clock_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, label="Clock Alpha", converter=forms.float_converter(), proportion=0, ) self._clock_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, minimum=0.0, maximum=0.5, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_clock_alpha_sizer, 1, 1, 1, 1) self._baseband_file_txt_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.baseband_file_txt, callback=self.set_baseband_file_txt, label="Baseband filename", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._baseband_file_txt_static_text, 1, 0, 1, 1) ################################################## # Blocks ################################################## self.agc = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) self.frame_sink = gr.file_sink(gr.sizeof_short*1, "/home/jerry/test.hrpt") self.frame_sink.set_unbuffered(False) self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() self.gr_clock_recovery_mm_xx_0 = gr.clock_recovery_mm_ff(sps/2.0, clock_alpha**2/4.0, 0.5, clock_alpha, max_clock_offset) self.gr_file_source_0 = gr.file_source(gr.sizeof_short*1, "/home/jerry/feng-yun-bb.dat", False) self.gr_interleaved_short_to_complex_0 = gr.interleaved_short_to_complex() self.gr_moving_average_xx_0 = gr.moving_average_ff(hs, 1.0/hs, 4000) self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset) self.poesweather_fy1_hrpt_decoder_0 = poesweather.fy1_hrpt_decoder(True,False) self.poesweather_fy1_hrpt_deframer_0 = poesweather.fy1_hrpt_deframer(sync_check) self.rx_fft = fftsink2.fft_sink_c( self.displays.GetPage(0).GetWin(), baseband_freq=0, y_per_div=5, y_divs=10, ref_level=45, ref_scale=2.0, sample_rate=sample_rate, fft_size=1024, fft_rate=30, average=True, avg_alpha=0.1, title="Feng Yun 1 HRPT Spectrum", peak_hold=False, ) self.displays.GetPage(0).Add(self.rx_fft.win) self.throttle = gr.throttle(gr.sizeof_short*1, sample_rate*4) ################################################## # Connections ################################################## self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.agc, 0)) self.connect((self.throttle, 0), (self.gr_interleaved_short_to_complex_0, 0)) self.connect((self.gr_file_source_0, 0), (self.throttle, 0)) self.connect((self.agc, 0), (self.rx_fft, 0)) self.connect((self.agc, 0), (self.pll, 0)) self.connect((self.pll, 0), (self.gr_moving_average_xx_0, 0)) self.connect((self.gr_moving_average_xx_0, 0), (self.gr_clock_recovery_mm_xx_0, 0)) self.connect((self.gr_clock_recovery_mm_xx_0, 0), (self.gr_binary_slicer_fb_0, 0)) self.connect((self.gr_binary_slicer_fb_0, 0), (self.poesweather_fy1_hrpt_deframer_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.frame_sink, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.poesweather_fy1_hrpt_decoder_0, 0))
def __init__(self, sync_check=False, decim=16, satellite='FENGYUN-1D', baseband_file=os.environ['HOME'] + '/FENGYUN-1D.dat', frames_file=os.environ['HOME'] + '/FENGYUN-1D.hrpt'): gr.top_block.__init__(self, "Feng Yun 1 HRPT Baseband To Frames") ################################################## # Parameters ################################################## self.sync_check = sync_check self.decim = decim self.satellite = satellite self.baseband_file = baseband_file self.frames_file = frames_file ################################################## # Variables ################################################## self.sym_rate = sym_rate = 600 * 1109 * 2 self.sample_rate = sample_rate = 64e6 / decim self.sps = sps = sample_rate / sym_rate self.config_filename = config_filename = os.environ[ 'HOME'] + '/.gnuradio/fy1_hrpt.conf' self._saved_pll_alpha_config = ConfigParser.ConfigParser() self._saved_pll_alpha_config.read(config_filename) try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat( "satname", 'pll_alpha') except: saved_pll_alpha = 0.01 self.saved_pll_alpha = saved_pll_alpha self._saved_clock_alpha_config = ConfigParser.ConfigParser() self._saved_clock_alpha_config.read(config_filename) try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat( "satname", 'clock_alpha') except: saved_clock_alpha = 0.01 self.saved_clock_alpha = saved_clock_alpha self.max_clock_offset = max_clock_offset = 100e-6 self.max_carrier_offset = max_carrier_offset = 2 * math.pi * 100e3 / sample_rate self.hs = hs = int(sps / 2.0) ################################################## # Blocks ################################################## self.agc = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) self.frame_sink = gr.file_sink(gr.sizeof_short * 1, frames_file) self.frame_sink.set_unbuffered(False) self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() self.gr_clock_recovery_mm_xx_0 = gr.clock_recovery_mm_ff( sps / 2.0, saved_clock_alpha**2 / 4.0, 0.5, saved_clock_alpha, max_clock_offset) self.gr_file_source_0 = gr.file_source(gr.sizeof_short * 1, baseband_file, False) self.gr_interleaved_short_to_complex_0 = gr.interleaved_short_to_complex( ) self.gr_moving_average_xx_0 = gr.moving_average_ff(hs, 1.0 / hs, 4000) self.pll = noaa.hrpt_pll_cf(saved_pll_alpha, saved_pll_alpha**2 / 4.0, max_carrier_offset) self.poesweather_fy1_hrpt_decoder_0 = poesweather.fy1_hrpt_decoder( True, False) self.poesweather_fy1_hrpt_deframer_0 = poesweather.fy1_hrpt_deframer( sync_check) self.throttle = gr.throttle(gr.sizeof_short * 1, sample_rate * 4) ################################################## # Connections ################################################## self.connect((self.gr_clock_recovery_mm_xx_0, 0), (self.gr_binary_slicer_fb_0, 0)) self.connect((self.gr_file_source_0, 0), (self.throttle, 0)) self.connect((self.throttle, 0), (self.gr_interleaved_short_to_complex_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.agc, 0)) self.connect((self.agc, 0), (self.pll, 0)) self.connect((self.pll, 0), (self.gr_moving_average_xx_0, 0)) self.connect((self.gr_moving_average_xx_0, 0), (self.gr_clock_recovery_mm_xx_0, 0)) self.connect((self.gr_binary_slicer_fb_0, 0), (self.poesweather_fy1_hrpt_deframer_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.frame_sink, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.poesweather_fy1_hrpt_decoder_0, 0))
def __init__(self, sync_check=False, gain=35, side="A", freq=1700.5e6, decim=16, satellite='FENGYUN-1D', frames_file=os.environ['HOME'] + '/FENGYUN-1D.hrpt'): gr.top_block.__init__(self, "USRP Feng-Yun 1 HRPT Receiver") ################################################## # Parameters ################################################## self.sync_check = sync_check self.gain = gain self.side = side self.freq = freq self.decim = decim self.satellite = satellite self.frames_file = frames_file ################################################## # Variables ################################################## self.sym_rate = sym_rate = 600 * 1109 * 2 self.samp_rate = samp_rate = 64e6 / decim self.sps = sps = samp_rate / sym_rate self.config_filename = config_filename = os.environ[ 'HOME'] + '/.gnuradio/fy1_hrpt.conf' self._saved_pll_alpha_config = ConfigParser.ConfigParser() self._saved_pll_alpha_config.read(config_filename) try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat( "satname", 'pll_alpha') except: saved_pll_alpha = 0.005 self.saved_pll_alpha = saved_pll_alpha self._saved_gain_config = ConfigParser.ConfigParser() self._saved_gain_config.read(config_filename) try: saved_gain = self._saved_gain_config.getfloat("satname", 'gain') except: saved_gain = gain self.saved_gain = saved_gain self._saved_clock_alpha_config = ConfigParser.ConfigParser() self._saved_clock_alpha_config.read(config_filename) try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat( "satname", 'clock_alpha') except: saved_clock_alpha = 0.001 self.saved_clock_alpha = saved_clock_alpha self.max_clock_offset = max_clock_offset = 0.1 self.max_carrier_offset = max_carrier_offset = 2 * math.pi * 100e3 / samp_rate self.hs = hs = int(sps / 2.0) ################################################## # Blocks ################################################## self.agc = gr.agc_cc(1e-5, 1.0, 1.0 / 32768.0, 1.0) self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() self.gr_clock_recovery_mm_xx_0 = gr.clock_recovery_mm_ff( sps / 2.0, saved_clock_alpha**2 / 4.0, 0.5, saved_clock_alpha, max_clock_offset) self.gr_file_sink_0_0 = gr.file_sink(gr.sizeof_short * 1, frames_file) self.gr_file_sink_0_0.set_unbuffered(False) self.gr_interleaved_short_to_complex_0 = gr.interleaved_short_to_complex( ) self.gr_moving_average_xx_0 = gr.moving_average_ff(hs, 1.0 / hs, 4000) self.pll = noaa.hrpt_pll_cf(saved_pll_alpha, saved_pll_alpha**2 / 4.0, max_carrier_offset) self.poesweather_fy1_hrpt_decoder_0 = poesweather.fy1_hrpt_decoder( True, False) self.poesweather_fy1_hrpt_deframer_0 = poesweather.fy1_hrpt_deframer( sync_check) self.usrp_simple_source_x_0 = grc_usrp.simple_source_s(which=0, side=side, rx_ant="RXA") self.usrp_simple_source_x_0.set_decim_rate(decim) self.usrp_simple_source_x_0.set_frequency(freq, verbose=True) self.usrp_simple_source_x_0.set_gain(gain) ################################################## # Connections ################################################## self.connect((self.gr_clock_recovery_mm_xx_0, 0), (self.gr_binary_slicer_fb_0, 0)) self.connect((self.agc, 0), (self.pll, 0)) self.connect((self.pll, 0), (self.gr_moving_average_xx_0, 0)) self.connect((self.gr_moving_average_xx_0, 0), (self.gr_clock_recovery_mm_xx_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.gr_file_sink_0_0, 0)) self.connect((self.usrp_simple_source_x_0, 0), (self.gr_interleaved_short_to_complex_0, 0)) self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.agc, 0)) self.connect((self.gr_binary_slicer_fb_0, 0), (self.poesweather_fy1_hrpt_deframer_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.poesweather_fy1_hrpt_decoder_0, 0))
def __init__(self, sync_check=False, baseband_file=os.environ['HOME'] + '/FENGYUN-1D.dat', frames_file=os.environ['HOME'] + '/FENGYUN-1D.hrpt', decim=16, satellite='FENGYUN-1D'): grc_wxgui.top_block_gui.__init__( self, title="Feng Yun 1 HRPT Baseband To Frames") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Parameters ################################################## self.sync_check = sync_check self.baseband_file = baseband_file self.frames_file = frames_file self.decim = decim self.satellite = satellite ################################################## # Variables ################################################## self.sym_rate = sym_rate = 600 * 1109 * 2 self.sample_rate = sample_rate = 64e6 / decim self.config_filename = config_filename = os.environ[ 'HOME'] + '/.gnuradio/fy1_hrpt.conf' self.sps = sps = sample_rate / sym_rate self._saved_pll_alpha_config = ConfigParser.ConfigParser() self._saved_pll_alpha_config.read(config_filename) try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat( "satname", 'pll_alpha') except: saved_pll_alpha = 0.01 self.saved_pll_alpha = saved_pll_alpha self._saved_clock_alpha_config = ConfigParser.ConfigParser() self._saved_clock_alpha_config.read(config_filename) try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat( "satname", 'clock_alpha') except: saved_clock_alpha = 0.01 self.saved_clock_alpha = saved_clock_alpha self.sync_check_txt = sync_check_txt = sync_check self.satname_txt = satname_txt = satellite self.pll_alpha = pll_alpha = saved_pll_alpha self.max_clock_offset = max_clock_offset = 100e-6 self.max_carrier_offset = max_carrier_offset = 2 * math.pi * 100e3 / sample_rate self.hs = hs = int(sps / 2.0) self.frames_file_txt = frames_file_txt = frames_file self.decim_txt = decim_txt = decim self.clock_alpha = clock_alpha = saved_clock_alpha self.baseband_file_txt = baseband_file_txt = baseband_file ################################################## # Notebooks ################################################## self.displays = wx.Notebook(self.GetWin(), style=wx.NB_TOP) self.displays.AddPage(grc_wxgui.Panel(self.displays), "Feng Yun 1 HRPT Spectrum") self.displays.AddPage(grc_wxgui.Panel(self.displays), "Information") self.Add(self.displays) ################################################## # Controls ################################################## self._sync_check_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.sync_check_txt, callback=self.set_sync_check_txt, label="Sync check", converter=forms.int_converter(), ) self.GridAdd(self._sync_check_txt_static_text, 0, 3, 1, 1) self._satname_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.satname_txt, callback=self.set_satname_txt, label="Satellite", converter=forms.str_converter(), ) self.GridAdd(self._satname_txt_static_text, 0, 0, 1, 1) _pll_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._pll_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, label="PLL Alpha", converter=forms.float_converter(), proportion=0, ) self._pll_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_pll_alpha_sizer, value=self.pll_alpha, callback=self.set_pll_alpha, minimum=0.0, maximum=0.5, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_pll_alpha_sizer, 1, 0, 1, 1) self._frames_file_txt_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.frames_file_txt, callback=self.set_frames_file_txt, label="Frames output filename", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._frames_file_txt_static_text, 2, 0, 1, 1) self._decim_txt_static_text = forms.static_text( parent=self.GetWin(), value=self.decim_txt, callback=self.set_decim_txt, label="Decimation", converter=forms.str_converter(), ) self.GridAdd(self._decim_txt_static_text, 0, 1, 1, 1) _clock_alpha_sizer = wx.BoxSizer(wx.VERTICAL) self._clock_alpha_text_box = forms.text_box( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, label="Clock Alpha", converter=forms.float_converter(), proportion=0, ) self._clock_alpha_slider = forms.slider( parent=self.GetWin(), sizer=_clock_alpha_sizer, value=self.clock_alpha, callback=self.set_clock_alpha, minimum=0.0, maximum=0.5, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_clock_alpha_sizer, 1, 1, 1, 1) self._baseband_file_txt_static_text = forms.static_text( parent=self.displays.GetPage(1).GetWin(), value=self.baseband_file_txt, callback=self.set_baseband_file_txt, label="Baseband filename", converter=forms.str_converter(), ) self.displays.GetPage(1).GridAdd(self._baseband_file_txt_static_text, 1, 0, 1, 1) ################################################## # Blocks ################################################## self.agc = gr.agc_cc(1e-6, 1.0, 1.0, 1.0) self.frame_sink = gr.file_sink(gr.sizeof_short * 1, "/home/jerry/test.hrpt") self.frame_sink.set_unbuffered(False) self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb() self.gr_clock_recovery_mm_xx_0 = gr.clock_recovery_mm_ff( sps / 2.0, clock_alpha**2 / 4.0, 0.5, clock_alpha, max_clock_offset) self.gr_file_source_0 = gr.file_source(gr.sizeof_short * 1, "/home/jerry/feng-yun-bb.dat", False) self.gr_interleaved_short_to_complex_0 = gr.interleaved_short_to_complex( ) self.gr_moving_average_xx_0 = gr.moving_average_ff(hs, 1.0 / hs, 4000) self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2 / 4.0, max_carrier_offset) self.poesweather_fy1_hrpt_decoder_0 = poesweather.fy1_hrpt_decoder( True, False) self.poesweather_fy1_hrpt_deframer_0 = poesweather.fy1_hrpt_deframer( sync_check) self.rx_fft = fftsink2.fft_sink_c( self.displays.GetPage(0).GetWin(), baseband_freq=0, y_per_div=5, y_divs=10, ref_level=45, ref_scale=2.0, sample_rate=sample_rate, fft_size=1024, fft_rate=30, average=True, avg_alpha=0.1, title="Feng Yun 1 HRPT Spectrum", peak_hold=False, ) self.displays.GetPage(0).Add(self.rx_fft.win) self.throttle = gr.throttle(gr.sizeof_short * 1, sample_rate * 4) ################################################## # Connections ################################################## self.connect((self.gr_interleaved_short_to_complex_0, 0), (self.agc, 0)) self.connect((self.throttle, 0), (self.gr_interleaved_short_to_complex_0, 0)) self.connect((self.gr_file_source_0, 0), (self.throttle, 0)) self.connect((self.agc, 0), (self.rx_fft, 0)) self.connect((self.agc, 0), (self.pll, 0)) self.connect((self.pll, 0), (self.gr_moving_average_xx_0, 0)) self.connect((self.gr_moving_average_xx_0, 0), (self.gr_clock_recovery_mm_xx_0, 0)) self.connect((self.gr_clock_recovery_mm_xx_0, 0), (self.gr_binary_slicer_fb_0, 0)) self.connect((self.gr_binary_slicer_fb_0, 0), (self.poesweather_fy1_hrpt_deframer_0, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.frame_sink, 0)) self.connect((self.poesweather_fy1_hrpt_deframer_0, 0), (self.poesweather_fy1_hrpt_decoder_0, 0))