Add methods to return IMEI, MEID, IMSI, ICCID and RSSI.
Fork of ublox-cellular-base by
Revision 4:2e640a101db1, committed 2017-07-31
- Comitter:
- rob.meades@u-blox.com
- Date:
- Mon Jul 31 11:42:37 2017 +0100
- Parent:
- 3:f9b2cd6f72b1
- Child:
- 5:05fa111c1cf3
- Commit message:
- Take advantage of set_baud() to enable higher data rates. Add support for flow control but switched off until UARTSerial() supports it.
Changed in this revision
UbloxCellularBase.cpp | Show annotated file Show diff for this revision Revisions of this file |
UbloxCellularBase.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/UbloxCellularBase.cpp Mon Jun 19 15:00:42 2017 +0100 +++ b/UbloxCellularBase.cpp Mon Jul 31 11:42:37 2017 +0100 @@ -427,9 +427,17 @@ if (_debug_trace_on == false) { _debug_trace_on = debug_on; } + _baud = baud; // Set up File Handle for buffered serial comms with cellular module // (which will be used by the AT parser) + // Note: the UART is initialised to run no faster than 115200 because + // the modems cannot reliably auto-baud at faster rates. The faster + // rate is adopted later with a specific AT command and the + // UARTSerial rate is adjusted at that time + if (baud > 115200) { + baud = 115200; + } _fh = new UARTSerial(tx, rx, baud); // Set up the AT parser @@ -523,16 +531,25 @@ at_set_timeout(at_timeout); } + if (success) { + // Set the final baud rate + if (_at->send("AT+IPR=%d", _baud) && _at->recv("OK")) { + // Need to wait for things to be sorted out on the modem side + wait_ms(100); + ((UARTSerial *)_fh)->set_baud(_baud); + } + + // Turn off modem echoing and turn on verbose responses + success = _at->send("ATE0;+CMEE=2") && _at->recv("OK") && + // The following commands are best sent separately + _at->send("AT&K0") && _at->recv("OK") && // Turn off RTC/CTS handshaking + _at->send("AT&C1") && _at->recv("OK") && // Set DCD circuit(109), changes in accordance with the carrier detect status + _at->send("AT&D0") && _at->recv("OK"); // Set DTR circuit, we ignore the state change of DTR + } - if (success) { - success = _at->send("ATE0;" // Turn off modem echoing - "+CMEE=2;" // Turn on verbose responses - "&K0" //turn off RTC/CTS handshaking - "+IPR=%d;" // Set baud rate - "&C1;" // Set DCD circuit(109), changes in accordance with the carrier detect status - "&D0", MBED_CONF_UBLOX_CELL_BAUD_RATE) && // Set DTR circuit, we ignore the state change of DTR - _at->recv("OK"); - } +#if DEVICE_SERIAL_FC + ((UARTSerial *)_fh)->set_flow_control(SerialBase::RTSCTS, MDMRTS, MDMCTS); +#endif if (!success) { tr_error("Preliminary modem setup failed."); @@ -828,7 +845,7 @@ } // Enable or disable SIM pin checking. -bool UbloxCellularBase:: sim_pin_check_enable(bool enableNotDisable) +bool UbloxCellularBase::sim_pin_check_enable(bool enableNotDisable) { bool success = false;; LOCK();
--- a/UbloxCellularBase.h Mon Jun 19 15:00:42 2017 +0100 +++ b/UbloxCellularBase.h Mon Jul 31 11:42:37 2017 +0100 @@ -228,6 +228,10 @@ /** Set to true to spit out debug traces. */ bool _debug_trace_on; + + /** The baud rate to the modem. + */ + int _baud; /** True if the modem is ready register to the network, * otherwise false.