diff --git a/libraries/GPS/src/GPS.cpp b/libraries/GPS/src/GPS.cpp index 0861a9885..04a5d279d 100644 --- a/libraries/GPS/src/GPS.cpp +++ b/libraries/GPS/src/GPS.cpp @@ -10,50 +10,6 @@ arduino::GPSClass::~GPSClass() { } -void arduino::GPSClass::begin(unsigned long baudrate, uint16_t config) -{ - auto cmux = arduino::CMUXClass::get_default_instance(); - - auto serial = cmux->get_serial(1); - _serial = (arduino::PTYSerial *)serial; - nextSerialPort++; - - _serial->write("ATE0\r\n", sizeof("ATE0\r\n")); - readAndDrop(); - - // burn any incoming message on gps rx buffer - readAndDrop(); - - do - { - _serial->write("AT^SPIO=0\r\n", sizeof("AT^SPIO=0\r\n")); - readAndDrop(); - - _serial->write("AT^SPIO=1\r\n", sizeof("AT^SPIO=1\r\n")); - readAndDrop(); - - _serial->write("AT^SCPIN=1,7,1,0\r\n", sizeof("AT^SCPIN=1,7,1,0\r\n")); - readAndDrop(); - - _serial->write("AT^SSIO=7,1\r\n", sizeof("AT^SSIO=7,1\r\n")); - readAndDrop(); - - _serial->write("AT^SGIO=7\r\n", sizeof("AT^SGIO=7\r\n")); - } while (!checkGNSSEngine("^SGIO: 1")); - - _serial->write("AT^SGPSC=Engine/StartMode,0\r\n", sizeof("AT^SGPSC=Engine/StartMode,0\r\n")); - checkGNSSEngine("^SGPSC: \"Engine/StartMode\",\"0\""); - - while (!_engine) - { - _serial->write("AT^SGPSC=Engine,3\r\n", sizeof("AT^SGPSC=Engine,3\r\n")); - _engine = checkGNSSEngine("^SGPSC: \"Engine\",\"3\""); - } - - _serial->write("AT^SGPSC=Nmea/Urc,on\r\n", sizeof("AT^SGPSC=Nmea/Urc,on\r\n")); - readAndDrop(); -} - int arduino::GPSClass::available(void) { return _serial->available(); @@ -100,15 +56,21 @@ bool arduino::GPSClass::checkGNSSEngine(const char *prefix) void arduino::GPSClass::readAndDrop() { - char buf[256]; + char buf[256]; + uint32_t start = millis(); int dataRead = 0; - while((dataRead = available()) <= 0); + while (!available() && millis() - start < 1000) {} String tmp = ""; - while((dataRead =_serial->read(buf, 1)) > 0); + while(_serial->read(buf, 1) > 0); } -void arduino::GPSClass::begin(unsigned long baudrate) +void arduino::GPSClass::begin(unsigned long baudrate) { + begin(baudrate, 0); +} + + +void arduino::GPSClass::begin(unsigned long baudrate, uint16_t config) { auto cmux = arduino::CMUXClass::get_default_instance(); @@ -119,9 +81,6 @@ void arduino::GPSClass::begin(unsigned long baudrate) _serial->write("ATE0\r\n", sizeof("ATE0\r\n")); readAndDrop(); - // burn any incoming message on gps rx buffer - readAndDrop(); - do { _serial->write("AT^SPIO=0\r\n", sizeof("AT^SPIO=0\r\n")); @@ -207,7 +166,7 @@ arduino::GPSClass::operator bool() return checkGNSSEngine("\"Engine\",\"3\""); } -static Stream *trace_stream = nullptr; +extern Stream *trace_stream; static void arduino_print(const char *c) { if (trace_stream) diff --git a/libraries/GPS/src/GPS.h b/libraries/GPS/src/GPS.h index 44bab25d5..998430ecc 100644 --- a/libraries/GPS/src/GPS.h +++ b/libraries/GPS/src/GPS.h @@ -33,8 +33,8 @@ class GPSClass : public HardwareSerial { GPSClass(); ~GPSClass(); - void begin(unsigned long baudrate); - void begin(unsigned long baudrate = 115200UL, uint16_t config = 0); + void begin(unsigned long baudrate = 115200); + void begin(unsigned long baudrate, uint16_t config); void end(void); int available(void); int peek(void); diff --git a/libraries/GSM/src/PTYSerial.cpp b/libraries/GSM/src/PTYSerial.cpp index ef1be67fa..3a457fcd4 100644 --- a/libraries/GSM/src/PTYSerial.cpp +++ b/libraries/GSM/src/PTYSerial.cpp @@ -127,17 +127,20 @@ int PTYSerial::get_port() { } int PTYSerial::write(const void *buffer) { const char *buf_ptr = static_cast(buffer); + tr_info("%s", buffer); return write(buf_ptr, sizeof(buffer)); } int PTYSerial::write(const void *buffer, size_t length) { const char *buf_ptr = static_cast(buffer); + tr_info("%s", buffer); int ret = _parent->populate_tx_buffer(buf_ptr, length, this->get_port()); return ret; } int PTYSerial::write(const void *buffer, size_t length, int id) { const char *buf_ptr = static_cast(buffer); + tr_info("%s", buffer); int ret = _parent->populate_tx_buffer(buf_ptr, length, id); return ret; }