1b815c7f3Sopenharmony_ci/* 2b815c7f3Sopenharmony_ci * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische 3b815c7f3Sopenharmony_ci * Universitaet Berlin. See the accompanying file "COPYRIGHT" for 4b815c7f3Sopenharmony_ci * details. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. 5b815c7f3Sopenharmony_ci */ 6b815c7f3Sopenharmony_ci 7b815c7f3Sopenharmony_ci#include "gsm610_priv.h" 8b815c7f3Sopenharmony_ci 9b815c7f3Sopenharmony_ci#include "gsm.h" 10b815c7f3Sopenharmony_ci 11b815c7f3Sopenharmony_ciint gsm_decode (gsm s, gsm_byte * c, gsm_signal * target) 12b815c7f3Sopenharmony_ci{ 13b815c7f3Sopenharmony_ci int16_t LARc [8], Nc [4], Mc [4], bc [4], xmaxc [4], xmc [13 * 4] ; 14b815c7f3Sopenharmony_ci 15b815c7f3Sopenharmony_ci#ifdef WAV49 16b815c7f3Sopenharmony_ci if (s->wav_fmt) 17b815c7f3Sopenharmony_ci { uint16_t sr = 0 ; 18b815c7f3Sopenharmony_ci 19b815c7f3Sopenharmony_ci s->frame_index = !s->frame_index ; 20b815c7f3Sopenharmony_ci if (s->frame_index) 21b815c7f3Sopenharmony_ci { sr = *c++ ; 22b815c7f3Sopenharmony_ci LARc [0] = sr & 0x3f ; sr >>= 6 ; 23b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 24b815c7f3Sopenharmony_ci LARc [1] = sr & 0x3f ; sr >>= 6 ; 25b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 4 ; 26b815c7f3Sopenharmony_ci LARc [2] = sr & 0x1f ; sr >>= 5 ; 27b815c7f3Sopenharmony_ci LARc [3] = sr & 0x1f ; sr >>= 5 ; 28b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 29b815c7f3Sopenharmony_ci LARc [4] = sr & 0xf ; sr >>= 4 ; 30b815c7f3Sopenharmony_ci LARc [5] = sr & 0xf ; sr >>= 4 ; 31b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; /* 5 */ 32b815c7f3Sopenharmony_ci LARc [6] = sr & 0x7 ; sr >>= 3 ; 33b815c7f3Sopenharmony_ci LARc [7] = sr & 0x7 ; sr >>= 3 ; 34b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 4 ; 35b815c7f3Sopenharmony_ci Nc [0] = sr & 0x7f ; sr >>= 7 ; 36b815c7f3Sopenharmony_ci bc [0] = sr & 0x3 ; sr >>= 2 ; 37b815c7f3Sopenharmony_ci Mc [0] = sr & 0x3 ; sr >>= 2 ; 38b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 39b815c7f3Sopenharmony_ci xmaxc [0] = sr & 0x3f ; sr >>= 6 ; 40b815c7f3Sopenharmony_ci xmc [0] = sr & 0x7 ; sr >>= 3 ; 41b815c7f3Sopenharmony_ci sr = *c++ ; 42b815c7f3Sopenharmony_ci xmc [1] = sr & 0x7 ; sr >>= 3 ; 43b815c7f3Sopenharmony_ci xmc [2] = sr & 0x7 ; sr >>= 3 ; 44b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 45b815c7f3Sopenharmony_ci xmc [3] = sr & 0x7 ; sr >>= 3 ; 46b815c7f3Sopenharmony_ci xmc [4] = sr & 0x7 ; sr >>= 3 ; 47b815c7f3Sopenharmony_ci xmc [5] = sr & 0x7 ; sr >>= 3 ; 48b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; /* 10 */ 49b815c7f3Sopenharmony_ci xmc [6] = sr & 0x7 ; sr >>= 3 ; 50b815c7f3Sopenharmony_ci xmc [7] = sr & 0x7 ; sr >>= 3 ; 51b815c7f3Sopenharmony_ci xmc [8] = sr & 0x7 ; sr >>= 3 ; 52b815c7f3Sopenharmony_ci sr = *c++ ; 53b815c7f3Sopenharmony_ci xmc [9] = sr & 0x7 ; sr >>= 3 ; 54b815c7f3Sopenharmony_ci xmc [10] = sr & 0x7 ; sr >>= 3 ; 55b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 56b815c7f3Sopenharmony_ci xmc [11] = sr & 0x7 ; sr >>= 3 ; 57b815c7f3Sopenharmony_ci xmc [12] = sr & 0x7 ; sr >>= 3 ; 58b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 4 ; 59b815c7f3Sopenharmony_ci Nc [1] = sr & 0x7f ; sr >>= 7 ; 60b815c7f3Sopenharmony_ci bc [1] = sr & 0x3 ; sr >>= 2 ; 61b815c7f3Sopenharmony_ci Mc [1] = sr & 0x3 ; sr >>= 2 ; 62b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 63b815c7f3Sopenharmony_ci xmaxc [1] = sr & 0x3f ; sr >>= 6 ; 64b815c7f3Sopenharmony_ci xmc [13] = sr & 0x7 ; sr >>= 3 ; 65b815c7f3Sopenharmony_ci sr = *c++ ; /* 15 */ 66b815c7f3Sopenharmony_ci xmc [14] = sr & 0x7 ; sr >>= 3 ; 67b815c7f3Sopenharmony_ci xmc [15] = sr & 0x7 ; sr >>= 3 ; 68b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 69b815c7f3Sopenharmony_ci xmc [16] = sr & 0x7 ; sr >>= 3 ; 70b815c7f3Sopenharmony_ci xmc [17] = sr & 0x7 ; sr >>= 3 ; 71b815c7f3Sopenharmony_ci xmc [18] = sr & 0x7 ; sr >>= 3 ; 72b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 73b815c7f3Sopenharmony_ci xmc [19] = sr & 0x7 ; sr >>= 3 ; 74b815c7f3Sopenharmony_ci xmc [20] = sr & 0x7 ; sr >>= 3 ; 75b815c7f3Sopenharmony_ci xmc [21] = sr & 0x7 ; sr >>= 3 ; 76b815c7f3Sopenharmony_ci sr = *c++ ; 77b815c7f3Sopenharmony_ci xmc [22] = sr & 0x7 ; sr >>= 3 ; 78b815c7f3Sopenharmony_ci xmc [23] = sr & 0x7 ; sr >>= 3 ; 79b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 80b815c7f3Sopenharmony_ci xmc [24] = sr & 0x7 ; sr >>= 3 ; 81b815c7f3Sopenharmony_ci xmc [25] = sr & 0x7 ; sr >>= 3 ; 82b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 4 ; /* 20 */ 83b815c7f3Sopenharmony_ci Nc [2] = sr & 0x7f ; sr >>= 7 ; 84b815c7f3Sopenharmony_ci bc [2] = sr & 0x3 ; sr >>= 2 ; 85b815c7f3Sopenharmony_ci Mc [2] = sr & 0x3 ; sr >>= 2 ; 86b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 87b815c7f3Sopenharmony_ci xmaxc [2] = sr & 0x3f ; sr >>= 6 ; 88b815c7f3Sopenharmony_ci xmc [26] = sr & 0x7 ; sr >>= 3 ; 89b815c7f3Sopenharmony_ci sr = *c++ ; 90b815c7f3Sopenharmony_ci xmc [27] = sr & 0x7 ; sr >>= 3 ; 91b815c7f3Sopenharmony_ci xmc [28] = sr & 0x7 ; sr >>= 3 ; 92b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 93b815c7f3Sopenharmony_ci xmc [29] = sr & 0x7 ; sr >>= 3 ; 94b815c7f3Sopenharmony_ci xmc [30] = sr & 0x7 ; sr >>= 3 ; 95b815c7f3Sopenharmony_ci xmc [31] = sr & 0x7 ; sr >>= 3 ; 96b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 97b815c7f3Sopenharmony_ci xmc [32] = sr & 0x7 ; sr >>= 3 ; 98b815c7f3Sopenharmony_ci xmc [33] = sr & 0x7 ; sr >>= 3 ; 99b815c7f3Sopenharmony_ci xmc [34] = sr & 0x7 ; sr >>= 3 ; 100b815c7f3Sopenharmony_ci sr = *c++ ; /* 25 */ 101b815c7f3Sopenharmony_ci xmc [35] = sr & 0x7 ; sr >>= 3 ; 102b815c7f3Sopenharmony_ci xmc [36] = sr & 0x7 ; sr >>= 3 ; 103b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 104b815c7f3Sopenharmony_ci xmc [37] = sr & 0x7 ; sr >>= 3 ; 105b815c7f3Sopenharmony_ci xmc [38] = sr & 0x7 ; sr >>= 3 ; 106b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 4 ; 107b815c7f3Sopenharmony_ci Nc [3] = sr & 0x7f ; sr >>= 7 ; 108b815c7f3Sopenharmony_ci bc [3] = sr & 0x3 ; sr >>= 2 ; 109b815c7f3Sopenharmony_ci Mc [3] = sr & 0x3 ; sr >>= 2 ; 110b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 111b815c7f3Sopenharmony_ci xmaxc [3] = sr & 0x3f ; sr >>= 6 ; 112b815c7f3Sopenharmony_ci xmc [39] = sr & 0x7 ; sr >>= 3 ; 113b815c7f3Sopenharmony_ci sr = *c++ ; 114b815c7f3Sopenharmony_ci xmc [40] = sr & 0x7 ; sr >>= 3 ; 115b815c7f3Sopenharmony_ci xmc [41] = sr & 0x7 ; sr >>= 3 ; 116b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; /* 30 */ 117b815c7f3Sopenharmony_ci xmc [42] = sr & 0x7 ; sr >>= 3 ; 118b815c7f3Sopenharmony_ci xmc [43] = sr & 0x7 ; sr >>= 3 ; 119b815c7f3Sopenharmony_ci xmc [44] = sr & 0x7 ; sr >>= 3 ; 120b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 121b815c7f3Sopenharmony_ci xmc [45] = sr & 0x7 ; sr >>= 3 ; 122b815c7f3Sopenharmony_ci xmc [46] = sr & 0x7 ; sr >>= 3 ; 123b815c7f3Sopenharmony_ci xmc [47] = sr & 0x7 ; sr >>= 3 ; 124b815c7f3Sopenharmony_ci sr = *c++ ; 125b815c7f3Sopenharmony_ci xmc [48] = sr & 0x7 ; sr >>= 3 ; 126b815c7f3Sopenharmony_ci xmc [49] = sr & 0x7 ; sr >>= 3 ; 127b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 128b815c7f3Sopenharmony_ci xmc [50] = sr & 0x7 ; sr >>= 3 ; 129b815c7f3Sopenharmony_ci xmc [51] = sr & 0x7 ; sr >>= 3 ; 130b815c7f3Sopenharmony_ci 131b815c7f3Sopenharmony_ci s->frame_chain = sr & 0xf ; 132b815c7f3Sopenharmony_ci } 133b815c7f3Sopenharmony_ci else { 134b815c7f3Sopenharmony_ci sr = s->frame_chain ; 135b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 4 ; /* 1 */ 136b815c7f3Sopenharmony_ci LARc [0] = sr & 0x3f ; sr >>= 6 ; 137b815c7f3Sopenharmony_ci LARc [1] = sr & 0x3f ; sr >>= 6 ; 138b815c7f3Sopenharmony_ci sr = *c++ ; 139b815c7f3Sopenharmony_ci LARc [2] = sr & 0x1f ; sr >>= 5 ; 140b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 3 ; 141b815c7f3Sopenharmony_ci LARc [3] = sr & 0x1f ; sr >>= 5 ; 142b815c7f3Sopenharmony_ci LARc [4] = sr & 0xf ; sr >>= 4 ; 143b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 144b815c7f3Sopenharmony_ci LARc [5] = sr & 0xf ; sr >>= 4 ; 145b815c7f3Sopenharmony_ci LARc [6] = sr & 0x7 ; sr >>= 3 ; 146b815c7f3Sopenharmony_ci LARc [7] = sr & 0x7 ; sr >>= 3 ; 147b815c7f3Sopenharmony_ci sr = *c++ ; /* 5 */ 148b815c7f3Sopenharmony_ci Nc [0] = sr & 0x7f ; sr >>= 7 ; 149b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 150b815c7f3Sopenharmony_ci bc [0] = sr & 0x3 ; sr >>= 2 ; 151b815c7f3Sopenharmony_ci Mc [0] = sr & 0x3 ; sr >>= 2 ; 152b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 5 ; 153b815c7f3Sopenharmony_ci xmaxc [0] = sr & 0x3f ; sr >>= 6 ; 154b815c7f3Sopenharmony_ci xmc [0] = sr & 0x7 ; sr >>= 3 ; 155b815c7f3Sopenharmony_ci xmc [1] = sr & 0x7 ; sr >>= 3 ; 156b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 157b815c7f3Sopenharmony_ci xmc [2] = sr & 0x7 ; sr >>= 3 ; 158b815c7f3Sopenharmony_ci xmc [3] = sr & 0x7 ; sr >>= 3 ; 159b815c7f3Sopenharmony_ci xmc [4] = sr & 0x7 ; sr >>= 3 ; 160b815c7f3Sopenharmony_ci sr = *c++ ; 161b815c7f3Sopenharmony_ci xmc [5] = sr & 0x7 ; sr >>= 3 ; 162b815c7f3Sopenharmony_ci xmc [6] = sr & 0x7 ; sr >>= 3 ; 163b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; /* 10 */ 164b815c7f3Sopenharmony_ci xmc [7] = sr & 0x7 ; sr >>= 3 ; 165b815c7f3Sopenharmony_ci xmc [8] = sr & 0x7 ; sr >>= 3 ; 166b815c7f3Sopenharmony_ci xmc [9] = sr & 0x7 ; sr >>= 3 ; 167b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 168b815c7f3Sopenharmony_ci xmc [10] = sr & 0x7 ; sr >>= 3 ; 169b815c7f3Sopenharmony_ci xmc [11] = sr & 0x7 ; sr >>= 3 ; 170b815c7f3Sopenharmony_ci xmc [12] = sr & 0x7 ; sr >>= 3 ; 171b815c7f3Sopenharmony_ci sr = *c++ ; 172b815c7f3Sopenharmony_ci Nc [1] = sr & 0x7f ; sr >>= 7 ; 173b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 174b815c7f3Sopenharmony_ci bc [1] = sr & 0x3 ; sr >>= 2 ; 175b815c7f3Sopenharmony_ci Mc [1] = sr & 0x3 ; sr >>= 2 ; 176b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 5 ; 177b815c7f3Sopenharmony_ci xmaxc [1] = sr & 0x3f ; sr >>= 6 ; 178b815c7f3Sopenharmony_ci xmc [13] = sr & 0x7 ; sr >>= 3 ; 179b815c7f3Sopenharmony_ci xmc [14] = sr & 0x7 ; sr >>= 3 ; 180b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; /* 15 */ 181b815c7f3Sopenharmony_ci xmc [15] = sr & 0x7 ; sr >>= 3 ; 182b815c7f3Sopenharmony_ci xmc [16] = sr & 0x7 ; sr >>= 3 ; 183b815c7f3Sopenharmony_ci xmc [17] = sr & 0x7 ; sr >>= 3 ; 184b815c7f3Sopenharmony_ci sr = *c++ ; 185b815c7f3Sopenharmony_ci xmc [18] = sr & 0x7 ; sr >>= 3 ; 186b815c7f3Sopenharmony_ci xmc [19] = sr & 0x7 ; sr >>= 3 ; 187b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 188b815c7f3Sopenharmony_ci xmc [20] = sr & 0x7 ; sr >>= 3 ; 189b815c7f3Sopenharmony_ci xmc [21] = sr & 0x7 ; sr >>= 3 ; 190b815c7f3Sopenharmony_ci xmc [22] = sr & 0x7 ; sr >>= 3 ; 191b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 192b815c7f3Sopenharmony_ci xmc [23] = sr & 0x7 ; sr >>= 3 ; 193b815c7f3Sopenharmony_ci xmc [24] = sr & 0x7 ; sr >>= 3 ; 194b815c7f3Sopenharmony_ci xmc [25] = sr & 0x7 ; sr >>= 3 ; 195b815c7f3Sopenharmony_ci sr = *c++ ; 196b815c7f3Sopenharmony_ci Nc [2] = sr & 0x7f ; sr >>= 7 ; 197b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; /* 20 */ 198b815c7f3Sopenharmony_ci bc [2] = sr & 0x3 ; sr >>= 2 ; 199b815c7f3Sopenharmony_ci Mc [2] = sr & 0x3 ; sr >>= 2 ; 200b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 5 ; 201b815c7f3Sopenharmony_ci xmaxc [2] = sr & 0x3f ; sr >>= 6 ; 202b815c7f3Sopenharmony_ci xmc [26] = sr & 0x7 ; sr >>= 3 ; 203b815c7f3Sopenharmony_ci xmc [27] = sr & 0x7 ; sr >>= 3 ; 204b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 205b815c7f3Sopenharmony_ci xmc [28] = sr & 0x7 ; sr >>= 3 ; 206b815c7f3Sopenharmony_ci xmc [29] = sr & 0x7 ; sr >>= 3 ; 207b815c7f3Sopenharmony_ci xmc [30] = sr & 0x7 ; sr >>= 3 ; 208b815c7f3Sopenharmony_ci sr = *c++ ; 209b815c7f3Sopenharmony_ci xmc [31] = sr & 0x7 ; sr >>= 3 ; 210b815c7f3Sopenharmony_ci xmc [32] = sr & 0x7 ; sr >>= 3 ; 211b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 212b815c7f3Sopenharmony_ci xmc [33] = sr & 0x7 ; sr >>= 3 ; 213b815c7f3Sopenharmony_ci xmc [34] = sr & 0x7 ; sr >>= 3 ; 214b815c7f3Sopenharmony_ci xmc [35] = sr & 0x7 ; sr >>= 3 ; 215b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; /* 25 */ 216b815c7f3Sopenharmony_ci xmc [36] = sr & 0x7 ; sr >>= 3 ; 217b815c7f3Sopenharmony_ci xmc [37] = sr & 0x7 ; sr >>= 3 ; 218b815c7f3Sopenharmony_ci xmc [38] = sr & 0x7 ; sr >>= 3 ; 219b815c7f3Sopenharmony_ci sr = *c++ ; 220b815c7f3Sopenharmony_ci Nc [3] = sr & 0x7f ; sr >>= 7 ; 221b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 222b815c7f3Sopenharmony_ci bc [3] = sr & 0x3 ; sr >>= 2 ; 223b815c7f3Sopenharmony_ci Mc [3] = sr & 0x3 ; sr >>= 2 ; 224b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 5 ; 225b815c7f3Sopenharmony_ci xmaxc [3] = sr & 0x3f ; sr >>= 6 ; 226b815c7f3Sopenharmony_ci xmc [39] = sr & 0x7 ; sr >>= 3 ; 227b815c7f3Sopenharmony_ci xmc [40] = sr & 0x7 ; sr >>= 3 ; 228b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 229b815c7f3Sopenharmony_ci xmc [41] = sr & 0x7 ; sr >>= 3 ; 230b815c7f3Sopenharmony_ci xmc [42] = sr & 0x7 ; sr >>= 3 ; 231b815c7f3Sopenharmony_ci xmc [43] = sr & 0x7 ; sr >>= 3 ; 232b815c7f3Sopenharmony_ci sr = *c++ ; /* 30 */ 233b815c7f3Sopenharmony_ci xmc [44] = sr & 0x7 ; sr >>= 3 ; 234b815c7f3Sopenharmony_ci xmc [45] = sr & 0x7 ; sr >>= 3 ; 235b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 2 ; 236b815c7f3Sopenharmony_ci xmc [46] = sr & 0x7 ; sr >>= 3 ; 237b815c7f3Sopenharmony_ci xmc [47] = sr & 0x7 ; sr >>= 3 ; 238b815c7f3Sopenharmony_ci xmc [48] = sr & 0x7 ; sr >>= 3 ; 239b815c7f3Sopenharmony_ci sr |= (uint16_t) *c++ << 1 ; 240b815c7f3Sopenharmony_ci xmc [49] = sr & 0x7 ; sr >>= 3 ; 241b815c7f3Sopenharmony_ci xmc [50] = sr & 0x7 ; sr >>= 3 ; 242b815c7f3Sopenharmony_ci xmc [51] = sr & 0x7 ; sr >>= 3 ; 243b815c7f3Sopenharmony_ci } 244b815c7f3Sopenharmony_ci } 245b815c7f3Sopenharmony_ci else 246b815c7f3Sopenharmony_ci#endif 247b815c7f3Sopenharmony_ci { 248b815c7f3Sopenharmony_ci /* GSM_MAGIC = (*c >> 4) & 0xF ; */ 249b815c7f3Sopenharmony_ci 250b815c7f3Sopenharmony_ci if (((*c >> 4) & 0x0F) != GSM_MAGIC) return -1 ; 251b815c7f3Sopenharmony_ci 252b815c7f3Sopenharmony_ci LARc [0] = (*c++ & 0xF) << 2 ; /* 1 */ 253b815c7f3Sopenharmony_ci LARc [0] |= (*c >> 6) & 0x3 ; 254b815c7f3Sopenharmony_ci LARc [1] = *c++ & 0x3F ; 255b815c7f3Sopenharmony_ci LARc [2] = (*c >> 3) & 0x1F ; 256b815c7f3Sopenharmony_ci LARc [3] = (*c++ & 0x7) << 2 ; 257b815c7f3Sopenharmony_ci LARc [3] |= (*c >> 6) & 0x3 ; 258b815c7f3Sopenharmony_ci LARc [4] = (*c >> 2) & 0xF ; 259b815c7f3Sopenharmony_ci LARc [5] = (*c++ & 0x3) << 2 ; 260b815c7f3Sopenharmony_ci LARc [5] |= (*c >> 6) & 0x3 ; 261b815c7f3Sopenharmony_ci LARc [6] = (*c >> 3) & 0x7 ; 262b815c7f3Sopenharmony_ci LARc [7] = *c++ & 0x7 ; 263b815c7f3Sopenharmony_ci Nc [0] = (*c >> 1) & 0x7F ; 264b815c7f3Sopenharmony_ci bc [0] = (*c++ & 0x1) << 1 ; 265b815c7f3Sopenharmony_ci bc [0] |= (*c >> 7) & 0x1 ; 266b815c7f3Sopenharmony_ci Mc [0] = (*c >> 5) & 0x3 ; 267b815c7f3Sopenharmony_ci xmaxc [0] = (*c++ & 0x1F) << 1 ; 268b815c7f3Sopenharmony_ci xmaxc [0] |= (*c >> 7) & 0x1 ; 269b815c7f3Sopenharmony_ci xmc [0] = (*c >> 4) & 0x7 ; 270b815c7f3Sopenharmony_ci xmc [1] = (*c >> 1) & 0x7 ; 271b815c7f3Sopenharmony_ci xmc [2] = (*c++ & 0x1) << 2 ; 272b815c7f3Sopenharmony_ci xmc [2] |= (*c >> 6) & 0x3 ; 273b815c7f3Sopenharmony_ci xmc [3] = (*c >> 3) & 0x7 ; 274b815c7f3Sopenharmony_ci xmc [4] = *c++ & 0x7 ; 275b815c7f3Sopenharmony_ci xmc [5] = (*c >> 5) & 0x7 ; 276b815c7f3Sopenharmony_ci xmc [6] = (*c >> 2) & 0x7 ; 277b815c7f3Sopenharmony_ci xmc [7] = (*c++ & 0x3) << 1 ; /* 10 */ 278b815c7f3Sopenharmony_ci xmc [7] |= (*c >> 7) & 0x1 ; 279b815c7f3Sopenharmony_ci xmc [8] = (*c >> 4) & 0x7 ; 280b815c7f3Sopenharmony_ci xmc [9] = (*c >> 1) & 0x7 ; 281b815c7f3Sopenharmony_ci xmc [10] = (*c++ & 0x1) << 2 ; 282b815c7f3Sopenharmony_ci xmc [10] |= (*c >> 6) & 0x3 ; 283b815c7f3Sopenharmony_ci xmc [11] = (*c >> 3) & 0x7 ; 284b815c7f3Sopenharmony_ci xmc [12] = *c++ & 0x7 ; 285b815c7f3Sopenharmony_ci Nc [1] = (*c >> 1) & 0x7F ; 286b815c7f3Sopenharmony_ci bc [1] = (*c++ & 0x1) << 1 ; 287b815c7f3Sopenharmony_ci bc [1] |= (*c >> 7) & 0x1 ; 288b815c7f3Sopenharmony_ci Mc [1] = (*c >> 5) & 0x3 ; 289b815c7f3Sopenharmony_ci xmaxc [1] = (*c++ & 0x1F) << 1 ; 290b815c7f3Sopenharmony_ci xmaxc [1] |= (*c >> 7) & 0x1 ; 291b815c7f3Sopenharmony_ci xmc [13] = (*c >> 4) & 0x7 ; 292b815c7f3Sopenharmony_ci xmc [14] = (*c >> 1) & 0x7 ; 293b815c7f3Sopenharmony_ci xmc [15] = (*c++ & 0x1) << 2 ; 294b815c7f3Sopenharmony_ci xmc [15] |= (*c >> 6) & 0x3 ; 295b815c7f3Sopenharmony_ci xmc [16] = (*c >> 3) & 0x7 ; 296b815c7f3Sopenharmony_ci xmc [17] = *c++ & 0x7 ; 297b815c7f3Sopenharmony_ci xmc [18] = (*c >> 5) & 0x7 ; 298b815c7f3Sopenharmony_ci xmc [19] = (*c >> 2) & 0x7 ; 299b815c7f3Sopenharmony_ci xmc [20] = (*c++ & 0x3) << 1 ; 300b815c7f3Sopenharmony_ci xmc [20] |= (*c >> 7) & 0x1 ; 301b815c7f3Sopenharmony_ci xmc [21] = (*c >> 4) & 0x7 ; 302b815c7f3Sopenharmony_ci xmc [22] = (*c >> 1) & 0x7 ; 303b815c7f3Sopenharmony_ci xmc [23] = (*c++ & 0x1) << 2 ; 304b815c7f3Sopenharmony_ci xmc [23] |= (*c >> 6) & 0x3 ; 305b815c7f3Sopenharmony_ci xmc [24] = (*c >> 3) & 0x7 ; 306b815c7f3Sopenharmony_ci xmc [25] = *c++ & 0x7 ; 307b815c7f3Sopenharmony_ci Nc [2] = (*c >> 1) & 0x7F ; 308b815c7f3Sopenharmony_ci bc [2] = (*c++ & 0x1) << 1 ; /* 20 */ 309b815c7f3Sopenharmony_ci bc [2] |= (*c >> 7) & 0x1 ; 310b815c7f3Sopenharmony_ci Mc [2] = (*c >> 5) & 0x3 ; 311b815c7f3Sopenharmony_ci xmaxc [2] = (*c++ & 0x1F) << 1 ; 312b815c7f3Sopenharmony_ci xmaxc [2] |= (*c >> 7) & 0x1 ; 313b815c7f3Sopenharmony_ci xmc [26] = (*c >> 4) & 0x7 ; 314b815c7f3Sopenharmony_ci xmc [27] = (*c >> 1) & 0x7 ; 315b815c7f3Sopenharmony_ci xmc [28] = (*c++ & 0x1) << 2 ; 316b815c7f3Sopenharmony_ci xmc [28] |= (*c >> 6) & 0x3 ; 317b815c7f3Sopenharmony_ci xmc [29] = (*c >> 3) & 0x7 ; 318b815c7f3Sopenharmony_ci xmc [30] = *c++ & 0x7 ; 319b815c7f3Sopenharmony_ci xmc [31] = (*c >> 5) & 0x7 ; 320b815c7f3Sopenharmony_ci xmc [32] = (*c >> 2) & 0x7 ; 321b815c7f3Sopenharmony_ci xmc [33] = (*c++ & 0x3) << 1 ; 322b815c7f3Sopenharmony_ci xmc [33] |= (*c >> 7) & 0x1 ; 323b815c7f3Sopenharmony_ci xmc [34] = (*c >> 4) & 0x7 ; 324b815c7f3Sopenharmony_ci xmc [35] = (*c >> 1) & 0x7 ; 325b815c7f3Sopenharmony_ci xmc [36] = (*c++ & 0x1) << 2 ; 326b815c7f3Sopenharmony_ci xmc [36] |= (*c >> 6) & 0x3 ; 327b815c7f3Sopenharmony_ci xmc [37] = (*c >> 3) & 0x7 ; 328b815c7f3Sopenharmony_ci xmc [38] = *c++ & 0x7 ; 329b815c7f3Sopenharmony_ci Nc [3] = (*c >> 1) & 0x7F ; 330b815c7f3Sopenharmony_ci bc [3] = (*c++ & 0x1) << 1 ; 331b815c7f3Sopenharmony_ci bc [3] |= (*c >> 7) & 0x1 ; 332b815c7f3Sopenharmony_ci Mc [3] = (*c >> 5) & 0x3 ; 333b815c7f3Sopenharmony_ci xmaxc [3] = (*c++ & 0x1F) << 1 ; 334b815c7f3Sopenharmony_ci xmaxc [3] |= (*c >> 7) & 0x1 ; 335b815c7f3Sopenharmony_ci xmc [39] = (*c >> 4) & 0x7 ; 336b815c7f3Sopenharmony_ci xmc [40] = (*c >> 1) & 0x7 ; 337b815c7f3Sopenharmony_ci xmc [41] = (*c++ & 0x1) << 2 ; 338b815c7f3Sopenharmony_ci xmc [41] |= (*c >> 6) & 0x3 ; 339b815c7f3Sopenharmony_ci xmc [42] = (*c >> 3) & 0x7 ; 340b815c7f3Sopenharmony_ci xmc [43] = *c++ & 0x7 ; /* 30 */ 341b815c7f3Sopenharmony_ci xmc [44] = (*c >> 5) & 0x7 ; 342b815c7f3Sopenharmony_ci xmc [45] = (*c >> 2) & 0x7 ; 343b815c7f3Sopenharmony_ci xmc [46] = (*c++ & 0x3) << 1 ; 344b815c7f3Sopenharmony_ci xmc [46] |= (*c >> 7) & 0x1 ; 345b815c7f3Sopenharmony_ci xmc [47] = (*c >> 4) & 0x7 ; 346b815c7f3Sopenharmony_ci xmc [48] = (*c >> 1) & 0x7 ; 347b815c7f3Sopenharmony_ci xmc [49] = (*c++ & 0x1) << 2 ; 348b815c7f3Sopenharmony_ci xmc [49] |= (*c >> 6) & 0x3 ; 349b815c7f3Sopenharmony_ci xmc [50] = (*c >> 3) & 0x7 ; 350b815c7f3Sopenharmony_ci xmc [51] = *c & 0x7 ; /* 33 */ 351b815c7f3Sopenharmony_ci } 352b815c7f3Sopenharmony_ci 353b815c7f3Sopenharmony_ci Gsm_Decoder (s, LARc, Nc, bc, Mc, xmaxc, xmc, target) ; 354b815c7f3Sopenharmony_ci 355b815c7f3Sopenharmony_ci return 0 ; 356b815c7f3Sopenharmony_ci} 357b815c7f3Sopenharmony_ci 358