mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
comments
This commit is contained in:
@@ -23,7 +23,6 @@ class MsgPackDeserializer {
|
|||||||
_stringStorage(stringStorage),
|
_stringStorage(stringStorage),
|
||||||
_error(DeserializationError::Ok) {}
|
_error(DeserializationError::Ok) {}
|
||||||
|
|
||||||
// TODO: add support for filter
|
|
||||||
DeserializationError parse(VariantData &variant, AllowAllFilter,
|
DeserializationError parse(VariantData &variant, AllowAllFilter,
|
||||||
NestingLimit nestingLimit) {
|
NestingLimit nestingLimit) {
|
||||||
parseVariant(variant, nestingLimit);
|
parseVariant(variant, nestingLimit);
|
||||||
|
|||||||
@@ -114,7 +114,6 @@ size_t AsyncTCPbuffer::write(const uint8_t *data, size_t len) {
|
|||||||
|
|
||||||
// add new buffer since we have more data
|
// add new buffer since we have more data
|
||||||
if (_TXbufferWrite->full() && bytesLeft > 0) {
|
if (_TXbufferWrite->full() && bytesLeft > 0) {
|
||||||
|
|
||||||
// to less ram!!!
|
// to less ram!!!
|
||||||
if (ESP.getFreeHeap() < 4096) {
|
if (ESP.getFreeHeap() < 4096) {
|
||||||
DEBUG_ASYNC_TCP("[A-TCP] run out of Heap can not send all Data!\n");
|
DEBUG_ASYNC_TCP("[A-TCP] run out of Heap can not send all Data!\n");
|
||||||
@@ -138,7 +137,6 @@ size_t AsyncTCPbuffer::write(const uint8_t *data, size_t len) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -241,7 +239,6 @@ bool AsyncTCPbuffer::connected() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AsyncTCPbuffer::stop() {
|
void AsyncTCPbuffer::stop() {
|
||||||
|
|
||||||
if (!_client) {
|
if (!_client) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -279,7 +276,8 @@ void AsyncTCPbuffer::_attachCallbacks() {
|
|||||||
}
|
}
|
||||||
DEBUG_ASYNC_TCP("[A-TCP] attachCallbacks\n");
|
DEBUG_ASYNC_TCP("[A-TCP] attachCallbacks\n");
|
||||||
|
|
||||||
_client->onPoll([](void *obj, AsyncClient* c) {
|
_client->onPoll(
|
||||||
|
[](void * obj, AsyncClient * c) {
|
||||||
(void)c;
|
(void)c;
|
||||||
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
|
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
|
||||||
if ((b->_TXbufferRead != NULL) && !b->_TXbufferRead->empty()) {
|
if ((b->_TXbufferRead != NULL) && !b->_TXbufferRead->empty()) {
|
||||||
@@ -288,17 +286,21 @@ void AsyncTCPbuffer::_attachCallbacks() {
|
|||||||
// if(!b->_RXbuffer->empty()) {
|
// if(!b->_RXbuffer->empty()) {
|
||||||
// b->_handleRxBuffer(NULL, 0);
|
// b->_handleRxBuffer(NULL, 0);
|
||||||
// }
|
// }
|
||||||
}, this);
|
},
|
||||||
|
this);
|
||||||
|
|
||||||
_client->onAck([](void *obj, AsyncClient* c, size_t len, uint32_t time) {
|
_client->onAck(
|
||||||
|
[](void * obj, AsyncClient * c, size_t len, uint32_t time) {
|
||||||
(void)c;
|
(void)c;
|
||||||
(void)len;
|
(void)len;
|
||||||
(void)time;
|
(void)time;
|
||||||
DEBUG_ASYNC_TCP("[A-TCP] onAck\n");
|
DEBUG_ASYNC_TCP("[A-TCP] onAck\n");
|
||||||
((AsyncTCPbuffer *)(obj))->_sendBuffer();
|
((AsyncTCPbuffer *)(obj))->_sendBuffer();
|
||||||
}, this);
|
},
|
||||||
|
this);
|
||||||
|
|
||||||
_client->onDisconnect([](void *obj, AsyncClient* c) {
|
_client->onDisconnect(
|
||||||
|
[](void * obj, AsyncClient * c) {
|
||||||
DEBUG_ASYNC_TCP("[A-TCP] onDisconnect\n");
|
DEBUG_ASYNC_TCP("[A-TCP] onDisconnect\n");
|
||||||
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
|
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
|
||||||
b->_client = NULL;
|
b->_client = NULL;
|
||||||
@@ -310,20 +312,25 @@ void AsyncTCPbuffer::_attachCallbacks() {
|
|||||||
if (del) {
|
if (del) {
|
||||||
delete b;
|
delete b;
|
||||||
}
|
}
|
||||||
}, this);
|
},
|
||||||
|
this);
|
||||||
|
|
||||||
_client->onData([](void *obj, AsyncClient* c, void *buf, size_t len) {
|
_client->onData(
|
||||||
|
[](void * obj, AsyncClient * c, void * buf, size_t len) {
|
||||||
(void)c;
|
(void)c;
|
||||||
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
|
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
|
||||||
b->_rxData((uint8_t *)buf, len);
|
b->_rxData((uint8_t *)buf, len);
|
||||||
}, this);
|
},
|
||||||
|
this);
|
||||||
|
|
||||||
_client->onTimeout([](void *obj, AsyncClient* c, uint32_t time){
|
_client->onTimeout(
|
||||||
|
[](void * obj, AsyncClient * c, uint32_t time) {
|
||||||
(void)obj;
|
(void)obj;
|
||||||
(void)time;
|
(void)time;
|
||||||
DEBUG_ASYNC_TCP("[A-TCP] onTimeout\n");
|
DEBUG_ASYNC_TCP("[A-TCP] onTimeout\n");
|
||||||
c->close();
|
c->close();
|
||||||
}, this);
|
},
|
||||||
|
this);
|
||||||
|
|
||||||
DEBUG_ASYNC_TCP("[A-TCP] attachCallbacks Done.\n");
|
DEBUG_ASYNC_TCP("[A-TCP] attachCallbacks Done.\n");
|
||||||
}
|
}
|
||||||
@@ -339,7 +346,6 @@ void AsyncTCPbuffer::_sendBuffer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (connected() && (_client->space() > 0) && (_TXbufferRead->available() > 0) && _client->canSend()) {
|
while (connected() && (_client->space() > 0) && (_TXbufferRead->available() > 0) && _client->canSend()) {
|
||||||
|
|
||||||
available = _TXbufferRead->available();
|
available = _TXbufferRead->available();
|
||||||
|
|
||||||
if (available > _client->space()) {
|
if (available > _client->space()) {
|
||||||
@@ -377,7 +383,6 @@ void AsyncTCPbuffer::_sendBuffer() {
|
|||||||
|
|
||||||
delete out;
|
delete out;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -414,7 +419,6 @@ void AsyncTCPbuffer::_rxData(uint8_t *buf, size_t len) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
|
|
||||||
if (_RXbuffer->room() < len) {
|
if (_RXbuffer->room() < len) {
|
||||||
// to less space
|
// to less space
|
||||||
DEBUG_ASYNC_TCP("[A-TCP] _rxData buffer full try resize\n");
|
DEBUG_ASYNC_TCP("[A-TCP] _rxData buffer full try resize\n");
|
||||||
@@ -440,7 +444,6 @@ void AsyncTCPbuffer::_rxData(uint8_t *buf, size_t len) {
|
|||||||
if (_RXbuffer->empty() && _RXbuffer->room() != 100) {
|
if (_RXbuffer->empty() && _RXbuffer->room() != 100) {
|
||||||
_RXbuffer->resize(100);
|
_RXbuffer->resize(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -466,7 +469,7 @@ size_t AsyncTCPbuffer::_handleRxBuffer(uint8_t *buf, size_t len) {
|
|||||||
if (BufferAvailable > 0) {
|
if (BufferAvailable > 0) {
|
||||||
uint8_t * b = new (std::nothrow) uint8_t[BufferAvailable];
|
uint8_t * b = new (std::nothrow) uint8_t[BufferAvailable];
|
||||||
if (b == NULL) {
|
if (b == NULL) {
|
||||||
panic(); //TODO: What action should this be ?
|
panic();
|
||||||
}
|
}
|
||||||
_RXbuffer->peek((char *)b, BufferAvailable);
|
_RXbuffer->peek((char *)b, BufferAvailable);
|
||||||
r = _cbRX(b, BufferAvailable);
|
r = _cbRX(b, BufferAvailable);
|
||||||
@@ -512,8 +515,7 @@ size_t AsyncTCPbuffer::_handleRxBuffer(uint8_t *buf, size_t len) {
|
|||||||
return newReadCount;
|
return newReadCount;
|
||||||
|
|
||||||
} else if (_RXmode == ATB_RX_MODE_TERMINATOR) {
|
} else if (_RXmode == ATB_RX_MODE_TERMINATOR) {
|
||||||
// TODO implement read terminator non string
|
//
|
||||||
|
|
||||||
} else if (_RXmode == ATB_RX_MODE_TERMINATOR_STRING) {
|
} else if (_RXmode == ATB_RX_MODE_TERMINATOR_STRING) {
|
||||||
if (_rxReadStringPtr == NULL || _cbDone == NULL) {
|
if (_rxReadStringPtr == NULL || _cbDone == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -38,18 +38,10 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum { ATB_RX_MODE_NONE, ATB_RX_MODE_FREE, ATB_RX_MODE_READ_BYTES, ATB_RX_MODE_TERMINATOR, ATB_RX_MODE_TERMINATOR_STRING } atbRxMode_t;
|
||||||
ATB_RX_MODE_NONE,
|
|
||||||
ATB_RX_MODE_FREE,
|
|
||||||
ATB_RX_MODE_READ_BYTES,
|
|
||||||
ATB_RX_MODE_TERMINATOR,
|
|
||||||
ATB_RX_MODE_TERMINATOR_STRING
|
|
||||||
} atbRxMode_t;
|
|
||||||
|
|
||||||
class AsyncTCPbuffer : public Print {
|
class AsyncTCPbuffer : public Print {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef std::function<size_t(uint8_t * payload, size_t length)> AsyncTCPbufferDataCb;
|
typedef std::function<size_t(uint8_t * payload, size_t length)> AsyncTCPbufferDataCb;
|
||||||
typedef std::function<void(bool ok, void * ret)> AsyncTCPbufferDoneCb;
|
typedef std::function<void(bool ok, void * ret)> AsyncTCPbufferDoneCb;
|
||||||
typedef std::function<bool(AsyncTCPbuffer * obj)> AsyncTCPbufferDisconnectCb;
|
typedef std::function<bool(AsyncTCPbuffer * obj)> AsyncTCPbufferDisconnectCb;
|
||||||
@@ -69,14 +61,12 @@ class AsyncTCPbuffer: public Print {
|
|||||||
|
|
||||||
void readStringUntil(char terminator, String * str, AsyncTCPbufferDoneCb done);
|
void readStringUntil(char terminator, String * str, AsyncTCPbufferDoneCb done);
|
||||||
|
|
||||||
// TODO implement read terminator non string
|
|
||||||
//void readBytesUntil(char terminator, char *buffer, size_t length, AsyncTCPbufferDoneCb done);
|
//void readBytesUntil(char terminator, char *buffer, size_t length, AsyncTCPbufferDoneCb done);
|
||||||
//void readBytesUntil(char terminator, uint8_t *buffer, size_t length, AsyncTCPbufferDoneCb done);
|
//void readBytesUntil(char terminator, uint8_t *buffer, size_t length, AsyncTCPbufferDoneCb done);
|
||||||
|
|
||||||
void readBytes(char * buffer, size_t length, AsyncTCPbufferDoneCb done);
|
void readBytes(char * buffer, size_t length, AsyncTCPbufferDoneCb done);
|
||||||
void readBytes(uint8_t * buffer, size_t length, AsyncTCPbufferDoneCb done);
|
void readBytes(uint8_t * buffer, size_t length, AsyncTCPbufferDoneCb done);
|
||||||
|
|
||||||
// TODO implement
|
|
||||||
// void setTimeout(size_t timeout);
|
// void setTimeout(size_t timeout);
|
||||||
|
|
||||||
void onData(AsyncTCPbufferDataCb cb);
|
void onData(AsyncTCPbufferDataCb cb);
|
||||||
@@ -112,7 +102,6 @@ class AsyncTCPbuffer: public Print {
|
|||||||
void _on_close();
|
void _on_close();
|
||||||
void _rxData(uint8_t * buf, size_t len);
|
void _rxData(uint8_t * buf, size_t len);
|
||||||
size_t _handleRxBuffer(uint8_t * buf, size_t len);
|
size_t _handleRxBuffer(uint8_t * buf, size_t len);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* ESPASYNCTCPBUFFER_H_ */
|
#endif /* ESPASYNCTCPBUFFER_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user