[rant] The end-of-rant is intentionally left out in case more rant is added later.
I've recently started using official arduino wifi shield. I have a lot of questions but only rarely find answers on the forum or on arduino product page. I dug down deep into the library but since the shield has its own firmware, all interesting things are happening there (there's code but come on how am I supposed to understand all that). Unfortunately Arduino team provides no manual on the principles of operation of the shield, just links of function calls.
One thing, like why am I not getting MAC address until I connect to a wifi router, is bothering me since I can dig all the way down to sending SPI command to wifi chip and found no answer why a connection is needed to return a MAC address. No connections, all zeros. It's frustrating to work without knowing what these functions do.
Another thing is I wonder if the wifi chip keeps the connection active and renews IP address lease regularly. I'm designing something to be operational for long periods of time, a month or so at a time so everything needs to be understood to prevent exceptions but there's no documentation for this almost $100 piece of electronics!!
Now the wifi shield firmware update description is also very sketchy. I tried it but just got nothing on the FTDI header. I then tried the other wifi shield I didn't update, nothing on the FTDI header. I don't have Arduino serial adapter but I tried to guess how it's connected, it doesn't even have any marking such as 5V gnd tx, rx etc. on the wifi shield. I'm through buying Arduino brand boards.
cantore:
may be one solution is to periodically call the wifi.begin but I don't thing this is the best way to solve the lease problem
If there is no wifi.end() then I am hesitant to call begin too many times. But in my own project I have done it, only when I lose the connection. Arduino has a long list of problems, not having proper end() to pair with begin() is just one of them, an annoying one too. I don't know if the DUE sound library now has proper end() or not. At least when I was helping some with it on the forum, the library only worked once, playing one sound, and then there was no way to reinitialize and play another.