annotate libcoding/number_decode.c @ 28:6e925aa54727

libcoding: more sensible naming of GSM time encoding and decoding modules
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 13 Jun 2024 02:32:11 +0000
parents 7418ca2e9949
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This library module implements the decoding of number (address) digits.
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <sys/types.h>
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 char gsm_address_digits[16] =
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 {'0','1','2','3','4','5','6','7','8','9','*','#','a','b','c','?'};
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 decode_address_digits(inbuf, outbuf, ndigits)
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 u_char *inbuf;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 char *outbuf;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 unsigned ndigits;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 {
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 u_char *inp = inbuf;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 char *outp = outbuf;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 unsigned n = 0, b;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 while (n < ndigits) {
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 b = *inp++;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 *outp++ = gsm_address_digits[b & 0xF];
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 n++;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 if (n >= ndigits)
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 break;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 *outp++ = gsm_address_digits[b >> 4];
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 n++;
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 }
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 *outp = '\0';
7418ca2e9949 libcoding: add functions from freecalypso-tools/uptools/libcoding
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 }