conv: add convolutional coder for AMR SID UPDATE frames

AMR SID update frames are protected using an 1/4 convolutional coder,
wich is similar to the one used with 6,7 kbit voice frames. Except that
there is no puncturing and the length is different.

Change-Id: Ia35ed4178a7f0d816052b7e5d6478b93a1d9744f
Related: OS#2978
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index efca0a5..a518b28 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -135,6 +135,7 @@
 gsm0503_tch_ahs_5_9;
 gsm0503_tch_ahs_5_15;
 gsm0503_tch_ahs_4_75;
+gsm0503_tch_axs_sid_update;
 gsm0503_mcs1_dl_hdr;
 gsm0503_mcs1_ul_hdr;
 gsm0503_mcs1;
diff --git a/tests/conv/conv_gsm0503_test.ok b/tests/conv/conv_gsm0503_test.ok
index 39480ca..764bd43 100644
--- a/tests/conv/conv_gsm0503_test.ok
+++ b/tests/conv/conv_gsm0503_test.ok
@@ -190,6 +190,14 @@
 [..] Encoding / Decoding cycle : OK
 [..] Encoding / Decoding cycle : OK
 
+[+] Testing: gsm0503_tch_axs_sid_update
+[.] Input length  : ret =  49  exp =  49 -> OK
+[.] Output length : ret = 212  exp = 212 -> OK
+[.] Random vector checks:
+[..] Encoding / Decoding cycle : OK
+[..] Encoding / Decoding cycle : OK
+[..] Encoding / Decoding cycle : OK
+
 [+] Testing: gsm0503_mcs1_dl_hdr
 [.] Input length  : ret =  36  exp =  36 -> OK
 [.] Output length : ret = 108  exp = 108 -> OK
diff --git a/utils/conv_codes_gsm.py b/utils/conv_codes_gsm.py
index e189985..42f340b 100644
--- a/utils/conv_codes_gsm.py
+++ b/utils/conv_codes_gsm.py
@@ -522,6 +522,25 @@
 		description = ["TCH/AHS 4.75 kbits convolutional code"]
 	),
 
+	# TCH_AXS SID UPDATE definition
+	ConvolutionalCode(
+		49,
+		[
+			( G1, G3 ),
+			( G2, G3 ),
+			(  1,  1 ),
+			(  1,  1 ),
+		],
+		name = 'tch_axs_sid_update',
+		description = [
+			"TCH/AFS and TCH/AHS SID UPDATE convolutional code:",
+			"G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
+			"G2/G3 = 1 + D2 + D4     / 1 + D + D2 + D3 + D4",
+			"G3/G3 = 1",
+			"G3/G3 = 1",
+		]
+	),
+
 	# EDGE MCS1_DL_HDR definition
 	ConvolutionalCode(
 		36,