Hi all,
In the project I'm working on, I'm trying to step through a list of
frequencies and scan them, with the set of frequencies and the step
interval as configurable options. As part of this, I'm trying to make a
message source block that does the frequency stepping (i.e. it takes the
list of frequencies and the step interval as parameters, and every
$step_interval it puts out a message with the new frequency). I figured
this would be pretty simple, and implemented it in Python. Problem
is...it doesn't do anything. I can debug-print from __init__ and see
that variables are getting set, but it seems like work() is never
getting called (debug print messages never print, and I don't see any
messages coming out of the block). Am I missing something to make the
block actually do its work? The block is attached.
Of course, if there's a better way to do the frequency stepping, I'm all
ears (though note that I'm using the osmocom source block which doesn't
have a control message port, which adds to the challenge).
Thanks,
Chris Reffett
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2018 Soar Technology, Inc.
#
# This is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this software; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
#
import numpy
import pmt
import time
from gnuradio import gr
class channel_cycler(gr.sync_block):
"""
Cycles through a provided list of channels at a designated update interval
"""
def __init__(self, channels, update_interval):
gr.sync_block.__init__(self,
name="channel_cycler",
in_sig=None,
out_sig=None)
self.update_interval = update_interval
self.channels = [int(x.strip()) for x in channels.split(',')]
self.index = 0
self.start_time = time.time()
self.message_port_register_out(pmt.intern('out'))
def work(self, input_items, output_items):
print "test"
if time.time() - self.start_time >= self.update_interval:
self.index = (self.index + 1) % len(self.channels)
self.start_time = time.time()
self.message_port_pub(pmt.intern('out'), pmt.cons(pmt.PMT_NIL,
pmt.from_long(self.channels[self.index])))
return 1
return 0
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio