Udp socket sample program. This program will send back the received packet.

Dependencies:   NyFileSystems libMiMic mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
nyatla
Date:
Fri Sep 27 12:48:30 2013 +0000
Parent:
22:6326ecf3f540
Child:
24:83a1d2bc8709
Commit message:
first commit

Changed in this revision

fsdata.h Show annotated file Show diff for this revision Revisions of this file
libMiMic.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/fsdata.h	Sat Aug 10 02:53:46 2013 +0000
+++ b/fsdata.h	Fri Sep 27 12:48:30 2013 +0000
@@ -22,9 +22,9 @@
     },
     {
         "index.html",
-        1122,
+        1298,
         "text/html",
-        "\x3C\x21\x44\x4F\x43\x54\x59\x50\x45\x20\x68\x74\x6D\x6C\x3E\x20\x20\x0D\x0A\x3C\x68\x74\x6D\x6C\x20\x6C\x61\x6E\x67\x3D\x22\x6A\x61\x22\x3E\x20\x20\x0D\x0A\x3C\x68\x65\x61\x64\x3E\x0D\x0A\x09\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x74\x65\x78\x74\x2F\x68\x74\x6D\x6C\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x55\x54\x46\x2D\x38\x22\x3E\x0D\x0A\x09\x3C\x74\x69\x74\x6C\x65\x3E\x4D\x69\x4D\x69\x63\x20\x55\x50\x6E\x50\x20\x44\x65\x76\x69\x63\x65\x3C\x2F\x74\x69\x74\x6C\x65\x3E\x20\x20\x0D\x0A\x09\x3C\x73\x74\x79\x6C\x65\x3E\x0D\x0A\x09\x2E\x68\x65\x61\x64\x65\x72\x7B\x0D\x0A\x09\x09\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A\x63\x65\x6E\x74\x65\x72\x3B\x0D\x0A\x09\x7D\x0D\x0A\x09\x2E\x68\x65\x61\x64\x65\x72\x20\x62\x7B\x0D\x0A\x09\x09\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65\x3A\x32\x34\x70\x74\x3B\x0D\x0A\x09\x7D\x0D\x0A\x2E\x66\x6F\x6F\x74\x65\x72\x7B\x0D\x0A\x09\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A\x63\x65\x6E\x74\x65\x72\x3B\x0D\x0A\x09\x6D\x61\x72\x67\x69\x6E\x3A\x31\x30\x70\x78\x20\x30\x70\x78\x20\x30\x70\x78\x20\x30\x70\x78\x3B\x0D\x0A\x09\x77\x69\x64\x74\x68\x3A\x31\x30\x30\x25\x3B\x0D\x0A\x09\x62\x6F\x72\x64\x65\x72\x2D\x73\x74\x79\x6C\x65\x3A\x73\x6F\x6C\x69\x64\x3B\x0D\x0A\x09\x62\x6F\x72\x64\x65\x72\x2D\x77\x69\x64\x74\x68\x3A\x31\x70\x78\x20\x30\x70\x78\x20\x31\x70\x78\x20\x30\x70\x78\x3B\x0D\x0A\x09\x62\x6F\x72\x64\x65\x72\x2D\x63\x6F\x6C\x6F\x72\x3A\x23\x37\x37\x37\x37\x37\x37\x3B\x0D\x0A\x7D\x09\x0D\x0A\x09\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x0D\x0A\x3C\x2F\x68\x65\x61\x64\x3E\x0D\x0A\x3C\x62\x6F\x64\x79\x3E\x0D\x0A\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x68\x65\x61\x64\x65\x72\x22\x3E\x0D\x0A\x09\x3C\x69\x6D\x67\x20\x73\x72\x63\x3D\x22\x2E\x2F\x6C\x6F\x67\x6F\x2E\x70\x6E\x67\x22\x2F\x3E\x3C\x62\x72\x2F\x3E\x0D\x0A\x3C\x2F\x64\x69\x76\x3E\x0D\x0A\x3C\x68\x32\x3E\x41\x62\x6F\x75\x74\x20\x74\x68\x69\x73\x20\x70\x61\x67\x65\x3C\x2F\x68\x32\x3E\x0D\x0A\x54\x68\x69\x73\x20\x69\x73\x20\x75\x70\x6E\x70\x3A\x42\x61\x73\x69\x63\x44\x65\x76\x69\x63\x65\x3A\x31\x20\x70\x72\x65\x73\x65\x6E\x74\x61\x74\x69\x6F\x6E\x20\x77\x65\x62\x20\x70\x61\x67\x65\x2E\x3C\x62\x72\x2F\x3E\x0D\x0A\x49\x66\x20\x79\x6F\x75\x20\x63\x61\x6E\x20\x73\x65\x65\x20\x74\x68\x69\x73\x20\x70\x61\x67\x65\x2C\x20\x74\x68\x65\x20\x42\x61\x73\x69\x63\x44\x65\x76\x69\x63\x65\x20\x69\x73\x20\x72\x75\x6E\x6E\x69\x6E\x67\x2E\x0D\x0A\x0D\x0A\x3C\x68\x32\x3E\x52\x65\x73\x6F\x75\x72\x63\x65\x73\x3C\x2F\x68\x32\x3E\x0D\x0A\x3C\x75\x6C\x3E\x0D\x0A\x3C\x6C\x69\x3E\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x2F\x75\x70\x6E\x70\x2F\x64\x2E\x78\x6D\x6C\x22\x3E\x44\x65\x76\x69\x63\x65\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3C\x2F\x61\x3E\x3C\x2F\x6C\x69\x3E\x0D\x0A\x3C\x2F\x75\x6C\x3E\x0D\x0A\x3C\x68\x32\x3E\x4C\x69\x6E\x6B\x73\x3C\x2F\x68\x32\x3E\x0D\x0A\x3C\x75\x6C\x3E\x0D\x0A\x3C\x6C\x69\x3E\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x6D\x62\x65\x64\x2E\x6F\x72\x67\x2F\x75\x73\x65\x72\x73\x2F\x6E\x79\x61\x74\x6C\x61\x2F\x63\x6F\x64\x65\x2F\x55\x50\x6E\x50\x42\x61\x73\x69\x63\x44\x65\x76\x69\x63\x65\x2F\x22\x3E\x53\x6F\x75\x72\x63\x65\x20\x63\x6F\x64\x65\x20\x72\x65\x70\x6F\x69\x74\x6F\x72\x79\x3C\x2F\x61\x3E\x3C\x2F\x6C\x69\x3E\x0D\x0A\x3C\x6C\x69\x3E\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x73\x6F\x75\x72\x63\x65\x66\x6F\x72\x67\x65\x2E\x6A\x70\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6D\x69\x6D\x69\x63\x2F\x22\x3E\x4D\x69\x4D\x49\x63\x20\x50\x72\x6F\x6A\x65\x63\x74\x3C\x2F\x61\x3E\x3C\x2F\x6C\x69\x3E\x0D\x0A\x3C\x6C\x69\x3E\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x75\x70\x6E\x70\x2E\x6F\x72\x67\x2F\x22\x3E\x55\x50\x6E\x50\x20\x46\x4F\x52\x55\x4D\x3C\x2F\x61\x3E\x3C\x2F\x6C\x69\x3E\x0D\x0A\x3C\x2F\x75\x6C\x3E\x0D\x0A\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x6F\x74\x65\x72\x22\x3E\x0D\x0A\x09\x4D\x69\x4D\x69\x63\x20\x70\x72\x6F\x6A\x65\x63\x74\x3C\x62\x72\x2F\x3E\x0D\x0A\x09\x43\x6F\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\x20\x32\x30\x31\x31\x2D\x32\x30\x31\x33\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x6E\x79\x61\x74\x6C\x61\x2E\x6A\x70\x2F\x22\x3E\x6E\x79\x61\x74\x6C\x61\x2E\x6A\x70\x3C\x2F\x61\x3E\x20\x41\x6C\x6C\x20\x52\x69\x67\x68\x74\x73\x20\x52\x65\x73\x65\x72\x76\x65\x64\x2E\x0D\x0A\x3C\x2F\x64\x69\x76\x3E\x0D\x0A\x3C\x2F\x62\x6F\x64\x79\x3E\x0D\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E\x0D\x0A"
+        "\x3C\x68\x74\x6D\x6C\x3E\x0D\x0A\x3C\x68\x65\x61\x64\x3E\x3C\x2F\x68\x65\x61\x64\x3E\x0D\x0A\x3C\x62\x6F\x64\x79\x20\x6F\x6E\x6C\x6F\x61\x64\x3D\x22\x69\x6E\x69\x74\x28\x29\x3B\x22\x3E\x0D\x0A\x3C\x68\x31\x3E\x57\x65\x62\x73\x6F\x63\x6B\x65\x74\x20\x74\x65\x73\x74\x20\x70\x61\x67\x65\x2E\x3C\x2F\x68\x31\x3E\x0D\x0A\x3C\x68\x72\x2F\x3E\x0D\x0A\x3C\x68\x32\x3E\x57\x68\x61\x74\x20\x69\x73\x20\x74\x68\x69\x73\x3F\x3C\x2F\x68\x32\x3E\x0D\x0A\x54\x68\x69\x73\x20\x69\x73\x20\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x6E\x79\x61\x74\x6C\x61\x2E\x6A\x70\x2F\x6D\x69\x6D\x69\x63\x2F\x77\x70\x2F\x22\x3E\x4D\x69\x4D\x69\x63\x3C\x2F\x61\x3E\x20\x6C\x69\x62\x72\x61\x72\x79\x20\x73\x61\x6D\x70\x6C\x65\x20\x70\x72\x6F\x67\x72\x61\x6D\x2E\x0D\x0A\x54\x68\x69\x73\x20\x70\x72\x6F\x67\x72\x61\x6D\x20\x72\x65\x63\x65\x69\x76\x65\x73\x20\x74\x68\x65\x20\x76\x61\x6C\x75\x65\x20\x6F\x66\x20\x41\x49\x4E\x31\x20\x69\x6E\x20\x57\x65\x62\x73\x6F\x63\x6B\x65\x74\x2C\x20\x61\x6E\x64\x20\x64\x72\x61\x77\x73\x20\x61\x20\x67\x72\x61\x70\x68\x2E\x0D\x0A\x3C\x68\x32\x3E\x41\x49\x4E\x31\x28\x50\x32\x30\x29\x20\x76\x61\x6C\x75\x65\x3C\x2F\x68\x32\x3E\x0D\x0A\x3C\x73\x63\x72\x69\x70\x74\x3E\x0D\x0A\x0D\x0A\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x69\x6E\x69\x74\x28\x29\x7B\x0D\x0A\x09\x76\x61\x72\x20\x72\x78\x3D\x22\x22\x3B\x0D\x0A\x0D\x0A\x09\x76\x61\x72\x20\x77\x73\x20\x3D\x20\x6E\x65\x77\x20\x57\x65\x62\x53\x6F\x63\x6B\x65\x74\x28\x22\x77\x73\x3A\x2F\x2F\x22\x2B\x6C\x6F\x63\x61\x74\x69\x6F\x6E\x2E\x68\x6F\x73\x74\x2B\x22\x2F\x77\x73\x2F\x22\x29\x3B\x0D\x0A\x09\x77\x69\x6E\x64\x6F\x77\x2E\x6F\x6E\x62\x65\x66\x6F\x72\x65\x75\x6E\x6C\x6F\x61\x64\x3D\x66\x75\x6E\x63\x74\x69\x6F\x6E\x28\x65\x29\x7B\x0D\x0A\x09\x09\x77\x73\x2E\x63\x6C\x6F\x73\x65\x28\x34\x35\x30\x30\x2C\x22\x22\x29\x3B\x0D\x0A\x09\x7D\x0D\x0A\x0D\x0A\x09\x2F\x2F\x72\x65\x63\x65\x69\x76\x65\x20\x6D\x65\x73\x73\x61\x67\x65\x20\x69\x6E\x20\x43\x53\x56\x20\x66\x6F\x72\x6D\x61\x74\x2E\x0D\x0A\x09\x76\x61\x72\x20\x6B\x3D\x30\x3B\x0D\x0A\x09\x77\x73\x2E\x6F\x6E\x6D\x65\x73\x73\x61\x67\x65\x20\x3D\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x28\x65\x29\x0D\x0A\x09\x7B\x0D\x0A\x09\x09\x72\x78\x2B\x3D\x65\x2E\x64\x61\x74\x61\x3B\x0D\x0A\x09\x09\x66\x6F\x72\x28\x3B\x3B\x29\x7B\x0D\x0A\x09\x09\x09\x76\x61\x72\x20\x70\x3D\x72\x78\x2E\x69\x6E\x64\x65\x78\x4F\x66\x28\x22\x2C\x22\x29\x3B\x0D\x0A\x09\x09\x09\x69\x66\x28\x70\x3C\x30\x29\x7B\x0D\x0A\x09\x09\x09\x09\x62\x72\x65\x61\x6B\x3B\x0D\x0A\x09\x09\x09\x7D\x0D\x0A\x09\x09\x09\x76\x3D\x70\x61\x72\x73\x65\x49\x6E\x74\x28\x72\x78\x2E\x73\x75\x62\x73\x74\x72\x28\x30\x2C\x70\x2B\x31\x29\x29\x3B\x0D\x0A\x09\x09\x09\x72\x78\x3D\x72\x78\x2E\x73\x75\x62\x73\x74\x72\x28\x70\x2B\x32\x29\x3B\x0D\x0A\x09\x09\x09\x61\x64\x64\x64\x61\x74\x61\x28\x76\x29\x3B\x0D\x0A\x09\x09\x09\x73\x63\x72\x6F\x6C\x6C\x28\x29\x3B\x0D\x0A\x09\x09\x7D\x0D\x0A\x09\x7D\x3B\x0D\x0A\x7D\x0D\x0A\x0D\x0A\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x61\x64\x64\x64\x61\x74\x61\x28\x76\x29\x0D\x0A\x7B\x0D\x0A\x20\x20\x20\x20\x76\x61\x72\x20\x63\x61\x6E\x76\x61\x73\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x27\x63\x31\x27\x29\x3B\x0D\x0A\x20\x20\x20\x20\x76\x61\x72\x20\x63\x74\x78\x20\x3D\x20\x63\x61\x6E\x76\x61\x73\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x78\x74\x28\x27\x32\x64\x27\x29\x3B\x0D\x0A\x20\x20\x20\x20\x63\x74\x78\x2E\x66\x69\x6C\x6C\x53\x74\x79\x6C\x65\x20\x3D\x20\x22\x72\x65\x64\x22\x3B\x0D\x0A\x20\x20\x20\x20\x63\x74\x78\x2E\x66\x69\x6C\x6C\x52\x65\x63\x74\x28\x63\x61\x6E\x76\x61\x73\x2E\x77\x69\x64\x74\x68\x2D\x31\x30\x2C\x63\x61\x6E\x76\x61\x73\x2E\x68\x65\x69\x67\x68\x74\x2D\x28\x76\x2A\x31\x34\x30\x2F\x34\x30\x39\x36\x29\x2C\x31\x2C\x31\x29\x3B\x0D\x0A\x7D\x0D\x0A\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x73\x63\x72\x6F\x6C\x6C\x28\x29\x0D\x0A\x7B\x0D\x0A\x20\x20\x20\x20\x76\x61\x72\x20\x63\x61\x6E\x76\x61\x73\x20\x3D\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x2E\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x28\x27\x63\x31\x27\x29\x3B\x0D\x0A\x20\x20\x20\x20\x76\x61\x72\x20\x63\x74\x78\x20\x3D\x20\x63\x61\x6E\x76\x61\x73\x2E\x67\x65\x74\x43\x6F\x6E\x74\x65\x78\x74\x28\x27\x32\x64\x27\x29\x3B\x0D\x0A\x20\x20\x20\x20\x76\x61\x72\x20\x69\x6D\x61\x67\x65\x64\x61\x74\x61\x20\x3D\x20\x63\x74\x78\x2E\x67\x65\x74\x49\x6D\x61\x67\x65\x44\x61\x74\x61\x28\x30\x2C\x30\x2C\x63\x61\x6E\x76\x61\x73\x2E\x77\x69\x64\x74\x68\x2C\x63\x61\x6E\x76\x61\x73\x2E\x68\x65\x69\x67\x68\x74\x29\x3B\x0D\x0A\x20\x20\x20\x20\x63\x74\x78\x2E\x70\x75\x74\x49\x6D\x61\x67\x65\x44\x61\x74\x61\x28\x69\x6D\x61\x67\x65\x64\x61\x74\x61\x2C\x2D\x31\x2C\x30\x29\x3B\x0D\x0A\x20\x0D\x0A\x7D\x0D\x0A\x3C\x2F\x73\x63\x72\x69\x70\x74\x3E\x0D\x0A\x3C\x63\x61\x6E\x76\x61\x73\x20\x73\x74\x79\x6C\x65\x3D\x22\x62\x6F\x72\x64\x65\x72\x2D\x73\x74\x79\x6C\x65\x3A\x73\x6F\x6C\x69\x64\x3B\x62\x6F\x72\x64\x65\x72\x2D\x77\x69\x64\x74\x68\x3A\x31\x70\x78\x3B\x22\x20\x69\x64\x3D\x22\x63\x31\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x33\x32\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x32\x34\x30\x22\x3E\x3C\x2F\x63\x61\x6E\x76\x61\x73\x3E\x3C\x62\x72\x2F\x3E\x0D\x0A\x3C\x62\x72\x2F\x3E\x0D\x0A\x0D\x0A\x3C\x2F\x62\x6F\x64\x79\x3E\x0D\x0A\x3C\x2F\x68\x74\x6D\x6C\x3E"
     }
 };
 
--- a/libMiMic.lib	Sat Aug 10 02:53:46 2013 +0000
+++ b/libMiMic.lib	Fri Sep 27 12:48:30 2013 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/nyatla/code/libMiMic/#d38b6ce8c63b
+http://mbed.org/users/nyatla/code/libMiMic/#03b89038b21a
--- a/main.cpp	Sat Aug 10 02:53:46 2013 +0000
+++ b/main.cpp	Fri Sep 27 12:48:30 2013 +0000
@@ -16,32 +16,48 @@
 #include "fsdata.h"
 
 
+//local filesystem
+LocalFileSystem2 lf("local");
+
+NetConfig cfg; //create network configulation
 Net* net;
 
 /**
  * Httpd for UPnPService and presentation.
  */
-class UPnPBasicDeviceHttpd:public MiMic::Httpd
+class WebSocketHttpd:public MiMic::Httpd
 {
 private:
-    ModUPnPDevice modupnp;
+    ModLocalFileSystem modlocal;
+    ModWebSocket modwebsocket;
     ModRomFiles modromfs; //ROM file module    
 public:
-    UPnPBasicDeviceHttpd(NetConfig& i_cfg):Httpd(i_cfg.getHttpPort())
+    WebSocketHttpd(NetConfig& i_cfg):Httpd(i_cfg.getHttpPort())
     {
         //prepare fs data (presentation.html,icon,image.)
         this->modromfs.setParam("rom",FSDATA,3);
-        //bind upnp service to module.
-        this->modupnp.setParam(*net);
+        this->modlocal.setParam("local");
+        //bind websocket module.
+        this->modwebsocket.setParam("ws");
     }
     virtual void onRequest(HttpdConnection& i_connection)
     {
         //try to ModRomFS module. for icon,images.
         if(this->modromfs.execute(i_connection)){
             return;
-        }        
-        //try to UPnP service. for descriptions.
-        if(this->modupnp.execute(i_connection)){
+        }
+        //try to ModLocalFileSystem
+        if(this->modlocal.execute(i_connection)){
+            return;
+        }
+        //try to Websocket service.
+        if(this->modwebsocket.execute(i_connection)){
+            //send AIN1 value every 10ms.
+            AnalogIn ain(p20);
+            do{
+                Thread::wait(20);
+            }while(this->modwebsocket.writeF("%d,",(int)(ain*4096)));
+            this->modwebsocket.close();
             return;
         }
         //Otherwise, Send the redirect response to /rom/index.html
@@ -52,28 +68,16 @@
     }
 };
 
-NetConfig cfg; //create network configulation
 
 int main()
 {
     net=new Net();//Net constructor must be created after started RTOS
-    //Prepare configulation.
-    cfg.setUPnPIcon(64,64,8,"image/png","/rom/icon.png");//set upnp icon address
-    cfg.setUPnPUdn(0xe29f7103,0x4ba2,0x01e0,0); //set application timebase-uuid time and sequence field.
-    cfg.setFriendlyName("UPnPBasicDevice(LPC176x)"); //set friendly name
-    cfg.setUPnPPresentationURL("/rom/index.html"); //set presentationURL
-    cfg.setZeroconf(true);//AutoIP enable
-    
-    /*
-    DHCP client has a bug which can not  obtain IP address from a DHCP server.
-    In that case, please turn off setZeroconf and give an IP address manually as temporary solution. 
-    cfg.setIpAddr(1,2,3,4);
-    cfg.setNetMask(1,2,3,4);
-    cfg.setGateway(1,2,3,4);
-    */
-    
+    // manual setting
+    cfg.setIpAddr(192,168,128,39);
+    cfg.setNetMask(255,255,255,0);
+    cfg.setGateway(192,168,128,254);    
 
-    UPnPBasicDeviceHttpd httpd(cfg); //create a httpd instance.
+    WebSocketHttpd httpd(cfg); //create a httpd instance.
     net->start(cfg);
     httpd.loop();  //start httpd loop.
     return 0;