GNU Radio's OWC Package
PPM_Modulator_cplus_impl.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/* gr-owc OOT module for optical wireless communications.
3 * gr-owc is compatible with GNU Radio v3.10
4 *
5 * Copyright 2024 Kunal Sangurmath from Ubiquitous Communications and Networking (UCAN) Lab, University of Massachusetts, Boston.
6 *
7 * This 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 * This software 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 this software; 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
24#ifndef INCLUDED_OWC_PPM_MODULATOR_CPLUS_IMPL_H
25#define INCLUDED_OWC_PPM_MODULATOR_CPLUS_IMPL_H
26
28
29namespace gr {
30namespace owc {
31
33private:
34 float d_max_magnitude;
35 float d_min_magnitude;
36 int d_samples_per_symbol;
37 int d_samples_per_pulse;
38 int d_modulation_order;
39
40public:
41 PPM_Modulator_cplus_impl(float max_mag, float min_mag, int samples_per_symbol,
44
45 void set_max_magnitude(float max_mag) { d_max_magnitude = max_mag;}
46 float max_magnitude() { return d_max_magnitude; }
47
48 void set_min_magnitude(float min_mag) { d_min_magnitude = min_mag;}
49 float min_magnitude() { return d_min_magnitude; }
50
52 int samples_per_symbol() { return d_samples_per_symbol; }
53
54 void set_samples_per_pulse(int samples_per_pulse) { d_samples_per_pulse = samples_per_pulse;}
55 int samples_per_pulse() { return d_samples_per_pulse; }
56
57 void set_modulation_order(int modulation_order) { d_modulation_order = modulation_order;}
58 int modulation_order() { return d_modulation_order; }
59
60 // Where all the action really happens
61 int work(int noutput_items, gr_vector_const_void_star &input_items,
62 gr_vector_void_star &output_items);
63};
64
65} // namespace owc
66} // namespace gr
67
68#endif /* INCLUDED_OWC_PPM_MODULATOR_CPLUS_IMPL_H */
float min_magnitude()
Definition PPM_Modulator_cplus_impl.h:49
void set_modulation_order(int modulation_order)
Definition PPM_Modulator_cplus_impl.h:57
int samples_per_symbol()
Definition PPM_Modulator_cplus_impl.h:52
int modulation_order()
Definition PPM_Modulator_cplus_impl.h:58
void set_samples_per_symbol(int samples_per_symbol)
Definition PPM_Modulator_cplus_impl.h:51
void set_samples_per_pulse(int samples_per_pulse)
Definition PPM_Modulator_cplus_impl.h:54
PPM_Modulator_cplus_impl(float max_mag, float min_mag, int samples_per_symbol, int samples_per_pulse, int modulation_order)
void set_max_magnitude(float max_mag)
Definition PPM_Modulator_cplus_impl.h:45
int samples_per_pulse()
Definition PPM_Modulator_cplus_impl.h:55
float max_magnitude()
Definition PPM_Modulator_cplus_impl.h:46
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
void set_min_magnitude(float min_mag)
Definition PPM_Modulator_cplus_impl.h:48
<+description of block+>
Definition PPM_Modulator_cplus.h:38
Definition Hermitian_Symmetry_i_o_same_vec_size_cplus.h:31
Definition Hermitian_Symmetry_i_o_same_vec_size_cplus.h:30