Skip to content

Status: -2 or -3 stack the loop in arduino #105

Open
@roysG

Description

@roysG

Hi,
I am using you library, it works great when i get status code: 200.
But if the server send error for some reason, then i get status code -2 or -3 and then it is not send again requests to server.

Code:

#include "config.h"
#include <HttpClient.h>
#include <TinyGsmClient.h>

#ifdef DEBUG_DUMP_AT_COMMAND
#include <StreamDebugger.h>
StreamDebugger debugger(SerialAT, SerialMon);
TinyGsm modem(debugger, AM7020_RESET);
#else
TinyGsm modem(SerialAT, AM7020_RESET);
#endif

TinyGsmClient tcpClient(modem);
HttpClient httpClient = HttpClient(tcpClient, HTTP_SERVER, HTTP_PORT);

void setup() {
  SerialMon.begin(MONITOR_BAUDRATE);
  SerialAT.begin(AM7020_BAUDRATE);

  httpClient.connectionKeepAlive();
  nbConnect();
}

void callAgain() {
  static unsigned long timer = 0;
  char buff[100];
  int state_code;
  String body;

  if (!modem.isNetworkConnected()) {
    nbConnect();
  }

  //if (millis() >= timer) {
  //  timer = millis() + UPLOAD_INTERVAL;

  /* Get Most Recent Data */
  SerialMon.println(F("HTTP Get..."));
  sprintf(buff, "/%s", HTTP_API);
  httpClient.get(buff);
  state_code = httpClient.responseStatusCode();
  body = httpClient.responseBody();

  SerialMon.print(F("GET state code = "));
  SerialMon.println(state_code);
  SerialMon.print(F("body = "));
  SerialMon.println(body);

  /* Create Data */
  /*SerialMon.println(F("HTTP Post..."));
        sprintf(buff, "/%s", HTTP_API);
        httpClient.post(buff, "application/json", "{\"value\": \"POST\"}");

        state_code = httpClient.responseStatusCode();
        body       = httpClient.responseBody();
        SerialMon.print(F("POST state code = "));
        SerialMon.println(state_code);
        SerialMon.print(F("body = "));
        SerialMon.println(body);*/
  //}
}

void loop() {
  callAgain();
  delay(100);
}

void nbConnect(void) {
  SerialMon.println(F("Initializing modem..."));
  while (!modem.init() || !modem.nbiotConnect(APN, BAND)) {
    SerialMon.print(F("."));
  }

  SerialMon.print(F("Waiting for network..."));
  while (!modem.waitForNetwork()) {
    SerialMon.print(F("."));
  }
  SerialMon.println(F(" success"));
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: imperfectionPerceived defect in any part of project

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions