summaryrefslogtreecommitdiff
path: root/gr-dtv
diff options
context:
space:
mode:
authorRon Economos <w6rz@comcast.net>2019-01-16 23:52:22 -0800
committerMartin Braun <martin.braun@ettus.com>2019-01-17 18:14:57 -0800
commitf87e0afacd2fa4cb251115c316dc7945d43df523 (patch)
tree6dae3b24a163d1338a167a88c3ae94d543739266 /gr-dtv
parentaa241dd04f8d931a997df40068464e690c0015af (diff)
dtv: Use alternate constellation amplitude for 16 and 32-APSK.
Diffstat (limited to 'gr-dtv')
-rw-r--r--gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc b/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc
index e40e602494..53353b8a8a 100644
--- a/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc
+++ b/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2015-2018 Free Software Foundation, Inc.
+ * Copyright 2015-2019 Free Software Foundation, 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
@@ -44,7 +44,7 @@ namespace gr {
gr::io_signature::make(1, 1, sizeof(unsigned char)),
gr::io_signature::make(1, 1, sizeof(gr_complex)))
{
- double r1, r2, r3, r4, r5, r6, r7, r8;
+ double r0, r1, r2, r3, r4, r5, r6, r7, r8;
double m = 1.0;
r1 = m;
switch (constellation) {
@@ -178,6 +178,9 @@ namespace gr {
break;
}
}
+ r0 = sqrt(4.0 / ((r1 * r1) + 3.0 * (r2 * r2)));
+ r1 *= r0;
+ r2 *= r0;
m_16apsk[0] = gr_complex((r2 * cos(GR_M_PI / 4.0)), (r2 * sin(GR_M_PI / 4.0)));
m_16apsk[1] = gr_complex((r2 * cos(-GR_M_PI / 4.0)), (r2 * sin(-GR_M_PI / 4.0)));
m_16apsk[2] = gr_complex((r2 * cos(3 * GR_M_PI / 4.0)), (r2 * sin(3 * GR_M_PI / 4.0)));
@@ -290,6 +293,10 @@ namespace gr {
r2 = 0;
break;
}
+ r0 = sqrt(8.0 / ((r1 * r1) + 3.0 * (r2 * r2) + 4.0 * (r3 * r3)));
+ r1 *= r0;
+ r2 *= r0;
+ r3 *= r0;
m_32apsk[0] = gr_complex((r2 * cos(GR_M_PI / 4.0)), (r2 * sin(GR_M_PI / 4.0)));
m_32apsk[1] = gr_complex((r2 * cos(5 * GR_M_PI / 12.0)), (r2 * sin(5 * GR_M_PI / 12.0)));
m_32apsk[2] = gr_complex((r2 * cos(-GR_M_PI / 4.0)), (r2 * sin(-GR_M_PI / 4.0)));