forked from adamfeuer/WiShield
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
UDPApp sketch is a simple network application which demonstrates the use of UDP protocol for communication with other network devices.
- Loading branch information
Showing
7 changed files
with
266 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/* | ||
* Web Server | ||
* | ||
* A simple web server example using the WiShield 1.0 | ||
*/ | ||
|
||
#include <WiShield.h> | ||
|
||
#define WIRELESS_MODE_INFRA 1 | ||
#define WIRELESS_MODE_ADHOC 2 | ||
|
||
// Wireless configuration parameters ---------------------------------------- | ||
unsigned char local_ip[] = {192,168,1,2}; // IP address of WiShield | ||
unsigned char gateway_ip[] = {192,168,1,1}; // router or gateway IP address | ||
unsigned char subnet_mask[] = {255,255,255,0}; // subnet mask for the local network | ||
const prog_char ssid[] PROGMEM = {"ASYNCLABS"}; // max 32 bytes | ||
|
||
unsigned char security_type = 0; // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2 | ||
|
||
// WPA/WPA2 passphrase | ||
const prog_char security_passphrase[] PROGMEM = {"12345678"}; // max 64 characters | ||
|
||
// WEP 128-bit keys | ||
// sample HEX keys | ||
prog_uchar wep_keys[] PROGMEM = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 2 | ||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Key 3 | ||
}; | ||
|
||
// setup the wireless mode | ||
// infrastructure - connect to AP | ||
// adhoc - connect to another WiFi device | ||
unsigned char wireless_mode = WIRELESS_MODE_INFRA; | ||
|
||
unsigned char ssid_len; | ||
unsigned char security_passphrase_len; | ||
//--------------------------------------------------------------------------- | ||
|
||
void setup() | ||
{ | ||
WiFi.init(); | ||
} | ||
|
||
// This is the webpage that is served up by the webserver | ||
const prog_char webpage[] PROGMEM = {"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<center><h1>Hello World!! I am WiShield</h1><form method=\"get\" action=\"0\">Toggle LED:<input type=\"submit\" name=\"0\" value=\"LED1\"></input></form></center>"}; | ||
|
||
void loop() | ||
{ | ||
WiFi.run(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
|
||
/****************************************************************************** | ||
Filename: udpapp.h | ||
Description: UDP app for the WiShield 1.0 | ||
****************************************************************************** | ||
TCP/IP stack and driver for the WiShield 1.0 wireless devices | ||
Copyright(c) 2009 Async Labs Inc. All rights reserved. | ||
This program is free software; you can redistribute it and/or modify it | ||
under the terms of version 2 of the GNU General Public License as | ||
published by the Free Software Foundation. | ||
This program is distributed in the hope that it will be useful, but WITHOUT | ||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
more details. | ||
You should have received a copy of the GNU General Public License along with | ||
this program; if not, write to the Free Software Foundation, Inc., 59 | ||
Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
Contact Information: | ||
<[email protected]> | ||
Author Date Comment | ||
--------------------------------------------------------------- | ||
AsyncLabs 07/11/2009 Initial version | ||
*****************************************************************************/ | ||
|
||
#include "uip.h" | ||
#include <string.h> | ||
#include "udpapp.h" | ||
#include "config.h" | ||
|
||
#define STATE_INIT 0 | ||
#define STATE_LISTENING 1 | ||
#define STATE_HELLO_RECEIVED 2 | ||
#define STATE_NAME_RECEIVED 3 | ||
|
||
static struct udpapp_state s; | ||
|
||
void dummy_app_appcall(void) | ||
{ | ||
} | ||
|
||
void udpapp_init(void) | ||
{ | ||
uip_ipaddr_t addr; | ||
struct uip_udp_conn *c; | ||
|
||
uip_ipaddr(&addr, 192,168,1,100); | ||
c = uip_udp_new(&addr, HTONS(0)); | ||
if(c != NULL) { | ||
uip_udp_bind(c, HTONS(12344)); | ||
} | ||
|
||
s.state = STATE_INIT; | ||
|
||
PT_INIT(&s.pt); | ||
} | ||
|
||
static unsigned char parse_msg(void) | ||
{ | ||
if (memcmp(uip_appdata, "Hello", 5) == 0) { | ||
return 1; | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
static void send_request(void) | ||
{ | ||
char str[] = "Hello. What is your name?\n"; | ||
|
||
memcpy(uip_appdata, str, strlen(str)); | ||
uip_send(uip_appdata, strlen(str)); | ||
} | ||
|
||
static void send_response(void) | ||
{ | ||
char i = 0; | ||
char str[] = "Hello "; | ||
|
||
while ( ( ((char*)uip_appdata)[i] != '\n') && i < 9) { | ||
s.inputbuf[i] = ((char*)uip_appdata)[i]; | ||
i++; | ||
} | ||
s.inputbuf[i] = '\n'; | ||
|
||
memcpy(uip_appdata, str, 6); | ||
memcpy(uip_appdata+6, s.inputbuf, i+1); | ||
uip_send(uip_appdata, i+7); | ||
} | ||
|
||
static PT_THREAD(handle_connection(void)) | ||
{ | ||
PT_BEGIN(&s.pt); | ||
|
||
s.state = STATE_LISTENING; | ||
|
||
do { | ||
PT_WAIT_UNTIL(&s.pt, uip_newdata()); | ||
|
||
if(uip_newdata() && parse_msg()) { | ||
s.state = STATE_HELLO_RECEIVED; | ||
uip_flags &= (~UIP_NEWDATA); | ||
break; | ||
} | ||
} while(s.state != STATE_HELLO_RECEIVED); | ||
|
||
do { | ||
send_request(); | ||
PT_WAIT_UNTIL(&s.pt, uip_newdata()); | ||
|
||
if(uip_newdata()) { | ||
s.state = STATE_NAME_RECEIVED; | ||
uip_flags &= (~UIP_NEWDATA); | ||
break; | ||
} | ||
} while(s.state != STATE_NAME_RECEIVED); | ||
|
||
send_response(); | ||
|
||
s.state = STATE_INIT; | ||
|
||
PT_END(&s.pt); | ||
} | ||
|
||
void udpapp_appcall(void) | ||
{ | ||
handle_connection(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
|
||
/****************************************************************************** | ||
Filename: udpapp.h | ||
Description: UDP app for the WiShield 1.0 | ||
****************************************************************************** | ||
TCP/IP stack and driver for the WiShield 1.0 wireless devices | ||
Copyright(c) 2009 Async Labs Inc. All rights reserved. | ||
This program is free software; you can redistribute it and/or modify it | ||
under the terms of version 2 of the GNU General Public License as | ||
published by the Free Software Foundation. | ||
This program is distributed in the hope that it will be useful, but WITHOUT | ||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
more details. | ||
You should have received a copy of the GNU General Public License along with | ||
this program; if not, write to the Free Software Foundation, Inc., 59 | ||
Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
Contact Information: | ||
<[email protected]> | ||
Author Date Comment | ||
--------------------------------------------------------------- | ||
AsyncLabs 07/11/2009 Initial version | ||
*****************************************************************************/ | ||
|
||
#ifndef __UDPAPP_H__ | ||
#define __UDPAPP_H__ | ||
|
||
#include "pt.h" | ||
|
||
typedef struct socket_app_state { | ||
char name; | ||
} uip_tcp_appstate_t; | ||
|
||
void dummy_app_appcall(void); | ||
#ifndef UIP_APPCALL | ||
#define UIP_APPCALL dummy_app_appcall | ||
#endif /* UIP_APPCALL */ | ||
|
||
typedef struct udpapp_state { | ||
struct pt pt; | ||
char state; | ||
char inputbuf[10]; | ||
} uip_udp_appstate_t; | ||
|
||
void udpapp_appcall(void); | ||
#ifndef UIP_UDP_APPCALL | ||
#define UIP_UDP_APPCALL udpapp_appcall | ||
#endif /* UIP_UDP_APPCALL */ | ||
|
||
void udpapp_init(void); | ||
|
||
#endif /* __UDPAPP_H__ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters