diff options
| author | Perry Hung <iperry@alum.mit.edu> | 2010-06-04 18:01:16 -0400 |
|---|---|---|
| committer | Perry Hung <iperry@alum.mit.edu> | 2010-06-11 15:12:01 -0400 |
| commit | 32d4a18a16afc5d3416ff602b008308ab373a89e (patch) | |
| tree | 55cd4aab7388bfc270c50819b35bd9408a5f51d9 /libraries/ethernet/w5100.cpp | |
| parent | 59728136a7374b358fb599d69b09497a21119133 (diff) | |
basic socket interfaceethernet-shield
Diffstat (limited to 'libraries/ethernet/w5100.cpp')
| -rw-r--r-- | libraries/ethernet/w5100.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/libraries/ethernet/w5100.cpp b/libraries/ethernet/w5100.cpp new file mode 100644 index 0000000..8c6551d --- /dev/null +++ b/libraries/ethernet/w5100.cpp @@ -0,0 +1,51 @@ +#include "wirish.h" +#include "w5100.h" + + +extern HardwareSPI spi; + +void w5100_init(k) { + +} + +void w5100_reset(void) { + w5100_write(MR, MR_RST); +} + +void w5100_write_buf(uint16 addr, uint8 *buf, uint8 len) { + uint32 i; + for (i = 0; i < len; i++) { + w5100_write(addr + i, buf[i]); + } +} + +void w5100_read_buf(uint16 addr, uint8 *buf, uint8 len) { + uint32 i; + for (i = 0; i < len; i++) { + buf[i] = w5100_read(addr + i); + } +} + +uint8 w5100_send_cmd(uint8 opcode, uint16 addr, uint8 data) { + uint8 buf[4]; + uint8 rc = 0; + + buf[0] = opcode; + buf[1] = (addr >> 8); + buf[2] = (addr & 0xFF); + buf[3] = data; + + digitalWrite(SS, LOW); + rc = spi.send(buf, 4); + digitalWrite(SS, HIGH); + +#ifdef SPI_DEBUG + if (opcode == OPCODE_WRITE) { + iprintf("\tWrite: 0x%04x = 0x%x\n", addr, data); + } else { + iprintf("\tRead: 0x%04x = 0x%x\n", addr, rc); + } +#endif + + return rc; +} |
