summaryrefslogtreecommitdiff
path: root/libraries/SIM800/SIM800.h
blob: ca3104f4b52e92cc5593673f9757be009a86d153 (plain)
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;
};