| 11 | | * Initial W5100 driver port: |
| 12 | | |
| 13 | | + new-style network configuration |
| 14 | | |
| 15 | | + socket creation/listening/closing |
| 16 | | |
| 17 | | + Sending/Receiving okay |
| 18 | | |
| 19 | | + example "echo" server (no longer) |
| 20 | | |
| 21 | | + example "web server" with LED flash. |
| 22 | | |
| 23 | | * Terrible hacked-together code |
| | 11 | * Initial W5100 driver port: |
| | 12 | |
| | 13 | + new-style network configuration |
| | 14 | |
| | 15 | + socket creation/listening/closing |
| | 16 | |
| | 17 | + Sending/Receiving okay |
| | 18 | |
| | 19 | + example "echo" server (no longer) |
| | 20 | |
| | 21 | + example "web server" with LED flash. |
| | 22 | |
| | 23 | * Terrible hacked-together code |
| 72 | | Configure SPI Control Register (SPCR) (All values initially 0) |
| 73 | | Bit Description |
| 74 | | 7 SPI Interrupt Enable -- disable (SPIE --> 0) |
| 75 | | 6 SPI Enable -- enable (SPE --> 1) |
| 76 | | 5 Data Order -- MSB 1st (DORD --> 0) (Slave specific) |
| 77 | | 4 Master/Slave Select -- master (MSTR --> 1) |
| 78 | | 3 Clock Polarity -- (CPOL --> 0) (Slave specific) ("Mode") |
| 79 | | 2 Clock Phase -- (CPHA --> 0) (Slave specific) |
| 80 | | 1 SPI Clock Rate Select 1 -- } (SPR1 --> 0) |
| 81 | | 0 SPI Clock Rate Select 0 -- } fOSC/4 (SPR0 --> 0) ("Fastest" but see SPI2X in SPSR) |
| | 72 | Configure SPI Control Register (SPCR) (All values initially 0) |
| | 73 | Bit Description |
| | 74 | 7 SPI Interrupt Enable -- disable (SPIE --> 0) |
| | 75 | 6 SPI Enable -- enable (SPE --> 1) |
| | 76 | 5 Data Order -- MSB 1st (DORD --> 0) (Slave specific) |
| | 77 | 4 Master/Slave Select -- master (MSTR --> 1) |
| | 78 | 3 Clock Polarity -- (CPOL --> 0) (Slave specific) ("Mode") |
| | 79 | 2 Clock Phase -- (CPHA --> 0) (Slave specific) |
| | 80 | 1 SPI Clock Rate Select 1 -- } (SPR1 --> 0) |
| | 81 | 0 SPI Clock Rate Select 0 -- } fOSC/4 (SPR0 --> 0) ("Fastest" but see SPI2X in SPSR) |
| 141 | | Serial.println("Test W5100 configuration..."); |
| 142 | | |
| 143 | | byte config_gateway[] = {192,168,2,101}; |
| 144 | | byte config_subnet_mask[] = {255,255,255,0}; |
| | 141 | SPrintln("Test W5100 configuration..."); |
| | 142 | |
| | 143 | byte config_gateway[] = {192,168,0.1}; |
| | 144 | byte config_subnet_mask[] = {255,255,0,0}; |
| 259 | | recv(testSocket, bytesReceived, 1); |
| 260 | | theByte = bytesReceived[0]; |
| 261 | | //Serial.print(bytesReceived[0], BYTE); |
| 262 | | Serial.print(theByte, BYTE); |
| 263 | | if ((state == STATE_G) && (theByte == 'G')) { |
| 264 | | state = STATE_E; |
| 265 | | } else if ((state == STATE_E) && (theByte == 'E')) { |
| 266 | | state = STATE_T; |
| 267 | | } else if ((state == STATE_T) && (theByte == 'T')) { |
| 268 | | state = STATE_SPACE; |
| 269 | | } else if ((state == STATE_SPACE) && (theByte == ' ')) { |
| 270 | | state = STATE_SLASH; |
| 271 | | } else if ((state == STATE_SLASH) && (theByte == '/')) { |
| 272 | | state = STATE_READ; |
| 273 | | } else if ((state == STATE_READ) && (theByte == '0')) { |
| 274 | | digitalWrite(PIN_LED, LOW); |
| 275 | | ledState = 0; |
| 276 | | //state = STATE_END; |
| 277 | | delay(100); |
| 278 | | } else if ((state == STATE_READ) && (theByte == '1')) { |
| 279 | | digitalWrite(PIN_LED, HIGH); |
| 280 | | ledState = 1; |
| 281 | | //state = STATE_END; |
| 282 | | delay(100); |
| 283 | | } else if (state == STATE_READ) { |
| 284 | | // It's not a valid byte. |
| 285 | | state = STATE_END; |
| 286 | | } else { |
| 287 | | state = STATE_ERR; |
| 288 | | } |
| 289 | | |
| 290 | | if ((state == STATE_ERR) || (state == STATE_END)) { |
| 291 | | Serial.println(""); |
| 292 | | break; |
| 293 | | } |
| 294 | | |
| 295 | | /* |
| 296 | | dataLength = getSn_RX_RSR(testSocket); |
| | 260 | recv(testSocket, bytesReceived, 1); |
| | 261 | theByte = bytesReceived[0]; |
| | 262 | //Serial.print(bytesReceived[0], BYTE); |
| | 263 | Serial.print(theByte, BYTE); |
| | 264 | if ((state == STATE_G) && (theByte == 'G')) { |
| | 265 | state = STATE_E; |
| | 266 | } else if ((state == STATE_E) && (theByte == 'E')) { |
| | 267 | state = STATE_T; |
| | 268 | } else if ((state == STATE_T) && (theByte == 'T')) { |
| | 269 | state = STATE_SPACE; |
| | 270 | } else if ((state == STATE_SPACE) && (theByte == ' ')) { |
| | 271 | state = STATE_SLASH; |
| | 272 | } else if ((state == STATE_SLASH) && (theByte == '/')) { |
| | 273 | state = STATE_READ; |
| | 274 | } else if ((state == STATE_READ) && (theByte == '0')) { |
| | 275 | digitalWrite(PIN_LED, LOW); |
| | 276 | ledState = 0; |
| | 277 | //state = STATE_END; |
| | 278 | delay(100); |
| | 279 | } else if ((state == STATE_READ) && (theByte == '1')) { |
| | 280 | digitalWrite(PIN_LED, HIGH); |
| | 281 | ledState = 1; |
| | 282 | //state = STATE_END; |
| | 283 | delay(100); |
| | 284 | } else if (state == STATE_READ) { |
| | 285 | // It's not a valid byte. |
| | 286 | state = STATE_END; |
| | 287 | } else { |
| | 288 | state = STATE_ERR; |
| | 289 | } |
| 298 | | if (dataLength >= MAX_RX_BUFFER_SIZE) { // TODO: blah, blah... |
| 299 | | dataLength = MAX_RX_BUFFER_SIZE-1; |
| 300 | | } |
| 301 | | // Serial.print("dataLength: "); Serial.println(dataLength, HEX); |
| 302 | | //Serial.print("recv result: "); |
| 303 | | //Serial.println(recv(testSocket, bytesReceived, dataLength), DEC); // NOTE: Throws away unread portion? No? |
| 304 | | recv(testSocket, bytesReceived, dataLength); // TODO: Return length? |
| 305 | | bytesReceived[dataLength]=0x00; |
| 306 | | Serial.print((char *)bytesReceived); |
| 307 | | |
| 308 | | //Serial.print("send result: "); |
| 309 | | //Serial.println(send(testSocket, bytesReceived, dataLength), DEC); |
| 310 | | |
| 311 | | //sendPrompt(bytesReceived); |
| 312 | | */ |
| 313 | | |
| | 291 | if ((state == STATE_ERR) || (state == STATE_END)) { |
| | 292 | SPrintln(""); |
| | 293 | break; |
| | 294 | } |
| | 295 | |
| | 296 | /* |
| | 297 | dataLength = getSn_RX_RSR(testSocket); |
| | 298 | |
| | 299 | if (dataLength >= MAX_RX_BUFFER_SIZE) { // TODO: blah, blah... |
| | 300 | dataLength = MAX_RX_BUFFER_SIZE-1; |
| | 301 | } |
| | 302 | // SPrint("dataLength: "); Serial.println(dataLength, HEX); |
| | 303 | //SPrint("recv result: "); |
| | 304 | //Serial.println(recv(testSocket, bytesReceived, dataLength), DEC); // NOTE: Throws away unread portion? No? |
| | 305 | recv(testSocket, bytesReceived, dataLength); // TODO: Return length? |
| | 306 | bytesReceived[dataLength]=0x00; |
| | 307 | Serial.print((char *)bytesReceived); |
| | 308 | |
| | 309 | //SPrint("send result: "); |
| | 310 | //Serial.println(send(testSocket, bytesReceived, dataLength), DEC); |
| | 311 | |
| | 312 | //sendPrompt(bytesReceived); |
| | 313 | */ |
| | 314 | |