Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of C027_Support_New by
Diff: MDMAPN.h
- Revision:
- 88:135fb4bb7aac
- Parent:
- 87:64f54572ea74
- Child:
- 89:ea396f9f90a2
--- a/MDMAPN.h Fri Jun 06 09:00:03 2014 +0000
+++ b/MDMAPN.h Fri Jun 06 10:33:13 2014 +0000
@@ -34,22 +34,66 @@
//! this is a list of special APNs for different network operators
static const APN_t apnlut[] = {
+// MCC Country
+// { /* Operator */ "MCC-MNC[,MNC]" _APN(APN,USERNAME,PASSWORD) },
+// MCC must be 3 digits
+// MNC must be either 2 or 3 digits
-// Germany
- { /*T-Mobile*/ "26201", _APN("internet.t-mobile","t-mobile","tm") },
+// 262 Germany
+ { /* T-Mobile */ "262-01", _APN("internet.t-mobile","t-mobile","tm") },
+
+// 222 Italy
+ { /* TIM */ "222-01", _APN("ibox.tim.it",,) },
+ { /* Vodafone */ "222-10", _APN("web.omnitel.it",,) },
-// Switzerland
- { /*Swisscom*/ "22801", _APN("gprs.swisscom.ch",,) },
- { /*Orange*/ "22803", _APN("internet",,) /* post-paid */
- _APN("click",,) /* pre-paid */ },
-
-// USA
- { /*T-Mobile*/ "310026|310260|310490",
+// 228 Switzerland
+ { /* Swisscom */ "228-01", _APN("gprs.swisscom.ch",,) },
+ { /* Orange */ "228-03", _APN("internet",,) /* contract */
+ _APN("click",,) /* pre-pay */ },
+
+// 234 United Kingdom - GB
+ { /* O2 */ "234-02,10,11",
+ _APN("mobile.o2.co.uk","faster","web") /* contract */
+ _APN("mobile.o2.co.uk","bypass","web") /* pre-pay */
+ _APN("payandgo.o2.co.uk","payandgo","payandgo") },
+ { /* Vodafone */ "234-15", _APN("internet","web","web") /* contract */
+ _APN("pp.vodafone.co.uk","wap","wap") /* pre-pay */ },
+
+// 310 USA
+ { /* T-Mobile */ "310-026,260,490",
_APN("epc.tmobile.com",,)
- _APN("fast.tmobile.com",,) /*LTE*/ },
- { /*AT&T*/ "310030|310150|310170|310260|310410|310560|310680",
+ _APN("fast.tmobile.com",,) /* LTE */ },
+ { /* AT&T */ "310-030,150,170,260,410,560,680",
_APN("phone",,)
_APN("wap.cingular","WAP@CINGULARGPRS.COM","CINGULAR1")
_APN("isp.cingular","ISP@CINGULARGPRS.COM","CINGULAR1") },
- // ...
};
+
+inline const char* apnconfig(const char* imsi)
+{
+ const char* config = NULL;
+ if (imsi && *imsi) {
+ // many carriers use internet without username and password, os use this as default
+ // now try to lookup the setting for our table
+ for (int i = 0; i < sizeof(apnlut)/sizeof(*apnlut) && !config; i ++) {
+ const char* p = apnlut[i].mccmnc;
+ // check the MCC
+ if ((0 == memcmp(imsi, p, 3))) {
+ p += 3;
+ // check all the MNC, MNC length can be 2 or 3 digits
+ while (((p[0] == '-') || (p[0] == ',')) &&
+ (p[1] >= '0') && (p[1] <= '9') &&
+ (p[2] >= '0') && (p[2] <= '9') && !config) {
+ int l = ((p[3] >= '0') && (p[3] <= '9')) ? 3 : 2;
+ if (0 == memcmp(imsi+3,p+1,l))
+ config = apnlut[i].cfg;
+ p += 1 + l;
+ }
+ }
+ }
+ }
+ // use default if not found
+ if (!config)
+ config = apndef;
+ return config;
+}
\ No newline at end of file
