1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
/*************************************************************************
* Test sketch for SIM800 library
* Distributed under GPL v2.0
* Written by Stanley Huang <stanleyhuangyc@gmail.com>
* For more information, please visit http://arduinodev.com
*************************************************************************/
#include <Arduino.h>
#define SIM800_RESET_PIN 7
#define simser Serial1
#define con Serial
#define DEBUG 0
typedef enum {
HTTP_DISABLED = 0,
HTTP_READY,
HTTP_CONNECTING,
HTTP_READING,
HTTP_ERROR,
} HTTP_STATES;
class CGPRS_SIM800 {
public:
CGPRS_SIM800():httpState(HTTP_DISABLED) {}
bool init();
byte setup(const char* apn);
bool getOperatorName();
bool checkSMS();
int getSignalQuality();
void httpUninit();
bool httpInit();
bool httpConnect(const char* url, const char* args = 0);
// check if HTTP connection is established
// return 0 for in progress, 1 for success, 2 for error
byte httpIsConnected();
void httpRead();
// check if HTTP connection is established
// return 0 for in progress, -1 for error, number of http payload bytes on success
int httpIsRead();
byte sendCommand(const char* cmd, unsigned int timeout = 2000, const char* expected = 0);
byte sendCommand(const char* cmd, const char* expected1, const char* expected2, unsigned int timeout = 2000);
bool available()
{
return simser.available();
}
char buffer[256];
byte httpState;
private:
byte checkbuffer(const char* expected1, const char* expected2 = 0, unsigned int timeout = 2000);
void purgeSerial();
byte bytesRecv;
uint32_t checkTimer;
};
|