Small demo to purely test UDP, depends on the module already being configured to auto connect to an access point

Dependencies:   USBDevice cc3000_hostdriver_mbedsocket mbed

Fork of WifiDipCortex-UDPDemo by Carl - SolderSplash Labs

Wifi-DipCortex - Test application that shows you how to listen for UDP message on one port while sending messages on another

- Listens on UDP_LISTEN_PORT, upon data being recvied it can be found in UDP_RecvBuffer - Transmits UDP_TX_Buffer on UDP_TARGET_PORT to UDP_TARGET_IP

Committer:
SolderSplashLabs
Date:
Tue Jul 08 18:56:37 2014 +0000
Revision:
0:ff40ad3448c5
Child:
1:5fa4efb214e7
WifiDipCortex - UDP Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SolderSplashLabs 0:ff40ad3448c5 1 #include "mbed.h"
SolderSplashLabs 0:ff40ad3448c5 2 #include "cc3000.h"
SolderSplashLabs 0:ff40ad3448c5 3 #include "wifi.h"
SolderSplashLabs 0:ff40ad3448c5 4 #include "UDPSocket.h"
SolderSplashLabs 0:ff40ad3448c5 5 #include "USBSerial.h"
SolderSplashLabs 0:ff40ad3448c5 6
SolderSplashLabs 0:ff40ad3448c5 7 using namespace mbed_cc3000;
SolderSplashLabs 0:ff40ad3448c5 8
SolderSplashLabs 0:ff40ad3448c5 9 #define SERIAL_BAUD_RATE 115200
SolderSplashLabs 0:ff40ad3448c5 10
SolderSplashLabs 0:ff40ad3448c5 11 cc3000 wifi(p28, p27, p30, SPI(p21, p14, p37));
SolderSplashLabs 0:ff40ad3448c5 12 Serial uart(p19, p20);
SolderSplashLabs 0:ff40ad3448c5 13
SolderSplashLabs 0:ff40ad3448c5 14 // USB CDC serial port
SolderSplashLabs 0:ff40ad3448c5 15 USBSerial pc;
SolderSplashLabs 0:ff40ad3448c5 16
SolderSplashLabs 0:ff40ad3448c5 17 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 18 /*!
SolderSplashLabs 0:ff40ad3448c5 19 @brief WaitForConnection
SolderSplashLabs 0:ff40ad3448c5 20 */
SolderSplashLabs 0:ff40ad3448c5 21 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 22 void WaitForConnection ( void )
SolderSplashLabs 0:ff40ad3448c5 23 {
SolderSplashLabs 0:ff40ad3448c5 24 tNetappIpconfigRetArgs ipinfo;
SolderSplashLabs 0:ff40ad3448c5 25
SolderSplashLabs 0:ff40ad3448c5 26 while (! ( wifi.is_dhcp_configured() ) )
SolderSplashLabs 0:ff40ad3448c5 27 {
SolderSplashLabs 0:ff40ad3448c5 28 // Still not connected
SolderSplashLabs 0:ff40ad3448c5 29 pc.printf("No Connection\r\n");
SolderSplashLabs 0:ff40ad3448c5 30 wait(1);
SolderSplashLabs 0:ff40ad3448c5 31 }
SolderSplashLabs 0:ff40ad3448c5 32
SolderSplashLabs 0:ff40ad3448c5 33 if (( wifi.is_enabled() ) && ( wifi.is_dhcp_configured() ))
SolderSplashLabs 0:ff40ad3448c5 34 {
SolderSplashLabs 0:ff40ad3448c5 35 wifi.get_ip_config(&ipinfo);
SolderSplashLabs 0:ff40ad3448c5 36 }
SolderSplashLabs 0:ff40ad3448c5 37
SolderSplashLabs 0:ff40ad3448c5 38 pc.printf("Connected to (%s) %s \r\n", ipinfo.uaSSID, wifi.getIPAddress());
SolderSplashLabs 0:ff40ad3448c5 39
SolderSplashLabs 0:ff40ad3448c5 40 }
SolderSplashLabs 0:ff40ad3448c5 41
SolderSplashLabs 0:ff40ad3448c5 42 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 43 /*!
SolderSplashLabs 0:ff40ad3448c5 44 @brief WaitForUser
SolderSplashLabs 0:ff40ad3448c5 45 */
SolderSplashLabs 0:ff40ad3448c5 46 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 47 void WaitForUser ( void )
SolderSplashLabs 0:ff40ad3448c5 48 {
SolderSplashLabs 0:ff40ad3448c5 49 char charIn;
SolderSplashLabs 0:ff40ad3448c5 50
SolderSplashLabs 0:ff40ad3448c5 51 pc.printf("Press Enter to Continue\r\n");
SolderSplashLabs 0:ff40ad3448c5 52
SolderSplashLabs 0:ff40ad3448c5 53 while (1)
SolderSplashLabs 0:ff40ad3448c5 54 {
SolderSplashLabs 0:ff40ad3448c5 55 charIn = pc.getc();
SolderSplashLabs 0:ff40ad3448c5 56
SolderSplashLabs 0:ff40ad3448c5 57 pc.printf("%c", charIn);
SolderSplashLabs 0:ff40ad3448c5 58 if ((charIn == '\n') || (charIn == '\r'))
SolderSplashLabs 0:ff40ad3448c5 59 {
SolderSplashLabs 0:ff40ad3448c5 60 break;
SolderSplashLabs 0:ff40ad3448c5 61 }
SolderSplashLabs 0:ff40ad3448c5 62 }
SolderSplashLabs 0:ff40ad3448c5 63 }
SolderSplashLabs 0:ff40ad3448c5 64
SolderSplashLabs 0:ff40ad3448c5 65
SolderSplashLabs 0:ff40ad3448c5 66 const char* UDP_TARGET_IP = "192.168.0.10";
SolderSplashLabs 0:ff40ad3448c5 67 const int UDP_TARGET_PORT = 1500;
SolderSplashLabs 0:ff40ad3448c5 68
SolderSplashLabs 0:ff40ad3448c5 69 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 70 /*!
SolderSplashLabs 0:ff40ad3448c5 71 @brief UdpTx
SolderSplashLabs 0:ff40ad3448c5 72 */
SolderSplashLabs 0:ff40ad3448c5 73 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 74 void UdpTx ( void )
SolderSplashLabs 0:ff40ad3448c5 75 {
SolderSplashLabs 0:ff40ad3448c5 76 char message[] = "Hello World\n";
SolderSplashLabs 0:ff40ad3448c5 77 UDPSocket udpSocket;
SolderSplashLabs 0:ff40ad3448c5 78 Endpoint target;
SolderSplashLabs 0:ff40ad3448c5 79
SolderSplashLabs 0:ff40ad3448c5 80 udpSocket.init();
SolderSplashLabs 0:ff40ad3448c5 81 target.set_address(UDP_TARGET_IP, UDP_TARGET_PORT);
SolderSplashLabs 0:ff40ad3448c5 82
SolderSplashLabs 0:ff40ad3448c5 83 pc.printf("Sending UDP Message ..\r\n");
SolderSplashLabs 0:ff40ad3448c5 84 udpSocket.sendTo(target, message, sizeof(message));
SolderSplashLabs 0:ff40ad3448c5 85 pc.printf("UDP Message Sent..\r\n");
SolderSplashLabs 0:ff40ad3448c5 86 }
SolderSplashLabs 0:ff40ad3448c5 87
SolderSplashLabs 0:ff40ad3448c5 88 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 89 /*!
SolderSplashLabs 0:ff40ad3448c5 90 @brief Init
SolderSplashLabs 0:ff40ad3448c5 91 */
SolderSplashLabs 0:ff40ad3448c5 92 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 93 void init()
SolderSplashLabs 0:ff40ad3448c5 94 {
SolderSplashLabs 0:ff40ad3448c5 95 NVIC_SetPriority(SSP1_IRQn, 0x0);
SolderSplashLabs 0:ff40ad3448c5 96 NVIC_SetPriority(PIN_INT0_IRQn, 0x1);
SolderSplashLabs 0:ff40ad3448c5 97
SolderSplashLabs 0:ff40ad3448c5 98 // SysTick set to lower priority than Wi-Fi SPI bus interrupt
SolderSplashLabs 0:ff40ad3448c5 99 NVIC_SetPriority(SysTick_IRQn, 0x2);
SolderSplashLabs 0:ff40ad3448c5 100
SolderSplashLabs 0:ff40ad3448c5 101 // Enable RAM1
SolderSplashLabs 0:ff40ad3448c5 102 LPC_SYSCON->SYSAHBCLKCTRL |= (0x1 << 26);
SolderSplashLabs 0:ff40ad3448c5 103
SolderSplashLabs 0:ff40ad3448c5 104 uart.baud(SERIAL_BAUD_RATE);
SolderSplashLabs 0:ff40ad3448c5 105
SolderSplashLabs 0:ff40ad3448c5 106 wait(1);
SolderSplashLabs 0:ff40ad3448c5 107 }
SolderSplashLabs 0:ff40ad3448c5 108
SolderSplashLabs 0:ff40ad3448c5 109 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 110 /*!
SolderSplashLabs 0:ff40ad3448c5 111 @brief main loop
SolderSplashLabs 0:ff40ad3448c5 112 */
SolderSplashLabs 0:ff40ad3448c5 113 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:ff40ad3448c5 114 int main( void )
SolderSplashLabs 0:ff40ad3448c5 115 {
SolderSplashLabs 0:ff40ad3448c5 116 // Initalise the WiFi Module
SolderSplashLabs 0:ff40ad3448c5 117 init();
SolderSplashLabs 0:ff40ad3448c5 118
SolderSplashLabs 0:ff40ad3448c5 119 WaitForUser();
SolderSplashLabs 0:ff40ad3448c5 120
SolderSplashLabs 0:ff40ad3448c5 121 wifi.start(0);
SolderSplashLabs 0:ff40ad3448c5 122
SolderSplashLabs 0:ff40ad3448c5 123 WaitForConnection();
SolderSplashLabs 0:ff40ad3448c5 124
SolderSplashLabs 0:ff40ad3448c5 125 while (1)
SolderSplashLabs 0:ff40ad3448c5 126 {
SolderSplashLabs 0:ff40ad3448c5 127 WaitForUser();
SolderSplashLabs 0:ff40ad3448c5 128 UdpTx();
SolderSplashLabs 0:ff40ad3448c5 129 }
SolderSplashLabs 0:ff40ad3448c5 130 }