Station API

Dependents:   GMCStation

Committer:
yamaguch
Date:
Mon Dec 12 02:33:21 2011 +0000
Revision:
1:a22e390c70b3
Parent:
0:d81f611c59ec
Child:
2:a9d1a9c92927
0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yamaguch 0:d81f611c59ec 1 #include "EthernetNetIf.h"
yamaguch 1:a22e390c70b3 2 #include "Utils.h"
yamaguch 0:d81f611c59ec 3
yamaguch 0:d81f611c59ec 4 class Ether {
yamaguch 0:d81f611c59ec 5 public:
yamaguch 0:d81f611c59ec 6 Ether(bool verbose = false)
yamaguch 0:d81f611c59ec 7 : active(false), verbose(verbose) {
yamaguch 0:d81f611c59ec 8 }
yamaguch 0:d81f611c59ec 9
yamaguch 0:d81f611c59ec 10 Ether(IpAddr ip, IpAddr subnet, IpAddr gateway, IpAddr dns, bool verbose = false)
yamaguch 0:d81f611c59ec 11 : eth(ip, subnet, gateway, dns), active(false), verbose(verbose) {
yamaguch 0:d81f611c59ec 12 }
yamaguch 0:d81f611c59ec 13
yamaguch 0:d81f611c59ec 14 static Ether create(IpAddr ip, IpAddr subnet, IpAddr gateway, IpAddr dns, bool verbose = false) {
yamaguch 0:d81f611c59ec 15 return Ether(ip, subnet, gateway, dns, verbose);
yamaguch 0:d81f611c59ec 16 }
yamaguch 0:d81f611c59ec 17
yamaguch 0:d81f611c59ec 18 static Ether create(char *filename = 0, bool verbose = false) {
yamaguch 0:d81f611c59ec 19 if (filename) {
yamaguch 0:d81f611c59ec 20 char path[32];
yamaguch 0:d81f611c59ec 21 LocalFileSystem local("local");
yamaguch 0:d81f611c59ec 22 sprintf(path, "/local/%s", filename);
yamaguch 0:d81f611c59ec 23 if (FILE *fp = fopen(path, "r")) {
yamaguch 0:d81f611c59ec 24 char b1, b2, b3, b4;
yamaguch 1:a22e390c70b3 25 IpAddr ip = Utils::fgetValues(fp, "ip-address:%hhu.%hhu.%hhu.%hhu", &b1, &b2, &b3, &b4) ? IpAddr(b1, b2, b3, b4) : IpAddr();
yamaguch 1:a22e390c70b3 26 IpAddr subnet = Utils::fgetValues(fp, "subnet-mask:%hhu.%hhu.%hhu.%hhu", &b1, &b2, &b3, &b4) ? IpAddr(b1, b2, b3, b4) : IpAddr();
yamaguch 1:a22e390c70b3 27 IpAddr gateway = Utils::fgetValues(fp, "gateway-address:%hhu.%hhu.%hhu.%hhu", &b1, &b2, &b3, &b4) ? IpAddr(b1, b2, b3, b4) : IpAddr();
yamaguch 1:a22e390c70b3 28 IpAddr dns = Utils::fgetValues(fp, "dns-address:%hhu.%hhu.%hhu.%hhu", &b1, &b2, &b3, &b4) ? IpAddr(b1, b2, b3, b4) : IpAddr();
yamaguch 0:d81f611c59ec 29 fclose(fp);
yamaguch 0:d81f611c59ec 30 if (verbose) {
yamaguch 0:d81f611c59ec 31 ::printf( "ip-address:%hhu.%hhu.%hhu.%hhu\n", ip[0], ip[1], ip[2], ip[3]);
yamaguch 0:d81f611c59ec 32 ::printf( "subnet-mask:%hhu.%hhu.%hhu.%hhu\n", subnet[0], subnet[1], subnet[2], subnet[3]);
yamaguch 0:d81f611c59ec 33 ::printf( "gateway-address:%hhu.%hhu.%hhu.%hhu\n", gateway[0], gateway[1], gateway[2], gateway[3]);
yamaguch 0:d81f611c59ec 34 ::printf( "dns-address:%hhu.%hhu.%hhu.%hhu\n", dns[0], dns[1], dns[2], dns[3]);
yamaguch 0:d81f611c59ec 35 }
yamaguch 1:a22e390c70b3 36 return Ether(ip, subnet, gateway, dns, verbose);
yamaguch 0:d81f611c59ec 37 }
yamaguch 0:d81f611c59ec 38 }
yamaguch 0:d81f611c59ec 39 return Ether();
yamaguch 0:d81f611c59ec 40 }
yamaguch 0:d81f611c59ec 41
yamaguch 0:d81f611c59ec 42 void setup() {
yamaguch 0:d81f611c59ec 43 EthernetErr err = eth.setup();
yamaguch 0:d81f611c59ec 44 active = err == ETH_OK;
yamaguch 0:d81f611c59ec 45 if (verbose) {
yamaguch 0:d81f611c59ec 46 ::printf("EthernetNetIf.setup() = %d\n", err);
yamaguch 0:d81f611c59ec 47 }
yamaguch 0:d81f611c59ec 48 }
yamaguch 0:d81f611c59ec 49
yamaguch 1:a22e390c70b3 50 bool isActive() {
yamaguch 0:d81f611c59ec 51 return active;
yamaguch 0:d81f611c59ec 52 }
yamaguch 0:d81f611c59ec 53
yamaguch 0:d81f611c59ec 54 private:
yamaguch 0:d81f611c59ec 55 EthernetNetIf eth;
yamaguch 0:d81f611c59ec 56 bool active;
yamaguch 0:d81f611c59ec 57 bool verbose;
yamaguch 1:a22e390c70b3 58 };