Hi Encryptic,
Thanks for your post.
Encryptic:
I’ve been seeing some conflicts with some other libraries which include the Arduino Pin Definitions (pins_arduino.h). After some backtracking the issues I found out that you actually define MOSI, MISO, SCK again which causes conflicts with other libraries.
I have changed _Spi.h to remove the defines and instead include pins_arduino.h and that has improved compatibility. Edit: The other thing that must be done is to use CS instead of SS in _Spi.cpp.
Great, thanks heaps for tracking that issue down. The moving of SPI defines to pins_arduino.h is a relatively recent change so that’s probably how the issue cropped up. I’ve made a note of your changes and will work on incorporating them.
Another thing I was thinking about was a way to define the crystal frequency usage so that users of the library do not have to modify the library, the reason I don’t like this is every time I pull the latest library my code no longer works because I have the older version of the shield. Anyone have any thoughts of how we could clean this up?
Backward compatibility is always going to be a bit of a pain. My current philosophy is to always have the latest release support the latest board revision “out of the box” so that people who buy a board today will have it work straight away. The hope is that people with the older boards will notice a new revision stops working and will read the README to work out what they need to change. 
It could be switched to a variable and add an overload to the WiFly.begin method which will allow us to change the crystal frequency, then when we update the library it will no longer silently fail.
I was actually thinking about this the other day. There’s a few issues that come into play:
a) I want to keep ‘begin’ as compatible with the Ethernet version as possible and don’t want to expose implementation details in the initialisation stage. As an alternative we could have a separate method or property that enabled configuration. But…
b) Moving it into a sketch level change means it has to be set for every sketch and modification of the sketch is required when the board changes. I think this is undesirable. For most people (except those developing the library) keeping the configuration as a define will require the least changes.
c) In theory there might be some possibility for writing an “auto-detect” routine but I’m reluctant to code this up because it also seems like one more thing to go wrong in the name of backward compatibility.
I’m open to suggestions of a solution that will strike the right balance.
Thanks again for your contribution toward the library.
–Philip;