User | Revision | Line number | New contents of line |
mbed714 |
0:98aadd37a5c5
|
1
|
|
mbed714 |
0:98aadd37a5c5
|
2
|
/*
|
mbed714 |
0:98aadd37a5c5
|
3
|
Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
|
mbed714 |
0:98aadd37a5c5
|
4
|
|
mbed714 |
0:98aadd37a5c5
|
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
mbed714 |
0:98aadd37a5c5
|
6
|
of this software and associated documentation files (the "Software"), to deal
|
mbed714 |
0:98aadd37a5c5
|
7
|
in the Software without restriction, including without limitation the rights
|
mbed714 |
0:98aadd37a5c5
|
8
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
mbed714 |
0:98aadd37a5c5
|
9
|
copies of the Software, and to permit persons to whom the Software is
|
mbed714 |
0:98aadd37a5c5
|
10
|
furnished to do so, subject to the following conditions:
|
mbed714 |
0:98aadd37a5c5
|
11
|
|
mbed714 |
0:98aadd37a5c5
|
12
|
The above copyright notice and this permission notice shall be included in
|
mbed714 |
0:98aadd37a5c5
|
13
|
all copies or substantial portions of the Software.
|
mbed714 |
0:98aadd37a5c5
|
14
|
|
mbed714 |
0:98aadd37a5c5
|
15
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
mbed714 |
0:98aadd37a5c5
|
16
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
mbed714 |
0:98aadd37a5c5
|
17
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
mbed714 |
0:98aadd37a5c5
|
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
mbed714 |
0:98aadd37a5c5
|
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
mbed714 |
0:98aadd37a5c5
|
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
mbed714 |
0:98aadd37a5c5
|
21
|
THE SOFTWARE.
|
mbed714 |
0:98aadd37a5c5
|
22
|
*/
|
mbed714 |
0:98aadd37a5c5
|
23
|
|
mbed714 |
0:98aadd37a5c5
|
24
|
#include "GPRSModem.h"
|
mbed714 |
0:98aadd37a5c5
|
25
|
#include "mbed.h"
|
mbed714 |
0:98aadd37a5c5
|
26
|
|
mbed714 |
0:98aadd37a5c5
|
27
|
//#define __DEBUG
|
mbed714 |
0:98aadd37a5c5
|
28
|
#include "dbg/dbg.h"
|
mbed714 |
0:98aadd37a5c5
|
29
|
|
mbed714 |
0:98aadd37a5c5
|
30
|
#define WAIT_BTW_NETW_POLLS 3.
|
mbed714 |
0:98aadd37a5c5
|
31
|
|
mbed714 |
0:98aadd37a5c5
|
32
|
#include "netCfg.h"
|
mbed714 |
0:98aadd37a5c5
|
33
|
#if NET_GPRS
|
mbed714 |
0:98aadd37a5c5
|
34
|
|
mbed714 |
0:98aadd37a5c5
|
35
|
GPRSModem::GPRSModem() : ATIf()
|
mbed714 |
0:98aadd37a5c5
|
36
|
{
|
mbed714 |
0:98aadd37a5c5
|
37
|
DBG("New GPRSModem@%p\n", this);
|
mbed714 |
0:98aadd37a5c5
|
38
|
}
|
mbed714 |
0:98aadd37a5c5
|
39
|
|
mbed714 |
0:98aadd37a5c5
|
40
|
GPRSModem::~GPRSModem()
|
mbed714 |
0:98aadd37a5c5
|
41
|
{
|
mbed714 |
0:98aadd37a5c5
|
42
|
|
mbed714 |
0:98aadd37a5c5
|
43
|
}
|
mbed714 |
0:98aadd37a5c5
|
44
|
|
mbed714 |
0:98aadd37a5c5
|
45
|
GPRSErr GPRSModem::getNetworkState()
|
mbed714 |
0:98aadd37a5c5
|
46
|
{
|
mbed714 |
0:98aadd37a5c5
|
47
|
ATIf::flushBuffer();
|
mbed714 |
0:98aadd37a5c5
|
48
|
/*
|
mbed714 |
0:98aadd37a5c5
|
49
|
netState can be : (Telit_AT_Reference_Guide.pdf p.98)
|
mbed714 |
0:98aadd37a5c5
|
50
|
0 - not registered, ME is not currently searching a new operator to register to
|
mbed714 |
0:98aadd37a5c5
|
51
|
1 - registered, home network
|
mbed714 |
0:98aadd37a5c5
|
52
|
2 - not registered, but ME is currently searching a new operator to register to
|
mbed714 |
0:98aadd37a5c5
|
53
|
3 - registration denied
|
mbed714 |
0:98aadd37a5c5
|
54
|
4 - unknown
|
mbed714 |
0:98aadd37a5c5
|
55
|
5 - registered, roaming
|
mbed714 |
0:98aadd37a5c5
|
56
|
*/
|
mbed714 |
0:98aadd37a5c5
|
57
|
// DBG("Network?...\r\n");
|
mbed714 |
0:98aadd37a5c5
|
58
|
ATIf::setReadMode(false); //Discard chars
|
mbed714 |
0:98aadd37a5c5
|
59
|
ATIf::setTimeout(10000);
|
mbed714 |
0:98aadd37a5c5
|
60
|
ATIf::setLineMode(true); //Line mode
|
mbed714 |
0:98aadd37a5c5
|
61
|
int netState = 0;
|
mbed714 |
0:98aadd37a5c5
|
62
|
int len;
|
mbed714 |
0:98aadd37a5c5
|
63
|
len = ATIf::printf("AT+CREG?"); //Registered ?
|
mbed714 |
0:98aadd37a5c5
|
64
|
if(!len) DBG("\r\nprintf - len=%d\r\n",len);
|
mbed714 |
0:98aadd37a5c5
|
65
|
if(!len)
|
mbed714 |
0:98aadd37a5c5
|
66
|
return GPRS_MODEM; //Nothing was actually sent
|
mbed714 |
0:98aadd37a5c5
|
67
|
|
mbed714 |
0:98aadd37a5c5
|
68
|
len = ATIf::scanf("+CREG: 0,%d", &netState); //Get status
|
mbed714 |
0:98aadd37a5c5
|
69
|
if(len != 1) DBG("\r\nscanf - len=%d\r\n",len);
|
mbed714 |
0:98aadd37a5c5
|
70
|
if(len != 1) //Likely +CMS ERROR was returned
|
mbed714 |
0:98aadd37a5c5
|
71
|
return GPRS_MODEM;
|
mbed714 |
0:98aadd37a5c5
|
72
|
|
mbed714 |
0:98aadd37a5c5
|
73
|
if( !!ATIf::checkOK() ) //Should not be a problem
|
mbed714 |
0:98aadd37a5c5
|
74
|
{DBG("\r\nNOK\r\n"); return GPRS_MODEM; }
|
mbed714 |
0:98aadd37a5c5
|
75
|
|
mbed714 |
0:98aadd37a5c5
|
76
|
switch(netState)
|
mbed714 |
0:98aadd37a5c5
|
77
|
{
|
mbed714 |
0:98aadd37a5c5
|
78
|
case 1:
|
mbed714 |
0:98aadd37a5c5
|
79
|
case 5: //TODO: Option allow roaming
|
mbed714 |
0:98aadd37a5c5
|
80
|
DBG("\r\nNetwork is up!\r\n");
|
mbed714 |
0:98aadd37a5c5
|
81
|
return GPRS_OK;
|
mbed714 |
0:98aadd37a5c5
|
82
|
case 3:
|
mbed714 |
0:98aadd37a5c5
|
83
|
DBG("\r\nAccess to network denied.\r\n");
|
mbed714 |
0:98aadd37a5c5
|
84
|
return GPRS_DENIED;
|
mbed714 |
0:98aadd37a5c5
|
85
|
case 0:
|
mbed714 |
0:98aadd37a5c5
|
86
|
DBG("\r\nNo network.\r\n");
|
mbed714 |
0:98aadd37a5c5
|
87
|
return GPRS_NONETWORK;
|
mbed714 |
0:98aadd37a5c5
|
88
|
case 4:
|
mbed714 |
0:98aadd37a5c5
|
89
|
case 2:
|
mbed714 |
0:98aadd37a5c5
|
90
|
//DBG("\r\nRegistering...\r\n");
|
mbed714 |
0:98aadd37a5c5
|
91
|
return GPRS_REGISTERING;
|
mbed714 |
0:98aadd37a5c5
|
92
|
}
|
mbed714 |
0:98aadd37a5c5
|
93
|
|
mbed714 |
0:98aadd37a5c5
|
94
|
return GPRS_MODEM; // Should not reach this
|
mbed714 |
0:98aadd37a5c5
|
95
|
|
mbed714 |
0:98aadd37a5c5
|
96
|
}
|
mbed714 |
0:98aadd37a5c5
|
97
|
|
mbed714 |
0:98aadd37a5c5
|
98
|
GPRSErr GPRSModem::setNetworkUp()
|
mbed714 |
0:98aadd37a5c5
|
99
|
{
|
mbed714 |
0:98aadd37a5c5
|
100
|
ATIf::flushBuffer();
|
mbed714 |
0:98aadd37a5c5
|
101
|
GPRSErr err = GPRS_REGISTERING;
|
mbed714 |
0:98aadd37a5c5
|
102
|
while(true)
|
mbed714 |
0:98aadd37a5c5
|
103
|
{
|
mbed714 |
0:98aadd37a5c5
|
104
|
err = getNetworkState();
|
mbed714 |
0:98aadd37a5c5
|
105
|
if(err != GPRS_REGISTERING)
|
mbed714 |
0:98aadd37a5c5
|
106
|
break;
|
mbed714 |
0:98aadd37a5c5
|
107
|
wait(WAIT_BTW_NETW_POLLS);
|
mbed714 |
0:98aadd37a5c5
|
108
|
}
|
mbed714 |
0:98aadd37a5c5
|
109
|
return err;
|
mbed714 |
0:98aadd37a5c5
|
110
|
}
|
mbed714 |
0:98aadd37a5c5
|
111
|
|
mbed714 |
0:98aadd37a5c5
|
112
|
//Same, but for GPRS
|
mbed714 |
0:98aadd37a5c5
|
113
|
GPRSErr GPRSModem::getGPRSState()
|
mbed714 |
0:98aadd37a5c5
|
114
|
{
|
mbed714 |
0:98aadd37a5c5
|
115
|
ATIf::flushBuffer();
|
mbed714 |
0:98aadd37a5c5
|
116
|
/*
|
mbed714 |
0:98aadd37a5c5
|
117
|
netState can be : (Telit_AT_Reference_Guide.pdf p.192)
|
mbed714 |
0:98aadd37a5c5
|
118
|
0 - not registered, terminal is not currently searching a new operator to register to
|
mbed714 |
0:98aadd37a5c5
|
119
|
1 - registered, home network
|
mbed714 |
0:98aadd37a5c5
|
120
|
2 - not registered, but terminal is currently searching a new operator to register to
|
mbed714 |
0:98aadd37a5c5
|
121
|
3 - registration denied
|
mbed714 |
0:98aadd37a5c5
|
122
|
4 - unknown
|
mbed714 |
0:98aadd37a5c5
|
123
|
5 - registered, roaming
|
mbed714 |
0:98aadd37a5c5
|
124
|
*/
|
mbed714 |
0:98aadd37a5c5
|
125
|
|
mbed714 |
0:98aadd37a5c5
|
126
|
DBG("GPRS?...\r\n");
|
mbed714 |
0:98aadd37a5c5
|
127
|
ATIf::setReadMode(false); //Discard chars
|
mbed714 |
0:98aadd37a5c5
|
128
|
ATIf::setTimeout(10000);
|
mbed714 |
0:98aadd37a5c5
|
129
|
ATIf::setLineMode(true); //Line mode
|
mbed714 |
0:98aadd37a5c5
|
130
|
int netState = 0;
|
mbed714 |
0:98aadd37a5c5
|
131
|
int len;
|
mbed714 |
0:98aadd37a5c5
|
132
|
len = ATIf::printf("AT+CGREG?"); //Registered ?
|
mbed714 |
0:98aadd37a5c5
|
133
|
if(!len)
|
mbed714 |
0:98aadd37a5c5
|
134
|
return GPRS_MODEM; //Nothing was actually sent
|
mbed714 |
0:98aadd37a5c5
|
135
|
|
mbed714 |
0:98aadd37a5c5
|
136
|
len = ATIf::scanf("+CGREG: %*d,%d", &netState); //Get GPRS status, see GSM 07.07 spec as Telit AT ref is wrong
|
mbed714 |
0:98aadd37a5c5
|
137
|
if(len != 1) DBG("\r\nscanf - len=%d\r\n",len);
|
mbed714 |
0:98aadd37a5c5
|
138
|
if(len != 1) //Likely +CMS ERROR was returned
|
mbed714 |
0:98aadd37a5c5
|
139
|
return GPRS_MODEM;
|
mbed714 |
0:98aadd37a5c5
|
140
|
|
mbed714 |
0:98aadd37a5c5
|
141
|
if( !!ATIf::checkOK() ) //Should not be a problem
|
mbed714 |
0:98aadd37a5c5
|
142
|
return GPRS_MODEM;
|
mbed714 |
0:98aadd37a5c5
|
143
|
|
mbed714 |
0:98aadd37a5c5
|
144
|
switch(netState)
|
mbed714 |
0:98aadd37a5c5
|
145
|
{
|
mbed714 |
0:98aadd37a5c5
|
146
|
case 1:
|
mbed714 |
0:98aadd37a5c5
|
147
|
case 5: //TODO: Option allow roaming
|
mbed714 |
0:98aadd37a5c5
|
148
|
DBG("\r\nNetwork is up!\r\n");
|
mbed714 |
0:98aadd37a5c5
|
149
|
return GPRS_OK;
|
mbed714 |
0:98aadd37a5c5
|
150
|
case 3:
|
mbed714 |
0:98aadd37a5c5
|
151
|
DBG("\r\nAccess to network denied.\r\n");
|
mbed714 |
0:98aadd37a5c5
|
152
|
return GPRS_DENIED;
|
mbed714 |
0:98aadd37a5c5
|
153
|
case 0:
|
mbed714 |
0:98aadd37a5c5
|
154
|
DBG("\r\nNo network.\r\n");
|
mbed714 |
0:98aadd37a5c5
|
155
|
return GPRS_NONETWORK;
|
mbed714 |
0:98aadd37a5c5
|
156
|
case 4:
|
mbed714 |
0:98aadd37a5c5
|
157
|
case 2:
|
mbed714 |
0:98aadd37a5c5
|
158
|
DBG("\r\nRegistering...\r\n");
|
mbed714 |
0:98aadd37a5c5
|
159
|
return GPRS_REGISTERING;
|
mbed714 |
0:98aadd37a5c5
|
160
|
}
|
mbed714 |
0:98aadd37a5c5
|
161
|
|
mbed714 |
0:98aadd37a5c5
|
162
|
return GPRS_MODEM; // Should not reach this
|
mbed714 |
0:98aadd37a5c5
|
163
|
|
mbed714 |
0:98aadd37a5c5
|
164
|
}
|
mbed714 |
0:98aadd37a5c5
|
165
|
|
mbed714 |
0:98aadd37a5c5
|
166
|
GPRSErr GPRSModem::setGPRSUp()
|
mbed714 |
0:98aadd37a5c5
|
167
|
{
|
mbed714 |
0:98aadd37a5c5
|
168
|
ATIf::flushBuffer();
|
mbed714 |
0:98aadd37a5c5
|
169
|
GPRSErr err;
|
mbed714 |
0:98aadd37a5c5
|
170
|
|
mbed714 |
0:98aadd37a5c5
|
171
|
err = setNetworkUp();
|
mbed714 |
0:98aadd37a5c5
|
172
|
if(err)
|
mbed714 |
0:98aadd37a5c5
|
173
|
return err;
|
mbed714 |
0:98aadd37a5c5
|
174
|
|
mbed714 |
0:98aadd37a5c5
|
175
|
DBG("\r\nAttaching GPRS...\r\n");
|
mbed714 |
0:98aadd37a5c5
|
176
|
ATIf::setReadMode(false); //Discard chars
|
mbed714 |
0:98aadd37a5c5
|
177
|
ATIf::setTimeout(10000);
|
mbed714 |
0:98aadd37a5c5
|
178
|
ATIf::setLineMode(true); //Line mode
|
mbed714 |
0:98aadd37a5c5
|
179
|
int len;
|
mbed714 |
0:98aadd37a5c5
|
180
|
|
mbed714 |
0:98aadd37a5c5
|
181
|
err = getGPRSState();
|
mbed714 |
0:98aadd37a5c5
|
182
|
if(err == GPRS_NONETWORK)
|
mbed714 |
0:98aadd37a5c5
|
183
|
{
|
mbed714 |
0:98aadd37a5c5
|
184
|
len = ATIf::printf("AT+CGATT=1"); //Attach
|
mbed714 |
0:98aadd37a5c5
|
185
|
if(!len)
|
mbed714 |
0:98aadd37a5c5
|
186
|
return GPRS_MODEM; //Nothing was actually sent
|
mbed714 |
0:98aadd37a5c5
|
187
|
|
mbed714 |
0:98aadd37a5c5
|
188
|
if( !!ATIf::checkOK() ) //Should not be a problem
|
mbed714 |
0:98aadd37a5c5
|
189
|
return GPRS_MODEM;
|
mbed714 |
0:98aadd37a5c5
|
190
|
}
|
mbed714 |
0:98aadd37a5c5
|
191
|
|
mbed714 |
0:98aadd37a5c5
|
192
|
while(true)
|
mbed714 |
0:98aadd37a5c5
|
193
|
{
|
mbed714 |
0:98aadd37a5c5
|
194
|
err = getGPRSState();
|
mbed714 |
0:98aadd37a5c5
|
195
|
if(err != GPRS_REGISTERING)
|
mbed714 |
0:98aadd37a5c5
|
196
|
break;
|
mbed714 |
0:98aadd37a5c5
|
197
|
wait(WAIT_BTW_NETW_POLLS);
|
mbed714 |
0:98aadd37a5c5
|
198
|
}
|
mbed714 |
0:98aadd37a5c5
|
199
|
return err;
|
mbed714 |
0:98aadd37a5c5
|
200
|
}
|
mbed714 |
0:98aadd37a5c5
|
201
|
|
mbed714 |
0:98aadd37a5c5
|
202
|
GPRSErr GPRSModem::setGPRSDown()
|
mbed714 |
0:98aadd37a5c5
|
203
|
{
|
mbed714 |
0:98aadd37a5c5
|
204
|
ATIf::flushBuffer();
|
mbed714 |
0:98aadd37a5c5
|
205
|
DBG("\r\nDetaching GPRS...\r\n");
|
mbed714 |
0:98aadd37a5c5
|
206
|
ATIf::setReadMode(false); //Discard chars
|
mbed714 |
0:98aadd37a5c5
|
207
|
ATIf::setTimeout(10000);
|
mbed714 |
0:98aadd37a5c5
|
208
|
ATIf::setLineMode(true); //Line mode
|
mbed714 |
0:98aadd37a5c5
|
209
|
int len;
|
mbed714 |
0:98aadd37a5c5
|
210
|
|
mbed714 |
0:98aadd37a5c5
|
211
|
len = ATIf::printf("AT+CGATT=0"); //Detach
|
mbed714 |
0:98aadd37a5c5
|
212
|
if(!len)
|
mbed714 |
0:98aadd37a5c5
|
213
|
return GPRS_MODEM; //Nothing was actually sent
|
mbed714 |
0:98aadd37a5c5
|
214
|
|
mbed714 |
0:98aadd37a5c5
|
215
|
if( !!ATIf::checkOK() ) //Should not be a problem
|
mbed714 |
0:98aadd37a5c5
|
216
|
return GPRS_MODEM;
|
mbed714 |
0:98aadd37a5c5
|
217
|
|
mbed714 |
0:98aadd37a5c5
|
218
|
return GPRS_OK;
|
mbed714 |
0:98aadd37a5c5
|
219
|
}
|
mbed714 |
0:98aadd37a5c5
|
220
|
|
mbed714 |
0:98aadd37a5c5
|
221
|
|
mbed714 |
0:98aadd37a5c5
|
222
|
GPRSErr GPRSModem::connect(const char* apn /*=NULL*/)
|
mbed714 |
0:98aadd37a5c5
|
223
|
{
|
mbed714 |
0:98aadd37a5c5
|
224
|
ATIf::flushBuffer();
|
mbed714 |
0:98aadd37a5c5
|
225
|
GPRSErr err;
|
mbed714 |
0:98aadd37a5c5
|
226
|
|
mbed714 |
0:98aadd37a5c5
|
227
|
ATIf::setReadMode(false); //Discard chars
|
mbed714 |
0:98aadd37a5c5
|
228
|
ATIf::setTimeout(5000);
|
mbed714 |
0:98aadd37a5c5
|
229
|
ATIf::setLineMode(true); //Line mode
|
mbed714 |
0:98aadd37a5c5
|
230
|
|
mbed714 |
0:98aadd37a5c5
|
231
|
DBG("\r\nConnecting...\r\n");
|
mbed714 |
0:98aadd37a5c5
|
232
|
|
mbed714 |
0:98aadd37a5c5
|
233
|
int len;
|
mbed714 |
0:98aadd37a5c5
|
234
|
|
mbed714 |
0:98aadd37a5c5
|
235
|
if( apn != NULL ) //Config APN
|
mbed714 |
0:98aadd37a5c5
|
236
|
{
|
mbed714 |
0:98aadd37a5c5
|
237
|
len = ATIf::printf("AT+CGDCONT=1,\"IP\",\"%s\"",apn); //Define APN
|
mbed714 |
0:98aadd37a5c5
|
238
|
if(!len)
|
mbed714 |
0:98aadd37a5c5
|
239
|
return GPRS_MODEM; //Nothing was actually sent
|
mbed714 |
0:98aadd37a5c5
|
240
|
|
mbed714 |
0:98aadd37a5c5
|
241
|
if( !!ATIf::checkOK() ) //Should not be a problem
|
mbed714 |
0:98aadd37a5c5
|
242
|
return GPRS_MODEM;
|
mbed714 |
0:98aadd37a5c5
|
243
|
}
|
mbed714 |
0:98aadd37a5c5
|
244
|
|
mbed714 |
0:98aadd37a5c5
|
245
|
err = setGPRSUp();
|
mbed714 |
0:98aadd37a5c5
|
246
|
if(err)
|
mbed714 |
0:98aadd37a5c5
|
247
|
return err;
|
mbed714 |
0:98aadd37a5c5
|
248
|
|
mbed714 |
0:98aadd37a5c5
|
249
|
ATIf::setReadMode(false); //Discard chars
|
mbed714 |
0:98aadd37a5c5
|
250
|
ATIf::setTimeout(60000);
|
mbed714 |
0:98aadd37a5c5
|
251
|
ATIf::setLineMode(true); //Line mode
|
mbed714 |
0:98aadd37a5c5
|
252
|
//
|
mbed714 |
0:98aadd37a5c5
|
253
|
//len = ATIf::printf("AT+CGDATA=\"PPP\",1"); //Connect using PDP context #1
|
mbed714 |
0:98aadd37a5c5
|
254
|
// len = ATIf::printf("ATDT *99***1#");
|
mbed714 |
0:98aadd37a5c5
|
255
|
len = ATIf::printf("ATDT *99#");
|
mbed714 |
0:98aadd37a5c5
|
256
|
if(!len)
|
mbed714 |
0:98aadd37a5c5
|
257
|
return GPRS_MODEM; //Nothing was actually sent
|
mbed714 |
0:98aadd37a5c5
|
258
|
|
mbed714 |
0:98aadd37a5c5
|
259
|
len = ATIf::scanf("CONNECT"); //Beginning of session
|
mbed714 |
0:98aadd37a5c5
|
260
|
if(len != 0) //Likely +CME ERROR was returned or NO CARRIER
|
mbed714 |
0:98aadd37a5c5
|
261
|
return GPRS_MODEM;
|
mbed714 |
0:98aadd37a5c5
|
262
|
|
mbed714 |
0:98aadd37a5c5
|
263
|
//ATIf::setSignals(false);
|
mbed714 |
0:98aadd37a5c5
|
264
|
|
mbed714 |
0:98aadd37a5c5
|
265
|
DBG("\r\nConnected.\r\n");
|
mbed714 |
0:98aadd37a5c5
|
266
|
|
mbed714 |
0:98aadd37a5c5
|
267
|
return GPRS_OK; //Time to enter a PPP Session !
|
mbed714 |
0:98aadd37a5c5
|
268
|
|
mbed714 |
0:98aadd37a5c5
|
269
|
}
|
mbed714 |
0:98aadd37a5c5
|
270
|
|
mbed714 |
0:98aadd37a5c5
|
271
|
GPRSErr GPRSModem::disconnect()
|
mbed714 |
0:98aadd37a5c5
|
272
|
{
|
mbed714 |
0:98aadd37a5c5
|
273
|
ATIf::flushBuffer();
|
mbed714 |
0:98aadd37a5c5
|
274
|
ATIf::setReadMode(false); //Discard chars
|
mbed714 |
0:98aadd37a5c5
|
275
|
ATIf::setTimeout(5000);
|
mbed714 |
0:98aadd37a5c5
|
276
|
ATIf::setLineMode(true); //Line mode
|
mbed714 |
0:98aadd37a5c5
|
277
|
|
mbed714 |
0:98aadd37a5c5
|
278
|
if( !!ATIf::checkOK() ) //Should be present at the end of connection
|
mbed714 |
0:98aadd37a5c5
|
279
|
return GPRS_MODEM;
|
mbed714 |
0:98aadd37a5c5
|
280
|
|
mbed714 |
0:98aadd37a5c5
|
281
|
GPRSErr err;
|
mbed714 |
0:98aadd37a5c5
|
282
|
err = setGPRSDown();
|
mbed714 |
0:98aadd37a5c5
|
283
|
if(err)
|
mbed714 |
0:98aadd37a5c5
|
284
|
return err;
|
mbed714 |
0:98aadd37a5c5
|
285
|
|
mbed714 |
0:98aadd37a5c5
|
286
|
DBG("\r\nDisconnected.\r\n");
|
mbed714 |
0:98aadd37a5c5
|
287
|
|
mbed714 |
0:98aadd37a5c5
|
288
|
return GPRS_OK;
|
mbed714 |
0:98aadd37a5c5
|
289
|
}
|
mbed714 |
0:98aadd37a5c5
|
290
|
|
mbed714 |
0:98aadd37a5c5
|
291
|
#endif
|
mbed714 |
0:98aadd37a5c5
|
292
|
|