- Timestamp:
- Mar 28, 2016, 2:12:01 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rtos_arduino/trunk/arduino_lib/libraries/ESP8266_Arudino_AT/ESP8266.h
r143 r177 26 26 #include "Arduino.h" 27 27 28 29 28 //#define ESP8266_USE_SOFTWARE_SERIAL 30 29 30 #define ESP8266_SUPPORT_VERSION "AT version:0.25" 31 32 #define ESP8266_NUM_CONNECTION 5 31 33 32 34 #ifdef ESP8266_USE_SOFTWARE_SERIAL 33 35 #include "SoftwareSerial.h" 34 #endif 35 36 #endif /* ESP8266_USE_SOFTWARE_SERIAL */ 37 38 #define ESP8266_CONNECTION_OPEN 0x01 39 #define ESP8266_CONNECTION_CLOSE 0x02 40 41 #define ESP8266_CONNECTION_TCP 0x01 42 #define ESP8266_CONNECTION_UDP 0x02 43 44 #define ESP8266_CONNECTION_CLIENT 0x01 45 #define ESP8266_CONNECTION_SERVER 0x02 46 47 #define ESP8266_STATUS_GOTIP 0x02 48 #define ESP8266_STATUS_CONNECTED 0x03 49 #define ESP8266_STATUS_DISCONNECTED 0x04 50 51 #define ESP8266_WMODE_STATION 0x01 52 #define ESP8266_WMODE_SOFTAP 0x02 53 #define ESP8266_WMODE_AP_STATION 0x03 54 55 struct esp8266_connection_status 56 { 57 uint8_t connection_type; 58 uint8_t protocol_type; 59 }; 60 61 #define ESP8266_RINGBUFFER_SIZE 512 62 63 class ESP8266_RingBuffer 64 { 65 public: 66 ESP8266_RingBuffer(void); 67 void init(void); 68 void free(void) {len = head = tail = 0;}; 69 bool write(uint8_t c); 70 uint8_t read(void); 71 uint32_t copy(uint8_t *pdata, uint32_t size); 72 uint8_t peek(void); 73 bool available(void) {return (len > 0);}; 74 bool isFull(void) {return (len == ESP8266_RINGBUFFER_SIZE);}; 75 uint32_t length(void) {return len;}; 76 77 private: 78 uint8_t *buffer; 79 uint32_t head; 80 uint32_t tail; 81 uint32_t len; 82 }; 36 83 37 84 /** … … 41 88 public: 42 89 43 #ifdef ESP8266_USE_SOFTWARE_SERIAL44 90 /* 45 91 * Begin. … … 48 94 * @param baud - the buad rate to communicate with ESP8266(default:115200). 49 95 * 50 * @warning parameter baud depends on the AT firmware. 115200 is an common value. 51 */ 52 void begin(SoftwareSerial &uart, uint32_t baud = 115200); 96 * @retval 0 : Success 97 * @retval 1 : Can not communicate ESP8266 98 * @retval 2 : Firmware Version mismatch. 99 * 100 * @warning parameter baud depends on the AT firmware. 115200 is an common value. 101 */ 102 #ifdef ESP8266_USE_SOFTWARE_SERIAL 103 int begin(SoftwareSerial &uart, uint32_t baud = 115200); 53 104 #else /* HardwareSerial */ 54 /* 55 * Begin. 56 * 57 * @param uart - an reference of HardwareSerial object. 58 * @param baud - the buad rate to communicate with ESP8266(default:115200). 59 * 60 * @warning parameter baud depends on the AT firmware. 115200 is an common value. 61 */ 62 void begin(HardwareSerial &uart, uint32_t baud = 115200); 63 #endif 64 105 int begin(HardwareSerial &uart, uint32_t baud = 115200); 106 #endif /* ESP8266_USE_SOFTWARE_SERIAL */ 65 107 66 108 /** … … 176 218 */ 177 219 String getLocalIP(void); 178 220 179 221 /** 180 222 * Enable IP MUX(multiple connection mode). … … 390 432 */ 391 433 uint32_t recv(uint8_t mux_id, uint8_t *buffer, uint32_t buffer_size, uint32_t timeout = 1000); 392 434 393 435 /** 394 436 * Receive data from all of TCP or UDP builded already in multiple mode. … … 404 446 */ 405 447 uint32_t recv(uint8_t *coming_mux_id, uint8_t *buffer, uint32_t buffer_size, uint32_t timeout = 1000); 406 407 /** 408 * Check data is available. 409 * 410 * @return 1 : data is available, 0 : data is not available 411 */ 412 int dataAvailable(void); 413 448 449 /** 450 * Check data is available in specific connection. 451 * 452 * @param mux_id - the identifier of this TCP(available value: 0 - 4). 453 * @return true - data is available. 454 * @return false - data is not available. 455 */ 456 bool isDataAvailable(uint8_t mux_id); 457 458 /** 459 * Check data is available in any connection. 460 * 461 * @return true - data is available. 462 * @return false - data is not available. 463 */ 464 bool isDataAvailable(void); 465 466 /** 467 * Check connection is opned in single mode. 468 * 469 * @return true - opend. 470 * @return false - closed. 471 */ 472 bool isConnected(void); 473 474 /** 475 * Check specific connection is opned in multiple mode. 476 * 477 * @return true - opend. 478 * @return false - closed. 479 */ 480 bool isConnected(uint8_t mux_id); 481 482 /** 483 * Get connection link status 484 * 485 * @return true - success. 486 * @return false - error. 487 */ 488 bool getMuxCStatus(uint8_t *mux_id_ptn); 489 490 /** 491 * 492 */ 493 ESP8266_RingBuffer rx_buffer[ESP8266_NUM_CONNECTION]; 494 414 495 private: 415 496 … … 418 499 */ 419 500 void rx_empty(void); 420 501 421 502 /* 422 * Recvive data from uart. Return all received data if target found or timeout. 423 */ 424 String recvString(String target, uint32_t timeout = 1000); 425 426 /* 427 * Recvive data from uart. Return all received data if one of target1 and target2 found or timeout. 428 */ 429 String recvString(String target1, String target2, uint32_t timeout = 1000); 430 503 * Read all data in UART RX. 504 */ 505 void rx_update(void); 506 431 507 /* 432 508 * Recvive data from uart. Return all received data if one of target1, target2 and target3 found or timeout. 433 509 */ 434 StringrecvString(String target1, String target2, String target3, uint32_t timeout = 1000);510 int recvString(String target1, String target2, String target3, uint32_t timeout = 1000); 435 511 436 512 /* … … 440 516 441 517 /* 442 * Recvive data from uart and search first target and cut out the substring between begin and end(excluding begin and end self). 518 * Recvive data from uart and search first target and cut out the substring between begin and end(excluding begin and end self). a 443 519 * Return true if target found, false for timeout. 444 520 */ … … 454 530 * @param coming_mux_id - in single connection mode, should be NULL and not NULL in multiple. 455 531 */ 456 uint32_t recvPkg(uint8_t *buffer, uint32_t buffer_size, uint32_t *data_len, uint32_t timeout, uint8_t *coming_mux_id); 457 532 uint32_t recvPkg(uint8_t *buffer, uint32_t buffer_size, uint32_t timeout, uint8_t mux_id, uint8_t *coming_mux_id); 458 533 459 534 bool eAT(void); … … 461 536 bool eATGMR(String &version); 462 537 463 bool qATCWMODE (uint8_t *mode);464 bool sATCWMODE (uint8_t mode);465 bool sATCWJAP (String ssid, String pwd);538 bool qATCWMODE_CUR(uint8_t *mode); 539 bool sATCWMODE_CUR(uint8_t mode); 540 bool sATCWJAP_CUR(String ssid, String pwd); 466 541 bool eATCWLAP(String &list); 467 542 bool eATCWQAP(void); 468 bool sATCWSAP (String ssid, String pwd, uint8_t chl, uint8_t ecn);543 bool sATCWSAP_CUR(String ssid, String pwd, uint8_t chl, uint8_t ecn); 469 544 bool eATCWLIF(String &list); 470 545 … … 482 557 bool sATCIPSERVER(uint8_t mode, uint32_t port = 333); 483 558 bool sATCIPSTO(uint32_t timeout); 484 485 /* 486 * +IPD,len:data 487 * +IPD,id,len:data 488 */ 559 560 void initialize_status(void); 561 562 uint32_t recvIPD(uint32_t timeout, uint8_t *buffer = NULL, uint32_t buffer_size = 0, 563 uint8_t mux_id = 0, uint8_t *coming_mux_id = NULL); 564 565 void recvAsyncdata(uint32_t timeout = 0); 489 566 490 567 #ifdef ESP8266_USE_SOFTWARE_SERIAL … … 494 571 #endif 495 572 uint32_t m_baud; 573 574 uint8_t wifi_status; 575 bool mux_mode; 576 uint8_t connection_bitmap; 577 esp8266_connection_status connection_status[ESP8266_NUM_CONNECTION]; 578 579 String rx_cmd; 496 580 }; 497 581
Note:
See TracChangeset
for help on using the changeset viewer.