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>
<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>

View File

@ -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

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,
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)
{

View File

@ -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);