Fix the TCH/H decoder and demapper XML definitions

- The second argument of tch_h_decoder constructor is a string that
  accepts the value of MultiRate configuration element and not an enum
  like the tch_f_decoder decoder.
- Make the demapper's burst sink required.
- Make all parameters visible.
- Rename the TCH/H Channel parameter to Sub-channel number.
- Add the qa_tch_h_decoder test in the CMakeLists.txt
- Fix several typos

Change-Id: I92d4f49955c634df7d76f17cfb58d7106846c1bd
This commit is contained in:
Vasil Velichkov 2019-03-13 20:53:24 +02:00
parent 81ba56f59d
commit c5bb436cda
4 changed files with 26 additions and 40 deletions

View File

@ -344,7 +344,7 @@ if __name__ == '__main__':
tch_options.add_option("--sub-channel", dest="tch_h_channel", default="0", type='intx',
help="TCH/H sub-channel. [default=0]")
tch_options.add_option("--multi-rate", dest="multi_rate", default="", type='string',
help="The MultiRrate configuration element from the Assignment Command message. "
help="The MultiRate configuration element from the Assignment Command message. "
"Example: 28111a40. See 3GPP TS 44.018 - 10.5.2.21aa MultiRate configuration")
tch_options.add_option("--voice-boundary", dest="enable_voice_boundary_detection", action="store_true", default=False,
help="Enable voice boundary detection for traffic channels. This can help reduce noice in the output.")

View File

@ -3,54 +3,27 @@
<name>TCH/H decoder</name>
<key>gsm_tch_h_decoder</key>
<import>import grgsm</import>
<make>grgsm.tch_h_decoder($sub_channel, $mode, $boundary_check)</make>
<make>grgsm.tch_h_decoder($sub_channel, $multi_rate, $boundary_check)</make>
<param>
<name>sub-channel number</name>
<name>Sub-channel number</name>
<key>sub_channel</key>
<value>0</value>
<type>int</type>
<hide>none</hide>
<option>
<name>sub-channel 0</name>
<name>0</name>
<key>0</key>
</option>
<option>
<name>sub-channel 1</name>
<name>1</name>
<key>1</key>
</option>
</param>
<param>
<name>TCH/H coding mode</name>
<key>mode</key>
<type>enum</type>
<option>
<name>GSM-HS</name>
<key>grgsm.TCH_HS</key>
</option>
<option>
<name>GSM-AMR 7.95</name>
<key>grgsm.TCH_AHS7_95</key>
</option>
<option>
<name>GSM-AMR 7.4</name>
<key>grgsm.TCH_AHS7_4</key>
</option>
<option>
<name>GSM-AMR 6.7</name>
<key>grgsm.TCH_AHS6_7</key>
</option>
<option>
<name>GSM-AMR 5.9</name>
<key>grgsm.TCH_AHS5_9</key>
</option>
<option>
<name>GSM-AMR 5.15</name>
<key>grgsm.TCH_AHS5_15</key>
</option>
<option>
<name>GSM-AMR 4.75</name>
<key>grgsm.TCH_AHS4_75</key>
</option>
<name>MultiRate configuration</name>
<key>multi_rate</key>
<type>string</type>
</param>
<param>
<name>Voice boundary detection</name>
@ -83,6 +56,11 @@
</source>
<doc>
The MultiRate configuration string should contains the hex string from the
MultiRate configuration element from the Assignment Command message.
Example: 28111a40.
See 3GPP TS 44.018 - 10.5.2.21aa MultiRate configuratio
If "Voice boundary detection" is enabled, then only bursts are decoded as voice where
- the framenumber is greater then the framenumber of a received "Connect" or "Connect Acknowlegde" message, and

View File

@ -10,22 +10,29 @@
<key>timeslot_nr</key>
<value>2</value>
<type>int</type>
<hide>part</hide>
<hide>none</hide>
</param>
<param>
<name>TCH/H Channel</name>
<name>Sub-channel number</name>
<key>tch_h_channel</key>
<value>0</value>
<type>int</type>
<hide>#if $tch_type() == 0 then 'all' else 'none'#</hide>
<hide>none</hide>
<option>
<name>0</name>
<key>0</key>
</option>
<option>
<name>1</name>
<key>1</key>
</option>
</param>
<check>$tch_h_channel() &gt; -1 and $tch_h_channel() &lt; 2</check>
<sink>
<name>bursts</name>
<type>message</type>
<optional>1</optional>
</sink>
<source>
<name>tch_bursts</name>

View File

@ -58,6 +58,7 @@ GR_ADD_TEST(qa_burst_sdcch_subslot_filter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_S
GR_ADD_TEST(qa_burst_fnr_filter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_burst_fnr_filter.py)
GR_ADD_TEST(qa_dummy_burst_filter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_dummy_burst_filter.py)
GR_ADD_TEST(qa_tch_f_decoder ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_tch_f_decoder.py)
GR_ADD_TEST(qa_tch_h_decoder ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_tch_h_decoder.py)
GR_ADD_TEST(qa_tch_f_chans_demapper ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_tch_f_chans_demapper.py)
GR_ADD_TEST(qa_tch_h_chans_demapper ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_tch_h_chans_demapper.py)
#GR_ADD_TEST(qa_msg_to_tag ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_msg_to_tag.py)