Koki123@ idrissi / GSMA9
Committer:
kaoutharidrissi
Date:
Thu Mar 24 16:38:55 2022 +0000
Revision:
0:41d8c1049518
GSM library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaoutharidrissi 0:41d8c1049518 1 /*
kaoutharidrissi 0:41d8c1049518 2 GSM.cpp
kaoutharidrissi 0:41d8c1049518 3 2013 Copyright (c) Seeed Technology Inc. All right reserved.
kaoutharidrissi 0:41d8c1049518 4
kaoutharidrissi 0:41d8c1049518 5 Author:lawliet.zou@gmail.com
kaoutharidrissi 0:41d8c1049518 6 2013-11-14
kaoutharidrissi 0:41d8c1049518 7
kaoutharidrissi 0:41d8c1049518 8 This library is free software; you can redistribute it and/or
kaoutharidrissi 0:41d8c1049518 9 modify it under the terms of the GNU Lesser General Public
kaoutharidrissi 0:41d8c1049518 10 License as published by the Free Software Foundation; either
kaoutharidrissi 0:41d8c1049518 11 version 2.1 of the License, or (at your option) any later version.
kaoutharidrissi 0:41d8c1049518 12
kaoutharidrissi 0:41d8c1049518 13 This library is distributed in the hope that it will be useful,
kaoutharidrissi 0:41d8c1049518 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
kaoutharidrissi 0:41d8c1049518 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
kaoutharidrissi 0:41d8c1049518 16 Lesser General Public License for more details.
kaoutharidrissi 0:41d8c1049518 17
kaoutharidrissi 0:41d8c1049518 18 You should have received a copy of the GNU Lesser General Public
kaoutharidrissi 0:41d8c1049518 19 License along with this library; if not, write to the Free Software
kaoutharidrissi 0:41d8c1049518 20 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
kaoutharidrissi 0:41d8c1049518 21 */
kaoutharidrissi 0:41d8c1049518 22 #include "GSM.h"
kaoutharidrissi 0:41d8c1049518 23
kaoutharidrissi 0:41d8c1049518 24 int GSM::readBuffer(char *buffer,int count)
kaoutharidrissi 0:41d8c1049518 25 {
kaoutharidrissi 0:41d8c1049518 26 int i = 0;
kaoutharidrissi 0:41d8c1049518 27 timeCnt.start(); // start timer
kaoutharidrissi 0:41d8c1049518 28 while(1) {
kaoutharidrissi 0:41d8c1049518 29 while (gprsSerial.readable()) {
kaoutharidrissi 0:41d8c1049518 30 char c = gprsSerial.getc();
kaoutharidrissi 0:41d8c1049518 31 if (c == '\r' || c == '\n') c = '$';
kaoutharidrissi 0:41d8c1049518 32 buffer[i++] = c;
kaoutharidrissi 0:41d8c1049518 33 if(i > count)break;
kaoutharidrissi 0:41d8c1049518 34 }
kaoutharidrissi 0:41d8c1049518 35 if(i > count)break;
kaoutharidrissi 0:41d8c1049518 36 if(timeCnt.read() > DEFAULT_TIMEOUT) {
kaoutharidrissi 0:41d8c1049518 37 timeCnt.stop();
kaoutharidrissi 0:41d8c1049518 38 timeCnt.reset();
kaoutharidrissi 0:41d8c1049518 39 break;
kaoutharidrissi 0:41d8c1049518 40 }
kaoutharidrissi 0:41d8c1049518 41 }
kaoutharidrissi 0:41d8c1049518 42 wait(0.5);
kaoutharidrissi 0:41d8c1049518 43 while(gprsSerial.readable()) { // display the other thing..
kaoutharidrissi 0:41d8c1049518 44 char c = gprsSerial.getc();
kaoutharidrissi 0:41d8c1049518 45 }
kaoutharidrissi 0:41d8c1049518 46 return 0;
kaoutharidrissi 0:41d8c1049518 47 }
kaoutharidrissi 0:41d8c1049518 48
kaoutharidrissi 0:41d8c1049518 49 void cleanBuffer(char *buffer, int count)
kaoutharidrissi 0:41d8c1049518 50 {
kaoutharidrissi 0:41d8c1049518 51 for(int i=0; i < count; i++) {
kaoutharidrissi 0:41d8c1049518 52 buffer[i] = '\0';
kaoutharidrissi 0:41d8c1049518 53 }
kaoutharidrissi 0:41d8c1049518 54 }
kaoutharidrissi 0:41d8c1049518 55
kaoutharidrissi 0:41d8c1049518 56 void GSM::sendCmd(char *cmd)
kaoutharidrissi 0:41d8c1049518 57 {
kaoutharidrissi 0:41d8c1049518 58 gprsSerial.puts(cmd);
kaoutharidrissi 0:41d8c1049518 59 }
kaoutharidrissi 0:41d8c1049518 60
kaoutharidrissi 0:41d8c1049518 61 int GSM::waitForResp(char *resp, int timeout)
kaoutharidrissi 0:41d8c1049518 62 {
kaoutharidrissi 0:41d8c1049518 63 int len = strlen(resp);
kaoutharidrissi 0:41d8c1049518 64 int sum=0;
kaoutharidrissi 0:41d8c1049518 65 timeCnt.start();
kaoutharidrissi 0:41d8c1049518 66
kaoutharidrissi 0:41d8c1049518 67 while(1) {
kaoutharidrissi 0:41d8c1049518 68 if(gprsSerial.readable()) {
kaoutharidrissi 0:41d8c1049518 69 char c = gprsSerial.getc();
kaoutharidrissi 0:41d8c1049518 70 sum = (c==resp[sum]) ? sum+1 : 0;
kaoutharidrissi 0:41d8c1049518 71 if(sum == len)break;
kaoutharidrissi 0:41d8c1049518 72 }
kaoutharidrissi 0:41d8c1049518 73 if(timeCnt.read() > timeout) { // time out
kaoutharidrissi 0:41d8c1049518 74 timeCnt.stop();
kaoutharidrissi 0:41d8c1049518 75 timeCnt.reset();
kaoutharidrissi 0:41d8c1049518 76 return -1;
kaoutharidrissi 0:41d8c1049518 77 }
kaoutharidrissi 0:41d8c1049518 78 }
kaoutharidrissi 0:41d8c1049518 79 timeCnt.stop(); // stop timer
kaoutharidrissi 0:41d8c1049518 80 timeCnt.reset(); // clear timer
kaoutharidrissi 0:41d8c1049518 81 while(gprsSerial.readable()) { // display the other thing..
kaoutharidrissi 0:41d8c1049518 82 char c = gprsSerial.getc();
kaoutharidrissi 0:41d8c1049518 83 }
kaoutharidrissi 0:41d8c1049518 84
kaoutharidrissi 0:41d8c1049518 85 return 0;
kaoutharidrissi 0:41d8c1049518 86 }
kaoutharidrissi 0:41d8c1049518 87
kaoutharidrissi 0:41d8c1049518 88 int GSM::sendCmdAndWaitForResp(char *cmd, char *resp, int timeout)
kaoutharidrissi 0:41d8c1049518 89 {
kaoutharidrissi 0:41d8c1049518 90 sendCmd(cmd);
kaoutharidrissi 0:41d8c1049518 91 return waitForResp(resp,timeout);
kaoutharidrissi 0:41d8c1049518 92 }
kaoutharidrissi 0:41d8c1049518 93
kaoutharidrissi 0:41d8c1049518 94 int GSM::powerCheck(void)
kaoutharidrissi 0:41d8c1049518 95 {
kaoutharidrissi 0:41d8c1049518 96 return sendCmdAndWaitForResp("AT\r\n", "OK", 2);
kaoutharidrissi 0:41d8c1049518 97 }
kaoutharidrissi 0:41d8c1049518 98
kaoutharidrissi 0:41d8c1049518 99 int GSM::init(void)
kaoutharidrissi 0:41d8c1049518 100 {
kaoutharidrissi 0:41d8c1049518 101 for(int i = 0; i < 3; i++){
kaoutharidrissi 0:41d8c1049518 102 sendCmdAndWaitForResp("AT\r\n", "OK", DEFAULT_TIMEOUT);
kaoutharidrissi 0:41d8c1049518 103 wait(0.5);
kaoutharidrissi 0:41d8c1049518 104 }
kaoutharidrissi 0:41d8c1049518 105 if(0 != checkSIMStatus()) {
kaoutharidrissi 0:41d8c1049518 106 return -1;
kaoutharidrissi 0:41d8c1049518 107 }
kaoutharidrissi 0:41d8c1049518 108 if(checkSignalStrength()<1) {
kaoutharidrissi 0:41d8c1049518 109 return -1;
kaoutharidrissi 0:41d8c1049518 110 }
kaoutharidrissi 0:41d8c1049518 111 if(0 != settingSMS()) {
kaoutharidrissi 0:41d8c1049518 112 return -1;
kaoutharidrissi 0:41d8c1049518 113 }
kaoutharidrissi 0:41d8c1049518 114 return 0;
kaoutharidrissi 0:41d8c1049518 115 }
kaoutharidrissi 0:41d8c1049518 116
kaoutharidrissi 0:41d8c1049518 117 int GSM::checkSIMStatus(void)
kaoutharidrissi 0:41d8c1049518 118 {
kaoutharidrissi 0:41d8c1049518 119 char gprsBuffer[30];
kaoutharidrissi 0:41d8c1049518 120 int count = 0;
kaoutharidrissi 0:41d8c1049518 121 cleanBuffer(gprsBuffer,30);
kaoutharidrissi 0:41d8c1049518 122 while(count < 3) {
kaoutharidrissi 0:41d8c1049518 123 sendCmd("AT+CPIN?\r\n");
kaoutharidrissi 0:41d8c1049518 124 readBuffer(gprsBuffer,30);
kaoutharidrissi 0:41d8c1049518 125 if((NULL != strstr(gprsBuffer,"+CPIN: READY"))) {
kaoutharidrissi 0:41d8c1049518 126 break;
kaoutharidrissi 0:41d8c1049518 127 }
kaoutharidrissi 0:41d8c1049518 128 count++;
kaoutharidrissi 0:41d8c1049518 129 wait(1);
kaoutharidrissi 0:41d8c1049518 130 }
kaoutharidrissi 0:41d8c1049518 131
kaoutharidrissi 0:41d8c1049518 132 if(count == 3) {
kaoutharidrissi 0:41d8c1049518 133 return -1;
kaoutharidrissi 0:41d8c1049518 134 }
kaoutharidrissi 0:41d8c1049518 135 return 0;
kaoutharidrissi 0:41d8c1049518 136 }
kaoutharidrissi 0:41d8c1049518 137
kaoutharidrissi 0:41d8c1049518 138 int GSM::checkSignalStrength(void)
kaoutharidrissi 0:41d8c1049518 139 {
kaoutharidrissi 0:41d8c1049518 140 char gprsBuffer[100];
kaoutharidrissi 0:41d8c1049518 141 int index,count = 0;
kaoutharidrissi 0:41d8c1049518 142 cleanBuffer(gprsBuffer,100);
kaoutharidrissi 0:41d8c1049518 143 while(count < 3) {
kaoutharidrissi 0:41d8c1049518 144 sendCmd("AT+CSQ\r\n");
kaoutharidrissi 0:41d8c1049518 145 readBuffer(gprsBuffer,25);
kaoutharidrissi 0:41d8c1049518 146 if(sscanf(gprsBuffer, "AT+CSQ$$$$+CSQ: %d", &index)>0) {
kaoutharidrissi 0:41d8c1049518 147 break;
kaoutharidrissi 0:41d8c1049518 148 }
kaoutharidrissi 0:41d8c1049518 149 count++;
kaoutharidrissi 0:41d8c1049518 150 wait(1);
kaoutharidrissi 0:41d8c1049518 151 }
kaoutharidrissi 0:41d8c1049518 152 if(count == 3) {
kaoutharidrissi 0:41d8c1049518 153 return -1;
kaoutharidrissi 0:41d8c1049518 154 }
kaoutharidrissi 0:41d8c1049518 155 return index;
kaoutharidrissi 0:41d8c1049518 156 }
kaoutharidrissi 0:41d8c1049518 157
kaoutharidrissi 0:41d8c1049518 158 int GSM::settingSMS(void)
kaoutharidrissi 0:41d8c1049518 159 {
kaoutharidrissi 0:41d8c1049518 160 if(0 != sendCmdAndWaitForResp("AT+CNMI=2,2\r\n", "OK", DEFAULT_TIMEOUT)) {
kaoutharidrissi 0:41d8c1049518 161 return -1;
kaoutharidrissi 0:41d8c1049518 162 }
kaoutharidrissi 0:41d8c1049518 163 if(0 != sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", DEFAULT_TIMEOUT)) {
kaoutharidrissi 0:41d8c1049518 164 return -1;
kaoutharidrissi 0:41d8c1049518 165 }
kaoutharidrissi 0:41d8c1049518 166 return 0;
kaoutharidrissi 0:41d8c1049518 167 }
kaoutharidrissi 0:41d8c1049518 168
kaoutharidrissi 0:41d8c1049518 169 int GSM::sendSMS(char *number, char *data)
kaoutharidrissi 0:41d8c1049518 170 {
kaoutharidrissi 0:41d8c1049518 171 char cmd[64];
kaoutharidrissi 0:41d8c1049518 172 while(gprsSerial.readable()) {
kaoutharidrissi 0:41d8c1049518 173 char c = gprsSerial.getc();
kaoutharidrissi 0:41d8c1049518 174 }
kaoutharidrissi 0:41d8c1049518 175 snprintf(cmd, sizeof(cmd),"AT+CMGS=\"%s\"\r\n",number);
kaoutharidrissi 0:41d8c1049518 176 if(0 != sendCmdAndWaitForResp(cmd,">",DEFAULT_TIMEOUT)) {
kaoutharidrissi 0:41d8c1049518 177 return -1;
kaoutharidrissi 0:41d8c1049518 178 }
kaoutharidrissi 0:41d8c1049518 179 wait(1);
kaoutharidrissi 0:41d8c1049518 180 gprsSerial.puts(data);
kaoutharidrissi 0:41d8c1049518 181 gprsSerial.putc((char)0x1a);
kaoutharidrissi 0:41d8c1049518 182 return 0;
kaoutharidrissi 0:41d8c1049518 183 }
kaoutharidrissi 0:41d8c1049518 184
kaoutharidrissi 0:41d8c1049518 185 int GSM::readSMS(char *message, int index)
kaoutharidrissi 0:41d8c1049518 186 {
kaoutharidrissi 0:41d8c1049518 187 int i = 0;
kaoutharidrissi 0:41d8c1049518 188 char gprsBuffer[100];
kaoutharidrissi 0:41d8c1049518 189 char *p,*s;
kaoutharidrissi 0:41d8c1049518 190 gprsSerial.printf("AT+CMGR=%d\r\n",index);
kaoutharidrissi 0:41d8c1049518 191 cleanBuffer(gprsBuffer,100);
kaoutharidrissi 0:41d8c1049518 192 readBuffer(gprsBuffer,100);
kaoutharidrissi 0:41d8c1049518 193 if(NULL == ( s = strstr(gprsBuffer,"+CMGR"))) {
kaoutharidrissi 0:41d8c1049518 194 return -1;
kaoutharidrissi 0:41d8c1049518 195 }
kaoutharidrissi 0:41d8c1049518 196 if(NULL != ( s = strstr(gprsBuffer,"+32"))) {
kaoutharidrissi 0:41d8c1049518 197 p = s + 6;
kaoutharidrissi 0:41d8c1049518 198 while((*p != '$')&&(i < SMS_MAX_LENGTH-1)) {
kaoutharidrissi 0:41d8c1049518 199 message[i++] = *(p++);
kaoutharidrissi 0:41d8c1049518 200 }
kaoutharidrissi 0:41d8c1049518 201 message[i] = '\0';
kaoutharidrissi 0:41d8c1049518 202 }
kaoutharidrissi 0:41d8c1049518 203 return 0;
kaoutharidrissi 0:41d8c1049518 204 }
kaoutharidrissi 0:41d8c1049518 205
kaoutharidrissi 0:41d8c1049518 206 int GSM::deleteSMS(int index)
kaoutharidrissi 0:41d8c1049518 207 {
kaoutharidrissi 0:41d8c1049518 208 char cmd[32];
kaoutharidrissi 0:41d8c1049518 209 snprintf(cmd,sizeof(cmd),"AT+CMGD=%d\r\n",index);
kaoutharidrissi 0:41d8c1049518 210 sendCmd(cmd);
kaoutharidrissi 0:41d8c1049518 211 return 0;
kaoutharidrissi 0:41d8c1049518 212 }
kaoutharidrissi 0:41d8c1049518 213
kaoutharidrissi 0:41d8c1049518 214 int GSM::getSMS(char* message)
kaoutharidrissi 0:41d8c1049518 215 {
kaoutharidrissi 0:41d8c1049518 216 if(NULL != messageBuffer) {
kaoutharidrissi 0:41d8c1049518 217 strncpy(message,messageBuffer,SMS_MAX_LENGTH);
kaoutharidrissi 0:41d8c1049518 218 }
kaoutharidrissi 0:41d8c1049518 219 return 0;
kaoutharidrissi 0:41d8c1049518 220 }
kaoutharidrissi 0:41d8c1049518 221
kaoutharidrissi 0:41d8c1049518 222 int GSM::callUp(char *number)
kaoutharidrissi 0:41d8c1049518 223 {
kaoutharidrissi 0:41d8c1049518 224 if(0 != sendCmdAndWaitForResp("AT+COLP=1\r\n","OK",5)) {
kaoutharidrissi 0:41d8c1049518 225 return -1;
kaoutharidrissi 0:41d8c1049518 226 }
kaoutharidrissi 0:41d8c1049518 227 wait(1);
kaoutharidrissi 0:41d8c1049518 228 gprsSerial.printf("\r\nATD%s;\r\n",NULL==number?phoneNumber:number);
kaoutharidrissi 0:41d8c1049518 229 return 0;
kaoutharidrissi 0:41d8c1049518 230 }
kaoutharidrissi 0:41d8c1049518 231
kaoutharidrissi 0:41d8c1049518 232 int GSM::answer(void)
kaoutharidrissi 0:41d8c1049518 233 {
kaoutharidrissi 0:41d8c1049518 234 gprsSerial.printf("ATA\r\n");
kaoutharidrissi 0:41d8c1049518 235 return 0;
kaoutharidrissi 0:41d8c1049518 236 }
kaoutharidrissi 0:41d8c1049518 237
kaoutharidrissi 0:41d8c1049518 238 int GSM::loopHandle(void)
kaoutharidrissi 0:41d8c1049518 239 {
kaoutharidrissi 0:41d8c1049518 240 char gprsBuffer[100];
kaoutharidrissi 0:41d8c1049518 241 int i;
kaoutharidrissi 0:41d8c1049518 242 char *s = NULL;
kaoutharidrissi 0:41d8c1049518 243 while(gprsSerial.readable()) {
kaoutharidrissi 0:41d8c1049518 244 char c = gprsSerial.getc();
kaoutharidrissi 0:41d8c1049518 245 }
kaoutharidrissi 0:41d8c1049518 246 wait(0.5);
kaoutharidrissi 0:41d8c1049518 247 START:
kaoutharidrissi 0:41d8c1049518 248 cleanBuffer(gprsBuffer,100);
kaoutharidrissi 0:41d8c1049518 249 i = 0;
kaoutharidrissi 0:41d8c1049518 250 while(1) {
kaoutharidrissi 0:41d8c1049518 251 if(gprsSerial.readable()) {
kaoutharidrissi 0:41d8c1049518 252 timeCnt.start(); // start timer
kaoutharidrissi 0:41d8c1049518 253 while(1) {
kaoutharidrissi 0:41d8c1049518 254 while (gprsSerial.readable()) {
kaoutharidrissi 0:41d8c1049518 255 char c = gprsSerial.getc();
kaoutharidrissi 0:41d8c1049518 256 if (c == '\r' || c == '\n') c = '$';
kaoutharidrissi 0:41d8c1049518 257 gprsBuffer[i] = c;
kaoutharidrissi 0:41d8c1049518 258 i++;
kaoutharidrissi 0:41d8c1049518 259 if(i > 100) {
kaoutharidrissi 0:41d8c1049518 260 i = 0;
kaoutharidrissi 0:41d8c1049518 261 break;
kaoutharidrissi 0:41d8c1049518 262 }
kaoutharidrissi 0:41d8c1049518 263 }
kaoutharidrissi 0:41d8c1049518 264 if(timeCnt.read() > 2) { // time out
kaoutharidrissi 0:41d8c1049518 265 timeCnt.stop();
kaoutharidrissi 0:41d8c1049518 266 timeCnt.reset();
kaoutharidrissi 0:41d8c1049518 267 break;
kaoutharidrissi 0:41d8c1049518 268 }
kaoutharidrissi 0:41d8c1049518 269 }
kaoutharidrissi 0:41d8c1049518 270 break;
kaoutharidrissi 0:41d8c1049518 271 }
kaoutharidrissi 0:41d8c1049518 272 }
kaoutharidrissi 0:41d8c1049518 273 if(NULL != strstr(gprsBuffer,"RING")) {
kaoutharidrissi 0:41d8c1049518 274 return MESSAGE_RING;
kaoutharidrissi 0:41d8c1049518 275 } else if(NULL != (s = strstr(gprsBuffer,"+CMT"))) { //SMS: $$+CMTI: "SM",24$$
kaoutharidrissi 0:41d8c1049518 276 if(NULL != (s = strstr(gprsBuffer,"+32"))) {
kaoutharidrissi 0:41d8c1049518 277 s += 6;
kaoutharidrissi 0:41d8c1049518 278 int i = 0;
kaoutharidrissi 0:41d8c1049518 279 cleanBuffer(messageBuffer,SMS_MAX_LENGTH);
kaoutharidrissi 0:41d8c1049518 280 while((*s != '$')&&(i < SMS_MAX_LENGTH-1)) {
kaoutharidrissi 0:41d8c1049518 281 messageBuffer[i++] = *(s++);
kaoutharidrissi 0:41d8c1049518 282 }
kaoutharidrissi 0:41d8c1049518 283 messageBuffer[i] = '\0';
kaoutharidrissi 0:41d8c1049518 284 return MESSAGE_SMS;
kaoutharidrissi 0:41d8c1049518 285 } else {
kaoutharidrissi 0:41d8c1049518 286 goto START;
kaoutharidrissi 0:41d8c1049518 287 }
kaoutharidrissi 0:41d8c1049518 288 } else {
kaoutharidrissi 0:41d8c1049518 289 goto START;
kaoutharidrissi 0:41d8c1049518 290 }
kaoutharidrissi 0:41d8c1049518 291 }
kaoutharidrissi 0:41d8c1049518 292
kaoutharidrissi 0:41d8c1049518 293 int GSM::networkInit(char* apn, char* userName, char* passWord)
kaoutharidrissi 0:41d8c1049518 294 {
kaoutharidrissi 0:41d8c1049518 295 char cstt[64];
kaoutharidrissi 0:41d8c1049518 296 snprintf(cstt,sizeof(cstt),"AT+CSTT=\"%s\",\"%s\",\"%s\"\r\n",apn,userName,passWord);
kaoutharidrissi 0:41d8c1049518 297 if(0 != sendCmdAndWaitForResp(cstt, "OK", DEFAULT_TIMEOUT)) {
kaoutharidrissi 0:41d8c1049518 298 return -1;
kaoutharidrissi 0:41d8c1049518 299 }
kaoutharidrissi 0:41d8c1049518 300 return 0;
kaoutharidrissi 0:41d8c1049518 301 }
kaoutharidrissi 0:41d8c1049518 302
kaoutharidrissi 0:41d8c1049518 303 int GSM::connectTCP(char *ip, char *port)
kaoutharidrissi 0:41d8c1049518 304 {
kaoutharidrissi 0:41d8c1049518 305 char cipstart[64];
kaoutharidrissi 0:41d8c1049518 306 #if 0
kaoutharidrissi 0:41d8c1049518 307 if(0 != sendCmdAndWaitForResp("AT+CSTT=\"CMNET\",\"\",\"\"\r\n", "OK", 5)) {
kaoutharidrissi 0:41d8c1049518 308 return -1;
kaoutharidrissi 0:41d8c1049518 309 }
kaoutharidrissi 0:41d8c1049518 310 #endif
kaoutharidrissi 0:41d8c1049518 311 sprintf(cipstart, "AT+CIPSTART=\"TCP\",\"%s\",\"%s\"\r\n", ip, port);
kaoutharidrissi 0:41d8c1049518 312 if(0 != sendCmdAndWaitForResp(cipstart, "OK", DEFAULT_TIMEOUT)) {
kaoutharidrissi 0:41d8c1049518 313 return -1;
kaoutharidrissi 0:41d8c1049518 314 }
kaoutharidrissi 0:41d8c1049518 315 return 0;
kaoutharidrissi 0:41d8c1049518 316 }
kaoutharidrissi 0:41d8c1049518 317 int GSM::sendTCPData(char *data)
kaoutharidrissi 0:41d8c1049518 318 {
kaoutharidrissi 0:41d8c1049518 319 char cmd[64];
kaoutharidrissi 0:41d8c1049518 320 int len = strlen(data);
kaoutharidrissi 0:41d8c1049518 321 snprintf(cmd,sizeof(cmd),"AT+CIPSEND=%d\r\n",len);
kaoutharidrissi 0:41d8c1049518 322 if(0 != sendCmdAndWaitForResp(cmd,">",DEFAULT_TIMEOUT)) {
kaoutharidrissi 0:41d8c1049518 323 return -1;
kaoutharidrissi 0:41d8c1049518 324 }
kaoutharidrissi 0:41d8c1049518 325 if(0 != sendCmdAndWaitForResp(data,"OK",DEFAULT_TIMEOUT)) {
kaoutharidrissi 0:41d8c1049518 326 return -1;
kaoutharidrissi 0:41d8c1049518 327 }
kaoutharidrissi 0:41d8c1049518 328 return 0;
kaoutharidrissi 0:41d8c1049518 329 }
kaoutharidrissi 0:41d8c1049518 330
kaoutharidrissi 0:41d8c1049518 331 int GSM::closeTCP(void)
kaoutharidrissi 0:41d8c1049518 332 {
kaoutharidrissi 0:41d8c1049518 333 sendCmd("AT+CIPCLOSE\r\n");
kaoutharidrissi 0:41d8c1049518 334 return 0;
kaoutharidrissi 0:41d8c1049518 335 }
kaoutharidrissi 0:41d8c1049518 336
kaoutharidrissi 0:41d8c1049518 337 int GSM::shutTCP(void)
kaoutharidrissi 0:41d8c1049518 338 {
kaoutharidrissi 0:41d8c1049518 339 sendCmd("AT+CIPSHUT\r\n");
kaoutharidrissi 0:41d8c1049518 340 return 0;
kaoutharidrissi 0:41d8c1049518 341 }