Skip to content

Commit

Permalink
ip optimazations from rp2040 to ESP
Browse files Browse the repository at this point in the history
  • Loading branch information
Ing-Dom committed Jul 20, 2024
1 parent 8bc115c commit 19735da
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 9 deletions.
34 changes: 25 additions & 9 deletions src/esp32_platform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,31 +102,47 @@ bool Esp32Platform::sendBytesMultiCast(uint8_t * buffer, uint16_t len)
int Esp32Platform::readBytesMultiCast(uint8_t * buffer, uint16_t maxLen, uint32_t& src_addr, uint16_t& src_port)
{
int len = _udp.parsePacket();
src_addr = htonl(_udp.remoteIP());
src_port = _udp.remotePort();
if (len == 0)
return 0;

if (len > maxLen)
{
KNX_DEBUG_SERIAL.printf("udp buffer to small. was %d, needed %d\n", maxLen, len);
fatalError();
println("Unexpected UDP data packet length - drop packet");
for (size_t i = 0; i < len; i++)
_udp.read();
return 0;
}

_udp.read(buffer, len);
//printHex("-> ", buffer, len);
_remoteIP = _udp.remoteIP();
_remotePort = _udp.remotePort();
src_addr = htonl(_remoteIP);
src_port = _remotePort;

// print("Remote IP: ");
// print(_udp.remoteIP().toString().c_str());
// printHex("-> ", buffer, len);

return len;
}

bool Esp32Platform::sendBytesUniCast(uint32_t addr, uint16_t port, uint8_t* buffer, uint16_t len)
{
IPAddress ucastaddr(htonl(addr));
println("sendBytesUniCast endPacket fail");
if(_udp.beginPacket(ucastaddr, port) == 1) {

if(!addr)
ucastaddr = _remoteIP;

if(!port)
port = _remotePort;

if(_udp.beginPacket(ucastaddr, port) == 1)
{
_udp.write(buffer, len);
if(_udp.endPacket() == 0) println("sendBytesUniCast endPacket fail");
}
else println("sendBytesUniCast beginPacket fail");
else
println("sendBytesUniCast beginPacket fail");
return true;
}

Expand Down
4 changes: 4 additions & 0 deletions src/esp32_platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ class Esp32Platform : public ArduinoPlatform
//memory
uint8_t* getEepromBuffer(uint32_t size);
void commitToEeprom();

protected: IPAddress _remoteIP;
protected: uint16_t _remotePort;

private:
WiFiUDP _udp;
int8_t _rxPin = -1;
Expand Down

0 comments on commit 19735da

Please sign in to comment.