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 Rohm

Committer:
tousaki
Date:
Wed Nov 30 08:10:00 2016 +0000
Revision:
4:720fdca0822c
Parent:
2:59a519fa59d0
Modified comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tousaki 2:59a519fa59d0 1 /* This is a sample application program for GR-PEACH_WlanBP3595AP library. */
tousaki 2:59a519fa59d0 2 /* GR-PEACH_WlanBP3595AP library only works with GR-PEACH. */
tousaki 2:59a519fa59d0 3 /* This sample works as TCP socket sever, and this program sends a message */
tousaki 2:59a519fa59d0 4 /* when a connection is accepted. */
tousaki 2:59a519fa59d0 5
tousaki 2:59a519fa59d0 6 /*
tousaki 4:720fdca0822c 7 Warning!
tousaki 4:720fdca0822c 8 When exporting and using it, increase the following stack size.
tousaki 4:720fdca0822c 9
tousaki 4:720fdca0822c 10 [EthernetInterface/lwip/lwipopts.h]---------
tousaki 4:720fdca0822c 11 #define TCPIP_THREAD_STACKSIZE 1024
tousaki 4:720fdca0822c 12 ->
tousaki 4:720fdca0822c 13 #define TCPIP_THREAD_STACKSIZE 2048
tousaki 4:720fdca0822c 14 --------------------------------------------
tousaki 4:720fdca0822c 15 */
tousaki 4:720fdca0822c 16
tousaki 4:720fdca0822c 17 /*
tousaki 2:59a519fa59d0 18 This works with the following library.
tousaki 2:59a519fa59d0 19 mbed-rtos : revision 115
tousaki 2:59a519fa59d0 20 */
tousaki 0:d1c30577e772 21
tousaki 0:d1c30577e772 22 #include "mbed.h"
tousaki 0:d1c30577e772 23 #include "rtos.h"
tousaki 1:3eae92f063c3 24 #include "GR_PEACH_WlanBP3595.h"
tousaki 0:d1c30577e772 25
tousaki 0:d1c30577e772 26 /* Please change the following macro definition to your setting. */
tousaki 0:d1c30577e772 27 #define WLAN_SSID ("GR-PEACH_WlanTest") // SSID
tousaki 0:d1c30577e772 28 #define WLAN_PSK ("WlanBP3595_PreSharedKey") // PSK(Pre-Shared Key)
tousaki 0:d1c30577e772 29 #define SERVER_IP ("192.168.1.200") // Server IP address
tousaki 0:d1c30577e772 30 #define SERVER_PORT (50000) // TCP server socket port number
tousaki 0:d1c30577e772 31 #define SUBNET_MASK ("255.255.255.0") // Subnet mask
tousaki 0:d1c30577e772 32 #define DEFAULT_GATEWAY ("192.168.1.1") // Default gateway
tousaki 0:d1c30577e772 33 #define SEND_MESSAGE ("Hello, world!\r\n") // Send-message
tousaki 0:d1c30577e772 34
tousaki 0:d1c30577e772 35 static void _wlan_inf_callback(uint8_t ucType, uint16_t usWid, uint16_t usSize, uint8_t *pucData);
tousaki 0:d1c30577e772 36
tousaki 0:d1c30577e772 37 DigitalOut red_led(LED1); // On: error
tousaki 0:d1c30577e772 38 DigitalOut green_led(LED2); // On: WLAN has been connected
tousaki 0:d1c30577e772 39
tousaki 0:d1c30577e772 40 /** Main function
tousaki 0:d1c30577e772 41 *
tousaki 0:d1c30577e772 42 */
tousaki 0:d1c30577e772 43 int main() {
tousaki 1:3eae92f063c3 44 GR_PEACH_WlanBP3595 wlan;
tousaki 0:d1c30577e772 45 TCPSocketServer server;
tousaki 0:d1c30577e772 46 TCPSocketConnection connection;
tousaki 0:d1c30577e772 47 int ret;
tousaki 0:d1c30577e772 48
tousaki 1:3eae92f063c3 49 wlan.setWlanCbFunction(_wlan_inf_callback);
tousaki 1:3eae92f063c3 50
tousaki 1:3eae92f063c3 51 /* Initialize GR_PEACH_WlanBP3595 */
tousaki 1:3eae92f063c3 52 ret = wlan.init(SERVER_IP, SUBNET_MASK, DEFAULT_GATEWAY);
tousaki 0:d1c30577e772 53 if (ret != 0) {
tousaki 0:d1c30577e772 54 /* error */
tousaki 0:d1c30577e772 55 red_led = 1;
tousaki 0:d1c30577e772 56 while (1) { Thread::wait(1000); }
tousaki 0:d1c30577e772 57 }
tousaki 0:d1c30577e772 58
tousaki 1:3eae92f063c3 59 /* Connect(GR_PEACH_WlanBP3595) */
tousaki 1:3eae92f063c3 60 ret = wlan.connect(WLAN_SSID, WLAN_PSK);
tousaki 0:d1c30577e772 61 if (ret != 0) {
tousaki 0:d1c30577e772 62 /* error */
tousaki 0:d1c30577e772 63 red_led = 1;
tousaki 0:d1c30577e772 64 while (1) { Thread::wait(1000); }
tousaki 0:d1c30577e772 65 }
tousaki 0:d1c30577e772 66
tousaki 0:d1c30577e772 67 /* Bind and listen */
tousaki 0:d1c30577e772 68 server.bind(SERVER_PORT);
tousaki 0:d1c30577e772 69 server.listen();
tousaki 0:d1c30577e772 70
tousaki 0:d1c30577e772 71 /* Loop */
tousaki 0:d1c30577e772 72 while (1) {
tousaki 0:d1c30577e772 73 /* Accept */
tousaki 0:d1c30577e772 74 server.accept(connection);
tousaki 0:d1c30577e772 75 printf("Connection from: %s\n", connection.get_address());
tousaki 0:d1c30577e772 76
tousaki 0:d1c30577e772 77 /* Send a message */
tousaki 0:d1c30577e772 78 connection.send_all((char *)SEND_MESSAGE, sizeof(SEND_MESSAGE)-1);
tousaki 0:d1c30577e772 79
tousaki 0:d1c30577e772 80 /* Close */
tousaki 0:d1c30577e772 81 connection.close();
tousaki 0:d1c30577e772 82 }
tousaki 0:d1c30577e772 83 }
tousaki 0:d1c30577e772 84
tousaki 0:d1c30577e772 85 /** WLAN Information callback function
tousaki 0:d1c30577e772 86 *
tousaki 0:d1c30577e772 87 */
tousaki 0:d1c30577e772 88 static void _wlan_inf_callback(uint8_t ucType, uint16_t usWid, uint16_t usSize, uint8_t *pucData)
tousaki 0:d1c30577e772 89 {
tousaki 1:3eae92f063c3 90 if (ucType == 'I') {
tousaki 1:3eae92f063c3 91 if (usWid == 0x0005) { // WID_STATUS
tousaki 1:3eae92f063c3 92 if (pucData[0] == 0x01) { // CONNECTED
tousaki 0:d1c30577e772 93 green_led = 1;
tousaki 1:3eae92f063c3 94 } else {
tousaki 0:d1c30577e772 95 green_led = 0;
tousaki 0:d1c30577e772 96 }
tousaki 0:d1c30577e772 97 }
tousaki 0:d1c30577e772 98 }
tousaki 0:d1c30577e772 99 }
tousaki 0:d1c30577e772 100