I'm using an Arduino Uno with the Wifi101 shield with v1.7.9 of the IDE.
When I try to compile the example code provided with Wifi101 shield, I get an error of
'class IPAddress' has no member named 'fromString'
The offending code is in Wifi101-master\src\Wifi.cpp in the WiFiClass::hostByName() function.
The GitHub history suggests this was added to handle a provided hostname that is already and ipaddress. I can work around this by just commenting out that test but am wondering why this seemingly incompatible mod was made.
Anyone else have this problem?
--Ed
I am doing some work to port this library to other arch and I found your issue.
I am using chipkit approach, the function that verify if the hostname is already an IP address is in Ethernet library, Dns.cpp, I decide to put it in the WiFi class but perhaps it later get into another place line the same Dns.cpp.
Here is the function
int WiFiClass::inet_aton(const char* aIPAddrString, IPAddress& aResult)
{
// See if we've been given a valid IP address
const char* p =aIPAddrString;
while (*p &&
( (*p == '.') || (*p >= '0') || (*p <= '9') ))
{
p++;
}
if (*p == '\0')
{
// It's looking promising, we haven't found any invalid characters
p = aIPAddrString;
int segment =0;
int segmentValue =0;
while (*p && (segment < 4))
{
if (*p == '.')
{
// We've reached the end of a segment
if (segmentValue > 255)
{
// You can't have IP address segments that don't fit in a byte
return 0;
}
else
{
aResult[segment] = (byte)segmentValue;
segment++;
segmentValue = 0;
}
}
else
{
// Next digit
segmentValue = (segmentValue*10)+(*p - '0');
}
p++;
}
// We've reached the end of address, but there'll still be the last
// segment to deal with
if ((segmentValue > 255) || (segment > 3))
{
// You can't have IP address segments that don't fit in a byte,
// or more than four segments
return 0;
}
else
{
aResult[segment] = (byte)segmentValue;
return 1;
}
}
else
{
return 0;
}
}
Just add the prototype to .h
int inet_aton(const char* aIPAddrString, IPAddress& aResult);
and the if clause will be
// check if aHostname is already an ipaddress
if (inet_aton(aHostname, aResult)) {
I had same issue, but fixed it by updating Arduino IDE (which also updates libraries).
ejbaker:
I'm using an Arduino Uno with the Wifi101 shield with v1.7.9 of the IDE.
When I try to compile the example code provided with Wifi101 shield, I get an error of
'class IPAddress' has no member named 'fromString'
The offending code is in Wifi101-master\src\Wifi.cpp in the WiFiClass::hostByName() function.
The GitHub history suggests this was added to handle a provided hostname that is already and ipaddress. I can work around this by just commenting out that test but am wondering why this seemingly incompatible mod was made.
Anyone else have this problem?
--Ed
please note that the current Arduino IDE is 1.6.9 downloadable from https://www.arduino.cc/en/Main/Software
update also the wifi101 library to 0.9.1