1
1
#include " SIM808.h"
2
2
3
+ AT_COMMAND (SET_BEARER_SETTING_PARAMETER, " +SAPBR=3,1,\" %S\" ,\" %s\" " );
3
4
AT_COMMAND (SET_BEARER_SETTING, " +SAPBR=%d,%d" );
4
- AT_COMMAND (GPRS_START_TASK, " +CSTT=\" %s\" ,\" %s\" ,\" %s\" " );
5
5
AT_COMMAND (GPRS_ATTACH, " +CGATT=%d" );
6
6
7
+ AT_COMMAND_PARAMETER (BEARER, CONTYPE);
8
+ AT_COMMAND_PARAMETER (BEARER, APN);
9
+ AT_COMMAND_PARAMETER (BEARER, USER);
10
+ AT_COMMAND_PARAMETER (BEARER, PWD);
11
+
12
+ TOKEN_TEXT (GPRS, " GPRS" );
7
13
TOKEN_TEXT (CGATT, " +CGATT" );
8
14
TOKEN_TEXT (CIPSHUT, " +CIPSHUT" );
9
15
TOKEN_TEXT (SHUT_OK, " SHUT OK" );
10
16
TOKEN_TEXT (CGREG, " +CGREG" );
11
17
18
+ bool SIM808::setBearerSetting (ATConstStr parameter, const char * value)
19
+ {
20
+ sendFormatAT (TO_F (AT_COMMAND_SET_BEARER_SETTING_PARAMETER), parameter, value);
21
+ return waitResponse () == 0 ;
22
+ }
23
+
12
24
bool SIM808::getGprsPowerState (bool *state)
13
25
{
14
26
uint8_t result;
@@ -26,19 +38,27 @@ bool SIM808::getGprsPowerState(bool *state)
26
38
27
39
bool SIM808::enableGprs (const char *apn, const char * user = NULL , const char *password = NULL )
28
40
{
41
+ char gprsToken[5 ];
42
+ strcpy_P (gprsToken, TOKEN_GPRS);
43
+
29
44
return
30
45
(sendAT (TO_F (TOKEN_CIPSHUT)), waitResponse (65000L , TO_F (TOKEN_SHUT_OK)) == 0 ) && // AT+CIPSHUT
31
46
(sendFormatAT (TO_F (AT_COMMAND_GPRS_ATTACH), 1 ), waitResponse (10000L ) == 0 ) && // AT+CGATT=1
32
47
33
- (sendFormatAT (TO_F (AT_COMMAND_GPRS_START_TASK), apn, user, password), waitResponse () == 0 ) && // AT+CSTT="apn","user","password"
48
+ (setBearerSetting (TO_F (AT_COMMAND_PARAMETER_BEARER_CONTYPE), gprsToken)) && // AT+SAPBR=3,1,"CONTYPE","GPRS"
49
+
50
+ (setBearerSetting (TO_F (AT_COMMAND_PARAMETER_BEARER_APN), apn)) && // AT+SAPBR=3,1,"APN","xxx"
51
+ (user == NULL || setBearerSetting (TO_F (AT_COMMAND_PARAMETER_BEARER_USER), user)) && // AT+SAPBR=3,1,"USER","xxx"
52
+ (password == NULL || setBearerSetting (TO_F (AT_COMMAND_PARAMETER_BEARER_PWD), password)) && // AT+SAPBR=3,1,"PWD","xxx"
53
+
34
54
(sendFormatAT (TO_F (AT_COMMAND_SET_BEARER_SETTING), 1 , 1 ), waitResponse (65000L ) == 0 ); // AT+SAPBR=1,1
35
55
}
36
56
37
57
bool SIM808::disableGprs ()
38
58
{
39
59
return
40
- (sendAT (TO_F (TOKEN_CIPSHUT)), waitResponse (65000L , TO_F (TOKEN_SHUT_OK)) == 0 ) && // AT+CIPSHUT
41
60
(sendFormatAT (TO_F (AT_COMMAND_SET_BEARER_SETTING), 0 , 1 ), waitResponse (65000L ) != -1 ) && // AT+SAPBR=0,1
61
+ (sendAT (TO_F (TOKEN_CIPSHUT)), waitResponse (65000L , TO_F (TOKEN_SHUT_OK)) == 0 ) && // AT+CIPSHUT
42
62
(sendFormatAT (TO_F (AT_COMMAND_GPRS_ATTACH), 0 ), waitResponse (10000L ) == 0 ); // AT+CGATT=0
43
63
}
44
64
0 commit comments