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

Reply via email to