1d2a5dccf83f85923486a7aa41f05f3e68ac8ea7
[osmocom-bb.git] / src / host / layer23 / src / networks.c
1 #include <string.h>
2 #include <stdint.h>
3 #include <stdio.h>
4
5 #include <osmocom/networks.h>
6
7 /* list of networks */
8
9 struct gsm_networks gsm_networks[] = {
10         { 1, 0,         "Test" },
11         { 1, 1,                 "Test" },
12         { 262, 0,       "Germany" },
13         { 262, 1,               "T-Mobile" },
14         { 262, 2,               "Vodafone" },
15         { 262, 3,               "E-Plus" },
16         { 262, 7,               "O2" },
17         { 262, 42,              "OpenBSC" },
18         { 238, 0,       "Denmark" },
19         { 238, 1,               "TDC Mobil" },
20         { 238, 2,               "Sonofon" },
21         { 238, 3,               "MIGway A/S" },
22         { 238, 6,               "HiG3" },
23         { 238, 7,               "Barablue Mobile Ltd." },
24         { 238, 10,              "TDC Mobil" },
25         { 238, 12,              "Lycamobile Denmark" },
26         { 238, 20,              "Telia" },
27         { 238, 30,              "Telia Mobile" },
28         { 238, 77,              "Tele2" },
29         { 0, 0, NULL }
30 };
31
32 const char *gsm_get_mcc(uint16_t mcc)
33 {
34         int i;
35         static char unknown[4] = "000";
36
37         for (i = 0; gsm_networks[i].name; i++)
38                 if (!gsm_networks[i].mnc && gsm_networks[i].mcc == mcc)
39                         return gsm_networks[i].name;
40
41         snprintf(unknown, 3, "%03d", mcc);
42         return unknown;
43 }
44
45 const char *gsm_get_mnc(uint16_t mcc, uint16_t mnc)
46 {
47         int i;
48         static char unknown[4] = "000";
49
50         for (i = 0; gsm_networks[i].name; i++)
51                 if (gsm_networks[i].mcc == mcc && gsm_networks[i].mnc == mnc)
52                         return gsm_networks[i].name;
53
54         snprintf(unknown, 3, "%02d", mnc);
55         return unknown;
56 }
57
58