A http client sample program.

Dependencies:   NyFileSystems libMiMic mbed-rtos mbed

Fork of TcpSocketClientSamlpe by Ryo Iizuka

Files at this revision

API Documentation at this revision

Comitter:
nyatla
Date:
Fri Aug 09 09:06:09 2013 +0000
Parent:
18:9e6b9380006c
Child:
20:4b0b449ddb12
Commit message:
update libMiMic; support UPnP function.

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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fsdata.h	Fri Aug 09 09:06:09 2013 +0000
@@ -0,0 +1,12 @@
+#include "mimic.h"
+
+struct NyLPC_TRomFileData FSDATA[1]=
+{
+    {
+        "icon.png",
+        2271,
+        "image/png",
+        "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52\x00\x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9D\xB7\x81\xEC\x00\x00\x03\x00\x50\x4C\x54\x45\x10\x10\x0F\x49\x49\x49\x8F\x8C\x7C\x13\x11\x0B\x29\x26\x1A\x26\x21\x17\x6B\x6B\x66\x7E\x7C\x72\x17\x14\x0E\x5D\x5B\x59\x01\x01\x01\x82\x7F\x77\x18\x16\x0F\x07\x07\x07\x29\x27\x1A\x68\x68\x68\x00\x00\x00\xF9\xF9\xF2\x8C\x88\x7A\x85\x7D\x63\x0D\x0D\x00\x40\x3A\x27\x3D\x38\x26\x05\x05\x03\xD8\xD8\xD8\xA0\x9D\x95\x49\x42\x2C\xF7\xF7\xF1\xF1\xEF\xEA\x2D\x2A\x1B\xFD\xFB\xF3\x47\x47\x47\x60\x60\x5E\x43\x41\x3E\x55\x55\x55\xEF\xEF\xEF\x60\x60\x5F\x47\x47\x47\x0E\x0E\x0E\xD7\xD7\xD7\x44\x43\x3D\x49\x49\x3E\xF2\xF2\xF2\x7D\x7B\x74\x4B\x48\x3E\x48\x43\x2D\x93\x8D\x7F\x8A\x87\x7B\x7A\x70\x4F\x95\x90\x7D\x5D\x54\x38\x39\x34\x23\x70\x65\x42\x82\x7D\x79\x3E\x3E\x36\x48\x43\x3A\x6F\x6E\x69\x0F\x0F\x0E\x15\x13\x0D\x77\x75\x6B\x01\x01\x00\x73\x70\x6A\x86\x82\x75\x1E\x1D\x1C\x80\x7D\x73\x92\x8B\x7B\x0B\x0B\x0B\x32\x32\x30\xB9\xB4\xA4\xEF\xEF\xEF\x4F\x47\x30\xB0\xAE\xA0\xC6\xC3\xB5\xF2\xF1\xEC\x0D\x0C\x0A\x03\x03\x03\x47\x41\x2C\x3F\x38\x25\xED\xEB\xE9\x43\x3D\x37\x78\x6F\x4E\x6E\x62\x40\x00\x00\x00\x53\x4C\x32\xE3\xE3\xE0\xFE\xFE\xF4\x72\x71\x6B\xEF\xEC\xE7\xD3\xD2\xC4\x54\x4F\x41\x6C\x6A\x5B\x6A\x69\x66\x45\x45\x45\x0B\x0B\x0B\x5D\x55\x37\x8B\x86\x79\x5A\x52\x36\x53\x50\x47\x0F\x0F\x08\x00\x00\x00\x4B\x49\x42\x45\x43\x3E\x19\x19\x18\x06\x05\x05\x1D\x1B\x10\xFF\xFE\xF6\x56\x53\x46\xFF\xFF\xF7\x03\x03\x03\x38\x38\x38\x8F\x8A\x7B\xF0\xEE\xEA\xAA\xA6\x9B\xEE\xEC\xE7\xFC\xFB\xF6\x1F\x1A\x11\x39\x35\x22\x32\x2D\x1D\xA2\xA2\xA2\x4D\x46\x2E\x65\x5B\x3D\x5B\x57\x4B\x22\x22\x22\x47\x40\x2A\xFC\xFA\xF2\x95\x91\x81\x4C\x4C\x4C\x00\x00\x00\x0D\x0C\x0C\x01\x01\x01\x06\x06\x06\x08\x08\x08\x51\x4A\x31\x00\x00\x00\x06\x06\x06\x07\x07\x07\x11\x11\x11\x13\x12\x0F\x07\x07\x07\x09\x09\x09\x09\x09\x09\x11\x11\x10\x07\x07\x07\x06\x06\x06\x06\x06\x06\x06\x06\x06\x07\x07\x07\x12\x12\x12\x08\x08\x08\xE5\xE5\xE5\x63\x59\x3C\x7F\x75\x4D\x69\x61\x40\xCF\xC9\xB7\xAC\xA4\x86\x72\x72\x72\x39\x39\x39\xBE\xBE\xBE\x33\x33\x33\xCC\xCC\xCC\x8E\x82\x5A\x73\x73\x73\x99\x93\x7C\xE1\xDB\xC7\xB2\xAB\x8F\x20\x1D\x13\x93\x90\x86\xFF\xFF\xF0\x65\x5F\x4A\x87\x87\x87\x6C\x6C\x6C\x9D\x9D\x9D\x98\x98\x98\xC6\xC6\xC6\xAD\xAD\xAD\x8B\x8B\x8B\x1E\x1D\x19\x9B\x98\x8B\xB2\xB2\xB2\x53\x53\x53\xE7\xE7\xE7\x37\x37\x37\xFD\xFD\xFD\x85\x7C\x5B\x81\x81\x81\xF7\xF7\xF7\xD6\xD1\xBE\x99\x96\x8C\x5A\x5A\x5A\xA7\xA2\x8F\xEE\xEE\xEE\xDA\xDA\xDA\xA3\x9E\x8C\x24\x21\x16\x70\x66\x43\x91\x86\x5F\x91\x91\x91\x95\x8B\x65\xA6\xA6\xA6\x6C\x65\x4F\x64\x64\x64\xC3\xC3\xC3\x30\x2F\x2F\x76\x76\x76\x74\x6A\x46\x2A\x2A\x2A\x28\x28\x27\x60\x60\x60\x54\x54\x54\xB6\xB6\xB6\xBF\xBF\xBF\x83\x78\x4F\xCA\xCA\xCA\x50\x50\x50\x3C\x3C\x3C\x2C\x2C\x2C\x68\x68\x68\x8B\x7F\x56\x36\x34\x2F\xEA\xEA\xEA\x49\x49\x49\x25\x25\x25\x4C\x4C\x4C\x6F\x6F\x6F\xD5\xD5\xD5\x42\x42\x42\xAB\xAB\xAB\x57\x57\x57\x31\x31\x31\x19\x19\x19\x9A\x9A\x9A\x43\x43\x43\x7B\x7B\x7B\x44\x44\x44\x5D\x5D\x5D\xF9\xF9\xF9\xA3\xA3\xA3\xBA\xBA\xBA\x3E\x3E\x3E\x4D\x4D\x4D\x87\x7B\x51\x94\x94\x94\x23\x22\x21\x40\x40\x40\x1C\x1C\x1C\x36\x36\x36\x20\x20\x20\x1E\x1E\x1E\x83\x83\x83\x80\x80\x80\xFF\xFF\xFF\x16\x15\x14\x0F\x0F\x0E\x09\x09\x09\x06\x06\x06\x06\x06\x06\x7E\x63\x73\x03\x00\x00\x00\x86\x74\x52\x4E\x53\xFD\x7B\xC6\xFF\x50\x7A\x7A\x9C\x59\x70\xAB\xA3\x69\xCE\x8A\x20\x55\xB5\xE6\xDC\x13\x7B\xB6\xF4\x21\x63\x92\xBE\x6D\x55\x90\xA8\x9D\x9D\x87\x20\xA1\x6F\x24\x13\xB7\x42\xDC\xF7\xD7\xC9\xF6\xC9\xEF\xBA\xF6\xA0\xEF\x3A\x21\x39\x63\xDD\x42\x4C\xCD\x90\x78\xF7\xB6\xA1\x18\x2D\xF1\xEF\xDE\xBC\x98\x64\xF6\x23\x8C\x76\x38\x2A\xEF\xF1\xBB\xA1\x2C\xA1\xD7\x5F\x98\xF2\x76\xBD\x85\x70\xBF\x86\xB6\x56\x20\x07\x4F\x47\xEC\xEB\x48\x86\x5F\x98\xDE\x13\x90\x51\x92\x47\x79\x39\x6D\x60\x08\x92\xD2\x6A\x0D\x86\x97\x98\x76\xC5\x2A\xE1\x2E\x04\x98\x00\x47\x88\x88\xDB\x00\x00\x05\x08\x49\x44\x41\x54\x78\xDA\xED\xD7\x67\x50\xDB\x66\x18\x07\xF0\xDC\xA5\x7B\xEF\xBD\xF7\xDE\xD9\xE9\x4A\xBA\x32\x9A\xB4\x49\x77\x13\xC2\x4A\x20\x01\xB2\x58\x61\xB8\xB5\x91\x5F\xBF\xE9\xE9\xF8\x84\xBB\x13\x9A\x34\x4D\x1A\x02\x81\x84\x6D\xC2\x48\xCB\x36\x98\x69\xC0\x04\x1B\x1B\x6C\x83\x6D\xA8\xC1\x8E\x8D\x87\xF4\xA1\x92\x30\x48\xB6\x64\x1B\xAE\x5F\xDA\xBB\xFE\xEF\x2C\x9F\xEF\x39\xFD\xAC\xFB\x9F\x74\xCF\x69\x01\xF8\x87\xF9\x1F\xF0\x06\xF6\xA4\x6F\x03\xE0\x9E\xF7\x52\x00\xD8\xC9\x8B\x04\x49\x31\xBC\x25\xE0\x8E\x18\xDE\x62\xB0\x21\x9D\x87\x4C\x0F\xD7\x4C\x0F\xC3\xFC\x00\xF7\xB9\x3F\x00\xE0\xEE\x63\xA1\x00\xBC\x5D\x9F\x06\x92\xDC\xF5\x89\x60\x83\xBB\x36\x1E\xAC\x71\xD7\x46\x80\x9D\xE4\xF0\xC6\x63\x21\xE4\x30\x99\x1B\x88\xD8\x5B\xF1\x21\x82\xBC\xFB\x5B\x28\x82\xBC\xD5\xBD\x1E\x49\xFD\xB1\x3B\x11\x59\x54\xD1\x1D\x8F\xDC\x59\xD1\x9D\x8A\x78\x86\x21\xE4\xF0\x2E\x84\x0D\x20\x5B\x63\x05\x99\xD6\x85\x02\x01\x76\x06\x15\x08\xCE\x60\xC4\xC1\x8A\xDD\x2E\x88\xB2\x62\x51\x82\xB5\x56\x4C\x20\x58\x30\x3D\xC4\x05\x02\x07\x26\x8E\xDD\x74\x03\xE2\x03\x44\xEE\x40\x45\xF3\xC9\x55\xEB\x7C\x80\x47\x75\x18\x9C\x0F\xF0\x75\x86\x17\xF0\xD1\x9E\x47\x7A\x6D\xE2\x39\x08\x2E\x2A\x17\x45\xA2\x65\x57\xAE\x58\xCD\x00\xD2\xDD\xE7\xCC\x0E\x31\xF4\x0D\x1B\xE8\x22\xE2\xEA\x72\x89\x44\x17\xCE\xF7\x0B\x19\x00\xAF\xB6\x91\x06\x02\x21\x6E\x22\x2E\x17\x01\xFC\xF1\xE7\x24\x13\x48\x5D\xB5\x85\x02\x82\x0B\x2E\x0F\xB0\x72\xF9\xAA\x54\xAF\x12\xBF\x9A\x1B\xE0\x26\xE3\x62\x97\xB8\x6F\xFF\x97\x14\x10\x9C\x20\xFE\x9D\xCA\x8E\x57\x5F\xDB\xCE\x51\x62\xF0\xF3\xA9\xB0\x4B\xDC\xDD\x7D\xD2\xEC\x40\x83\x5F\x02\x9D\xE3\xDF\xB5\xAE\xF7\xE9\x80\x02\xD0\x02\x3D\x7D\x9E\x62\xC8\x1F\x40\x77\x40\x03\x17\x29\x40\xEF\xEE\x84\x33\x99\x70\x3B\xA1\x27\x41\x81\x4F\x3F\xFE\x64\x06\x18\x53\xC3\xE9\xD8\x06\xC6\x02\x00\xAF\xBF\xF1\xE6\x2E\x06\xF0\xD9\xEF\x67\x67\x00\x83\x44\x07\xA9\x74\x1E\xFE\x8B\x00\xFC\x09\x17\x7E\xF5\xBA\x91\xBE\x38\xF0\xF9\x0C\x60\xB7\x68\x70\x48\x44\x5D\x3D\x45\x03\x6C\xE1\x9B\x77\x0E\xBC\xCF\xDD\x81\x1D\xD7\x58\x88\x13\xB2\x25\x1D\xD0\x17\xC0\x5A\x0C\x64\xD4\xE2\x80\x25\xDA\xA1\x4E\xD2\x03\x71\xCD\x08\xA4\x00\xA6\x30\x58\x3A\x42\xA6\x0E\x67\x03\xFB\x9F\x7A\x9A\x06\xA0\x7A\xC0\x61\xD1\x64\x92\xC0\x29\x2D\x53\x18\x94\x88\x66\xA3\xBA\xE9\xE6\x5B\x19\xC0\xDE\x9F\x1A\x19\x00\xEC\xD4\x48\x88\x2F\x02\x90\x4D\x71\x03\xAC\xA7\x71\xD7\xE6\x67\x98\x80\xAD\xF8\x67\x48\x01\x96\x72\x1A\xE8\x6D\x66\x02\x6B\x6F\xDB\x9C\xE8\xDD\xC1\x10\x01\x88\x3D\x00\x24\x28\x0A\x18\xB6\x4C\x4D\x78\x22\xC5\xA5\x34\x40\x77\xE0\x07\x80\xB3\xC0\xF8\x80\x5C\xFE\x6D\xB5\x5C\x5E\x53\x53\x59\x1C\x00\x48\x97\x9C\xA0\x00\x31\x05\x74\xF5\x41\xD8\x60\xF4\x00\xE3\x10\x3A\x9B\x21\x6C\xAA\x31\x0D\x4C\x30\x00\xE9\xD9\xB2\x64\x06\xC0\xAB\x6F\x64\x00\x36\x48\x94\x81\x06\x00\xD8\x25\x3E\x99\xF0\x04\x0D\x78\x12\x18\x88\xBA\x2E\x61\xB9\x4F\x07\x53\x73\x00\xA0\xBF\x0E\x1E\x7F\xF8\xA1\x69\xE0\xA0\x46\x45\x03\x16\x45\x41\x8B\xD3\x09\xA1\x82\x40\x26\x3A\x8D\xCD\xF6\x5F\x68\xE0\xDA\xED\xD7\xC7\x31\x80\x18\xF7\x09\x12\xA0\x02\x03\x66\xF6\x69\x3C\x7F\x44\xE8\x5D\x22\x17\x90\xE5\xE8\x3B\x34\x54\xD2\xE7\xC0\x50\x1A\xE0\x2E\x71\x63\xF4\x83\x14\xE0\x11\xF0\x12\x53\x79\x83\xBC\xBA\xB4\x74\x40\x73\xBA\xB3\x59\x33\x30\xE6\xAE\x96\x8F\xBB\x2A\x75\x62\x5A\x88\xBD\x26\x9A\xCF\x2E\x91\x8A\x4C\x5D\x97\x9B\xD3\xD2\xDE\xD3\x2B\xD3\xCF\x5E\x0D\xA6\x2A\x51\x9A\xD4\xCE\x86\x71\x85\xCA\xCF\x72\xDD\xF7\xC0\x28\x05\x60\xCA\xF6\x1E\x1B\xF4\x1B\xDC\xE8\xAC\x33\xE1\x24\xB0\x2C\x65\xC5\x46\xEF\xBD\x40\x02\xA8\xAD\x2D\x78\x8F\x59\x76\x4C\xC4\xB5\x5C\x49\x80\x8A\x65\xA4\xE5\xB0\xA2\xA7\x58\x56\x6A\x56\xA2\x7A\x08\x35\xC4\x13\xA9\x47\xF5\xB8\x54\x4B\xFC\xC2\x48\x81\xAB\xC4\xB8\xF0\x2D\x34\x90\x3F\x32\x9C\x57\x24\xCF\x95\x77\x28\xF2\x5D\x99\xB0\x10\x76\x1A\x46\x9A\x1A\xCA\x3B\x0C\x0D\xAE\xA1\xFC\xBC\x19\x61\x65\x74\xF8\x2D\xDE\x25\xD2\x40\x4E\x1E\x01\xE4\x14\xE7\x76\x28\x0A\x8F\x62\xF0\x74\xFB\x78\x5D\x9D\xC9\x30\x6C\x37\x14\xAA\xB5\xC3\x05\x90\x0C\xE7\x72\x9D\x05\x64\x0E\xAB\xAE\x4F\xEF\xC8\x26\x3E\x0E\x3B\x84\x43\x66\x1C\x35\xE3\x98\x2A\x4B\xA5\xEF\x85\x3A\x07\x24\xC2\xBD\x5C\x29\x80\x4E\xE0\xBB\x91\xBD\x5C\xCB\x4E\x8E\x5A\xE7\x05\x1C\xFF\xE1\xFB\x64\xEF\x0E\x8C\x34\x10\x4C\xA0\x6F\x24\x4E\x20\xB8\xC0\xBD\x5C\xE7\x07\xB0\x97\xEB\x39\xBA\x83\xE0\x02\xE7\x72\xA5\xAE\x40\xDF\x63\x1B\x54\x2A\x07\x0F\xA9\x8D\xA7\x94\xD2\x92\x41\x5D\x9F\xDD\x6A\xC4\x2B\x7B\xF4\xA3\x32\xA3\xB1\x2F\x53\x67\x55\xA9\xB2\xA7\xAC\x4A\x52\x58\xC8\x5A\xAE\x13\x32\x1C\x45\x1D\xDA\x36\xE2\x31\xEC\xED\x75\x69\x5B\x4C\x5A\xB3\x54\x5B\xA9\xD6\x76\xB4\x1D\x35\xC9\x3A\x5A\x8A\x14\x4D\xAA\x22\xAD\xC9\xA4\xAC\xD4\xB6\xDB\x20\x47\x89\x4B\xDB\xCD\x59\x38\x2B\x58\x26\xF5\x85\xE2\x53\xE4\x01\x25\x0E\x64\x70\x14\x8A\x36\xAD\xF3\x01\x92\xEE\xD7\x61\x07\x33\xF1\xB9\x85\x40\xB6\x22\x3E\x00\x88\x5B\xCD\xBF\xBA\xEA\x25\x3E\xFF\xF9\xB2\x67\xF9\xFC\xE7\x5A\x5F\xE6\x67\x54\xB5\x5E\xCA\x0F\xAB\x6A\xBD\x82\x7F\x59\x55\x6B\x06\xFF\x72\xAF\xE1\x63\xA9\x5C\xAF\x3C\xBB\xFB\x5F\x01\xE0\xC5\xC9\x50\x00\x5E\x98\x24\x5E\x79\x6A\x27\x13\xC1\xA2\x23\x93\xF1\x60\x69\xFF\x64\x04\xD8\x36\x3D\x0C\x21\x87\x7E\x5E\x79\x40\x98\x30\x0D\x80\x14\x61\x02\x00\x69\xC2\x4B\x00\x22\x14\xC6\x83\xC5\x42\x61\x38\x58\x22\x14\x22\x20\x92\x31\xBC\xF7\x5F\xFB\xDE\xF8\x1F\x05\xFE\x06\xF8\xBF\x59\x54\x89\x0F\x61\x2B\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82"
+    }
+};
+
--- a/libMiMic.lib	Thu Jul 11 03:54:29 2013 +0000
+++ b/libMiMic.lib	Fri Aug 09 09:06:09 2013 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/nyatla/code/libMiMic/#61edfd4b16ee
+http://mbed.org/users/nyatla/code/libMiMic/#5f993fccc09c
--- a/main.cpp	Thu Jul 11 03:54:29 2013 +0000
+++ b/main.cpp	Fri Aug 09 09:06:09 2013 +0000
@@ -9,9 +9,12 @@
  * </pre>
  */
 #include "mbed.h"
+#include "rtos.h"
 #include "SDFileSystem.h"
 #include "mimic.h"
 #include "utils/PlatformInfo.h"
+#include "fsdata.h"
+
 DigitalOut mbedled(LED1);
 DigitalOut lpcxled(P0_22);
 
@@ -20,6 +23,8 @@
  */
 LocalFileSystem2 lf("local");
 SDFileSystem sd(p5, p6, p7, p8,"sd");
+Net* net;
+
 unsigned int p;
 /**
  * MiMic RemoteMCU httpd.<br/>
@@ -34,12 +39,18 @@
 private:
     ModLocalFileSystem modlocal;
     ModLocalFileSystem modsd;
+    ModUPnPDevice modupnp;
+    ModRomFiles modromfs; //ROM file module
+    
 public:
-    FsHttpd(NetConfig& i_cfg):Httpd(i_cfg._inst.services.http_port)
+    FsHttpd(NetConfig& i_cfg):Httpd(i_cfg.getHttpPort())
     {
+    
+        this->modromfs.setParam("rom",FSDATA,1);
         //bind local file system path to /local/*
         modlocal.setParam("local");
-        modsd.setParam("sd");
+        modsd.setParam("sd",ModLocalFileSystem::FST_SDFATFS);
+        this->modupnp.setParam(*net);
     }
     virtual void onRequest(HttpdConnection& i_connection)
     {
@@ -52,6 +63,10 @@
             lpcxled = p%2;
             break;
         }
+        //try to ModRomFS module.
+        if(this->modromfs.execute(i_connection)){
+            return;
+        }        
         //try to ModLocalFileSystem
         if(this->modlocal.execute(i_connection)){
             return;
@@ -60,6 +75,9 @@
         if(this->modsd.execute(i_connection)){
             return;
         }
+        if(this->modupnp.execute(i_connection)){
+            return;
+        }
         //Otherwise, Send simple top index page.
         i_connection.sendHeader(200,"text/html",NULL);
         if(i_connection.isMethodType(Http::MT_GET)){
@@ -82,15 +100,19 @@
 
 int main()
 {
-    Net net;  //create a net instance.
+    net=new Net();//Net constructor must be created after started RTOS
+    //Prepare configulation.
+    cfg.setUPnPIcon(64,64,8,"image/png","/rom/icon.png");
+    cfg.setUPnPUdn(0xe29f7102,0x4ba2,0x01e0,0);
+    cfg.setFriendlyName("MbedFileServer");
 
     //try to override setting by local file.
     if(!cfg.loadFromFile("/local/mimic.cfg")){
-        wait_ms(1000);
+        Thread::wait(2000);//wait for SD card initialization.
         cfg.loadFromFile("/sd/mimic.cfg");
     }
     FsHttpd httpd(cfg); //create a httpd instance.
-    net.start(cfg);
+    net->start(cfg);
     httpd.loop();  //start httpd loop.
     return 0;
 }