00001
00002
00003
00004
00005
00006
00007
00008
00009 #include <stdio.h>
00010
00011 #include "private.h"
00012
00013 #include "gsm.h"
00014 #include "proto.h"
00015
00016 int gsm_print P3((f, s, c), FILE * f, gsm s, gsm_byte * c)
00017 {
00018 word LARc[8], Nc[4], Mc[4], bc[4], xmaxc[4], xmc[13*4];
00019
00020
00021
00022 if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1;
00023
00024 LARc[0] = (*c++ & 0xF) << 2;
00025 LARc[0] |= (*c >> 6) & 0x3;
00026 LARc[1] = *c++ & 0x3F;
00027 LARc[2] = (*c >> 3) & 0x1F;
00028 LARc[3] = (*c++ & 0x7) << 2;
00029 LARc[3] |= (*c >> 6) & 0x3;
00030 LARc[4] = (*c >> 2) & 0xF;
00031 LARc[5] = (*c++ & 0x3) << 2;
00032 LARc[5] |= (*c >> 6) & 0x3;
00033 LARc[6] = (*c >> 3) & 0x7;
00034 LARc[7] = *c++ & 0x7;
00035
00036
00037 Nc[0] = (*c >> 1) & 0x7F;
00038 bc[0] = (*c++ & 0x1) << 1;
00039 bc[0] |= (*c >> 7) & 0x1;
00040 Mc[0] = (*c >> 5) & 0x3;
00041 xmaxc[0] = (*c++ & 0x1F) << 1;
00042 xmaxc[0] |= (*c >> 7) & 0x1;
00043 xmc[0] = (*c >> 4) & 0x7;
00044 xmc[1] = (*c >> 1) & 0x7;
00045 xmc[2] = (*c++ & 0x1) << 2;
00046 xmc[2] |= (*c >> 6) & 0x3;
00047 xmc[3] = (*c >> 3) & 0x7;
00048 xmc[4] = *c++ & 0x7;
00049 xmc[5] = (*c >> 5) & 0x7;
00050 xmc[6] = (*c >> 2) & 0x7;
00051 xmc[7] = (*c++ & 0x3) << 1;
00052 xmc[7] |= (*c >> 7) & 0x1;
00053 xmc[8] = (*c >> 4) & 0x7;
00054 xmc[9] = (*c >> 1) & 0x7;
00055 xmc[10] = (*c++ & 0x1) << 2;
00056 xmc[10] |= (*c >> 6) & 0x3;
00057 xmc[11] = (*c >> 3) & 0x7;
00058 xmc[12] = *c++ & 0x7;
00059
00060 Nc[1] = (*c >> 1) & 0x7F;
00061 bc[1] = (*c++ & 0x1) << 1;
00062 bc[1] |= (*c >> 7) & 0x1;
00063 Mc[1] = (*c >> 5) & 0x3;
00064 xmaxc[1] = (*c++ & 0x1F) << 1;
00065 xmaxc[1] |= (*c >> 7) & 0x1;
00066 xmc[13] = (*c >> 4) & 0x7;
00067 xmc[14] = (*c >> 1) & 0x7;
00068 xmc[15] = (*c++ & 0x1) << 2;
00069 xmc[15] |= (*c >> 6) & 0x3;
00070 xmc[16] = (*c >> 3) & 0x7;
00071 xmc[17] = *c++ & 0x7;
00072 xmc[18] = (*c >> 5) & 0x7;
00073 xmc[19] = (*c >> 2) & 0x7;
00074 xmc[20] = (*c++ & 0x3) << 1;
00075 xmc[20] |= (*c >> 7) & 0x1;
00076 xmc[21] = (*c >> 4) & 0x7;
00077 xmc[22] = (*c >> 1) & 0x7;
00078 xmc[23] = (*c++ & 0x1) << 2;
00079 xmc[23] |= (*c >> 6) & 0x3;
00080 xmc[24] = (*c >> 3) & 0x7;
00081 xmc[25] = *c++ & 0x7;
00082
00083
00084 Nc[2] = (*c >> 1) & 0x7F;
00085 bc[2] = (*c++ & 0x1) << 1;
00086 bc[2] |= (*c >> 7) & 0x1;
00087 Mc[2] = (*c >> 5) & 0x3;
00088 xmaxc[2] = (*c++ & 0x1F) << 1;
00089 xmaxc[2] |= (*c >> 7) & 0x1;
00090 xmc[26] = (*c >> 4) & 0x7;
00091 xmc[27] = (*c >> 1) & 0x7;
00092 xmc[28] = (*c++ & 0x1) << 2;
00093 xmc[28] |= (*c >> 6) & 0x3;
00094 xmc[29] = (*c >> 3) & 0x7;
00095 xmc[30] = *c++ & 0x7;
00096 xmc[31] = (*c >> 5) & 0x7;
00097 xmc[32] = (*c >> 2) & 0x7;
00098 xmc[33] = (*c++ & 0x3) << 1;
00099 xmc[33] |= (*c >> 7) & 0x1;
00100 xmc[34] = (*c >> 4) & 0x7;
00101 xmc[35] = (*c >> 1) & 0x7;
00102 xmc[36] = (*c++ & 0x1) << 2;
00103 xmc[36] |= (*c >> 6) & 0x3;
00104 xmc[37] = (*c >> 3) & 0x7;
00105 xmc[38] = *c++ & 0x7;
00106
00107 Nc[3] = (*c >> 1) & 0x7F;
00108 bc[3] = (*c++ & 0x1) << 1;
00109 bc[3] |= (*c >> 7) & 0x1;
00110 Mc[3] = (*c >> 5) & 0x3;
00111 xmaxc[3] = (*c++ & 0x1F) << 1;
00112 xmaxc[3] |= (*c >> 7) & 0x1;
00113
00114 xmc[39] = (*c >> 4) & 0x7;
00115 xmc[40] = (*c >> 1) & 0x7;
00116 xmc[41] = (*c++ & 0x1) << 2;
00117 xmc[41] |= (*c >> 6) & 0x3;
00118 xmc[42] = (*c >> 3) & 0x7;
00119 xmc[43] = *c++ & 0x7;
00120 xmc[44] = (*c >> 5) & 0x7;
00121 xmc[45] = (*c >> 2) & 0x7;
00122 xmc[46] = (*c++ & 0x3) << 1;
00123 xmc[46] |= (*c >> 7) & 0x1;
00124 xmc[47] = (*c >> 4) & 0x7;
00125 xmc[48] = (*c >> 1) & 0x7;
00126 xmc[49] = (*c++ & 0x1) << 2;
00127 xmc[49] |= (*c >> 6) & 0x3;
00128 xmc[50] = (*c >> 3) & 0x7;
00129 xmc[51] = *c & 0x7;
00130
00131 fprintf(f,
00132 "LARc:\t%2.2d %2.2d %2.2d %2.2d %2.2d %2.2d %2.2d %2.2d\n",
00133 LARc[0],LARc[1],LARc[2],LARc[3],LARc[4],LARc[5],LARc[6],LARc[7]);
00134
00135 fprintf(f, "#1: Nc %4.4d bc %d Mc %d xmaxc %d\n",
00136 Nc[0], bc[0], Mc[0], xmaxc[0]);
00137 fprintf(f,
00138 "\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",
00139 xmc[0],xmc[1],xmc[2],xmc[3],xmc[4],xmc[5],xmc[6],
00140 xmc[7],xmc[8],xmc[9],xmc[10],xmc[11],xmc[12] );
00141
00142 fprintf(f, "#2: Nc %4.4d bc %d Mc %d xmaxc %d\n",
00143 Nc[1], bc[1], Mc[1], xmaxc[1]);
00144 fprintf(f,
00145 "\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",
00146 xmc[13+0],xmc[13+1],xmc[13+2],xmc[13+3],xmc[13+4],xmc[13+5],
00147 xmc[13+6], xmc[13+7],xmc[13+8],xmc[13+9],xmc[13+10],xmc[13+11],
00148 xmc[13+12] );
00149
00150 fprintf(f, "#3: Nc %4.4d bc %d Mc %d xmaxc %d\n",
00151 Nc[2], bc[2], Mc[2], xmaxc[2]);
00152 fprintf(f,
00153 "\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",
00154 xmc[26+0],xmc[26+1],xmc[26+2],xmc[26+3],xmc[26+4],xmc[26+5],
00155 xmc[26+6], xmc[26+7],xmc[26+8],xmc[26+9],xmc[26+10],xmc[26+11],
00156 xmc[26+12] );
00157
00158 fprintf(f, "#4: Nc %4.4d bc %d Mc %d xmaxc %d\n",
00159 Nc[3], bc[3], Mc[3], xmaxc[3]);
00160 fprintf(f,
00161 "\t%.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d %.2d\n",
00162 xmc[39+0],xmc[39+1],xmc[39+2],xmc[39+3],xmc[39+4],xmc[39+5],
00163 xmc[39+6], xmc[39+7],xmc[39+8],xmc[39+9],xmc[39+10],xmc[39+11],
00164 xmc[39+12] );
00165
00166 return 0;
00167 }