HTTP_SDCard_File_Server_WIZwiki-W7500 avec gestion des extensions MIME

Dependencies:   SDFileSystem WIZnetInterface mbed STATIC_COLORS

Fork of HTTP_SDCard_File_Server_WIZwiki-W7500 by WIZnet

WIZnet WIZwiki-W7500

/media/uploads/Fo170/wizwiki-w7500_usb_connected.jpg

/media/uploads/Fo170/wiznet_logo_110x37.png http://www.wiznet.co.kr/product-item/w7500/

Windows serial configuration https://developer.mbed.org/handbook/Windows-serial-configuration https://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe

How to write the firmware into WIZwiki-W7500 https://developer.mbed.org/teams/WIZnet/wiki/How-to-write-the-firmware-into-WIZwiki-W

Data Output using Serial Port https://blog.wiznettechnology.com/2015/08/14/wiznet-wizwiki-w7500-tutorial-exercise-2-data-output-using-serial-port/ http://wizwiki.net/wiki/doku.php?id=products:w7500:peripherals:uart

SDFileSystem Instanciation

SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); WIZwiki-W7500

/media/uploads/Fo170/wizwiki_w7500_spi_sch.png

Ethernet Initialization

eth.init () uses the eth.init (MAC) If you use DHCP instead, and when using a Static IP uses eth.init ((uint8_t *) MAC, IP, MASK, GATEWAY). This section uses a static IP.

  1. define MAC "\x\x\x\x\x\x" Should be Replaced with your MAC
  2. define IP "192.168.77.100" Should belong with your lan.
  3. define MASK "255.255.255.0"
  4. define GATEWAY "192.168.77.1"

eth.init((uint8_t*)MAC); Use DHCP for WIZnetInterface eth.init((uint8_t*)MAC,IP,MASK,GATEWAY); IP,mask,Gateway

Also watch its pages, the initial contributor to the project For Import the example https://developer.mbed.org/teams/WIZnet/code/HTTP_SDCard_File_Server_WIZwiki-W7500/

Wiki on ARMmbed https://developer.mbed.org/teams/WIZnet/code/HTTP_SDCard_File_Server_WIZwiki-W7500/wiki/HTTP_SDCard_File_Server_WIZwiki-W7500

/media/uploads/Fo170/wp_20160508_008.jpg

WIZwiki_W7500 LED RGB :

/media/uploads/Fo170/wizwiki_w7500_led_rgb.png

LED1 = LED_RED = LEDR = PC_8

LED2 = LED_GREEN = LEDG = PC_9

LED3 = LED_BLUE = LEDB = PC_5

LED4 = LED_BLUE

Files at this revision

API Documentation at this revision

Comitter:
gsteiert
Date:
Fri Dec 06 03:57:29 2013 +0000
Parent:
0:28bc7ce77e20
Child:
2:5c9ce3b50de6
Commit message:
Committing for publishing

Changed in this revision

EthernetInterface.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
muri.cpp Show annotated file Show diff for this revision Revisions of this file
muri.h Show annotated file Show diff for this revision Revisions of this file
--- a/EthernetInterface.lib	Sat Sep 07 04:43:57 2013 +0000
+++ b/EthernetInterface.lib	Fri Dec 06 03:57:29 2013 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/EthernetInterface/#b6107798aa54
+http://mbed.org/users/mbed_official/code/EthernetInterface/#cba86db5ab96
--- a/main.cpp	Sat Sep 07 04:43:57 2013 +0000
+++ b/main.cpp	Fri Dec 06 03:57:29 2013 +0000
@@ -105,6 +105,8 @@
 //    TCPSocketServer server;
     server.bind(HTTPD_SERVER_PORT);
     server.listen();
+    
+    init_dio(); //initialize pmd digital IO
 
     while (true) {
         printf("\nWait for new connection...\r\n");
--- a/muri.cpp	Sat Sep 07 04:43:57 2013 +0000
+++ b/muri.cpp	Fri Dec 06 03:57:29 2013 +0000
@@ -1,8 +1,58 @@
 #include "mbed.h"
+#include "rtos.h"
 #include "muri.h"
 
 I2C i2c(p28, p27);
+//PwmOut pwm1(p26);
+PwmOut pwm(p25);
+DigitalInOut pmd1(p14);
+DigitalInOut pmd2(p11);
+DigitalInOut pmd3(p12);
+DigitalInOut pmd4(p13);
+DigitalInOut pmd7(p24);
+DigitalInOut pmd8(p23);
+DigitalInOut pmd9(p22);
+DigitalInOut pmd10(p21);
 
+osTimerDef(poff, pwm_off);
+osTimerId off_timer;
+
+void init_dio()
+{
+    pmd1.mode(PullNone);
+    pmd1.mode(OpenDrain);
+    pmd1.write(1);
+    pmd1.output();
+    pmd2.mode(PullNone);
+    pmd2.mode(OpenDrain);
+    pmd2.write(1);
+    pmd2.output();
+    pmd3.mode(PullNone);
+    pmd3.mode(OpenDrain);
+    pmd3.write(1);
+    pmd3.output();
+    pmd4.mode(PullNone);
+    pmd4.mode(OpenDrain);
+    pmd4.write(1);
+    pmd4.output();
+    pmd7.mode(PullNone);
+    pmd7.mode(OpenDrain);
+    pmd7.write(1);
+    pmd7.output();
+    pmd8.mode(PullNone);
+    pmd8.mode(OpenDrain);
+    pmd8.write(1);
+    pmd8.output();
+    pmd9.mode(PullNone);
+    pmd9.mode(OpenDrain);
+    pmd9.write(1);
+    pmd9.output();
+    pmd10.mode(PullNone);
+    pmd10.mode(OpenDrain);
+    pmd10.write(1);
+    pmd10.output();
+    off_timer = osTimerCreate(osTimer(poff), osTimerOnce, NULL);
+}
 
 void cmd_i2c_write(char* qry, char* data, char* resp)
 {
@@ -99,6 +149,151 @@
     }
 }
 
+void cmd_pmd_setio(char* qry, char* data, char* resp)
+{
+    int pdir = -1;
+    int pdata = -1;
+    if (sscanf(qry, "?%2x", &pdir) == 1) {
+        if (pdir == 0) {
+            pmd1.mode(PullNone);
+            pmd2.mode(PullNone);
+            pmd3.mode(PullNone);
+            pmd4.mode(PullNone);
+            pmd7.mode(PullNone);
+            pmd8.mode(PullNone);
+            pmd9.mode(PullNone);
+            pmd10.mode(PullNone);
+        } else {
+            if (sscanf(qry+3, "&%2x", &pdata) == 1) {
+                if (pdir & (1 << 0)) {
+                    if (pdata & (1 << 0)) pmd1.mode(PullUp);
+                    else pmd1.mode(PullDown);
+                }  else {
+                    pmd1.mode(PullNone);
+                }
+                if (pdir & (1 << 1)) {
+                    if (pdata & (1 << 1)) pmd2.mode(PullUp);
+                    else pmd2.mode(PullDown);
+                }  else {
+                    pmd2.mode(PullNone);
+                }
+                if (pdir & (1 << 2)) {
+                    if (pdata & (1 << 2)) pmd3.mode(PullUp);
+                    else pmd3.mode(PullDown);
+                }  else {
+                    pmd3.mode(PullNone);
+                }
+                if (pdir & (1 << 3)) {
+                    if (pdata & (1 << 3)) pmd4.mode(PullUp);
+                    else pmd4.mode(PullDown);
+                }  else {
+                    pmd4.mode(PullNone);
+                }
+                if (pdir & (1 << 4)) {
+                    if (pdata & (1 << 4)) pmd7.mode(PullUp);
+                    else pmd7.mode(PullDown);
+                }  else {
+                    pmd7.mode(PullNone);
+                }
+                if (pdir & (1 << 5)) {
+                    if (pdata & (1 << 5)) pmd8.mode(PullUp);
+                    else pmd8.mode(PullDown);
+                }  else {
+                    pmd8.mode(PullNone);
+                }
+                if (pdir & (1 << 6)) {
+                    if (pdata & (1 << 6)) pmd9.mode(PullUp);
+                    else pmd9.mode(PullDown);
+                }  else {
+                    pmd9.mode(PullNone);
+                }
+                if (pdir & (1 << 7)) {
+                    if (pdata & (1 << 7)) pmd10.mode(PullUp);
+                    else pmd10.mode(PullDown);
+                }  else {
+                    pmd10.mode(PullNone);
+                }
+            }
+        }
+
+        pdata = 0;
+        pdata += (pmd1 << 0);
+        pdata += (pmd2 << 1);
+        pdata += (pmd3 << 2);
+        pdata += (pmd4 << 3);
+        pdata += (pmd7 << 4);
+        pdata += (pmd8 << 5);
+        pdata += (pmd9 << 6);
+        pdata += (pmd10 << 7);
+        sprintf(resp,"200 %02x", pdata);
+    } else {
+        sprintf(resp,"400 Invalid parameters: %s\r\n", qry);
+    }
+}
+
+void cmd_pmd_write(char* qry, char* data, char* resp)
+{
+    int pdata = -1;
+    if (sscanf(qry, "?%2x", &pdata) == 1) {
+        pmd1 = pdata & (1 << 0);
+        pmd2 = pdata & (1 << 1);
+        pmd3 = pdata & (1 << 2);
+        pmd4 = pdata & (1 << 3);
+        pmd7 = pdata & (1 << 4);
+        pmd8 = pdata & (1 << 5);
+        pmd9 = pdata & (1 << 6);
+        pmd10 = pdata & (1 << 7);
+        pdata = 0;
+        pdata += (pmd1 << 0);
+        pdata += (pmd2 << 1);
+        pdata += (pmd3 << 2);
+        pdata += (pmd4 << 3);
+        pdata += (pmd7 << 4);
+        pdata += (pmd8 << 5);
+        pdata += (pmd9 << 6);
+        pdata += (pmd10 << 7);
+        sprintf(resp,"200 %02x", pdata);
+    } else {
+        sprintf(resp,"400 Invalid parameters: %s\r\n", qry);
+
+    }
+}
+
+void cmd_pmd_read(char* qry, char* data, char* resp)
+{
+    int pdata = 0;
+    pdata += (pmd1 << 0);
+    pdata += (pmd2 << 1);
+    pdata += (pmd3 << 2);
+    pdata += (pmd4 << 3);
+    pdata += (pmd7 << 4);
+    pdata += (pmd8 << 5);
+    pdata += (pmd9 << 6);
+    pdata += (pmd10 << 7);
+    sprintf(resp,"200 %02x", pdata);
+}
+
+void pwm_off(void const *arg)
+{
+//        pwm.period_us(0);
+    pwm.pulsewidth_us(0);
+}
+
+void cmd_pwm_set(char* qry, char* data, char* resp)
+{
+    int pwmP = 0;
+    int pwmW = 0;
+    int pwmD = 0;
+    if (sscanf(qry, "?%4x&%4x&%4x", &pwmP, &pwmW, &pwmD) == 3) {
+        pwm.period_us(pwmP);
+        pwm.pulsewidth_us(pwmW);
+        osTimerStart(off_timer, pwmD);
+        sprintf(resp,"200 %04x %04x %04x", pwmP, pwmW, pwmD);
+    } else {
+        sprintf(resp,"400 Invalid parameters: %s\r\n", qry);
+
+    }
+}
 
 void muri(char* uri, char* data, char* resp)
 {
@@ -109,12 +304,20 @@
     char *qry;
     printf("muri uri:  %s\n", uri);
     qry = strstr(uri, "?");
-    if (!strncmp(uri, "i2cw?", 5)) { // i2cW [addr] [data] [data] [data] ...
+    if (!strncmp(uri, "i2cw?", 5)) { // i2cw [addr] [data] [data] [data] ...
         cmd_i2c_write(qry, data, resp);
-    } else if (!strncmp(uri, "i2cr?", 5)) { // i2cR [addr] [count]
+    } else if (!strncmp(uri, "i2cr?", 5)) { // i2cr [addr] [count]
         cmd_i2c_read(qry, data, resp);
-    } else if (!strncmp(uri, "i2car?", 6)) { // i2cAR [addr] [radd] [count]
+    } else if (!strncmp(uri, "i2car?", 6)) { // i2car [addr] [radd] [count]
         cmd_i2c_addr_read(qry, data, resp);
+    } else if (!strncmp(uri, "pmdio?", 6)) { // pmdio [dir] [data]
+        cmd_pmd_setio(qry, data, resp);
+    } else if (!strncmp(uri, "pmdw?", 5)) { // pmdw [data]
+        cmd_pmd_write(qry, data, resp);
+    } else if (!strncmp(uri, "pmdr", 4)) { // pmdr
+        cmd_pmd_read(qry, data, resp);
+    } else if (!strncmp(uri, "pwmd?", 5)) { // pwmd [period] [width] [duration]
+        cmd_pwm_set(qry, data, resp);
     } else {
         sprintf(resp, "501 %s", uri);
     }
--- a/muri.h	Sat Sep 07 04:43:57 2013 +0000
+++ b/muri.h	Fri Dec 06 03:57:29 2013 +0000
@@ -1,8 +1,15 @@
 
 //I2C i2c(p28, p27);
 
+void init_dio();
+void pwm_off(void const *arg);
+
 void cmd_i2c_write(char* qry, char* data, char* resp);
 void cmd_i2c_read(char* qry, char* data, char* resp);
 void cmd_i2c_addr_read(char* qry, char* data, char* resp);
+void cmd_pmd_setio(char* qry, char* data, char* resp);
+void cmd_pmd_write(char* qry, char* data, char* resp);
+void cmd_pmd_read(char* qry, char* data, char* resp);
+void cmd_pwm_set(char* qry, char* data, char* resp);
 void muri(char* uri, char* data, char* resp);