BayEOS-Arduino  1.8.0_0.0.4
BayTCPESP8266.cpp
1 #include "BayTCPESP8266.h"
2 
3 
5  i_begin(_baud);
6  printlnP("AT");
7  delay(100);
8  if(_resetPin>-1){
9  pinMode(_resetPin,OUTPUT);
10  digitalWrite(_resetPin,LOW);
11  delay(100);
12  digitalWrite(_resetPin,HIGH);
13  } else {
14  printlnP("AT+RST");
15  }
16  wait_for("ready",3000);
17 
18  printP("AT+CIOBAUD=");
19  println(_baud);
20  wait_forOK(200);
21 
22  printlnP("ATE0"); //Command echo off
23  if(! wait_forOK(200)){
24  //communication ok!
25  printlnP("AT+CWMODE=1");
26  wait_forOK(400);
27 
28  printlnP("AT+CIPMUX=0");
29  wait_forOK(400);
30 
31  printP("AT+CWJAP=\"");
32  print(_apn);
33  printP("\",\"");
34  print(_prov_pw);
35  printlnP("\"");
36  if(! wait_forOK(30000)) return 0;
37  }
38 
39  return 1;
40 }
41 
42 void BayESP8266Interface::flushMTU(void){
43 }
44 
45 void BayESP8266Interface::finishTransmissionMode(void){
46  delay(500);
47  printP("+++");
48 }
49 
51  uint8_t res;
52  if(res=sendATE0()){
53  if(init()) return res;
54  }
55 
56  printlnP("AT+CIFSR");
57  if(wait_for("ERROR",200)){
58  //has IP
59  printlnP("AT+CIPMUX=0");
60  wait_forOK(2000);
61  printP("AT+CIPSTART=\"TCP\",\"");
62  print(_server);
63  printP("\",");
64  println(_port);
65  wait_for("Linked",200);
66  uint8_t i;
67  for(i=0;i<10;i++){
68  printlnP("AT+CIPSTATUS");
69  wait_forPGM(PSTR("STATUS:"),1000,1,_rxBuffer);
70  if(_rxBuffer[0]=='3'){
71  break;
72  }
73  delay(500);
74  }
75  if(i==10) return 1;
76  printlnP("AT+CIPMODE=1");
77  wait_forOK(200);
78 
79  printlnP("AT+CIPSEND");
80  if(wait_for(">",200)) return 1;
81  return 0;
82  }
83  return 1;
84 
85 
86 }
87 
89  wait_for("Unlink",1000);
90  printlnP("AT+CIPSTATUS");
91  wait_forPGM(PSTR("STATUS:"),1000,1,_rxBuffer);
92  if(_rxBuffer[0]!='4'){
93  printlnP("AT+CIPCLOSE");
94  wait_forOK(100);
95  }
96 
97 }
98 
100  skipChars();
101  printlnP("ATE0");
102  if(wait_forOK(3000)) return init();
103  return 0;
104 }
105 
106 
107 BayESP8266::BayESP8266(HardwareSerial &serial,int8_t resetPin):_serial(serial){
108  _urlencode=1;
109  _resetPin=resetPin;
110 }
111 
112 uint8_t BayESP8266::begin(long baud){
113  _baud=baud;
114  return init();
115 }
116 
117 BayESP8266softserial::BayESP8266softserial(uint8_t rxPin, uint8_t txPin,int8_t resetPin):SoftwareSerial(rxPin,txPin){
118  _urlencode=1;
119  _resetPin=resetPin;
120 }
121 
122 uint8_t BayESP8266softserial::begin(long baud){
123  _baud=baud;
124  return init();
125 }
uint8_t init(void)
uint8_t begin(long baud)
uint8_t connect(void)
BayESP8266softserial(uint8_t rxPin, uint8_t txPin, int8_t resetPin)
uint8_t begin(long baud)
uint8_t sendATE0(void)
boolean _urlencode
Definition: BayTCP.h:142
BayESP8266(HardwareSerial &serial=Serial, int8_t resetPin=-1)