This commit is contained in:
proddy
2020-10-07 19:16:55 +02:00
parent 8bf55e74c5
commit 07992c391b
3 changed files with 218 additions and 228 deletions

View File

@@ -23,7 +23,6 @@ class MsgPackDeserializer {
_stringStorage(stringStorage),
_error(DeserializationError::Ok) {}
// TODO: add support for filter
DeserializationError parse(VariantData &variant, AllowAllFilter,
NestingLimit nestingLimit) {
parseVariant(variant, nestingLimit);

View File

@@ -114,7 +114,6 @@ size_t AsyncTCPbuffer::write(const uint8_t *data, size_t len) {
// add new buffer since we have more data
if (_TXbufferWrite->full() && bytesLeft > 0) {
// to less ram!!!
if (ESP.getFreeHeap() < 4096) {
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;
}
/**
@@ -241,7 +239,6 @@ bool AsyncTCPbuffer::connected() {
}
void AsyncTCPbuffer::stop() {
if (!_client) {
return;
}
@@ -279,7 +276,8 @@ void AsyncTCPbuffer::_attachCallbacks() {
}
DEBUG_ASYNC_TCP("[A-TCP] attachCallbacks\n");
_client->onPoll([](void *obj, AsyncClient* c) {
_client->onPoll(
[](void * obj, AsyncClient * c) {
(void)c;
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
if ((b->_TXbufferRead != NULL) && !b->_TXbufferRead->empty()) {
@@ -288,17 +286,21 @@ void AsyncTCPbuffer::_attachCallbacks() {
// if(!b->_RXbuffer->empty()) {
// 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)len;
(void)time;
DEBUG_ASYNC_TCP("[A-TCP] onAck\n");
((AsyncTCPbuffer *)(obj))->_sendBuffer();
}, this);
},
this);
_client->onDisconnect([](void *obj, AsyncClient* c) {
_client->onDisconnect(
[](void * obj, AsyncClient * c) {
DEBUG_ASYNC_TCP("[A-TCP] onDisconnect\n");
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
b->_client = NULL;
@@ -310,20 +312,25 @@ void AsyncTCPbuffer::_attachCallbacks() {
if (del) {
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;
AsyncTCPbuffer * b = ((AsyncTCPbuffer *)(obj));
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)time;
DEBUG_ASYNC_TCP("[A-TCP] onTimeout\n");
c->close();
}, this);
},
this);
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()) {
available = _TXbufferRead->available();
if (available > _client->space()) {
@@ -377,7 +383,6 @@ void AsyncTCPbuffer::_sendBuffer() {
delete out;
}
}
/**
@@ -414,7 +419,6 @@ void AsyncTCPbuffer::_rxData(uint8_t *buf, size_t len) {
}
if (len > 0) {
if (_RXbuffer->room() < len) {
// to less space
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) {
_RXbuffer->resize(100);
}
}
/**
@@ -466,7 +469,7 @@ size_t AsyncTCPbuffer::_handleRxBuffer(uint8_t *buf, size_t len) {
if (BufferAvailable > 0) {
uint8_t * b = new (std::nothrow) uint8_t[BufferAvailable];
if (b == NULL) {
panic(); //TODO: What action should this be ?
panic();
}
_RXbuffer->peek((char *)b, BufferAvailable);
r = _cbRX(b, BufferAvailable);
@@ -512,8 +515,7 @@ size_t AsyncTCPbuffer::_handleRxBuffer(uint8_t *buf, size_t len) {
return newReadCount;
} else if (_RXmode == ATB_RX_MODE_TERMINATOR) {
// TODO implement read terminator non string
//
} else if (_RXmode == ATB_RX_MODE_TERMINATOR_STRING) {
if (_rxReadStringPtr == NULL || _cbDone == NULL) {
return 0;

View File

@@ -38,18 +38,10 @@
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;
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;
class AsyncTCPbuffer : public Print {
public:
typedef std::function<size_t(uint8_t * payload, size_t length)> AsyncTCPbufferDataCb;
typedef std::function<void(bool ok, void * ret)> AsyncTCPbufferDoneCb;
typedef std::function<bool(AsyncTCPbuffer * obj)> AsyncTCPbufferDisconnectCb;
@@ -69,14 +61,12 @@ class AsyncTCPbuffer: public Print {
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, uint8_t *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);
// TODO implement
// void setTimeout(size_t timeout);
void onData(AsyncTCPbufferDataCb cb);
@@ -112,7 +102,6 @@ class AsyncTCPbuffer: public Print {
void _on_close();
void _rxData(uint8_t * buf, size_t len);
size_t _handleRxBuffer(uint8_t * buf, size_t len);
};
#endif /* ESPASYNCTCPBUFFER_H_ */