Fix UBLOX implementation
This commit is contained in:
		@@ -22,6 +22,7 @@
 | 
			
		||||
#define GSM_NL "\r\n"
 | 
			
		||||
static const char GSM_OK[] TINY_GSM_PROGMEM = "OK" GSM_NL;
 | 
			
		||||
static const char GSM_ERROR[] TINY_GSM_PROGMEM = "ERROR" GSM_NL;
 | 
			
		||||
static const char GSM_CME_ERROR[] TINY_GSM_PROGMEM = GSM_NL "+CME ERROR:";
 | 
			
		||||
 | 
			
		||||
enum SimStatus {
 | 
			
		||||
  SIM_ERROR = 0,
 | 
			
		||||
@@ -412,7 +413,9 @@ public:
 | 
			
		||||
    gprsDisconnect();
 | 
			
		||||
 | 
			
		||||
    sendAT(GF("+CGATT=1"));
 | 
			
		||||
    waitResponse(60000L);
 | 
			
		||||
    if (waitResponse(60000L) != 1) {
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sendAT(GF("+UPSD=0,1,\""), apn, '"');
 | 
			
		||||
    waitResponse();
 | 
			
		||||
@@ -430,7 +433,9 @@ public:
 | 
			
		||||
    waitResponse();
 | 
			
		||||
 | 
			
		||||
    sendAT(GF("+UPSDA=0,3"));
 | 
			
		||||
    waitResponse(60000L);
 | 
			
		||||
    if (waitResponse(60000L) != 1) {
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Open a GPRS context
 | 
			
		||||
    sendAT(GF("+UPSND=0,8"));
 | 
			
		||||
@@ -553,6 +558,14 @@ protected:
 | 
			
		||||
      waitResponse();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Enable NODELAY
 | 
			
		||||
    sendAT(GF("+USOSO="), *mux, GF(",6,1,1"));
 | 
			
		||||
    waitResponse();
 | 
			
		||||
 | 
			
		||||
    // Enable KEEPALIVE, 30 sec
 | 
			
		||||
    //sendAT(GF("+USOSO="), *mux, GF(",6,2,30000"));
 | 
			
		||||
    //waitResponse();
 | 
			
		||||
 | 
			
		||||
    sendAT(GF("+USOCO="), *mux, ",\"", host, "\",", port);
 | 
			
		||||
    int rsp = waitResponse(75000L);
 | 
			
		||||
    return (1 == rsp);
 | 
			
		||||
@@ -571,7 +584,9 @@ protected:
 | 
			
		||||
      return 0;
 | 
			
		||||
    }
 | 
			
		||||
    streamSkipUntil(','); // Skip mux
 | 
			
		||||
    return stream.readStringUntil('\n').toInt();
 | 
			
		||||
    int sent = stream.readStringUntil('\n').toInt();
 | 
			
		||||
    waitResponse();
 | 
			
		||||
    return sent;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  size_t modemRead(size_t size, uint8_t mux) {
 | 
			
		||||
@@ -594,7 +609,7 @@ protected:
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  size_t modemGetAvailable(uint8_t mux) {
 | 
			
		||||
    sendAT(GF("+USORD="), mux, ',', 0);
 | 
			
		||||
    sendAT(GF("+USORD="), mux, ",0");
 | 
			
		||||
    size_t result = 0;
 | 
			
		||||
    if (waitResponse(GF(GSM_NL "+USORD:")) == 1) {
 | 
			
		||||
      streamSkipUntil(','); // Skip mux
 | 
			
		||||
@@ -615,7 +630,7 @@ protected:
 | 
			
		||||
    streamSkipUntil(','); // Skip mux
 | 
			
		||||
    streamSkipUntil(','); // Skip type
 | 
			
		||||
    int result = stream.readStringUntil('\n').toInt();
 | 
			
		||||
 | 
			
		||||
    waitResponse();
 | 
			
		||||
    return result != 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -654,7 +669,7 @@ public:
 | 
			
		||||
  // TODO: Optimize this!
 | 
			
		||||
  uint8_t waitResponse(uint32_t timeout, String& data,
 | 
			
		||||
                       GsmConstStr r1=GFP(GSM_OK), GsmConstStr r2=GFP(GSM_ERROR),
 | 
			
		||||
                       GsmConstStr r3=NULL, GsmConstStr r4=NULL, GsmConstStr r5=NULL)
 | 
			
		||||
                       GsmConstStr r3=GFP(GSM_CME_ERROR), GsmConstStr r4=NULL, GsmConstStr r5=NULL)
 | 
			
		||||
  {
 | 
			
		||||
    /*String r1s(r1); r1s.trim();
 | 
			
		||||
    String r2s(r2); r2s.trim();
 | 
			
		||||
@@ -688,17 +703,19 @@ public:
 | 
			
		||||
          goto finish;
 | 
			
		||||
        } else if (data.endsWith(GF(GSM_NL "+UUSORD:"))) {
 | 
			
		||||
          int mux = stream.readStringUntil(',').toInt();
 | 
			
		||||
          streamSkipUntil('\n');
 | 
			
		||||
          if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
 | 
			
		||||
            sockets[mux]->got_data = true;
 | 
			
		||||
          }
 | 
			
		||||
          data = "";
 | 
			
		||||
          DBG("### Got Data:", mux);
 | 
			
		||||
        } else if (data.endsWith(GF(GSM_NL "+UUSOCL:"))) {
 | 
			
		||||
          int mux = stream.readStringUntil('\n').toInt();
 | 
			
		||||
          if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
 | 
			
		||||
            sockets[mux]->sock_connected = false;
 | 
			
		||||
          }
 | 
			
		||||
          data = "";
 | 
			
		||||
          DBG("### Closed: ", mux);
 | 
			
		||||
          DBG("### Closed:", mux);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    } while (millis() - startMillis < timeout);
 | 
			
		||||
@@ -715,14 +732,14 @@ finish:
 | 
			
		||||
 | 
			
		||||
  uint8_t waitResponse(uint32_t timeout,
 | 
			
		||||
                       GsmConstStr r1=GFP(GSM_OK), GsmConstStr r2=GFP(GSM_ERROR),
 | 
			
		||||
                       GsmConstStr r3=NULL, GsmConstStr r4=NULL, GsmConstStr r5=NULL)
 | 
			
		||||
                       GsmConstStr r3=GFP(GSM_CME_ERROR), GsmConstStr r4=NULL, GsmConstStr r5=NULL)
 | 
			
		||||
  {
 | 
			
		||||
    String data;
 | 
			
		||||
    return waitResponse(timeout, data, r1, r2, r3, r4, r5);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  uint8_t waitResponse(GsmConstStr r1=GFP(GSM_OK), GsmConstStr r2=GFP(GSM_ERROR),
 | 
			
		||||
                       GsmConstStr r3=NULL, GsmConstStr r4=NULL, GsmConstStr r5=NULL)
 | 
			
		||||
                       GsmConstStr r3=GFP(GSM_CME_ERROR), GsmConstStr r4=NULL, GsmConstStr r5=NULL)
 | 
			
		||||
  {
 | 
			
		||||
    return waitResponse(1000, r1, r2, r3, r4, r5);
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user