00001
00046 #include <stdio.h>
00047 #include <io.h>
00048
00049 #include <arpa/inet.h>
00050 #include <net/route.h>
00051 #include <pro/dhcp.h>
00052 #include <pro/sntp.h>
00053
00054 #include <sys/version.h>
00055 #include <sys/confnet.h>
00056 #include <sys/timer.h>
00057 #include <sys/heap.h>
00058 #include <sys/syslog.h>
00059
00060 #include <dev/board.h>
00061
00067 static char *version = "1.0.1";
00068
00069
00070
00071
00072
00075 #define MYMAC 0x00, 0x06, 0x98, 0x00, 0x00, 0x00
00076
00079 #define MYIP "192.168.192.100"
00080
00083 #define MYMASK "255.255.255.0"
00084
00089 #define MYGATE "192.168.192.1"
00090
00092 #define MYLOGD "192.168.192.222"
00093
00095 #define MYTIMED "130.149.17.21"
00096
00098 #define MYUART "uart0"
00099
00101 #define MYBAUD 115200
00102
00104 #define MYDEV DEV_UART
00105
00107 #define MYTZ -1
00108
00109
00110 #ifdef __IMAGECRAFT__
00111 #define COMPILERNAME "ICCAVR"
00112 #else
00113 #define COMPILERNAME "GCC"
00114 #endif
00115
00116
00117 #define UART_OK 0x0001
00118 #define STDOUT_OK 0x0002
00119 #define STDERR_OK 0x0004
00120 #define BAUDRATE_OK 0x0008
00121 #define LANDEV_OK 0x0010
00122 #define NETIF_OK 0x0020
00123 #define NETROUTE_OK 0x0040
00124 #define TIMED_OK 0x0080
00125
00126
00127
00128
00129 int main(void)
00130 {
00131 u_long baud = MYBAUD;
00132 u_char mac[6] = { MYMAC };
00133 u_long timeserver = inet_addr(MYTIMED);
00134 int rc = 0;
00135 time_t now;
00136
00137
00138
00139
00140
00141 if(NutRegisterDevice(&MYDEV, 0, 0) == 0) {
00142 rc |= UART_OK;
00143 if(freopen(MYUART, "w", stdout)) {
00144 rc |= STDOUT_OK;
00145 if(_ioctl(_fileno(stdout), UART_SETSPEED, &baud) == 0) {
00146 rc |= BAUDRATE_OK;
00147 }
00148 }
00149 if(freopen(MYUART, "w", stderr)) {
00150 rc |= STDERR_OK;
00151 }
00152 }
00153
00154
00155
00156
00157 if(rc & STDOUT_OK) {
00158 printf("\n\nTimeLog %s\nNut/OS %s\n", version, NutVersionString());
00159 puts("Compiled by " COMPILERNAME);
00160 puts("Configure network");
00161 }
00162
00163 #ifdef DEV_ETHER
00164
00165
00166
00167 if(NutRegisterDevice(&DEV_ETHER, 0x8300, 5) == 0) {
00168 rc |= LANDEV_OK;
00169 if (NutDhcpIfConfig("eth0", 0, 60000) == 0) {
00170 rc |= NETIF_OK;
00171 }
00172 else if (NutDhcpIfConfig("eth0", mac, 60000) == 0) {
00173 rc |= NETIF_OK;
00174 }
00175 else if(NutNetIfConfig("eth0", mac, inet_addr(MYIP), inet_addr(MYMASK)) == 0) {
00176 rc |= NETIF_OK;
00177 #ifdef MYGATE
00178 if(NutIpRouteAdd(0, 0, inet_addr(MYGATE), &DEV_ETHER) == 0) {
00179 rc |= NETROUTE_OK;
00180 }
00181 #endif
00182 }
00183 }
00184
00185 if(rc & NETIF_OK) {
00186
00187
00188
00189 if(rc & STDOUT_OK) {
00190 puts("Query time from " MYTIMED);
00191 }
00192 _timezone = MYTZ * 60L * 60L;
00193 if(NutSNTPGetTime(×erver, &now) == 0) {
00194 rc |= TIMED_OK;
00195 stime(&now);
00196 }
00197 }
00198
00199
00200
00201
00202
00203 if(rc & STDOUT_OK) {
00204 puts("Initialize syslog");
00205 }
00206 openlog("logtime", (rc & STDERR_OK) ? LOG_PERROR : 0, LOG_USER);
00207 if(rc & NETIF_OK) {
00208 setlogserver(inet_addr(MYLOGD), 0);
00209 }
00210 syslog(LOG_INFO, "TimeLog %s started on Nut/OS %s", version, NutVersionString());
00211
00212
00213
00214
00215 if((rc & UART_OK) == 0) {
00216 syslog(LOG_ERR, "Registering UART device failed");
00217 }
00218 else if((rc & STDOUT_OK) == 0) {
00219 syslog(LOG_ERR, "Assigning stdout failed");
00220 }
00221 else if((rc & STDERR_OK) == 0) {
00222 syslog(LOG_ERR, "Assigning stderr failed");
00223 }
00224 else if((rc & BAUDRATE_OK) == 0) {
00225 syslog(LOG_ERR, "Setting baudrate failed");
00226 }
00227 if((rc & LANDEV_OK) == 0) {
00228 syslog(LOG_ERR, "Registering Ethernet device failed");
00229 }
00230 else if((rc & NETIF_OK) == 0) {
00231 syslog(LOG_ERR, "Configuring network interface failed");
00232 }
00233 else {
00234 syslog(LOG_INFO, "IP %s", inet_ntoa(confnet.cdn_ip_addr));
00235 syslog(LOG_INFO, "Gate %s", inet_ntoa(confnet.cdn_gateway));
00236 syslog(LOG_INFO, "Timed " MYTIMED);
00237 syslog(LOG_INFO, "Syslogd " MYLOGD);
00238 }
00239
00240
00241
00242
00243 for(;;) {
00244 syslog(LOG_DEBUG, "%d bytes free", NutHeapAvailable());
00245 NutSleep(60000);
00246 }
00247 #endif
00248 return 0;
00249 }