[GPRS] introudce PDCH and PDCH/TCH physical channels

GPRS needs PDCH (Packet Data Channels), and we need support in
our data model as well as OML and RSL for it
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index d04b0c7..9a277ae 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -18,6 +18,8 @@
 	GSM_PCHAN_TCH_F,
 	GSM_PCHAN_TCH_H,
 	GSM_PCHAN_SDCCH8_SACCH8C,
+	GSM_PCHAN_PDCH,		/* GPRS PDCH */
+	GSM_PCHAN_TCH_F_PDCH,	/* TCH/F if used, PDCH otherwise */
 	GSM_PCHAN_UNKNOWN,
 };
 
diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c
index e00e569..03d9def 100755
--- a/openbsc/src/abis_nm.c
+++ b/openbsc/src/abis_nm.c
@@ -410,6 +410,8 @@
 	[GSM_PCHAN_TCH_F]	= NM_CHANC_TCHFull,
 	[GSM_PCHAN_TCH_H]	= NM_CHANC_TCHHalf,
 	[GSM_PCHAN_SDCCH8_SACCH8C] = NM_CHANC_SDCCH,
+	[GSM_PCHAN_PDCH]	= NM_CHANC_IPAC_PDCH,
+	[GSM_PCHAN_TCH_F_PDCH]	= NM_CHANC_IPAC_TCHFull_PDCH,
 	/* FIXME: bounds check */
 };
 
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index da12d93..1a42b75 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -202,7 +202,9 @@
 
 	if (cbits == 0x01) {
 		lch_idx = 0;	/* TCH/F */	
-		if (ts->pchan != GSM_PCHAN_TCH_F)
+		if (ts->pchan != GSM_PCHAN_TCH_F &&
+		    ts->pchan != GSM_PCHAN_PDCH &&
+		    ts->pchan != GSM_PCHAN_TCH_F_PDCH)
 			fprintf(stderr, "chan_nr=0x%02x but pchan=%u\n",
 				chan_nr, ts->pchan);
 	} else if ((cbits & 0x1e) == 0x02) {
@@ -244,6 +246,8 @@
 
 	switch (ts->pchan) {
 	case GSM_PCHAN_TCH_F:
+	case GSM_PCHAN_PDCH:
+	case GSM_PCHAN_TCH_F_PDCH:
 		cbits = 0x01;
 		break;
 	case GSM_PCHAN_TCH_H:
diff --git a/openbsc/src/gsm_data.c b/openbsc/src/gsm_data.c
index de9f4b9..3464290 100644
--- a/openbsc/src/gsm_data.c
+++ b/openbsc/src/gsm_data.c
@@ -45,6 +45,8 @@
 	[GSM_PCHAN_TCH_F]	= "TCH/F",
 	[GSM_PCHAN_TCH_H]	= "TCH/H",
 	[GSM_PCHAN_SDCCH8_SACCH8C] = "SDCCH8",
+	[GSM_PCHAN_PDCH]	= "PDCH",
+	[GSM_PCHAN_TCH_F_PDCH]	= "TCH/F_PDCH",
 	[GSM_PCHAN_UNKNOWN]	= "UNKNOWN",
 };