aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Artyushok <loony.developer@gmail.com>2018-01-30 12:54:07 +0200
committerPiotr Krysik <ptrkrysik@gmail.com>2018-12-29 00:52:05 +0100
commitfbcee391070d376b847def931652be12b1b52750 (patch)
tree256a0d5d4f9b6606ecd082cf1443c0e9b5bdcb85
parent003c8720f5305db6059fe3fd246df0e3e1825ef4 (diff)
Add HR demapping
-rw-r--r--grc/demapping/gsm_tch_f_chans_demapper.xml29
-rw-r--r--include/grgsm/demapping/tch_f_chans_demapper.h2
-rw-r--r--lib/demapping/tch_f_chans_demapper_impl.cc10
-rw-r--r--lib/demapping/tch_f_chans_demapper_impl.h4
4 files changed, 36 insertions, 9 deletions
diff --git a/grc/demapping/gsm_tch_f_chans_demapper.xml b/grc/demapping/gsm_tch_f_chans_demapper.xml
index 23d77ee..c87776a 100644
--- a/grc/demapping/gsm_tch_f_chans_demapper.xml
+++ b/grc/demapping/gsm_tch_f_chans_demapper.xml
@@ -3,16 +3,41 @@
<name>TCH/F Demapper</name>
<key>gsm_tch_f_chans_demapper</key>
<import>import grgsm</import>
- <make>grgsm.tch_f_chans_demapper($timeslot_nr)</make>
+ <make>grgsm.tch_f_chans_demapper($timeslot_nr, $tch_type, $tch_h_channel)</make>
<param>
- <name>timeslot_nr</name>
+ <name>Timeslot</name>
<key>timeslot_nr</key>
<value>2</value>
<type>int</type>
<hide>part</hide>
</param>
+ <param>
+ <name>TCH Type</name>
+ <key>tch_type</key>
+ <value>0</value>
+ <type>int</type>
+ <hide>part</hide>
+ <option>
+ <name>Full rate</name>
+ <key>0</key>
+ </option>
+ <option>
+ <name>Half rate</name>
+ <key>1</key>
+ </option>
+ </param>
+
+ <param>
+ <name>TCH/H Channel</name>
+ <key>tch_h_channel</key>
+ <value>0</value>
+ <type>int</type>
+ <hide>#if $tch_type() == 0 then 'all' else 'none'#</hide>
+ </param>
+ <check>$tch_h_channel() &gt; -1 and $tch_h_channel() &lt; 2</check>
+
<sink>
<name>bursts</name>
<type>message</type>
diff --git a/include/grgsm/demapping/tch_f_chans_demapper.h b/include/grgsm/demapping/tch_f_chans_demapper.h
index c04c749..32bed30 100644
--- a/include/grgsm/demapping/tch_f_chans_demapper.h
+++ b/include/grgsm/demapping/tch_f_chans_demapper.h
@@ -48,7 +48,7 @@ namespace gr {
* class. gsm::tch_f_chans_demapper::make is the public interface for
* creating new instances.
*/
- static sptr make(unsigned int timeslot_nr);
+ static sptr make(unsigned int timeslot_nr, int tch_type, int tch_h_channel);
};
} // namespace gsm
diff --git a/lib/demapping/tch_f_chans_demapper_impl.cc b/lib/demapping/tch_f_chans_demapper_impl.cc
index 9865a47..0841fd2 100644
--- a/lib/demapping/tch_f_chans_demapper_impl.cc
+++ b/lib/demapping/tch_f_chans_demapper_impl.cc
@@ -109,11 +109,11 @@ namespace gr {
}
}
- void tch_f_chans_demapper_impl::sacch_tch_demapper(uint32_t fn_mod13, uint32_t fn_mod26, uint32_t frame_nr,
- pmt::pmt_t *d_bursts_sacch,
- uint32_t *d_frame_numbers_sacch, pmt::pmt_t d_bursts[3][8],
- uint32_t d_frame_numbers[3][8], pmt::pmt_t msg_out)
- {
+void tch_f_chans_demapper_impl::sacch_tch_demapper(uint32_t fn_mod13, u_int32_t fn_mod26, uint32_t frame_nr,
+ pmt::pmt_t *d_bursts_sacch,
+ uint32_t *d_frame_numbers_sacch, pmt::pmt_t d_bursts[3][8],
+ uint32_t d_frame_numbers[3][8], pmt::pmt_t msg_out)
+{
bool frames_are_consecutive = true;
if (fn_mod13 == 12)
{
diff --git a/lib/demapping/tch_f_chans_demapper_impl.h b/lib/demapping/tch_f_chans_demapper_impl.h
index bef018d..7a546e7 100644
--- a/lib/demapping/tch_f_chans_demapper_impl.h
+++ b/lib/demapping/tch_f_chans_demapper_impl.h
@@ -32,6 +32,8 @@ namespace gr {
{
private:
unsigned int d_timeslot;
+ int d_tch_type;
+ int d_tch_h_channel;
// Downlink
uint32_t d_frame_numbers_dl[3][8]; // for checking consecutive frame numbers of tch
uint32_t d_frame_numbers_sacch_dl[4]; // for checking consecutive frame numbers of sacch
@@ -49,7 +51,7 @@ namespace gr {
uint32_t d_frame_numbers[3][8], pmt::pmt_t msg_out);
public:
- tch_f_chans_demapper_impl(unsigned int timeslot_nr);
+ tch_f_chans_demapper_impl(unsigned int timeslot_nr, int tch_type, int tch_h_channel);
~tch_f_chans_demapper_impl();
void filter_tch_chans(pmt::pmt_t msg);