Add a bunch of APNs
Fork of C027_Support by
MDMAPN.h@133:69700ba3fa72, 2017-09-12 (annotated)
- Committer:
- ghuklev
- Date:
- Tue Sep 12 14:17:31 2017 +0000
- Revision:
- 133:69700ba3fa72
- Parent:
- 132:1b04a376bfc3
- Child:
- 134:d84232916eac
added a bunch of APNs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mazgch | 85:dd8f4f0d0ca9 | 1 | #pragma once |
mazgch | 85:dd8f4f0d0ca9 | 2 | |
mazgch | 85:dd8f4f0d0ca9 | 3 | /* ---------------------------------------------------------------- |
mazgch | 85:dd8f4f0d0ca9 | 4 | APN stands for Access Point Name, a setting on your modem or phone |
mazgch | 85:dd8f4f0d0ca9 | 5 | that identifies an external network your phone can access for data |
mazgch | 92:79b628d1da02 | 6 | (e.g. 3G or 4G Internet service on your phone). |
mazgch | 85:dd8f4f0d0ca9 | 7 | |
mazgch | 85:dd8f4f0d0ca9 | 8 | The APN settings can be forced when calling the join function. |
mazgch | 85:dd8f4f0d0ca9 | 9 | Below is a list of known APNs that us used if no apn config |
mazgch | 85:dd8f4f0d0ca9 | 10 | is forced. This list could be extended by other settings. |
mazgch | 85:dd8f4f0d0ca9 | 11 | |
mazgch | 85:dd8f4f0d0ca9 | 12 | For further reading: |
mazgch | 85:dd8f4f0d0ca9 | 13 | wiki apn: http://en.wikipedia.org/wiki/Access_Point_Name |
mazgch | 85:dd8f4f0d0ca9 | 14 | wiki mcc/mnc: http://en.wikipedia.org/wiki/Mobile_country_code |
mazgch | 85:dd8f4f0d0ca9 | 15 | google: https://www.google.de/search?q=APN+list |
mazgch | 85:dd8f4f0d0ca9 | 16 | ---------------------------------------------------------------- */ |
mazgch | 85:dd8f4f0d0ca9 | 17 | |
mazgch | 85:dd8f4f0d0ca9 | 18 | //! helper to generate the APN string |
mazgch | 85:dd8f4f0d0ca9 | 19 | #define _APN(apn,username,password) apn "\0" username "\0" password "\0" |
mazgch | 85:dd8f4f0d0ca9 | 20 | |
mazgch | 85:dd8f4f0d0ca9 | 21 | //! helper to extract a field from the config string |
mazgch | 85:dd8f4f0d0ca9 | 22 | #define _APN_GET(cfg) \ |
mazgch | 85:dd8f4f0d0ca9 | 23 | *cfg ? cfg : ""; \ |
mazgch | 85:dd8f4f0d0ca9 | 24 | cfg += strlen(cfg) + 1 |
mazgch | 85:dd8f4f0d0ca9 | 25 | |
mazgch | 85:dd8f4f0d0ca9 | 26 | //! APN lookup struct |
mazgch | 85:dd8f4f0d0ca9 | 27 | typedef struct { |
mazgch | 85:dd8f4f0d0ca9 | 28 | const char* mccmnc; //!< mobile country code (MCC) and mobile network code MNC |
mazgch | 85:dd8f4f0d0ca9 | 29 | const char* cfg; //!< APN configuartion string, use _APN macro to generate |
mazgch | 85:dd8f4f0d0ca9 | 30 | } APN_t; |
mazgch | 85:dd8f4f0d0ca9 | 31 | |
mazgch | 85:dd8f4f0d0ca9 | 32 | //! default APN settings used by many networks |
mazgch | 91:5af303e25287 | 33 | static const char* apndef = _APN(,,) |
mazgch | 91:5af303e25287 | 34 | _APN("internet",,); |
mazgch | 85:dd8f4f0d0ca9 | 35 | |
mazgch | 89:ea396f9f90a2 | 36 | /*! this is a list of special APNs for different network operators |
mazgch | 89:ea396f9f90a2 | 37 | There is no need to enter the default apn internet in the table; |
mazgch | 90:3915192f6d7e | 38 | apndef will be used if no entry matches. |
mazgch | 90:3915192f6d7e | 39 | |
mazgch | 90:3915192f6d7e | 40 | The APN without username/password have to be listed first. |
mazgch | 89:ea396f9f90a2 | 41 | */ |
mazgch | 85:dd8f4f0d0ca9 | 42 | static const APN_t apnlut[] = { |
mazgch | 88:135fb4bb7aac | 43 | // MCC Country |
mazgch | 88:135fb4bb7aac | 44 | // { /* Operator */ "MCC-MNC[,MNC]" _APN(APN,USERNAME,PASSWORD) }, |
mazgch | 88:135fb4bb7aac | 45 | // MCC must be 3 digits |
mazgch | 88:135fb4bb7aac | 46 | // MNC must be either 2 or 3 digits |
mazgch | 92:79b628d1da02 | 47 | // MCC must be separated by '-' from MNC, multiple MNC can be separated by ',' |
mazgch | 85:dd8f4f0d0ca9 | 48 | |
mazgch | 111:5f8807ca159a | 49 | // 232 Austria - AUT |
xinlei | 127:73d7bfcc1e3d | 50 | { /* T-Mobile */ "232-03", _APN("m2m.business",,) }, |
mazgch | 111:5f8807ca159a | 51 | |
mazgch | 97:b82539535365 | 52 | // 460 China - CN |
xinlei | 127:73d7bfcc1e3d | 53 | { /* CN Mobile */"460-00", _APN("cmnet",,) |
xinlei | 127:73d7bfcc1e3d | 54 | _APN("cmwap",,) }, |
xinlei | 127:73d7bfcc1e3d | 55 | { /* Unicom */ "460-01", _APN("3gnet",,) |
xinlei | 127:73d7bfcc1e3d | 56 | _APN("uninet","uninet","uninet") }, |
mazgch | 97:b82539535365 | 57 | |
mazgch | 89:ea396f9f90a2 | 58 | // 262 Germany - DE |
xinlei | 125:246587b92b3b | 59 | // { /* T-Mobile */ "262-01", _APN("internet.t-mobile","t-mobile","tm") }, |
xinlei | 125:246587b92b3b | 60 | { /* T-Mobile */ "262-02,06", _APN("m2m.business",,) }, |
xinlei | 130:27043e7c9de3 | 61 | { /* T-Mobile */ "262-01", _APN("internet.m2mportal.de", "m2m", "sim") |
xinlei | 130:27043e7c9de3 | 62 | _APN("internet.telekom",,) }, |
mazgch | 88:135fb4bb7aac | 63 | |
mazgch | 89:ea396f9f90a2 | 64 | // 222 Italy - IT |
xinlei | 127:73d7bfcc1e3d | 65 | { /* TIM */ "222-01", _APN("ibox.tim.it",,) }, |
xinlei | 127:73d7bfcc1e3d | 66 | { /* Vodafone */ "222-10", _APN("web.omnitel.it",,) }, |
xinlei | 127:73d7bfcc1e3d | 67 | { /* Wind */ "222-88", _APN("internet.wind.biz",,) }, |
mazgch | 85:dd8f4f0d0ca9 | 68 | |
mazgch | 90:3915192f6d7e | 69 | // 440 Japan - JP |
mazgch | 90:3915192f6d7e | 70 | { /* Softbank */ "440-04,06,20,40,41,42,43,44,45,46,47,48,90,91,92,93,94,95" |
mazgch | 90:3915192f6d7e | 71 | ",96,97,98" |
xinlei | 127:73d7bfcc1e3d | 72 | _APN("open.softbank.ne.jp","opensoftbank","ebMNuX1FIHg9d3DA") |
xinlei | 127:73d7bfcc1e3d | 73 | _APN("smile.world","dna1trop","so2t3k3m2a") }, |
mazgch | 90:3915192f6d7e | 74 | { /* NTTDoCoMo */"440-09,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27," |
mazgch | 90:3915192f6d7e | 75 | "28,29,30,31,32,33,34,35,36,37,38,39,58,59,60,61,62,63," |
mazgch | 90:3915192f6d7e | 76 | "64,65,66,67,68,69,87,99", |
xinlei | 127:73d7bfcc1e3d | 77 | _APN("bmobilewap",,) /*BMobile*/ |
xinlei | 127:73d7bfcc1e3d | 78 | _APN("mpr2.bizho.net","Mopera U",) /* DoCoMo */ |
xinlei | 131:1f6b7f9b5805 | 79 | _APN("3g-uno.ntt.com",,) /* DoCoMo */ |
xinlei | 131:1f6b7f9b5805 | 80 | _APN("3gd-ocn.ntt.com",,) /* DoCoMo */ |
xinlei | 131:1f6b7f9b5805 | 81 | _APN("nttcom.fr",,) /* DoCoMo */ |
xinlei | 127:73d7bfcc1e3d | 82 | _APN("bmobile.ne.jp","bmobile@wifi2","bmobile") /*BMobile*/ }, |
mazgch | 90:3915192f6d7e | 83 | |
mazgch | 111:5f8807ca159a | 84 | // 204 Netherlands - NL |
xinlei | 132:1b04a376bfc3 | 85 | { /* Vodafone */ "204-04", _APN("public4.m2minternet.com",,) |
xinlei | 132:1b04a376bfc3 | 86 | _APN("test.teleena.com",,) }, |
xinlei | 132:1b04a376bfc3 | 87 | { /* Teleena */ "204-07", _APN("test.teleena.com",,) }, |
mazgch | 111:5f8807ca159a | 88 | |
mazgch | 89:ea396f9f90a2 | 89 | // 293 Slovenia - SI |
xinlei | 127:73d7bfcc1e3d | 90 | { /* Si.mobil */ "293-40", _APN("internet.simobil.si",,) }, |
xinlei | 127:73d7bfcc1e3d | 91 | { /* Tusmobil */ "293-70", _APN("internet.tusmobil.si",,) }, |
mazgch | 89:ea396f9f90a2 | 92 | |
xinlei | 127:73d7bfcc1e3d | 93 | // 240 Sweden SE |
xinlei | 127:73d7bfcc1e3d | 94 | { /* Telia */ "240-01", _APN("online.telia.se",,) }, |
xinlei | 127:73d7bfcc1e3d | 95 | { /* Telenor */ "240-06,08", _APN("services.telenor.se",,) }, |
xinlei | 127:73d7bfcc1e3d | 96 | { /* Tele2 */ "240-07", _APN("m2m.tele2.com",,) |
xinlei | 127:73d7bfcc1e3d | 97 | _APN("mobileinternet.tele2.se",,) }, |
xinlei | 127:73d7bfcc1e3d | 98 | |
mazgch | 89:ea396f9f90a2 | 99 | // 228 Switzerland - CH |
xinlei | 128:0c2bef7cca88 | 100 | { /* Swisscom */ "228-01", _APN("swisscom-test.m2m.ch",,) |
xinlei | 128:0c2bef7cca88 | 101 | _APN("gprs.swisscom.ch",,) }, |
xinlei | 127:73d7bfcc1e3d | 102 | { /* Orange */ "228-03", _APN("internet",,) /* contract */ |
xinlei | 127:73d7bfcc1e3d | 103 | _APN("click",,) /* pre-pay */ }, |
xinlei | 131:1f6b7f9b5805 | 104 | |
xinlei | 131:1f6b7f9b5805 | 105 | // 270 Luxembourg |
xinlei | 131:1f6b7f9b5805 | 106 | { /* Post */ "270-01", _APN("postm2m.lu",,)}, |
mazgch | 88:135fb4bb7aac | 107 | |
mazgch | 88:135fb4bb7aac | 108 | // 234 United Kingdom - GB |
mazgch | 88:135fb4bb7aac | 109 | { /* O2 */ "234-02,10,11", |
xinlei | 127:73d7bfcc1e3d | 110 | _APN("mobile.o2.co.uk","faster","web") /* contract */ |
xinlei | 127:73d7bfcc1e3d | 111 | _APN("mobile.o2.co.uk","bypass","web") /* pre-pay */ |
xinlei | 127:73d7bfcc1e3d | 112 | _APN("payandgo.o2.co.uk","payandgo","payandgo") }, |
xinlei | 127:73d7bfcc1e3d | 113 | { /* Vodafone */ "234-15", _APN("internet","web","web") /* contract */ |
xinlei | 127:73d7bfcc1e3d | 114 | _APN("pp.vodafone.co.uk","wap","wap") /* pre-pay */ }, |
xinlei | 127:73d7bfcc1e3d | 115 | { /* Three */ "234-20", _APN("three.co.uk",,) }, |
ghuklev | 133:69700ba3fa72 | 116 | { /* EE */ "234-33,30", _APN("EEm2m",,) |
ghuklev | 133:69700ba3fa72 | 117 | _APN("m2mdata",,) }, |
mazgch | 88:135fb4bb7aac | 118 | |
mazgch | 89:ea396f9f90a2 | 119 | // 310 United States of America - US |
xinlei | 128:0c2bef7cca88 | 120 | { /* Kore Telematics */ "505-02", _APN("od1.korem2m.com",,) }, |
mazgch | 88:135fb4bb7aac | 121 | { /* T-Mobile */ "310-026,260,490", |
xinlei | 127:73d7bfcc1e3d | 122 | _APN("epc.tmobile.com",,) |
xinlei | 127:73d7bfcc1e3d | 123 | _APN("fast.tmobile.com",,) /* LTE */ }, |
mazgch | 88:135fb4bb7aac | 124 | { /* AT&T */ "310-030,150,170,260,410,560,680", |
xinlei | 127:73d7bfcc1e3d | 125 | _APN("phone",,) |
xinlei | 127:73d7bfcc1e3d | 126 | _APN("wap.cingular","WAP@CINGULARGPRS.COM","CINGULAR1") |
xinlei | 127:73d7bfcc1e3d | 127 | _APN("isp.cingular","ISP@CINGULARGPRS.COM","CINGULAR1") }, |
xinlei | 132:1b04a376bfc3 | 128 | |
xinlei | 132:1b04a376bfc3 | 129 | // 602 UAE |
xinlei | 132:1b04a376bfc3 | 130 | { /* Etisalat */ "602-602", _APN("internet.etisalat",,)}, |
mazgch | 124:db878a234544 | 131 | |
xinlei | 129:452a7234b1a1 | 132 | // 732 Colombia |
xinlei | 129:452a7234b1a1 | 133 | { /* Comcel */ "732-101", _APN("internet.comcel.com.co",,) |
xinlei | 129:452a7234b1a1 | 134 | _APN("internet.movistar.com.co",,) }, |
xinlei | 129:452a7234b1a1 | 135 | |
ghuklev | 133:69700ba3fa72 | 136 | // 405 India |
ghuklev | 133:69700ba3fa72 | 137 | { /* Reliance */ "405-21", _APN("unlimitiot",,) |
ghuklev | 133:69700ba3fa72 | 138 | _APN("IoTtest",,) }, |
ghuklev | 133:69700ba3fa72 | 139 | |
mazgch | 124:db878a234544 | 140 | // 901 International - INT |
xinlei | 127:73d7bfcc1e3d | 141 | { /* Transatel */ "901-37", _APN("netgprs.com","tsl","tsl") }, |
mazgch | 85:dd8f4f0d0ca9 | 142 | }; |
mazgch | 88:135fb4bb7aac | 143 | |
mazgch | 88:135fb4bb7aac | 144 | inline const char* apnconfig(const char* imsi) |
mazgch | 88:135fb4bb7aac | 145 | { |
mazgch | 88:135fb4bb7aac | 146 | const char* config = NULL; |
mazgch | 88:135fb4bb7aac | 147 | if (imsi && *imsi) { |
mazgch | 88:135fb4bb7aac | 148 | // many carriers use internet without username and password, os use this as default |
mazgch | 88:135fb4bb7aac | 149 | // now try to lookup the setting for our table |
mazgch | 88:135fb4bb7aac | 150 | for (int i = 0; i < sizeof(apnlut)/sizeof(*apnlut) && !config; i ++) { |
mazgch | 88:135fb4bb7aac | 151 | const char* p = apnlut[i].mccmnc; |
mazgch | 88:135fb4bb7aac | 152 | // check the MCC |
mazgch | 88:135fb4bb7aac | 153 | if ((0 == memcmp(imsi, p, 3))) { |
mazgch | 88:135fb4bb7aac | 154 | p += 3; |
mazgch | 88:135fb4bb7aac | 155 | // check all the MNC, MNC length can be 2 or 3 digits |
mazgch | 88:135fb4bb7aac | 156 | while (((p[0] == '-') || (p[0] == ',')) && |
mazgch | 88:135fb4bb7aac | 157 | (p[1] >= '0') && (p[1] <= '9') && |
mazgch | 88:135fb4bb7aac | 158 | (p[2] >= '0') && (p[2] <= '9') && !config) { |
mazgch | 88:135fb4bb7aac | 159 | int l = ((p[3] >= '0') && (p[3] <= '9')) ? 3 : 2; |
mazgch | 88:135fb4bb7aac | 160 | if (0 == memcmp(imsi+3,p+1,l)) |
mazgch | 88:135fb4bb7aac | 161 | config = apnlut[i].cfg; |
mazgch | 88:135fb4bb7aac | 162 | p += 1 + l; |
mazgch | 88:135fb4bb7aac | 163 | } |
mazgch | 88:135fb4bb7aac | 164 | } |
mazgch | 88:135fb4bb7aac | 165 | } |
mazgch | 88:135fb4bb7aac | 166 | } |
mazgch | 88:135fb4bb7aac | 167 | // use default if not found |
mazgch | 88:135fb4bb7aac | 168 | if (!config) |
mazgch | 88:135fb4bb7aac | 169 | config = apndef; |
mazgch | 88:135fb4bb7aac | 170 | return config; |
mazgch | 88:135fb4bb7aac | 171 | } |