Add a bunch of APNs
Fork of C027_Support by
Diff: MDM.cpp
- Revision:
- 85:dd8f4f0d0ca9
- Parent:
- 84:a05edb010176
- Child:
- 88:135fb4bb7aac
--- a/MDM.cpp Thu Jun 05 15:16:57 2014 +0000 +++ b/MDM.cpp Fri Jun 06 07:51:23 2014 +0000 @@ -4,42 +4,7 @@ #ifdef TARGET_UBLOX_C027 #include "C027_api.h" #endif - -/* ---------------------------------------------------------------- - APN stands for Access Point Name, a setting on your modem or phone - that identifies an external network your phone can access for data - (e.g., 3G or 4G Internet service on your phone). - - The APN settings can be forced when calling the join function. - Below is a list of known APNs that us used if no apn config - is forced. This list could be extended by other settings. - - For further reading: - wiki apn: http://en.wikipedia.org/wiki/Access_Point_Name - wiki mcc/mnc: http://en.wikipedia.org/wiki/Mobile_country_code - google: https://www.google.de/search?q=APN+list ----------------------------------------------------------------- */ -//! helper -#define _APN(a,u,p) a "\0" u "\0" p "\0" -//! default APN settings used by many networks -static const char* apndef = _APN("internet",,); -//! this is a list of special APNs for different network operators -static const struct { const char* mccmnc; const char* cfg; } apnlut[] = { -// Germany - { /*T-Mobile*/ "26201", _APN("internet.t-mobile","t-mobile","tm") }, -// Switzerland - { /*Swisscom*/ "22801", _APN("gprs.swisscom.ch",,) }, -// USA - { /*T-Mobile*/ "310026|310260|310490", - _APN("epc.tmobile.com",,) - _APN("fast.tmobile.com",,) /*LTE*/ }, - { /*AT&T*/ "310030|310150|310170|310260|310410|310560|310680", - _APN("phone",,) - _APN("wap.cingular","WAP@CINGULARGPRS.COM","CINGULAR1") - _APN("isp.cingular","ISP@CINGULARGPRS.COM","CINGULAR1") }, - // ... -}; -// ---------------------------------------------------------------- +#include "MDMAPN.h" #define PROFILE "0" //!< this is the psd profile used #define MAX_SIZE 128 //!< max expected messages @@ -740,6 +705,8 @@ config = apndef; sendFormated("AT+UDOPN=0\r\n"); if ((RESP_OK == waitFinalResp(_cbUDOPN, mccmnc)) && *mccmnc) { + TRACE("Lookup APN Settings for network \"%s\" from operator \"%s\"\r\n", + mccmnc, _net.opr); // 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); i ++) { @@ -758,13 +725,9 @@ do { if (config) { - apn = *config ? config : ""; - config += strlen(config)+1; - username = *config ? config : ""; - config += strlen(config)+1; - password = *config ? config : ""; - config += strlen(config)+1; - if (!*config) config = NULL; + apn = _APN_GET(config); + username = _APN_GET(config); + password = _APN_GET(config); TRACE("Testing APN Settings(\"%s\",\"%s\",\"%s\")\r\n", apn, username, password); } // Set up the APN @@ -793,7 +756,7 @@ ok = true; } } - } while (config); // maybe use next setting ? + } while (config && *config); // maybe use next setting ? if (!ok) { ERROR("Your modem APN/password/username may be wrong\r\n"); return NOIP;