1 /* -*- c++ -*- */ 2 /* 3 * Copyright 2013 Free Software Foundation, Inc. 4 * 5 * This file is part of GNU Radio 6 * 7 * GNU Radio is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 3, or (at your option) 10 * any later version. 11 * 12 * GNU Radio is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with GNU Radio; see the file COPYING. If not, write to 19 * the Free Software Foundation, Inc., 51 Franklin Street, 20 * Boston, MA 02110-1301, USA. 21 */ 22 23 #ifndef INCLUDED_BLOCKS_RANDOM_PDU_IMPL_H 24 #define INCLUDED_BLOCKS_RANDOM_PDU_IMPL_H 25 26 #include <gnuradio/blocks/random_pdu.h> 27 #include <boost/generator_iterator.hpp> 28 #include <boost/random.hpp> 29 30 namespace gr { 31 namespace blocks { 32 33 class random_pdu_impl : public random_pdu 34 { 35 private: 36 boost::mt19937 d_rng; 37 boost::uniform_int<> d_urange; 38 boost::uniform_int<> d_brange; 39 boost::variate_generator<boost::mt19937, boost::uniform_int<>> d_rvar; // pdu length 40 boost::variate_generator<boost::mt19937, boost::uniform_int<>> d_bvar; // pdu contents 41 unsigned char d_mask; 42 int d_length_modulo; 43 44 public: 45 random_pdu_impl(int min_items, 46 int max_items, 47 unsigned char byte_mask, 48 int length_modulo); 49 50 bool start(); 51 void output_random(); generate_pdu(pmt::pmt_t msg)52 void generate_pdu(pmt::pmt_t msg) { output_random(); } generate_pdu()53 void generate_pdu() { output_random(); } 54 }; 55 56 } /* namespace blocks */ 57 } /* namespace gr */ 58 59 #endif /* INCLUDED_BLOCKS_RANDOM_PDU_IMPL_H */ 60