This is a sample application program for GR-PEACH_WlanBP3595AP library. GR-PEACH_WlanBP3595AP library only works with GR-PEACH. This sample works as TCP socket sever, and this program sends a message when a connection is accepted.
Dependencies: EthernetInterface GR-PEACH_WlanBP3595AP mbed-rtos mbed
Fork of GR-PEACH_WlanBP3595AP_sample by
Revision 0:d1c30577e772, committed 2015-12-25
- Comitter:
- tousaki
- Date:
- Fri Dec 25 08:28:10 2015 +0000
- Child:
- 1:3eae92f063c3
- Commit message:
- Created 1st version.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EthernetInterface_GR-PEACH_WlanBP3595AP.lib Fri Dec 25 08:28:10 2015 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/Rohm/code/EthernetInterface_GR-PEACH_WlanBP3595AP/#86da568fe761
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Dec 25 08:28:10 2015 +0000 @@ -0,0 +1,172 @@ +/* This is a sample application program for WlanBP3595 library. */ +/* This program works as TCP socket sever, and this program sends a message */ +/* when a connection is accepted. The setting of the WLAN is WPA2+AES. */ + +/* +This program works with the following libraries. + mbed-rtos : revision 84 + EthernetInterface_GR-PEACH_WlanBP3595AP : revision 50 +*/ + +#include "mbed.h" +#include "rtos.h" +#include "EthernetInterface.h" +#include "WlanBP3595.h" + +/* Please change the following macro definition to your setting. */ +#define WLAN_SSID ("GR-PEACH_WlanTest") // SSID +#define WLAN_PSK ("WlanBP3595_PreSharedKey") // PSK(Pre-Shared Key) +#define SERVER_IP ("192.168.1.200") // Server IP address +#define SERVER_PORT (50000) // TCP server socket port number +#define SUBNET_MASK ("255.255.255.0") // Subnet mask +#define DEFAULT_GATEWAY ("192.168.1.1") // Default gateway +#define CONNECT_TIMEOUT (3*60*1000) // Connect-Timeout in ms +#define SEND_MESSAGE ("Hello, world!\r\n") // Send-message + +static void _wlan_inf_callback(uint8_t ucType, uint16_t usWid, uint16_t usSize, uint8_t *pucData); +static int _wlan_connect(void); + +DigitalOut red_led(LED1); // On: error +DigitalOut green_led(LED2); // On: WLAN has been connected + +/** Main function + * + */ +int main() { + EthernetInterface eth; + TCPSocketServer server; + TCPSocketConnection connection; + uint32_t status; + int ret; + + /* Initialize WlanBP3595 */ + ret = WlanBP3595_Init(_wlan_inf_callback); + if (ret != 0) { + /* error */ + red_led = 1; + while (1) { Thread::wait(1000); } + } + + /* Wait until WLAN_BP3595_START */ + while (1) { + Thread::wait(200); + status = WlanBP3595_GetWlanSts(); + if (status == WLAN_BP3595_START) { + break; + } + } + + /* Initialize EthernetInterface */ + ret = eth.init(SERVER_IP, SUBNET_MASK, DEFAULT_GATEWAY); + if (ret != 0) { + /* error */ + red_led = 1; + while (1) { Thread::wait(1000); } + } + + /* Connect(WLAN) */ + ret = _wlan_connect(); + if (ret != 0) { + /* error */ + red_led = 1; + while (1) { Thread::wait(1000); } + } + + /* Connect(EthernetInterface) */ + ret = eth.connect(CONNECT_TIMEOUT); + if (ret != 0) { + /* error */ + red_led = 1; + while (1) { Thread::wait(1000); } + } + + /* Bind and listen */ + server.bind(SERVER_PORT); + server.listen(); + + /* Loop */ + while (1) { + /* Accept */ + server.accept(connection); + printf("Connection from: %s\n", connection.get_address()); + + /* Send a message */ + connection.send_all((char *)SEND_MESSAGE, sizeof(SEND_MESSAGE)-1); + + /* Close */ + connection.close(); + } +} + +/** WLAN Information callback function + * + */ +static void _wlan_inf_callback(uint8_t ucType, uint16_t usWid, uint16_t usSize, uint8_t *pucData) +{ + if (ucType == 'I') + { + if (usWid == 0x0005) // WID_STATUS + { + if (pucData[0] == 0x01) // CONNECTED + { + /* Notify the EthernetInterface driver that WLAN has been connected */ + WlanBP3595_Connected(); + green_led = 1; + } + else + { + /* Notify the EthernetInterface driver that WLAN has been disconnected */ + WlanBP3595_Disconnected(); + green_led = 0; + } + } + } +} + +/** WLAN connecting function + * + */ +static int _wlan_connect(void) +{ + grp_u8 ucWidData8; // 8bit wid data + grp_wld_byte_array tBAWidData; // byte array wid data + int ret; + + /* Set BSS type */ + ucWidData8 = 0x02; // AP(Access Point) + ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_BSS_TYPE, &ucWidData8); + if (ret != 0) { + /* error */ + return -1; + } + + /* Set SSID */ + tBAWidData.pucData = (grp_u8 *)WLAN_SSID; + tBAWidData.ulSize = strlen((char *)tBAWidData.pucData); + ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_SSID, &tBAWidData); + if (ret != 0) { + /* error */ + return -1; + } + + /* Set 11i mode */ + ucWidData8 = 0x01 | // Encryption is enable + 0x10 | // WPA2 is enable + 0x20; // CCMP(AES) is enable + ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_11I_MODE, &ucWidData8); + if (ret != 0) { + /* error */ + return -1; + } + + /* Set PSK */ + tBAWidData.pucData = (grp_u8 *)WLAN_PSK; + tBAWidData.ulSize = strlen((char *)tBAWidData.pucData); + ret = WlanBP3595_Ioctl(GRP_WLD_IOCTL_SET_11I_PSK, &tBAWidData); + if (ret != 0) { + /* error */ + return -1; + } + + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Fri Dec 25 08:28:10 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#143955ffb790
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Dec 25 08:28:10 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/4336505e4b1c \ No newline at end of file