diff intercom/gsm/gsm_deco.c @ 2:13be24d74cd2

import intercom-0.4.1
author Peter Meerwald <pmeerw@cosy.sbg.ac.at>
date Fri, 25 Jun 2010 09:57:52 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/intercom/gsm/gsm_deco.c	Fri Jun 25 09:57:52 2010 +0200
@@ -0,0 +1,127 @@
+/*
+ * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
+ * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
+ * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+ */
+
+/* $Header: /home/kbs/jutta/src/gsm/gsm-1.0/src/RCS/gsm_decode.c,v 1.1 1992/10/28 00:15:50 jutta Exp $ */
+
+#include "private.h"
+
+#include "gsm.h"
+#include "proto.h"
+
+int gsm_decode P3((s, c, target), gsm s, gsm_byte * c,
+  gsm_signal * target)
+{
+  word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13 * 4];
+
+  /* GSM_MAGIC  = (*c >> 4) & 0xF; */
+
+  if (((*c >> 4) & 0x0F) != GSM_MAGIC)
+    return -1;
+
+  LARc[0] = (*c++ & 0xF) << 2;  /* 1 */
+  LARc[0] |= (*c >> 6) & 0x3;
+  LARc[1] = *c++ & 0x3F;
+  LARc[2] = (*c >> 3) & 0x1F;
+  LARc[3] = (*c++ & 0x7) << 2;
+  LARc[3] |= (*c >> 6) & 0x3;
+  LARc[4] = (*c >> 2) & 0xF;
+  LARc[5] = (*c++ & 0x3) << 2;
+  LARc[5] |= (*c >> 6) & 0x3;
+  LARc[6] = (*c >> 3) & 0x7;
+  LARc[7] = *c++ & 0x7;
+  Nc[0] = (*c >> 1) & 0x7F;
+  bc[0] = (*c++ & 0x1) << 1;
+  bc[0] |= (*c >> 7) & 0x1;
+  Mc[0] = (*c >> 5) & 0x3;
+  xmaxc[0] = (*c++ & 0x1F) << 1;
+  xmaxc[0] |= (*c >> 7) & 0x1;
+  xmc[0] = (*c >> 4) & 0x7;
+  xmc[1] = (*c >> 1) & 0x7;
+  xmc[2] = (*c++ & 0x1) << 2;
+  xmc[2] |= (*c >> 6) & 0x3;
+  xmc[3] = (*c >> 3) & 0x7;
+  xmc[4] = *c++ & 0x7;
+  xmc[5] = (*c >> 5) & 0x7;
+  xmc[6] = (*c >> 2) & 0x7;
+  xmc[7] = (*c++ & 0x3) << 1;   /* 10 */
+  xmc[7] |= (*c >> 7) & 0x1;
+  xmc[8] = (*c >> 4) & 0x7;
+  xmc[9] = (*c >> 1) & 0x7;
+  xmc[10] = (*c++ & 0x1) << 2;
+  xmc[10] |= (*c >> 6) & 0x3;
+  xmc[11] = (*c >> 3) & 0x7;
+  xmc[12] = *c++ & 0x7;
+  Nc[1] = (*c >> 1) & 0x7F;
+  bc[1] = (*c++ & 0x1) << 1;
+  bc[1] |= (*c >> 7) & 0x1;
+  Mc[1] = (*c >> 5) & 0x3;
+  xmaxc[1] = (*c++ & 0x1F) << 1;
+  xmaxc[1] |= (*c >> 7) & 0x1;
+  xmc[13] = (*c >> 4) & 0x7;
+  xmc[14] = (*c >> 1) & 0x7;
+  xmc[15] = (*c++ & 0x1) << 2;
+  xmc[15] |= (*c >> 6) & 0x3;
+  xmc[16] = (*c >> 3) & 0x7;
+  xmc[17] = *c++ & 0x7;
+  xmc[18] = (*c >> 5) & 0x7;
+  xmc[19] = (*c >> 2) & 0x7;
+  xmc[20] = (*c++ & 0x3) << 1;
+  xmc[20] |= (*c >> 7) & 0x1;
+  xmc[21] = (*c >> 4) & 0x7;
+  xmc[22] = (*c >> 1) & 0x7;
+  xmc[23] = (*c++ & 0x1) << 2;
+  xmc[23] |= (*c >> 6) & 0x3;
+  xmc[24] = (*c >> 3) & 0x7;
+  xmc[25] = *c++ & 0x7;
+  Nc[2] = (*c >> 1) & 0x7F;
+  bc[2] = (*c++ & 0x1) << 1;    /* 20 */
+  bc[2] |= (*c >> 7) & 0x1;
+  Mc[2] = (*c >> 5) & 0x3;
+  xmaxc[2] = (*c++ & 0x1F) << 1;
+  xmaxc[2] |= (*c >> 7) & 0x1;
+  xmc[26] = (*c >> 4) & 0x7;
+  xmc[27] = (*c >> 1) & 0x7;
+  xmc[28] = (*c++ & 0x1) << 2;
+  xmc[28] |= (*c >> 6) & 0x3;
+  xmc[29] = (*c >> 3) & 0x7;
+  xmc[30] = *c++ & 0x7;
+  xmc[31] = (*c >> 5) & 0x7;
+  xmc[32] = (*c >> 2) & 0x7;
+  xmc[33] = (*c++ & 0x3) << 1;
+  xmc[33] |= (*c >> 7) & 0x1;
+  xmc[34] = (*c >> 4) & 0x7;
+  xmc[35] = (*c >> 1) & 0x7;
+  xmc[36] = (*c++ & 0x1) << 2;
+  xmc[36] |= (*c >> 6) & 0x3;
+  xmc[37] = (*c >> 3) & 0x7;
+  xmc[38] = *c++ & 0x7;
+  Nc[3] = (*c >> 1) & 0x7F;
+  bc[3] = (*c++ & 0x1) << 1;
+  bc[3] |= (*c >> 7) & 0x1;
+  Mc[3] = (*c >> 5) & 0x3;
+  xmaxc[3] = (*c++ & 0x1F) << 1;
+  xmaxc[3] |= (*c >> 7) & 0x1;
+  xmc[39] = (*c >> 4) & 0x7;
+  xmc[40] = (*c >> 1) & 0x7;
+  xmc[41] = (*c++ & 0x1) << 2;
+  xmc[41] |= (*c >> 6) & 0x3;
+  xmc[42] = (*c >> 3) & 0x7;
+  xmc[43] = *c++ & 0x7;         /* 30  */
+  xmc[44] = (*c >> 5) & 0x7;
+  xmc[45] = (*c >> 2) & 0x7;
+  xmc[46] = (*c++ & 0x3) << 1;
+  xmc[46] |= (*c >> 7) & 0x1;
+  xmc[47] = (*c >> 4) & 0x7;
+  xmc[48] = (*c >> 1) & 0x7;
+  xmc[49] = (*c++ & 0x1) << 2;
+  xmc[49] |= (*c >> 6) & 0x3;
+  xmc[50] = (*c >> 3) & 0x7;
+  xmc[51] = *c & 0x7;           /* 33 */
+
+  Gsm_Decoder(s, LARc, Nc, bc, Mc, xmaxc, xmc, target);
+
+  return 0;
+}

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.