diff options
Diffstat (limited to 'Libraries/WiShield/examples/UDPApp')
| -rw-r--r-- | Libraries/WiShield/examples/UDPApp/UDPApp.pde | 48 | ||||
| -rw-r--r-- | Libraries/WiShield/examples/UDPApp/udpapp.c | 137 | ||||
| -rw-r--r-- | Libraries/WiShield/examples/UDPApp/udpapp.c~ | 137 |
3 files changed, 322 insertions, 0 deletions
diff --git a/Libraries/WiShield/examples/UDPApp/UDPApp.pde b/Libraries/WiShield/examples/UDPApp/UDPApp.pde new file mode 100644 index 0000000..92a0cf1 --- /dev/null +++ b/Libraries/WiShield/examples/UDPApp/UDPApp.pde @@ -0,0 +1,48 @@ +/* + * UDP endpoint + * + * A simple UDP endpoint 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(); +} + +void loop() +{ + WiFi.run(); +} diff --git a/Libraries/WiShield/examples/UDPApp/udpapp.c b/Libraries/WiShield/examples/UDPApp/udpapp.c new file mode 100644 index 0000000..cdf2d28 --- /dev/null +++ b/Libraries/WiShield/examples/UDPApp/udpapp.c @@ -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: + <asynclabs@asynclabs.com> + + 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,23); + 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(); +} diff --git a/Libraries/WiShield/examples/UDPApp/udpapp.c~ b/Libraries/WiShield/examples/UDPApp/udpapp.c~ new file mode 100644 index 0000000..f019164 --- /dev/null +++ b/Libraries/WiShield/examples/UDPApp/udpapp.c~ @@ -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: + <asynclabs@asynclabs.com> + + 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(); +} |
