Commit Graph

60 Commits (mbed-os-5.15)

Author SHA1 Message Date
Michal Paszta 5a163b14bd ESP8266: accept partial writes for TCP and clean up code 2020-06-19 17:54:36 +08:00
Chun-Chieh Li 89e2406ab2 ESP8266: Simplify flow control and enable per-socket reconnection
1.  Fix 'spurious close' by adding close() in open(). 'spurious close' gets frequent and cannot ignore when send() changes to asynchronous. User can retry open() until 'spurious close' gets true.
2.  Allow only one actively sending socket because:
    (1) ESP8266 AT packets 'SEND OK'/'SEND FAIL' are not associated with socket ID. No way to tell them.
    (2) In original implementation, ESP8266::send() is synchronous, which implies only one actively sending socket.
3.  Register 'SEND OK'/'SEND FAIL' oobs, like others in ESP8266::ESP8266 constructor. Don't get involved in oob management with send status because ESP8266 modem possibly doesn't reply these packets on error case.
4.  Now that ESP8266::send() changes to asynchronous, drop the code with _parser.recv("SEND OK")/_parser.recv("SEND FAIL"). _parser.recv("SEND OK")/_parser.recv("SEND FAIL") and 'SEND OK'/'SEND FAIL' oobs both consume 'SEND OK'/'SEND FAIL' packets and complicate flow control.
2020-06-19 17:54:34 +08:00
Michal Paszta 8c5cc71081 ESP8266: Introduce single send_status instead of two flags 2020-06-19 17:46:04 +08:00
Michal Paszta 9669a4f7bb ESP8266: Improve error handling and partial sends 2020-06-19 17:46:02 +08:00
Michal Paszta 5f4ba9d3df ESP8266: add a retry mechanism to avoid duplicate data sends
We are now checking if ESP8266 has confirmed receiving data over serial
port with an undocumented (but existing) "Recv x bytes" message. Next we
are explicitly waiting for an official "SEND OK".
2020-06-19 17:45:55 +08:00
Antti Yli-Tokola b87a067434 Make ESP8266 compatible with non rtos build 2020-02-05 14:40:24 +00:00
Martin Kojtal 4ed8603d64
Merge pull request #11541 from dmaziec1/recv_scanf_oob_fixed
esp8266 _oob_* : recv() brought back where it was needed
2019-09-30 13:59:53 +02:00
Anna Bridge 372a3f19c9
Merge pull request #11514 from dmaziec1/UART_deep_sleep_enable
ESP8266 unlocks deep sleep when disconnected
2019-09-27 16:50:22 +01:00
Dominika Maziec e84e098bcb esp8266 in _oob_* : recv() brought back where it was needed 2019-09-27 15:54:43 +02:00
Dominika Maziec 1aa3b5d9d0 UART in deep sleep mode when it is disconnected 2019-09-20 17:18:32 +02:00
Dominika Maziec 66bf8bc97b ESP8266 Unified Mbed trace prints.
All logs now:
- start with a function name (it is not automatically logged by the logger)
- do not contain class name (this can be inferred from log preamble)
- message starts with a capital letter and ends with a full-stop
2019-09-13 16:54:31 +02:00
Dominika Maziec 9ddef624bc Replaced in ESP8266::_oob_* recv() with scanf()
`ATCmdParser::recv()` should be used when we skim through data trying to look for something and `ATCmdParser::scanf()` is to be used when we know what we are supposed to get- as in `_oob_*` functions, except from `_oob_connection_status()`
2019-09-11 17:00:37 +02:00
Martin Kojtal 56a8227c54
Merge pull request #11304 from AnttiKauppila/esp8266_fix
RSSI getter fixed for ESP8266
2019-08-29 08:49:24 +02:00
Antti Kauppila 2bdf3bbf23 astyle fixes 2019-08-26 09:56:18 +03:00
Desmond Chen 77d403b20a Enable json overriding ESP8266 default baud rate 2019-08-26 11:38:30 +08:00
Antti Kauppila a074721d18 RSSI getter fixed for ESP8266 2019-08-23 12:28:04 +03:00
Antti Kauppila 84063bf222 Coverity issues fixed 2019-08-14 16:22:05 +03:00
Marcin Tomczyk 9ae4463ccc Need to change ESP8266 driver's support AT firmware version. Only AT version 1.6 0r above support AT+CWCOUNTRY command. Command AT+CWLAP format is different for version 1.6 and above 2019-07-05 10:07:29 +02:00
Kevin Bracey 69c6cc341b Networking: Fix some ARMC6 warnings
Some int-versus-long and signed-versus-unsigned format string
mismatches, and missing `class` keyword.
2019-04-17 16:03:44 +03:00
Michal Paszta 5dbaa40eb0 Add the INTERRUPTIN compilation guard for ESP8266 2019-03-28 11:16:30 +02:00
Cruz Monrreal ecfe0c83ae
Merge pull request #9955 from VeijoPesonen/esp8266_wifi_scan_timeout
ESP8266: treats Wi-Fi scan results as out-of-band data; new API to adjusting Wi-Fi scan settings
2019-03-27 00:25:43 -05:00
Cruz Monrreal 1c23c5b85b
Merge pull request #9927 from VeijoPesonen/esp8266_country_code_policy
ESP8266: Country code API
2019-03-27 00:25:29 -05:00
Veijo Pesonen e2bd0644df ESP8266: new API for setting Wi-Fi scan active/passive mode
Makes possible to decide between active and passive mode.

Makes possible to adjust for how long a single channel is scanned.
2019-03-14 12:01:42 +02:00
Veijo Pesonen b5f3fcf49b ESP8266: Wi-Fi scan results as OOB 2019-03-14 12:00:17 +02:00
Veijo Pesonen 96247dd76a ESP8266: sets hardcoded country code(CC) policy to track AP's CC 2019-03-05 10:40:21 +02:00
Veijo Pesonen c9eaa07236 ESP8266: astyle, remove from the .astyleignore-file 2019-03-04 09:38:20 +02:00
Cruz Monrreal 9d9a076f10
Merge pull request #9885 from VeijoPesonen/esp8266_conn_timeout_err2trace
ESP8266: graceful disconnect on network state timeout
2019-02-28 19:56:11 -06:00
Veijo Pesonen 7bb887fef4 ESP8266: in unknown network state driver tries to disconnect 2019-02-28 12:44:49 +02:00
Veijo Pesonen 688a4e42bc ESP8266: recv() is able to handle device busy indication 2019-02-27 09:54:43 +02:00
Veijo Pesonen cbbe2ff55e ESP8266: retry reset attempt once in failure 2019-02-14 11:08:37 +02:00
Veijo Pesonen 706dd39569 ESP8266: protects setting UART HW flow control with a mutex 2019-02-14 10:41:04 +02:00
Veijo Pesonen 108ec44b66 ESP8266: fixes UART HW flow control enabling sequence 2019-02-14 10:41:04 +02:00
Veijo Pesonen 71e5321f0f ESP8266: fixes network status refresh procedure 2019-02-14 10:41:04 +02:00
Veijo Pesonen 876a397101 ESP8266: handles reset ready as OOB
Makes possible to recover from spurious resets addiotionally to planned
ones.
2019-02-14 10:41:04 +02:00
Veijo Pesonen 832eed02ce ESP8266: calls MBED_ERROR if modem's watchdog reset gets triggered 2019-01-22 16:11:32 +02:00
Cruz Monrreal 30e0d8f1f6
Merge pull request #9366 from VeijoPesonen/bugfix-esp8266_verify_rcvd_data_len
ESP8266: add an error check for data overflow from modem side
2019-01-17 21:52:11 -06:00
Veijo Pesonen 02cd9f1884 [ESP8266] adds an error check for data overflow from modem side 2019-01-14 12:22:41 +02:00
Seppo Takalo 7db2292417 Flush ESP8266 serial input buffers after HW reset 2019-01-10 18:13:32 +02:00
Martin Kojtal e25611aad8
Merge pull request #9309 from VeijoPesonen/bugfix-esp8266_send_busy
ESP8266 - fix send buffer exhaustion handling
2019-01-10 12:24:09 +00:00
Veijo Pesonen 7c112b2843 [ESP8266] socket_send() returns WOULD_BLOCK if server won't accept
Driver must return NSAPI_ERROR_WOULD_BLOCK if a server won't accept
data from the modem and the modem's buffers are full. In case that
socket is closed driver returns NSAPI_ERROR_CONNECTION_LOST.
2019-01-09 16:34:25 +02:00
Veijo Pesonen 4a9f86565a [ESP8266] Fixes AT-layer socket_open-functions
When a socket open fails it musn't be treated as fatal error. Returning
a device error which is then handled by an application is the correct
solution
2019-01-09 13:20:52 +02:00
Michal Paszta d6e385b330 ESP8266 send returns WOULD_BLOCK error when busy 2018-12-11 17:48:37 +01:00
Veijo Pesonen 12fa3e59bb Fixes AT command timeout values from reset&connect 2018-12-11 09:49:23 +02:00
Veijo Pesonen 9857ee1c17 [ESP8266] Adds support for controlling HW reset of the modem from the driver
While connecting will run HW reset for the modem if reset wire is attached to a know pin.
2018-12-11 09:49:23 +02:00
Cruz Monrreal 61ade84447
Merge pull request #8875 from deepikabhavnani/fix_components
Add dependency checks to components
2018-12-10 19:20:30 -06:00
Martin Kojtal be817bab44
Merge pull request #8853 from VeijoPesonen/feature-esp8266_reconnect2
Reports NSAPI_STATUS_CONNECTING when trying to reconnect
2018-12-05 10:37:17 +01:00
Martin Kojtal b52c164028
Merge pull request #8911 from c1728p9/esp8266_flow_control_fix
Fix ESP8266 recv_udp timeout with flow control
2018-12-03 13:41:23 +01:00
Deepika 76220fa89c Add Serial + EventQueue dependency to ESP8266 2018-11-30 15:38:28 -06:00
Russ Butler 53ed3f5c3d Fix ESP8266 recv_udp timeout with flow control
UDP packets are always received as OOB data. Without checking for
new OOB data with a call to "_process_oob" then recv_udp never blocks.
If a UDP packet is not available then NSAPI_ERROR_WOULD_BLOCK is
returned. This causes mbed-os's DNS handling to always fail when
flow control is enabled.

This patch fixes recv_udp by always calling "_process_oob" regardless
of if flow control is enabled. This ensures that recv_udp follows the
timeout parameter and waits for new data to arrive.
2018-11-29 19:13:37 -06:00
Deepika b32c6ba2a5 Components if using RTOS modules should be enabled only when RTOS is present
Build failures were observed when rtos is ignored with .mbedignored.
Components dependent on RTOS should be guarded with MBED_CONF_RTOS_PRESENT
2018-11-27 13:55:59 -06:00