User | Revision | Line number | New contents of line |
mbed714 |
0:ccb3da95ae98
|
1
|
#include "mbed.h"
|
mbed714 |
0:ccb3da95ae98
|
2
|
#include "EthernetNetIf.h"
|
mbed714 |
0:ccb3da95ae98
|
3
|
#include "HTTPClient.h"
|
mbed714 |
0:ccb3da95ae98
|
4
|
#include "NTPClient.h"
|
mbed714 |
0:ccb3da95ae98
|
5
|
#include "HTTPServer.h"
|
mbed714 |
0:ccb3da95ae98
|
6
|
#include "RPCFunction.h"
|
mbed714 |
0:ccb3da95ae98
|
7
|
|
mbed714 |
0:ccb3da95ae98
|
8
|
#include "AvailableMemory.h"
|
mbed714 |
0:ccb3da95ae98
|
9
|
|
mbed714 |
0:ccb3da95ae98
|
10
|
#define HOSTNAME "mbedSE"
|
mbed714 |
0:ccb3da95ae98
|
11
|
|
mbed714 |
0:ccb3da95ae98
|
12
|
EthernetNetIf eth(HOSTNAME);
|
mbed714 |
0:ccb3da95ae98
|
13
|
HTTPClient http;
|
mbed714 |
0:ccb3da95ae98
|
14
|
NTPClient ntp;
|
mbed714 |
0:ccb3da95ae98
|
15
|
HTTPServer svr;
|
mbed714 |
0:ccb3da95ae98
|
16
|
|
mbed714 |
0:ccb3da95ae98
|
17
|
DigitalOut led1(LED1, "led1");
|
mbed714 |
0:ccb3da95ae98
|
18
|
DigitalOut led2(LED2, "led2");
|
mbed714 |
0:ccb3da95ae98
|
19
|
DigitalOut led3(LED3, "led3");
|
mbed714 |
0:ccb3da95ae98
|
20
|
DigitalOut led4(LED4, "led4");
|
mbed714 |
0:ccb3da95ae98
|
21
|
|
mbed714 |
0:ccb3da95ae98
|
22
|
void DoEcho(char* input, char* output);
|
mbed714 |
0:ccb3da95ae98
|
23
|
RPCFunction Echo(&DoEcho, "echo");
|
mbed714 |
0:ccb3da95ae98
|
24
|
|
mbed714 |
0:ccb3da95ae98
|
25
|
void DoEcho(char* input, char* output) {
|
mbed714 |
0:ccb3da95ae98
|
26
|
printf("%s\n", input);
|
mbed714 |
0:ccb3da95ae98
|
27
|
strcpy(output, input);
|
mbed714 |
0:ccb3da95ae98
|
28
|
}
|
mbed714 |
0:ccb3da95ae98
|
29
|
|
mbed714 |
0:ccb3da95ae98
|
30
|
int main() {
|
mbed714 |
0:ccb3da95ae98
|
31
|
|
mbed714 |
0:ccb3da95ae98
|
32
|
printf("\n\n/* Segundo Equipo NetServices library demonstration */\n");
|
mbed714 |
0:ccb3da95ae98
|
33
|
printf("Try starting the program with the network disconnected and then connect after a few timeouts reported\n\n");
|
mbed714 |
0:ccb3da95ae98
|
34
|
EthernetErr ethErr;
|
mbed714 |
0:ccb3da95ae98
|
35
|
int count = 0;
|
mbed714 |
0:ccb3da95ae98
|
36
|
do {
|
mbed714 |
0:ccb3da95ae98
|
37
|
printf("Setting up %d...\n", ++count);
|
mbed714 |
0:ccb3da95ae98
|
38
|
ethErr = eth.setup();
|
mbed714 |
0:ccb3da95ae98
|
39
|
if (ethErr) printf("Timeout\n", ethErr);
|
mbed714 |
0:ccb3da95ae98
|
40
|
} while (ethErr != ETH_OK);
|
mbed714 |
0:ccb3da95ae98
|
41
|
|
mbed714 |
0:ccb3da95ae98
|
42
|
printf("Connected OK\n");
|
mbed714 |
0:ccb3da95ae98
|
43
|
const char* hwAddr = eth.getHwAddr();
|
mbed714 |
0:ccb3da95ae98
|
44
|
printf("HW address : %02x:%02x:%02x:%02x:%02x:%02x\n",
|
mbed714 |
0:ccb3da95ae98
|
45
|
hwAddr[0], hwAddr[1], hwAddr[2],
|
mbed714 |
0:ccb3da95ae98
|
46
|
hwAddr[3], hwAddr[4], hwAddr[5]);
|
mbed714 |
0:ccb3da95ae98
|
47
|
|
mbed714 |
0:ccb3da95ae98
|
48
|
IpAddr ethIp = eth.getIp();
|
mbed714 |
0:ccb3da95ae98
|
49
|
printf("IP address : %d.%d.%d.%d\n", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
|
mbed714 |
0:ccb3da95ae98
|
50
|
printf("Check router DHCP table for name : %s\n", eth.getHostname());
|
mbed714 |
0:ccb3da95ae98
|
51
|
|
mbed714 |
0:ccb3da95ae98
|
52
|
printf("\nHTTPClient get...\n");
|
mbed714 |
0:ccb3da95ae98
|
53
|
HTTPText txt;
|
mbed714 |
0:ccb3da95ae98
|
54
|
HTTPResult r = http.get("http://mbed.org/media/uploads/donatien/hello.txt", &txt);
|
mbed714 |
0:ccb3da95ae98
|
55
|
if (r==HTTP_OK) {
|
mbed714 |
0:ccb3da95ae98
|
56
|
printf("Result ok : %s\n", txt.gets());
|
mbed714 |
0:ccb3da95ae98
|
57
|
} else {
|
mbed714 |
0:ccb3da95ae98
|
58
|
printf("Error %d\n", r);
|
mbed714 |
0:ccb3da95ae98
|
59
|
}
|
mbed714 |
0:ccb3da95ae98
|
60
|
|
mbed714 |
0:ccb3da95ae98
|
61
|
time_t ctTime;
|
mbed714 |
0:ccb3da95ae98
|
62
|
ctTime = time(NULL);
|
mbed714 |
0:ccb3da95ae98
|
63
|
printf("\nCurrent time is (UTC): %d %s\n", ctTime, ctime(&ctTime));
|
mbed714 |
0:ccb3da95ae98
|
64
|
printf("NTP setTime...\n");
|
mbed714 |
0:ccb3da95ae98
|
65
|
Host server(IpAddr(), 123, "pool.ntp.org");
|
mbed714 |
0:ccb3da95ae98
|
66
|
printf("Result : %d\n", ntp.setTime(server));
|
mbed714 |
0:ccb3da95ae98
|
67
|
|
mbed714 |
0:ccb3da95ae98
|
68
|
ctTime = time(NULL);
|
mbed714 |
0:ccb3da95ae98
|
69
|
printf("\nTime is now (UTC): %d %s\n", ctTime, ctime(&ctTime));
|
mbed714 |
0:ccb3da95ae98
|
70
|
|
mbed714 |
0:ccb3da95ae98
|
71
|
printf("NTP setTime to a deliberately incorrect server...\n");
|
mbed714 |
0:ccb3da95ae98
|
72
|
server.setName("www.google.com");
|
mbed714 |
0:ccb3da95ae98
|
73
|
printf("Result : %d\n", ntp.setTime(server));
|
mbed714 |
0:ccb3da95ae98
|
74
|
|
mbed714 |
0:ccb3da95ae98
|
75
|
ctTime = time(NULL);
|
mbed714 |
0:ccb3da95ae98
|
76
|
printf("\nTime should still be correct (UTC): %d %s\n", ctTime, ctime(&ctTime));
|
mbed714 |
0:ccb3da95ae98
|
77
|
|
mbed714 |
0:ccb3da95ae98
|
78
|
char ip[16];
|
mbed714 |
0:ccb3da95ae98
|
79
|
sprintf(ip, "%d.%d.%d.%d", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
|
mbed714 |
0:ccb3da95ae98
|
80
|
|
mbed714 |
0:ccb3da95ae98
|
81
|
#define PORT 80
|
mbed714 |
0:ccb3da95ae98
|
82
|
svr.addHandler<RPCHandler>("/rpc");
|
mbed714 |
0:ccb3da95ae98
|
83
|
svr.bind(PORT);
|
mbed714 |
0:ccb3da95ae98
|
84
|
printf("Server listening (port %d)\n", PORT);
|
mbed714 |
0:ccb3da95ae98
|
85
|
printf("- LED1 should flash\n");
|
mbed714 |
0:ccb3da95ae98
|
86
|
printf("- type into browser to test url decode : %s/rpc/echo/run \"quoted string with <>\" or http://192.168.1.103/rpc/echo/run%%20%%22quoted%%20string%%20with%%20%%3C%%3E%%22\n", ip);
|
mbed714 |
0:ccb3da95ae98
|
87
|
|
mbed714 |
0:ccb3da95ae98
|
88
|
printf("Available memory (exact bytes) : %d\n", AvailableMemory(1));
|
mbed714 |
0:ccb3da95ae98
|
89
|
|
mbed714 |
0:ccb3da95ae98
|
90
|
Timer tm;
|
mbed714 |
0:ccb3da95ae98
|
91
|
tm.start();
|
mbed714 |
0:ccb3da95ae98
|
92
|
|
mbed714 |
0:ccb3da95ae98
|
93
|
while (true) {
|
mbed714 |
0:ccb3da95ae98
|
94
|
Net::poll();
|
mbed714 |
0:ccb3da95ae98
|
95
|
if (tm.read() > 0.5) {
|
mbed714 |
0:ccb3da95ae98
|
96
|
led1 = !led1;
|
mbed714 |
0:ccb3da95ae98
|
97
|
tm.start();
|
mbed714 |
0:ccb3da95ae98
|
98
|
}
|
mbed714 |
0:ccb3da95ae98
|
99
|
}
|
mbed714 |
0:ccb3da95ae98
|
100
|
} |