config.c
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include <stdlib.h>
00037 #include <string.h>
00038
00039 #include "contiki-net.h"
00040 #include "cfs/cfs.h"
00041 #include "sys/log.h"
00042 #include "lib/error.h"
00043 #include "net/ethernet-drv.h"
00044
00045
00046 #if LOG_CONF_ENABLED
00047 static char * CC_FASTCALL
00048 ipaddrtoa(uip_ipaddr_t *ipaddr, char *buffer)
00049 {
00050 char *ptr = buffer;
00051 u8_t i;
00052
00053 for(i = 0; i < 4; ++i) {
00054 *ptr = '.';
00055 utoa(ipaddr->u8[i], ++ptr, 10);
00056 ptr += strlen(ptr);
00057 }
00058
00059 return buffer + 1;
00060 }
00061 #endif
00062
00063 struct ethernet_config * CC_FASTCALL
00064 config_read(char *filename)
00065 {
00066 static struct {
00067 uip_ipaddr_t hostaddr;
00068 uip_ipaddr_t netmask;
00069 uip_ipaddr_t draddr;
00070 uip_ipaddr_t resolvaddr;
00071 struct ethernet_config ethernetcfg;
00072 } config;
00073 int file;
00074
00075 file = cfs_open(filename, CFS_READ);
00076 if(file < 0) {
00077 log_message(filename, ": File not found");
00078 error_exit();
00079 }
00080
00081 if(cfs_read(file, &config, sizeof(config)) < sizeof(config)
00082 - sizeof(config.ethernetcfg.name)) {
00083 log_message(filename, ": No config file");
00084 error_exit();
00085 }
00086
00087 cfs_close(file);
00088
00089 log_message("IP Address: ", ipaddrtoa(&config.hostaddr, uip_buf));
00090 log_message("Subnet Mask: ", ipaddrtoa(&config.netmask, uip_buf));
00091 log_message("Def. Router: ", ipaddrtoa(&config.draddr, uip_buf));
00092 log_message("DNS Server: ", ipaddrtoa(&config.resolvaddr, uip_buf));
00093
00094 #ifndef ETHERNET
00095 log_message("Eth. Driver: ", config.ethernetcfg.name);
00096 #else
00097 #define _stringize(arg) #arg
00098 #define stringize(arg) _stringize(arg)
00099 log_message("Eth. Driver: ", stringize(ETHERNET));
00100 #undef _stringize
00101 #undef stringize
00102 #endif
00103 log_message("Driver Port: $", utoa(config.ethernetcfg.addr, uip_buf, 16));
00104
00105 uip_sethostaddr(&config.hostaddr);
00106 uip_setnetmask(&config.netmask);
00107 uip_setdraddr(&config.draddr);
00108 #if WITH_DNS
00109 resolv_conf(&config.resolvaddr);
00110 #endif
00111
00112 return &config.ethernetcfg;
00113 }
00114