While implementing udp network discovery I stumbled upon a trivial error I can't seem to fix myself.
According to the header Arduino/cores/esp8266/IPAddress.h at master · esp8266/Arduino · GitHub
IPAddress has a static method 'isValid(const char* arg)'. As far as I am aware the c++ syntax for static function calls is ClassIdentifier::Method(Params).
'isValid' is not a member of 'IPAddress'. if(IPAddress::isValid(hostAddressAsChar)){
int bytesRead = _wifiUDPClient.read(incomingPacket, packetSize);
if (bytesRead > 0){
//4 byte signed big endian int : Port
int parsedPort = incomingPacket[0] << 24| (incomingPacket[1] & 0xFF) << 16| ( incomingPacket[2] & 0xFF) << 8 | (incomingPacket[3] & 0xFF) ;
Serial.println(parsedPort);
//Parse host address
char* hostAddressAsChar = incomingPacket;
hostAddressAsChar += 4;
Serial.print("Parse host address: ");
Serial.println(hostAddressAsChar);
if(IPAddress::isValid(hostAddressAsChar)){
Serial.println("Valid address received");
_hostAddress = IPAddress();
_hostAddress.fromString(hostAddressAsChar);
_port = parsedPort;
}else{
Serial.println("Invalid address received");
}
_wifiUDPClient.stop();
_udpState = 0x03;
}