Add HR demapping

This commit is contained in:
Andrew Artyushok 2018-01-30 12:54:07 +02:00 committed by Piotr Krysik
parent 7fb1738cd8
commit 3e2f883ba0
4 changed files with 36 additions and 9 deletions

View File

@ -3,16 +3,41 @@
<name>TCH/F Demapper</name> <name>TCH/F Demapper</name>
<key>gsm_tch_f_chans_demapper</key> <key>gsm_tch_f_chans_demapper</key>
<import>import grgsm</import> <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> <param>
<name>timeslot_nr</name> <name>Timeslot</name>
<key>timeslot_nr</key> <key>timeslot_nr</key>
<value>2</value> <value>2</value>
<type>int</type> <type>int</type>
<hide>part</hide> <hide>part</hide>
</param> </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> <sink>
<name>bursts</name> <name>bursts</name>
<type>message</type> <type>message</type>

View File

@ -48,7 +48,7 @@ namespace gr {
* class. gsm::tch_f_chans_demapper::make is the public interface for * class. gsm::tch_f_chans_demapper::make is the public interface for
* creating new instances. * 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 } // namespace gsm

View File

@ -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, 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, pmt::pmt_t *d_bursts_sacch,
uint32_t *d_frame_numbers_sacch, pmt::pmt_t d_bursts[3][8], 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) uint32_t d_frame_numbers[3][8], pmt::pmt_t msg_out)
{ {
bool frames_are_consecutive = true; bool frames_are_consecutive = true;
if (fn_mod13 == 12) if (fn_mod13 == 12)
{ {

View File

@ -32,6 +32,8 @@ namespace gr {
{ {
private: private:
unsigned int d_timeslot; unsigned int d_timeslot;
int d_tch_type;
int d_tch_h_channel;
// Downlink // Downlink
uint32_t d_frame_numbers_dl[3][8]; // for checking consecutive frame numbers of tch 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 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); uint32_t d_frame_numbers[3][8], pmt::pmt_t msg_out);
public: 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(); ~tch_f_chans_demapper_impl();
void filter_tch_chans(pmt::pmt_t msg); void filter_tch_chans(pmt::pmt_t msg);