mncc: Complete definitions for all speech traffic frames at MNCC interface

The new definitions are: half rate and AMR

Change of definition name for bad frame, because it applies to all types of
traffic, not only TCH/F.

Increase MNCC interface version to 4. Version 3 is skipped, because it was
used by older version of Linux-Call-Router which is incompatible with the
current version of the MNCC interface.
diff --git a/openbsc/include/openbsc/mncc.h b/openbsc/include/openbsc/mncc.h
index ffc247b..c61f6b8 100644
--- a/openbsc/include/openbsc/mncc.h
+++ b/openbsc/include/openbsc/mncc.h
@@ -95,7 +95,9 @@
 
 #define GSM_TCHF_FRAME		0x0300
 #define GSM_TCHF_FRAME_EFR	0x0301
-#define GSM_TCHF_BAD_FRAME	0x03ff
+#define GSM_TCHH_FRAME		0x0302
+#define GSM_TCH_FRAME_AMR	0x0303
+#define GSM_BAD_FRAME		0x03ff
 
 #define MNCC_SOCKET_HELLO	0x0400
 
@@ -161,7 +163,7 @@
 	unsigned char	data[0];
 };
 
-#define MNCC_SOCK_VERSION	2
+#define MNCC_SOCK_VERSION	4
 struct gsm_mncc_hello {
 	uint32_t	msg_type;
 	uint32_t	version;
diff --git a/openbsc/src/libmsc/mncc.c b/openbsc/src/libmsc/mncc.c
index b484772..73db5f0 100644
--- a/openbsc/src/libmsc/mncc.c
+++ b/openbsc/src/libmsc/mncc.c
@@ -84,7 +84,11 @@
 	{"MNCC_FRAME_DROP",	0x0202},
 	{"MNCC_LCHAN_MODIFY",	0x0203},
 
-	{"GSM_TCH_FRAME",	0x0300},
+	{"GSM_TCHF_FRAME",	0x0300},
+	{"GSM_TCHF_FRAME_EFR",	0x0301},
+	{"GSM_TCHH_FRAME",	0x0302},
+	{"GSM_TCH_FRAME_AMR",	0x0303},
+	{"GSM_BAD_FRAME",	0x03ff},
 
 	{NULL, 0} };
 
diff --git a/openbsc/src/libtrau/trau_mux.c b/openbsc/src/libtrau/trau_mux.c
index 7b9bac0..fd1895f 100644
--- a/openbsc/src/libtrau/trau_mux.c
+++ b/openbsc/src/libtrau/trau_mux.c
@@ -314,7 +314,7 @@
 	return msg;
 
 bad_frame:
-	frame->msg_type = GSM_TCHF_BAD_FRAME;
+	frame->msg_type = GSM_BAD_FRAME;
 
 	return msg;
 }
diff --git a/openbsc/tests/trau/trau_test.c b/openbsc/tests/trau/trau_test.c
index f8a48db..b95f1e8 100644
--- a/openbsc/tests/trau/trau_test.c
+++ b/openbsc/tests/trau/trau_test.c
@@ -57,7 +57,7 @@
 	msg = trau_decode_efr(1, &tf);
 	OSMO_ASSERT(msg != NULL);
 	frame = (struct gsm_data_frame *)msg->data;
-	OSMO_ASSERT(frame->msg_type == GSM_TCHF_BAD_FRAME);
+	OSMO_ASSERT(frame->msg_type == GSM_BAD_FRAME);
 	msgb_free(msg);
 }