FreeCalypso > hg > fc-sim-tools
annotate libutil/gsm7_pack.c @ 16:53f8a1146a56
{simtool,uicc}/Makefile: INSTALL_PREFIX= override support
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 14 Mar 2021 07:43:51 +0000 | 
| parents | 34bbb0585cab | 
| children | 
| rev | line source | 
|---|---|
| 8 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 * This library module implements the function for packing septets into octets. | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 */ | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 #include <sys/types.h> | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 gsm7_pack(inbuf, outbuf, noctets) | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 u_char *inbuf, *outbuf; | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 unsigned noctets; | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 { | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 u_char *ip = inbuf, *op = outbuf; | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 unsigned n, c; | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 for (n = 0; n < noctets; n++) { | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 c = n % 7; | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 *op++ = ((ip[1] << 7) | ip[0]) >> c; | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 if (c == 6) | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 ip += 2; | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 else | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 ip += 1; | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 } | 
| 
34bbb0585cab
libutil: import from previous fc-pcsc-tools version
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 } | 
