A library for the SIM900 module to enable calling, answering, sending and receiving SMS messages
Dependents: Seeed_GPRS_Shield_GSM BluetoothNONIN HealthCare_Graduation
Fork of GSM by
Revision 1:642a8dbe076c, committed 2013-11-15
- Comitter:
- lawliet
- Date:
- Fri Nov 15 03:40:35 2013 +0000
- Parent:
- 0:a5ae94727346
- Child:
- 2:16985da3a446
- Commit message:
- version 0.2 with optimizing the library
Changed in this revision
| gprs.cpp | Show annotated file Show diff for this revision Revisions of this file |
| gprs.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/gprs.cpp Thu Nov 14 09:39:58 2013 +0000
+++ b/gprs.cpp Fri Nov 15 03:40:35 2013 +0000
@@ -24,360 +24,302 @@
#include "mbed.h"
#include "gprs.h"
-#define TRUE 1
+#define TRUE 1
#define FALSE 0
-#define ERROR(x) pc.printf("ERROR:%s\r\n",x)
-#define DEBUG(x) pc.printf("DEBUG:%s\r\n",x);
+#define UART_DEBUG
+
+#ifdef UART_DEBUG
+#define ERROR(x) printf("ERROR:%s\r\n",x)
+#define DEBUG(x) printf("DEBUG:%s\r\n",x);
+#else
+#define ERROR(x)
+#define DEBUG(x)
+#endif
#define DEFALUT_TIMEOUT 5
-#define PHONE_NUMBER "13925257382"
-
-Serial pc(USBTX,USBRX);
-Serial gprsSerial(p9,p10); //software uart
-Timer timeCnt;
int gprs::init(void)
{
- pc.baud(19200);
- gprsSerial.baud(19200);
- wait(0.5);
- if(0 != checkSIMStatus()){ //check SIM card status
- ERROR("checkSIMStatus");
- return -1;
- }
- if(checkSignalStrength()<1){ //check Signal Strength
- ERROR("Signal too weak");
- return -1;
- }
-
- if(0 != networkInit()){
- ERROR("Network Init error");
- return -1;
- }
-
- return 0;
+ wait(0.5);
+ if(0 != checkSIMStatus()) { //check SIM card status
+ ERROR("checkSIMStatus");
+ return -1;
+ }
+ if(checkSignalStrength()<1) { //check Signal Strength
+ ERROR("Signal too weak");
+ return -1;
+ }
+
+ if(0 != networkInit()) {
+ ERROR("Network Init error");
+ return -1;
+ }
+ return 0;
}
int gprs::readBuffer(char *buffer,int count)
{
- int i = 0;
- timeCnt.start(); // start timer
- while(1){
- while (gprsSerial.readable()) {
- char c = gprsSerial.getc();
- if (c == '\r' || c == '\n') c = '$';
- buffer[i++] = c;
- pc.putc(c);
- if(i > count)break;
- }
- if(i > count)break;
- if(timeCnt.read() > DEFALUT_TIMEOUT){
- timeCnt.stop();
- timeCnt.reset();
- break;
- }
- }
- wait(0.5);
- while(gprsSerial.readable()){ // display the other thing..
- char c = gprsSerial.getc();
- pc.putc(c);
- }
- return 0;
+ int i = 0;
+ timeCnt.start(); // start timer
+ while(1) {
+ while (gprsSerial.readable()) {
+ char c = gprsSerial.getc();
+ if (c == '\r' || c == '\n') c = '$';
+ buffer[i++] = c;
+ if(i > count)break;
+ }
+ if(i > count)break;
+ if(timeCnt.read() > DEFALUT_TIMEOUT) {
+ timeCnt.stop();
+ timeCnt.reset();
+ break;
+ }
+ }
+ wait(0.5);
+ while(gprsSerial.readable()) { // display the other thing..
+ char c = gprsSerial.getc();
+ }
+ return 0;
}
void cleanBuffer(char *buffer, int count)
{
- for(int i=0; i < count; i++){
- buffer[i] = '\0';
- }
+ for(int i=0; i < count; i++) {
+ buffer[i] = '\0';
+ }
}
void gprs::sendCmd(char *cmd)
{
- gprsSerial.puts(cmd);
+ gprsSerial.puts(cmd);
}
int gprs::waitForResp(char *resp, int timeout)
{
- #if 1
- int len = strlen(resp);
- int sum=0;
- timeCnt.start();
- #if 0
- while(1){
- if(gprsSerial.readable()){
- break;
- }
- wait(0.5);
- }
- #endif
- while(1){
- if(gprsSerial.readable()){
- char c = gprsSerial.getc();
- pc.putc(c);
- sum = (c==resp[sum]) ? sum+1 : 0;
- if(sum == len)break;
- }
- if(timeCnt.read() > timeout){ // time out
- timeCnt.stop();
- timeCnt.reset();
- ERROR("time out");
- return -1;
- }
- }
- timeCnt.stop(); // stop timer
- timeCnt.reset(); // clear timer
- while(gprsSerial.readable()){ // display the other thing..
- char c = gprsSerial.getc();
- pc.putc(c);
- }
- #endif
- return 0;
-}
+ int len = strlen(resp);
+ int sum=0;
+ timeCnt.start();
+
+ while(1) {
+ if(gprsSerial.readable()) {
+ char c = gprsSerial.getc();
+ sum = (c==resp[sum]) ? sum+1 : 0;
+ if(sum == len)break;
+ }
+ if(timeCnt.read() > timeout) { // time out
+ timeCnt.stop();
+ timeCnt.reset();
+ ERROR("time out");
+ return -1;
+ }
+ }
+ timeCnt.stop(); // stop timer
+ timeCnt.reset(); // clear timer
+ while(gprsSerial.readable()) { // display the other thing..
+ char c = gprsSerial.getc();
+ }
+
+ return 0;
+}
int gprs::sendCmdAndWaitForResp(char *cmd, char *resp, int timeout)
{
- #if 0
- char gprsBuffer[32];
- cleanBuffer(gprsBuffer,32);
sendCmd(cmd);
- readBuffer(gprsBuffer,4);
- if(0 == strncmp(resp,gprsBuffer,4)){
- return 0;
- }else{
- return -1;
- }
- #endif
- sendCmd(cmd);
- return waitForResp(resp,timeout);
+ return waitForResp(resp,timeout);
}
int gprs::checkSIMStatus(void)
{
- char gprsBuffer[30];
- int count = 0;
- cleanBuffer(gprsBuffer,30);
- while(count < 3){
- sendCmd("AT+CPIN?\r\n");
- readBuffer(gprsBuffer,30);
- //DEBUG(gprsBuffer);
- if((NULL != strstr(gprsBuffer,"+CPIN: READY"))){
- break;
- }
- count++;
- wait(1);
- }
+ char gprsBuffer[30];
+ int count = 0;
+ cleanBuffer(gprsBuffer,30);
+ while(count < 3) {
+ sendCmd("AT+CPIN?\r\n");
+ readBuffer(gprsBuffer,30);
+ //DEBUG(gprsBuffer);
+ if((NULL != strstr(gprsBuffer,"+CPIN: READY"))) {
+ break;
+ }
+ count++;
+ wait(1);
+ }
- if(count == 3){
- ERROR("Bad SIM Status");
- return -1;
- }
- return 0;
+ if(count == 3) {
+ ERROR("Bad SIM Status");
+ return -1;
+ }
+ return 0;
}
int gprs::checkSignalStrength(void)
{
- char gprsBuffer[100];
- int index,count = 0;
- cleanBuffer(gprsBuffer,100);
- while(count < 3){
- sendCmd("AT+CSQ\r\n");
- readBuffer(gprsBuffer,25);
- //DEBUG(gprsBuffer);
- if(sscanf(gprsBuffer, "AT+CSQ$$$$+CSQ: %d", &index)>0){
- break;
- }
- ERROR("checking signal strenght error, try again...");
- count++;
- wait(1);
- }
- if(count == 3){
- ERROR("AT+CSQ");
- return -1;
- }
- return index;
+ char gprsBuffer[100];
+ int index,count = 0;
+ cleanBuffer(gprsBuffer,100);
+ while(count < 3) {
+ sendCmd("AT+CSQ\r\n");
+ readBuffer(gprsBuffer,25);
+ //DEBUG(gprsBuffer);
+ if(sscanf(gprsBuffer, "AT+CSQ$$$$+CSQ: %d", &index)>0) {
+ break;
+ }
+ ERROR("checking signal strenght error, try again...");
+ count++;
+ wait(1);
+ }
+ if(count == 3) {
+ ERROR("AT+CSQ");
+ return -1;
+ }
+ return index;
}
int gprs::networkInit(void)
{
- //for GPRS
- if(0 != sendCmdAndWaitForResp("AT+CGREG?\r\n","+CGREG: 0,1",DEFALUT_TIMEOUT)){ //Open GPRS
- ERROR("CGREG");
- return -1;
- }
- wait(1);
- if(0 != sendCmdAndWaitForResp("AT+CGATT?\r\n","+CGATT: 1",DEFALUT_TIMEOUT)){ //Set GPRS
- ERROR("CGATT");
- return -1;
- }
- return 0;
+ //for GPRS
+ if(0 != sendCmdAndWaitForResp("AT+CGREG?\r\n","+CGREG: 0,1",DEFALUT_TIMEOUT)) { //Open GPRS
+ ERROR("CGREG");
+ return -1;
+ }
+ wait(1);
+ if(0 != sendCmdAndWaitForResp("AT+CGATT?\r\n","+CGATT: 1",DEFALUT_TIMEOUT)) { //Set GPRS
+ ERROR("CGATT");
+ return -1;
+ }
+ return 0;
}
int gprs::sendSMS(char *number, char *data)
{
- char cmd[64];
- if(0 != sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", DEFALUT_TIMEOUT)){ // Set message mode to ASCII
- ERROR("CMGF");
- return -1;
- }
- wait(0.5);
- // Set the phone number
- snprintf(cmd, sizeof(cmd),"AT+CMGS=\"%s\"\r\n", number);
- pc.printf(cmd);
- if(0 != sendCmdAndWaitForResp(cmd,">",DEFALUT_TIMEOUT)){
- ERROR("CMGS");
- return -1;
- }
- wait(0.5);
- gprsSerial.puts(data);// Send Message
- wait(0.5);
- gprsSerial.putc(0x1A);//end mark
-
- return 0;
-}
-
-int gprs::sendSMS()
-{
- if(0 != sendCmdAndWaitForResp("AT+CMGF=1\r\n","OK",DEFALUT_TIMEOUT)){
- ERROR("CMGF");
- return -1;
- }
- wait(1);
- if(0 != sendCmdAndWaitForResp("AT+CMGS=\"13925257382\"\r\n",">",DEFALUT_TIMEOUT)){
- ERROR("CMGS");
- return -1;
- }
- wait(1);
- gprsSerial.puts("lawiet test\n");
- wait(1);
- gprsSerial.putc(0x1A);
-
- return 0;
+ char cmd[64];
+ if(0 != sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", DEFALUT_TIMEOUT)) { // Set message mode to ASCII
+ ERROR("CMGF");
+ return -1;
+ }
+ wait(0.5);
+ // Set the phone number
+ snprintf(cmd, sizeof(cmd),"AT+CMGS=\"%s\"\r\n", number);
+ if(0 != sendCmdAndWaitForResp(cmd,">",DEFALUT_TIMEOUT)) {
+ ERROR("CMGS");
+ return -1;
+ }
+ wait(1);
+ gprsSerial.puts(data);// Send Message
+ wait(0.5);
+ gprsSerial.putc(0x1A);//end mark
+ return 0;
}
int gprs::readSMS(char *buffer, char *message, bool check)
{
- int index,i = 0;
- char gprsBuffer[100];
- char *p,*s;
-
- if(sscanf(buffer, "$$+CMTI: \"SM\",%d", &index)>0){
- DEBUG("Opening message...");
- gprsSerial.printf("AT+CMGR=%d\r\n", index);
- }else{
- ERROR("get Message");
- }
- cleanBuffer(gprsBuffer,100);
- readBuffer(gprsBuffer,100);
- //pc.printf(gprsBuffer); //AT+CMGR=17$$$$+CMGR: "REC UNREAD","+8613925257382","","13/11/11,10:36:13+32"$$Hello$$$$OK$$
- DEBUG(gprsBuffer);
- if(NULL == ( s = strstr(gprsBuffer,"+CMGR: \"REC UNREAD\""))){
- ERROR("get CMGR error");
- return -1;
- }
+ int index,i = 0;
+ char gprsBuffer[100];
+ char *p,*s;
- //check phone number
- if(check){
- char number[20];
- snprintf(number,sizeof(number),"\"+86%s\"",PHONE_NUMBER); //for China
- p = s + 20;
- if(0 != (strncmp(number,p,14))){
- ERROR("Phone Number error");
- return -1;
- }
- }
- p = s + 64;
- while(*p != '$'){
- message[i++] = *(p++);
- }
- message[i] = '\0';
-
- DEBUG(message);
- return 0;
+ if(sscanf(buffer, "$$+CMTI: \"SM\",%d", &index)>0) {
+ DEBUG("Opening message...");
+ gprsSerial.printf("AT+CMGR=%d\r\n", index);
+ } else {
+ ERROR("get Message");
+ }
+ cleanBuffer(gprsBuffer,100);
+ readBuffer(gprsBuffer,100);
+ //pc.printf(gprsBuffer); //AT+CMGR=17$$$$+CMGR: "REC UNREAD","+8613925257382","","13/11/11,10:36:13+32"$$Hello$$$$OK$$
+ DEBUG(gprsBuffer);
+ if(NULL == ( s = strstr(gprsBuffer,"+CMGR: \"REC UNREAD\""))) {
+ ERROR("get CMGR error");
+ return -1;
+ }
+
+ //check phone number
+ if(check) {
+ char number[20];
+ snprintf(number,sizeof(number),"\"+86%s\"",phoneNumber); //for China
+ p = s + 20;
+ if(0 != (strncmp(number,p,14))) {
+ ERROR("Phone Number error");
+ return -1;
+ }
+ }
+ p = s + 64;
+ while(*p != '$') {
+ message[i++] = *(p++);
+ }
+ message[i] = '\0';
+ DEBUG(message);
+ return 0;
}
int gprs::deleteSMS(int index)
{
- char cmd[64];
- snprintf(cmd,sizeof(cmd),"AT+CMGD=%d\r\n",index);
- sendCmd(cmd);
- return 0;
+ char cmd[64];
+ snprintf(cmd,sizeof(cmd),"AT+CMGD=%d\r\n",index);
+ sendCmd(cmd);
+ return 0;
}
int gprs::callUp(char *number)
{
- if(0 != sendCmdAndWaitForResp("AT+COLP=1\r\n","OK",5)){
- ERROR("COLP");
- return -1;
- }
- wait(1);
- gprsSerial.printf("\r\nATD%s;\r\n",NULL==number?PHONE_NUMBER:number);
- return 0;
+ if(0 != sendCmdAndWaitForResp("AT+COLP=1\r\n","OK",5)) {
+ ERROR("COLP");
+ return -1;
+ }
+ wait(1);
+ gprsSerial.printf("\r\nATD%s;\r\n",NULL==number?phoneNumber:number);
+ return 0;
}
-int gprs::answerWithCheck(char *gprsBuffer, bool check)
+int gprs::answer(void)
{
- if(check){
- if(NULL == strstr(gprsBuffer,PHONE_NUMBER)){
- ERROR("phone number dismatch");
- return -1;
- }
- }
-
- gprsSerial.printf("ATA\r\n");
- return 0;
+ gprsSerial.printf("ATA\r\n");
+ return 0;
}
int gprs::loop(bool check)
{
- char gprsBuffer[100];
- int i = 0;
- cleanBuffer(gprsBuffer,100);
- while(1){
- if(gprsSerial.readable()){
- break;
- }
- wait(1);
- }
-
- timeCnt.start(); // start timer
- while(1){
- while (gprsSerial.readable()) {
- char c = gprsSerial.getc();
- if (c == '\r' || c == '\n') c = '$';
- gprsBuffer[i] = c;
- pc.putc(c);
- i++;
- if(i > 100){
- i = 0;
- break;
- }
- }
- if(timeCnt.read() > DEFALUT_TIMEOUT){ // time out
-
- timeCnt.stop();
- timeCnt.reset();
- break;
- }
- }
-
- pc.printf("\r\nDebug message is %s\r\n",gprsBuffer);
-
- if(NULL != strstr(gprsBuffer,"$$RING$$$$+CLIP:")){ //it is Ringing
- if(0 != answerWithCheck(gprsBuffer, TRUE)){
- ERROR("answer");
- }
- }else if(NULL != strstr(gprsBuffer,"$$+CMTI: \"SM\"")){ //SMS: $$+CMTI: "SM",24$$
- char message[64];
- if(0 != readSMS(gprsBuffer, message, TRUE)){
- ERROR("readSMS");
- }
- pc.puts(message);
- }
- return 0;
+ char gprsBuffer[100];
+ int i = 0;
+ cleanBuffer(gprsBuffer,100);
+ while(1) {
+ if(gprsSerial.readable()) {
+ break;
+ }
+ wait(1);
+ }
+
+ timeCnt.start(); // start timer
+ while(1) {
+ while (gprsSerial.readable()) {
+ char c = gprsSerial.getc();
+ if (c == '\r' || c == '\n') c = '$';
+ gprsBuffer[i] = c;
+ i++;
+ if(i > 100) {
+ i = 0;
+ break;
+ }
+ }
+ if(timeCnt.read() > 5) { // time out
+ timeCnt.stop();
+ timeCnt.reset();
+ break;
+ }
+ }
+
+ if(NULL != strstr(gprsBuffer,"RING")) {
+ if(0 != answer()) {
+ ERROR("answer");
+ }
+ } else if(NULL != strstr(gprsBuffer,"$$+CMTI: \"SM\"")) { //SMS: $$+CMTI: "SM",24$$
+ char message[64];
+ if(0 != readSMS(gprsBuffer, message, check)) {
+ ERROR("readSMS");
+ }
+ }
+ return 0;
}
@@ -385,88 +327,87 @@
int gprs::connectTCP(char *ip, char *port)
{
- char cipstart[50];
- //char ipaddr[20];
- #if 0
- wait(1);
- if(0 != sendCmdAndWaitForResp("AT+CSTT\r\n","OK",20)){ //Set GPRS
- ERROR("CSTT");
- return -1;
- }
- wait(1);
- if(0 != sendCmdAndWaitForResp("AT+CIICR\r\n","OK",10)){ //Set APN
- ERROR("CIICR");
- return -1;
- }
- wait(2);
- sendCmd("AT+CIFSR\r\n");
- readBuffer(ipaddr,20);
- DEBUG("ipaddr=");
- DEBUG(ipaddr);
- wait(1);
- #endif
- #if 1
- sprintf(cipstart, "AT+CIPSTART=\"TCP\",\"%s\",\"%s\"\r\n", ip, port);
- DEBUG(cipstart);
- if(0 != sendCmdAndWaitForResp(cipstart, "CONNECT OK", 10)){ // connect tcp
- ERROR("CIPSTART");
- return -1;
- }
- #endif
- return 0;
+ char cipstart[50];
+ //char ipaddr[20];
+#if 0
+ wait(1);
+ if(0 != sendCmdAndWaitForResp("AT+CSTT\r\n","OK",20)) { //Set GPRS
+ ERROR("CSTT");
+ return -1;
+ }
+ wait(1);
+ if(0 != sendCmdAndWaitForResp("AT+CIICR\r\n","OK",10)) { //Set APN
+ ERROR("CIICR");
+ return -1;
+ }
+ wait(2);
+ sendCmd("AT+CIFSR\r\n");
+ readBuffer(ipaddr,20);
+ DEBUG("ipaddr=");
+ DEBUG(ipaddr);
+ wait(1);
+#endif
+#if 1
+ sprintf(cipstart, "AT+CIPSTART=\"TCP\",\"%s\",\"%s\"\r\n", ip, port);
+ DEBUG(cipstart);
+ if(0 != sendCmdAndWaitForResp(cipstart, "CONNECT OK", 10)) { // connect tcp
+ ERROR("CIPSTART");
+ return -1;
+ }
+#endif
+ return 0;
}
int gprs::sendTCPData(char *data)
{
- char cmd[64];
- int len = strlen(data);
- snprintf(cmd,sizeof(cmd),"AT+CIPSEND=%d\r\n",len);
- DEBUG(cmd);
- if(0 != sendCmdAndWaitForResp(cmd,">",DEFALUT_TIMEOUT)){
- ERROR("CIPSEND");
- return -1;
- }
- if(0 != sendCmdAndWaitForResp(data,"SEND OK",DEFALUT_TIMEOUT)){
- ERROR("SendTCPData");
- return -1;
- }
- return 0;
+ char cmd[64];
+ int len = strlen(data);
+ snprintf(cmd,sizeof(cmd),"AT+CIPSEND=%d\r\n",len);
+ DEBUG(cmd);
+ if(0 != sendCmdAndWaitForResp(cmd,">",DEFALUT_TIMEOUT)) {
+ ERROR("CIPSEND");
+ return -1;
+ }
+ if(0 != sendCmdAndWaitForResp(data,"SEND OK",DEFALUT_TIMEOUT)) {
+ ERROR("SendTCPData");
+ return -1;
+ }
+ return 0;
}
int gprs::closeTCP(void)
{
- sendCmd("AT+CIPCLOSE\r\n");
- return 0;
+ sendCmd("AT+CIPCLOSE\r\n");
+ return 0;
}
int gprs::shutTCP(void)
{
- sendCmd("AT+CIPSHUT\r\n");
- return 0;
+ sendCmd("AT+CIPSHUT\r\n");
+ return 0;
}
/****************************************GPRS DEBUG******************************************/
+void gprs::serialDebug(PinName tx, PinName rx)
+{
+ char buffer[64];
+ int count = 0;
+ Serial pc(tx,rx);
+ while(1) {
+ if(gprsSerial.readable()) {
+ while(gprsSerial.readable()) {
+ char c = gprsSerial.getc();
+ buffer[count++] = c;
+ if(count == 64) break;
+ }
+ pc.puts(buffer);
+ for(int i = 0; i < count; i++) {
+ buffer[i] = NULL;
+ }
+ count = 0;
+ }
-void gprs::serialDebug(void)
-{
- char buffer[64];
- int count = 0;
- while(1){
- if(gprsSerial.readable()){
- while(gprsSerial.readable()){
- char c = gprsSerial.getc();
- buffer[count++] = c;
- if(count == 64) break;
- }
- pc.puts(buffer);
- for(int i = 0; i < count; i++){
- buffer[i] = NULL;
- }
- count = 0;
- }
-
- if(pc.readable()){
- gprsSerial.putc(pc.getc());
- }
- }
+ if(pc.readable()) {
+ gprsSerial.putc(pc.getc());
+ }
+ }
}
-
--- a/gprs.h Thu Nov 14 09:39:58 2013 +0000
+++ b/gprs.h Fri Nov 15 03:40:35 2013 +0000
@@ -25,30 +25,37 @@
#include "mbed.h"
-class gprs{
+class gprs
+{
- public:
- int init(void);
- int readBuffer(char *buffer,int count);
- void sendCmd(char *cmd);
- int waitForResp(char *resp, int timeout);
- int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout);
- int checkSIMStatus(void);
- int checkSignalStrength(void);
- int networkInit(void);
- int sendSMS(char *number, char *data);
- int sendSMS(void);
- int readSMS(char *buffer, char *message, bool check);
- int deleteSMS(int index);
- int callUp(char *number);
- int answerWithCheck(char *gprsBuffer, bool check);
- int loop(bool check);
- int connectTCP(char *ip, char *port);
- int sendTCPData(char *data);
- int closeTCP(void);
- int shutTCP(void);
- void serialDebug(void);
-
+public:
+ gprs(PinName tx, PinName rx, int baudrate,char *Number) : gprsSerial(tx, rx) {
+ gprsSerial.baud(baudrate);
+ phoneNumber = Number;
+ };
+ int init(void);
+ int readBuffer(char *buffer,int count);
+ void sendCmd(char *cmd);
+ int waitForResp(char *resp, int timeout);
+ int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout);
+ int checkSIMStatus(void);
+ int checkSignalStrength(void);
+ int networkInit(void);
+ int sendSMS(char *number, char *data);
+ int readSMS(char *buffer, char *message, bool check);
+ int deleteSMS(int index);
+ int callUp(char *number);
+ int answer(void);
+ int loop(bool check);
+ int connectTCP(char *ip, char *port);
+ int sendTCPData(char *data);
+ int closeTCP(void);
+ int shutTCP(void);
+ void serialDebug(PinName tx, PinName rx);
+private:
+ Serial gprsSerial;
+ Timer timeCnt;
+ char *phoneNumber;
};
//extern gprs GPRS;
