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.
Dependents: example-ublox-cellular-interface HelloMQTT example-ublox-cellular-interface_r410M example-ublox-mbed-client
Revision 2:4c533665168c, committed 2017-06-30
- Comitter:
- rob.meades@u-blox.com
- Date:
- Fri Jun 30 13:30:20 2017 +0100
- Parent:
- 1:80ec3fccad9e
- Child:
- 3:9863dcade75d
- Commit message:
- Connect now fails correctly if it cannot achieve a connection, rather than trying for ever.
Changed in this revision
| UbloxPPPCellularInterface.cpp | Show annotated file Show diff for this revision Revisions of this file |
| UbloxPPPCellularInterface.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/UbloxPPPCellularInterface.cpp Thu Jun 15 14:05:47 2017 +0100
+++ b/UbloxPPPCellularInterface.cpp Fri Jun 30 13:30:20 2017 +0100
@@ -78,12 +78,12 @@
}
// Get the next set of credentials, based on IMSI.
-void UbloxPPPCellularInterface::get_next_credentials(const char * config)
+void UbloxPPPCellularInterface::get_next_credentials(const char ** config)
{
- if (config) {
- _apn = _APN_GET(config);
- _uname = _APN_GET(config);
- _pwd = _APN_GET(config);
+ if (*config) {
+ _apn = _APN_GET(*config);
+ _uname = _APN_GET(*config);
+ _pwd = _APN_GET(*config);
}
_apn = _apn ? _apn : "";
@@ -212,16 +212,26 @@
// Attempt to connect
do {
// Set up APN and IP protocol for external PDP context
- get_next_credentials(config);
+ get_next_credentials(&config);
nsapi_error = setup_context_and_credentials();
// Attempt to enter data mode
if ((nsapi_error == NSAPI_ERROR_OK) && set_atd()) {
+ wait_ms(1000);
// Initialise PPP
// nsapi_ppp_connect() is a blocking call, it will block until
// connected, or timeout after 30 seconds
nsapi_error = nsapi_ppp_connect(_fh, _connection_status_cb, _uname, _pwd);
_ppp_connection_up = (nsapi_error == NSAPI_ERROR_OK);
+ if (!_ppp_connection_up) {
+ // If the connection has failed we may or may not still be
+ // in data mode, depending on the nature of the failure,
+ // so it's safest to force us back to command mode here
+ // (if we're already in command mode the recv() call will
+ // just time out)
+ _at->send("~+++");
+ _at->recv("NO CARRIER");
+ }
}
} while (!_ppp_connection_up && config && *config);
}
--- a/UbloxPPPCellularInterface.h Thu Jun 15 14:05:47 2017 +0100
+++ b/UbloxPPPCellularInterface.h Fri Jun 30 13:30:20 2017 +0100
@@ -225,7 +225,7 @@
/** Get the next set of credentials from the database.
*/
- void get_next_credentials(const char * config);
+ void get_next_credentials(const char ** config);
private:
bool _sim_pin_check_change_pending;