Browse Source

Add testAT, setBaud, sleepEnable

v_master
Volodymyr Shymanskyy 7 years ago
parent
commit
25644cd025
1 changed files with 19 additions and 39 deletions
  1. +19
    -39
      TinyGsmClientSIM800.h

+ 19
- 39
TinyGsmClientSIM800.h View File

@ -214,7 +214,7 @@ public:
} }
bool init() { bool init() {
if (!autoBaud()) {
if (!testAT()) {
return false; return false;
} }
sendAT(GF("&FZ")); // Factory + Reset sendAT(GF("&FZ")); // Factory + Reset
@ -227,7 +227,11 @@ public:
return true; return true;
} }
bool autoBaud(unsigned long timeout = 10000L) {
void setBaud(unsigned long baud) {
sendAT(GF("+IPR="), baud);
}
bool testAT(unsigned long timeout = 10000L) {
//streamWrite(GF("AAAAA" GSM_NL)); // TODO: extra A's to help detect the baud rate //streamWrite(GF("AAAAA" GSM_NL)); // TODO: extra A's to help detect the baud rate
for (unsigned long start = millis(); millis() - start < timeout; ) { for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF("")); sendAT(GF(""));
@ -293,7 +297,7 @@ public:
*/ */
bool restart() { bool restart() {
if (!autoBaud()) {
if (!testAT()) {
return false; return false;
} }
sendAT(GF("+CFUN=0")); sendAT(GF("+CFUN=0"));
@ -314,9 +318,6 @@ public:
} }
bool radioOff() { bool radioOff() {
if (!autoBaud()) {
return false;
}
sendAT(GF("+CFUN=0")); sendAT(GF("+CFUN=0"));
if (waitResponse(10000L) != 1) { if (waitResponse(10000L) != 1) {
return false; return false;
@ -325,6 +326,16 @@ public:
return true; return true;
} }
/*
During sleep, the SIM800 module has its serial communication disabled. In order to reestablish communication
pull the DRT-pin of the SIM800 module LOW for at least 50ms. Then use this function to disable sleep mode.
The DTR-pin can then be released again.
*/
bool sleepEnable(bool enable = true) {
sendAT(GF("+CSCLK="), enable);
return waitResponse() == 1;
}
/* /*
* SIM card functions * SIM card functions
*/ */
@ -606,9 +617,9 @@ public:
int dcs = stream.readStringUntil('\n').toInt(); int dcs = stream.readStringUntil('\n').toInt();
if (dcs == 15) { if (dcs == 15) {
return decodeHex8bit(hex);
return TinyGsmDecodeHex8bit(hex);
} else if (dcs == 72) { } else if (dcs == 72) {
return decodeHex16bit(hex);
return TinyGsmDecodeHex16bit(hex);
} else { } else {
return hex; return hex;
} }
@ -784,37 +795,6 @@ protected:
return 1 == res; return 1 == res;
} }
static String decodeHex8bit(String &instr) {
String result;
for (unsigned i=0; i<instr.length(); i+=2) {
char buf[4] = { 0, };
buf[0] = instr[i];
buf[1] = instr[i+1];
char b = strtol(buf, NULL, 16);
result += b;
}
return result;
}
static String decodeHex16bit(String &instr) {
String result;
for (unsigned i=0; i<instr.length(); i+=4) {
char buf[4] = { 0, };
buf[0] = instr[i];
buf[1] = instr[i+1];
char b = strtol(buf, NULL, 16);
if (b) { // If high byte is non-zero, we can't handle it ;(
b = '?';
} else {
buf[0] = instr[i+2];
buf[1] = instr[i+3];
b = strtol(buf, NULL, 16);
}
result += b;
}
return result;
}
public: public:
/* Utilities */ /* Utilities */


Loading…
Cancel
Save