I have one "etherShield" (an Ethernet shield that uses the Microchip ENC28J60 controller) and it does not work with the standard Arduino Ethernet library. It works with the etherShield library (http://www.nuelectronics.com/estore/?p=12
) but is very very painful to write code for it (we need to implement ARP and TCP actions in the "application" layer - you can see examples in http://www.nuelectronics.com/download/projects/etherShield.zip
The good news is that Microchip ENC28J60 is cheaper than WIZnet W5100. So I decided to write a new library (for now it's called Ethernet_ENC28J60) compatible with Arduino Ethernet examples, Ethernet.cpp, Server.cpp and Client.cpp - to do it I'm writing a socket layer that exposes the same API the standard Ethernet library does.
For now I can create a TCP server with some limitations -- but it works! :-) I modified the WebServer example to make it more simple and actually I can complete a HTTP request successfully.
I'm planning to turn it fully-compatible with Arduino Ethernet shield library and want to know if we can merge this code in the Ethernet library when it is done -- so we can support both controllers, with the same code (maybe adding "#define ENC28J60" to application's code so the Ethernet library can switch between the "card driver").
The code is available at GitHub (https://github.com/turicas/Ethernet_ENC28J60
) -- please read the README to know about architecture and other things.
If you want to test, put Ethernet_ENC28J60 at ~/sketchbook/libraries and run the WebServerSimple example (https://github.com/turicas/Ethernet_ENC28J60/blob/master/examples/WebServerSimple/WebServerSimple.pde
). I also created an example that controls a LED using the Web interface (available at https://github.com/turicas/Ethernet_ENC28J60/blob/master/examples/WebServerSimpleLED/WebServerSimpleLED.pde
Please let me know your opinion!
Note: I posted an email about this in the developers mail list but as it wasn't answered, I'm posting here. What is the best place to this kind of topic?