1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-27 18:02:17 +03:00

Merge remote-tracking branch 'remotes/esp8266/esp8266' into esp8266

This commit is contained in:
Markus Sattler
2015-07-16 12:28:38 +02:00
11 changed files with 71 additions and 43 deletions

View File

@ -25,7 +25,7 @@
const char* ssid = "**********";
const char* password = "**********";
WiFiServer server(21);
WiFiServer server(23);
WiFiClient serverClients[MAX_SRV_CLIENTS];
void setup() {
@ -45,7 +45,7 @@ void setup() {
Serial1.print("Ready! Use 'telnet ");
Serial1.print(WiFi.localIP());
Serial1.println(" 21' to connect");
Serial1.println(" 23' to connect");
}
void loop() {

View File

@ -177,20 +177,17 @@ size_t WiFiClient::write(const uint8_t *buf, size_t size)
return _client->write(reinterpret_cast<const char*>(buf), size);
}
extern "C" uint32_t esp_micros_at_task_start();
int WiFiClient::available()
{
static uint32_t lastPollTime = 0;
if (!_client)
return 0;
int result = 0;
if (lastPollTime > esp_micros_at_task_start())
yield();
if (_client) {
result = _client->getSize();
}
lastPollTime = micros();
int result = _client->getSize();
if (!result) {
optimistic_yield();
}
return result;
}

View File

@ -84,8 +84,6 @@ bool WiFiServer::getNoDelay(){
return tcp_nagle_disabled(_pcb);
}
extern "C" uint32_t esp_micros_at_task_start();
bool WiFiServer::hasClient(){
if (_unclaimed) return true;
return false;
@ -93,8 +91,6 @@ bool WiFiServer::hasClient(){
WiFiClient WiFiServer::available(byte* status)
{
static uint32_t lastPollTime = 0;
if (_unclaimed)
{
WiFiClient result(_unclaimed);
@ -103,9 +99,7 @@ WiFiClient WiFiServer::available(byte* status)
return result;
}
if (lastPollTime > esp_micros_at_task_start())
yield();
lastPollTime = micros();
optimistic_yield();
return WiFiClient();
}

View File

@ -116,9 +116,17 @@ uint8_t WiFiUDP::beginMulticast(IPAddress interfaceAddr, IPAddress multicast, ui
/* return number of bytes available in the current packet,
will return zero if parsePacket hasn't been called yet */
int WiFiUDP::available() {
if (!_ctx)
return 0;
return static_cast<int>(_ctx->getSize());
int result = 0;
if (_ctx) {
result = static_cast<int>(_ctx->getSize());
}
if (!result) {
optimistic_yield();
}
return result;
}
/* Release any resources being used by this WiFiUDP instance */

View File

@ -161,7 +161,13 @@ size_t TwoWire::write(const uint8_t *data, size_t quantity){
}
int TwoWire::available(void){
return rxBufferLength - rxBufferIndex;
int result = rxBufferLength - rxBufferIndex;
if (!result) {
optimistic_yield();
}
return result;
}
int TwoWire::read(void){