diff --git a/branches/follower/wiz810mj/src/demo/WizDemo2/WizDemo2.pde b/branches/follower/wiz810mj/src/demo/WizDemo2/WizDemo2.pde index 05340c2..5d717f7 100644 --- a/branches/follower/wiz810mj/src/demo/WizDemo2/WizDemo2.pde +++ b/branches/follower/wiz810mj/src/demo/WizDemo2/WizDemo2.pde @@ -4,40 +4,40 @@ See: - + Current features: - * Initial W5100 driver port: - - + new-style network configuration - - + socket creation/listening/closing - - + Sending/Receiving okay - - + example "echo" server (no longer) - - + example "web server" with LED flash. + * Initial W5100 driver port: + + + new-style network configuration + + + socket creation/listening/closing + + + Sending/Receiving okay + + + example "echo" server (no longer) + + + example "web server" with LED flash. - * Terrible hacked-together code + * Terrible hacked-together code Author: - follower@rancidbacon.com - - License: + follower@rancidbacon.com - LGPL - + License: + + LGPL + Version: - 20071106-0005+ - + 20071106-0005+ + */ #include - +#include // Define SPI-related pins @@ -56,7 +56,7 @@ byte ip[6]; void configureSPI() { /* - Configure pins and registers required for SPI communication. + Configure pins and registers required for SPI communication. */ @@ -69,16 +69,16 @@ void configureSPI() { digitalWrite(PIN_SLAVE_SELECT, HIGH); // Disable slave /* - Configure SPI Control Register (SPCR) (All values initially 0) - Bit Description - 7 SPI Interrupt Enable -- disable (SPIE --> 0) - 6 SPI Enable -- enable (SPE --> 1) - 5 Data Order -- MSB 1st (DORD --> 0) (Slave specific) - 4 Master/Slave Select -- master (MSTR --> 1) - 3 Clock Polarity -- (CPOL --> 0) (Slave specific) ("Mode") - 2 Clock Phase -- (CPHA --> 0) (Slave specific) - 1 SPI Clock Rate Select 1 -- } (SPR1 --> 0) - 0 SPI Clock Rate Select 0 -- } fOSC/4 (SPR0 --> 0) ("Fastest" but see SPI2X in SPSR) + Configure SPI Control Register (SPCR) (All values initially 0) + Bit Description + 7 SPI Interrupt Enable -- disable (SPIE --> 0) + 6 SPI Enable -- enable (SPE --> 1) + 5 Data Order -- MSB 1st (DORD --> 0) (Slave specific) + 4 Master/Slave Select -- master (MSTR --> 1) + 3 Clock Polarity -- (CPOL --> 0) (Slave specific) ("Mode") + 2 Clock Phase -- (CPHA --> 0) (Slave specific) + 1 SPI Clock Rate Select 1 -- } (SPR1 --> 0) + 0 SPI Clock Rate Select 0 -- } fOSC/4 (SPR0 --> 0) ("Fastest" but see SPI2X in SPSR) */ SPCR = (1< "); - Serial.print("send result: "); + SPrint("send result: "); //Serial.println(send(testSocket, buffer, 6), DEC); Serial.println(send(testSocket, buffer, strlen((char *)buffer)), DEC); } @@ -181,38 +181,39 @@ void sendPrompt(uint8_t *buffer) { // {Socket targetSocket, ) { void sendBanner(uint8_t *buffer, int ledState) { // {Socket targetSocket, ) { //strcpy((char *) buffer, "Content-Type: text/plain\n\nfoo!\n"); - strcpy((char *) buffer, "HTTP/1.1 200 OK\n\rContent-Type: text/html\n\r\n\rfoo!\n\r"); if (ledState) { + strcpy((char *) buffer, "HTTP/1.1 200 OK\n\rContent-Type: text/html\n\r\n\rfoo!\n\r"); buffer[66] = 'F'; } else { - buffer[68] = 'F'; + strcpy((char *) buffer, "HTTP/1.1 200 OK\n\rContent-Type: text/html\n\r\n\rbar!\n\r"); + buffer[68] = 'F'; } - - Serial.print("send result: "); + + SPrint("send result: "); Serial.println(send(testSocket, buffer, strlen((char *)buffer)), DEC); } void loop() { - Serial.println("Test W5100 socket..."); + SPrintln("Test W5100 socket..."); - Serial.print("Create socket result: "); + SPrint("Create socket result: "); Serial.println(socket(testSocket, Sn_MR_TCP, 80, 0), DEC); - Serial.print("Socket status: "); + SPrint("Socket status: "); Serial.println(IINCHIP_READ(Sn_SR(testSocket)), HEX); if (IINCHIP_READ(Sn_SR(testSocket)) == SOCK_CLOSED) { - Serial.println("Socket still closed, waiting..."); + SPrintln("Socket still closed, waiting..."); while (IINCHIP_READ(Sn_SR(testSocket)) == SOCK_CLOSED) { //pass } } - Serial.print("Listen on socket result: "); + SPrint("Listen on socket result: "); Serial.println(listen(testSocket), DEC); - - Serial.println("Waiting for connection..."); + + SPrintln("Waiting for connection..."); while (getSn_SR(testSocket) == SOCK_LISTEN) { delay(500); @@ -222,7 +223,7 @@ void loop() { getSn_DIPR(testSocket, ip); - Serial.print("Destination IP read (last digit): "); + SPrint("Destination IP read (last digit): "); Serial.println(ip[3], DEC); @@ -256,71 +257,71 @@ void loop() { while (getSn_SR(testSocket) == SOCK_ESTABLISHED) { while (getSn_RX_RSR(testSocket) > 0) { - recv(testSocket, bytesReceived, 1); - theByte = bytesReceived[0]; - //Serial.print(bytesReceived[0], BYTE); - Serial.print(theByte, BYTE); - if ((state == STATE_G) && (theByte == 'G')) { - state = STATE_E; - } else if ((state == STATE_E) && (theByte == 'E')) { - state = STATE_T; - } else if ((state == STATE_T) && (theByte == 'T')) { - state = STATE_SPACE; - } else if ((state == STATE_SPACE) && (theByte == ' ')) { - state = STATE_SLASH; - } else if ((state == STATE_SLASH) && (theByte == '/')) { - state = STATE_READ; - } else if ((state == STATE_READ) && (theByte == '0')) { - digitalWrite(PIN_LED, LOW); - ledState = 0; - //state = STATE_END; - delay(100); - } else if ((state == STATE_READ) && (theByte == '1')) { - digitalWrite(PIN_LED, HIGH); - ledState = 1; - //state = STATE_END; - delay(100); - } else if (state == STATE_READ) { - // It's not a valid byte. - state = STATE_END; - } else { - state = STATE_ERR; - } - - if ((state == STATE_ERR) || (state == STATE_END)) { - Serial.println(""); - break; - } - - /* - dataLength = getSn_RX_RSR(testSocket); - - if (dataLength >= MAX_RX_BUFFER_SIZE) { // TODO: blah, blah... - dataLength = MAX_RX_BUFFER_SIZE-1; - } - // Serial.print("dataLength: "); Serial.println(dataLength, HEX); - //Serial.print("recv result: "); - //Serial.println(recv(testSocket, bytesReceived, dataLength), DEC); // NOTE: Throws away unread portion? No? - recv(testSocket, bytesReceived, dataLength); // TODO: Return length? - bytesReceived[dataLength]=0x00; - Serial.print((char *)bytesReceived); - - //Serial.print("send result: "); - //Serial.println(send(testSocket, bytesReceived, dataLength), DEC); - - //sendPrompt(bytesReceived); - */ + recv(testSocket, bytesReceived, 1); + theByte = bytesReceived[0]; + //Serial.print(bytesReceived[0], BYTE); + Serial.print(theByte, BYTE); + if ((state == STATE_G) && (theByte == 'G')) { + state = STATE_E; + } else if ((state == STATE_E) && (theByte == 'E')) { + state = STATE_T; + } else if ((state == STATE_T) && (theByte == 'T')) { + state = STATE_SPACE; + } else if ((state == STATE_SPACE) && (theByte == ' ')) { + state = STATE_SLASH; + } else if ((state == STATE_SLASH) && (theByte == '/')) { + state = STATE_READ; + } else if ((state == STATE_READ) && (theByte == '0')) { + digitalWrite(PIN_LED, LOW); + ledState = 0; + //state = STATE_END; + delay(100); + } else if ((state == STATE_READ) && (theByte == '1')) { + digitalWrite(PIN_LED, HIGH); + ledState = 1; + //state = STATE_END; + delay(100); + } else if (state == STATE_READ) { + // It's not a valid byte. + state = STATE_END; + } else { + state = STATE_ERR; + } + if ((state == STATE_ERR) || (state == STATE_END)) { + SPrintln(""); + break; + } + + /* + dataLength = getSn_RX_RSR(testSocket); + + if (dataLength >= MAX_RX_BUFFER_SIZE) { // TODO: blah, blah... + dataLength = MAX_RX_BUFFER_SIZE-1; + } + // SPrint("dataLength: "); Serial.println(dataLength, HEX); + //SPrint("recv result: "); + //Serial.println(recv(testSocket, bytesReceived, dataLength), DEC); // NOTE: Throws away unread portion? No? + recv(testSocket, bytesReceived, dataLength); // TODO: Return length? + bytesReceived[dataLength]=0x00; + Serial.print((char *)bytesReceived); + + //SPrint("send result: "); + //Serial.println(send(testSocket, bytesReceived, dataLength), DEC); + + //sendPrompt(bytesReceived); + */ + } sendBanner(bytesToSend, ledState); //sendPrompt(bytesReceived); break; } - - disconnect(testSocket); + close(testSocket); - - Serial.println("End test W5100 socket..."); + disconnect(testSocket); + + SPrintln("End test W5100 socket...");