User | Revision | Line number | New contents of line |
slowness |
0:58c3d014a4e7
|
1
|
#include "mbed.h"
|
slowness |
0:58c3d014a4e7
|
2
|
#include "EthernetNetIf.h"
|
slowness |
0:58c3d014a4e7
|
3
|
#include "HTTPServer.h"
|
slowness |
0:58c3d014a4e7
|
4
|
#include "HTTPClient.h"
|
slowness |
0:58c3d014a4e7
|
5
|
|
slowness |
0:58c3d014a4e7
|
6
|
#define LOCAL "local"
|
slowness |
0:58c3d014a4e7
|
7
|
Serial pc(p9,p10);
|
slowness |
0:58c3d014a4e7
|
8
|
HTTPServer svr;
|
slowness |
0:58c3d014a4e7
|
9
|
|
slowness |
0:58c3d014a4e7
|
10
|
DigitalOut led1(LED1, "led1");
|
slowness |
0:58c3d014a4e7
|
11
|
DigitalOut led2(LED2, "led2");
|
slowness |
0:58c3d014a4e7
|
12
|
DigitalOut led3(LED3, "led3");
|
slowness |
0:58c3d014a4e7
|
13
|
DigitalOut led4(LED4, "led4");
|
slowness |
0:58c3d014a4e7
|
14
|
|
slowness |
0:58c3d014a4e7
|
15
|
EthernetNetIf eth(
|
slowness |
0:58c3d014a4e7
|
16
|
IpAddr(169,254,113,94), //IP Address
|
slowness |
0:58c3d014a4e7
|
17
|
IpAddr(255,255,0,0), //Network Mask
|
slowness |
0:58c3d014a4e7
|
18
|
IpAddr(129,168,1,1), //Gateway /129.168.1.1
|
slowness |
0:58c3d014a4e7
|
19
|
IpAddr(129,168,1,1) //DNS /129.168.1.1
|
slowness |
0:58c3d014a4e7
|
20
|
);
|
slowness |
0:58c3d014a4e7
|
21
|
|
slowness |
0:58c3d014a4e7
|
22
|
LocalFileSystem local(LOCAL);
|
slowness |
0:58c3d014a4e7
|
23
|
HTTPClient http;
|
slowness |
0:58c3d014a4e7
|
24
|
|
slowness |
0:58c3d014a4e7
|
25
|
void lire_repertoire(struct dirent *p, DIR *d,FILE *file);
|
slowness |
0:58c3d014a4e7
|
26
|
|
slowness |
0:58c3d014a4e7
|
27
|
|
slowness |
0:58c3d014a4e7
|
28
|
int main() {
|
slowness |
0:58c3d014a4e7
|
29
|
|
slowness |
0:58c3d014a4e7
|
30
|
DIR *d;
|
slowness |
0:58c3d014a4e7
|
31
|
struct dirent *p;
|
slowness |
0:58c3d014a4e7
|
32
|
d = opendir("/" LOCAL);
|
slowness |
0:58c3d014a4e7
|
33
|
|
slowness |
0:58c3d014a4e7
|
34
|
pc.baud(9600);
|
slowness |
0:58c3d014a4e7
|
35
|
pc.printf("Setting up...\n\r");
|
slowness |
0:58c3d014a4e7
|
36
|
EthernetErr ethErr = eth.setup();
|
slowness |
0:58c3d014a4e7
|
37
|
if(ethErr)
|
slowness |
0:58c3d014a4e7
|
38
|
{
|
slowness |
0:58c3d014a4e7
|
39
|
pc.printf("Error %d in setup.\n\r", ethErr);
|
slowness |
0:58c3d014a4e7
|
40
|
return -1;
|
slowness |
0:58c3d014a4e7
|
41
|
}
|
slowness |
0:58c3d014a4e7
|
42
|
pc.printf("Setup OK\n\r");
|
slowness |
0:58c3d014a4e7
|
43
|
|
slowness |
0:58c3d014a4e7
|
44
|
FSHandler::mount("/local", "/"); //Mount /local path on web root path
|
slowness |
0:58c3d014a4e7
|
45
|
|
slowness |
0:58c3d014a4e7
|
46
|
svr.addHandler<FSHandler>("/");
|
slowness |
0:58c3d014a4e7
|
47
|
svr.addHandler<RPCHandler>("/rpc");
|
slowness |
0:58c3d014a4e7
|
48
|
svr.bind(80);
|
slowness |
0:58c3d014a4e7
|
49
|
|
slowness |
0:58c3d014a4e7
|
50
|
pc.printf("En Ecoute...\n\r");
|
slowness |
0:58c3d014a4e7
|
51
|
|
slowness |
0:58c3d014a4e7
|
52
|
Timer tm;
|
slowness |
0:58c3d014a4e7
|
53
|
tm.start();
|
slowness |
0:58c3d014a4e7
|
54
|
|
slowness |
0:58c3d014a4e7
|
55
|
FILE *fp = fopen( "/" LOCAL "/testmbed.htm", "w");
|
slowness |
0:58c3d014a4e7
|
56
|
if ( fp == NULL )
|
slowness |
0:58c3d014a4e7
|
57
|
{
|
slowness |
0:58c3d014a4e7
|
58
|
pc.printf("Could not open file for write\n");
|
slowness |
0:58c3d014a4e7
|
59
|
}
|
slowness |
0:58c3d014a4e7
|
60
|
fprintf(fp,"<B><font size=\"5\"> Liste de programme dans le Mbed :</font></B><br><br>");
|
slowness |
0:58c3d014a4e7
|
61
|
lire_repertoire(p,d,fp);
|
slowness |
0:58c3d014a4e7
|
62
|
|
slowness |
0:58c3d014a4e7
|
63
|
fclose(fp);
|
slowness |
0:58c3d014a4e7
|
64
|
pc.printf("\n - OK\n\r");
|
slowness |
0:58c3d014a4e7
|
65
|
|
slowness |
0:58c3d014a4e7
|
66
|
IpAddr ip = eth.getIp();
|
slowness |
0:58c3d014a4e7
|
67
|
pc.printf("Addresse IP local: %d.%d.%d.%d\r\n", ip[0], ip[1], ip[2], ip[3]);
|
slowness |
0:58c3d014a4e7
|
68
|
HTTPText txt;
|
slowness |
0:58c3d014a4e7
|
69
|
HTTPResult r = http.get("http://www.martobre.fr/films/get_ip.php", &txt);
|
slowness |
0:58c3d014a4e7
|
70
|
|
slowness |
0:58c3d014a4e7
|
71
|
if(r==HTTP_OK)
|
slowness |
0:58c3d014a4e7
|
72
|
{
|
slowness |
0:58c3d014a4e7
|
73
|
pc.printf("Adresse IP public :\n\r\"%s\"\n\r", txt.gets());
|
slowness |
0:58c3d014a4e7
|
74
|
}
|
slowness |
0:58c3d014a4e7
|
75
|
else
|
slowness |
0:58c3d014a4e7
|
76
|
{
|
slowness |
0:58c3d014a4e7
|
77
|
pc.printf("Error %d\n", r);
|
slowness |
0:58c3d014a4e7
|
78
|
}
|
slowness |
0:58c3d014a4e7
|
79
|
|
slowness |
0:58c3d014a4e7
|
80
|
//Listen indefinitely
|
slowness |
0:58c3d014a4e7
|
81
|
while(true)
|
slowness |
0:58c3d014a4e7
|
82
|
{
|
slowness |
0:58c3d014a4e7
|
83
|
Net::poll();
|
slowness |
0:58c3d014a4e7
|
84
|
if(tm.read()>.5)
|
slowness |
0:58c3d014a4e7
|
85
|
{
|
slowness |
0:58c3d014a4e7
|
86
|
led1=!led1; //Show that we are alive
|
slowness |
0:58c3d014a4e7
|
87
|
tm.start();
|
slowness |
0:58c3d014a4e7
|
88
|
}
|
slowness |
0:58c3d014a4e7
|
89
|
}
|
slowness |
0:58c3d014a4e7
|
90
|
}
|
slowness |
0:58c3d014a4e7
|
91
|
void lire_repertoire(struct dirent *p, DIR *d,FILE *file){
|
slowness |
0:58c3d014a4e7
|
92
|
char compteur=0;
|
slowness |
0:58c3d014a4e7
|
93
|
|
slowness |
0:58c3d014a4e7
|
94
|
if ( d != NULL ){
|
slowness |
0:58c3d014a4e7
|
95
|
while ( (p = readdir(d)) != NULL ){
|
slowness |
0:58c3d014a4e7
|
96
|
compteur++;
|
slowness |
0:58c3d014a4e7
|
97
|
fprintf(file,"%d/%s <br>",compteur, p->d_name);
|
slowness |
0:58c3d014a4e7
|
98
|
}
|
slowness |
0:58c3d014a4e7
|
99
|
}
|
slowness |
0:58c3d014a4e7
|
100
|
else{
|
slowness |
0:58c3d014a4e7
|
101
|
pc.printf("Could not open directory!\r");
|
slowness |
0:58c3d014a4e7
|
102
|
}
|
slowness |
0:58c3d014a4e7
|
103
|
} |