[utils] Create gsm_utils for 7bit encoding and decoding...
diff --git a/src/gsm_04_11.c b/src/gsm_04_11.c
index a7b603e..e94f9ad 100644
--- a/src/gsm_04_11.c
+++ b/src/gsm_04_11.c
@@ -35,6 +35,7 @@
 #include <openbsc/gsm_subscriber.h>
 #include <openbsc/gsm_04_11.h>
 #include <openbsc/gsm_04_08.h>
+#include <openbsc/gsm_utils.h>
 #include <openbsc/abis_rsl.h>
 #include <openbsc/signal.h>
 
@@ -56,23 +57,6 @@
 	return rsl_data_request(msg, 0);
 }
 
-static char *gsm411_7bit_decode(u_int8_t *user_data, u_int8_t length)
-{
-	u_int8_t d_off = 0, b_off = 0;
-	u_int8_t i;
-	char *text = malloc(length+1);
-
-	for (i=0;i<length;i++) {
-		text[i] = ((user_data[d_off] + (user_data[d_off+1]<<8)) & (0x7f<<b_off))>>b_off;
-		b_off += 7;
-		if (b_off >= 8) {
-			d_off += 1;
-			b_off -= 8;
-		}
-	}
-	text[i] = 0;
-	return text;
-}
 
 #if 0
 static u_int8_t gsm0411_tpdu_from_sms(u_int8_t *tpdu, struct sms_deliver *sms)
@@ -112,7 +96,7 @@
 	}
 	sms->ud_len = *smsp++;
 
-	sms->user_data = (u_int8_t *)gsm411_7bit_decode(smsp, sms->ud_len);
+	sms->user_data = (u_int8_t *)gsm_7bit_decode(smsp, sms->ud_len);
 
 	DEBUGP(DSMS, "SMS:\nMTI: 0x%02x, VPF: 0x%02x, MR: 0x%02x\n"
 			"PID: 0x%02x, DCS: 0x%02x, UserDataLength: 0x%02x\n"