diff --git a/04_m1284p_WIZNET_loopback_DHCP/Application/loopback/loopback.c b/04_m1284p_WIZNET_loopback_DHCP/Application/loopback/loopback.c index a921092..8396cf7 100644 --- a/04_m1284p_WIZNET_loopback_DHCP/Application/loopback/loopback.c +++ b/04_m1284p_WIZNET_loopback_DHCP/Application/loopback/loopback.c @@ -24,13 +24,13 @@ int32_t loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port) getSn_DIPR(sn, destip); destport = getSn_DPORT(sn); - printf("%d:Connected - %d.%d.%d.%d : %d\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport); + PRINTF("%d:Connected - %d.%d.%d.%d : %u\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport); #endif setSn_IR(sn,Sn_IR_CON); } if((size = getSn_RX_RSR(sn)) > 0) // Don't need to check SOCKERR_BUSY because it doesn't not occur. { - if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; + if(size > LOOPBACK_DATA_BUF_SIZE) size = LOOPBACK_DATA_BUF_SIZE; ret = recv(sn, buf, size); if(ret <= 0) return ret; // check SOCKERR_BUSY & SOCKERR_XXX. For showing the occurrence of SOCKERR_BUSY. @@ -55,12 +55,12 @@ int32_t loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port) #endif if((ret = disconnect(sn)) != SOCK_OK) return ret; #ifdef _LOOPBACK_DEBUG_ - printf("%d:Socket Closed\r\n", sn); + PRINTF("%d:Socket Closed\r\n", sn); #endif break; case SOCK_INIT : #ifdef _LOOPBACK_DEBUG_ - printf("%d:Listen, TCP server loopback, port [%d]\r\n", sn, port); + PRINTF("%d:Listen, TCP server loopback, port [%u]\r\n", sn, port); #endif if( (ret = listen(sn)) != SOCK_OK) return ret; break; @@ -102,7 +102,7 @@ int32_t loopback_tcpc(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destpo if(getSn_IR(sn) & Sn_IR_CON) // Socket n interrupt register mask; TCP CON interrupt = connection with peer is successful { #ifdef _LOOPBACK_DEBUG_ - printf("%d:Connected to - %d.%d.%d.%d : %d\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport); + PRINTF("%d:Connected to - %d.%d.%d.%d : %u\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport); #endif setSn_IR(sn, Sn_IR_CON); // this interrupt should be write the bit cleared to '1' } @@ -112,7 +112,7 @@ int32_t loopback_tcpc(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destpo ////////////////////////////////////////////////////////////////////////////////////////////// if((size = getSn_RX_RSR(sn)) > 0) // Sn_RX_RSR: Socket n Received Size Register, Receiving data length { - if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; // DATA_BUF_SIZE means user defined buffer size (array) + if(size > LOOPBACK_DATA_BUF_SIZE) size = LOOPBACK_DATA_BUF_SIZE; // LOOPBACK_DATA_BUF_SIZE means user defined buffer size (array) ret = recv(sn, buf, size); // Data Receive process (H/W Rx socket buffer -> User's buffer) if(ret <= 0) return ret; // If the received data length <= 0, receive failed and process end @@ -140,13 +140,13 @@ int32_t loopback_tcpc(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destpo #endif if((ret=disconnect(sn)) != SOCK_OK) return ret; #ifdef _LOOPBACK_DEBUG_ - printf("%d:Socket Closed\r\n", sn); + PRINTF("%d:Socket Closed\r\n", sn); #endif break; case SOCK_INIT : #ifdef _LOOPBACK_DEBUG_ - printf("%d:Try to connect to the %d.%d.%d.%d : %d\r\n", sn, destip[0], destip[1], destip[2], destip[3], destport); + PRINTF("%d:Try to connect to the %d.%d.%d.%d : %u\r\n", sn, destip[0], destip[1], destip[2], destip[3], destport); #endif if( (ret = connect(sn, destip, destport)) != SOCK_OK) return ret; // Try to TCP connect to the TCP server (destination) break; @@ -181,12 +181,12 @@ int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port) case SOCK_UDP : if((size = getSn_RX_RSR(sn)) > 0) { - if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; + if(size > LOOPBACK_DATA_BUF_SIZE) size = LOOPBACK_DATA_BUF_SIZE; ret = recvfrom(sn, buf, size, destip, (uint16_t*)&destport); if(ret <= 0) { #ifdef _LOOPBACK_DEBUG_ - printf("%d: recvfrom error. %ld\r\n",sn,ret); + PRINTF("%d: recvfrom error. %ld\r\n",sn,ret); #endif return ret; } @@ -198,7 +198,7 @@ int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port) if(ret < 0) { #ifdef _LOOPBACK_DEBUG_ - printf("%d: sendto error. %ld\r\n",sn,ret); + PRINTF("%d: sendto error. %ld\r\n",sn,ret); #endif return ret; } @@ -213,7 +213,7 @@ int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port) if((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn) return ret; #ifdef _LOOPBACK_DEBUG_ - printf("%d:Opened, UDP loopback, port [%d]\r\n", sn, port); + PRINTF("%d:Opened, UDP loopback, port [%u]\r\n", sn, port); #endif break; default : diff --git a/04_m1284p_WIZNET_loopback_DHCP/Application/loopback/loopback.h b/04_m1284p_WIZNET_loopback_DHCP/Application/loopback/loopback.h index 8f5a3d6..5df3cff 100644 --- a/04_m1284p_WIZNET_loopback_DHCP/Application/loopback/loopback.h +++ b/04_m1284p_WIZNET_loopback_DHCP/Application/loopback/loopback.h @@ -6,13 +6,15 @@ extern "C" { #endif #include +#include +#include "../../globals.h" /* Loopback test debug message printout enable */ #define _LOOPBACK_DEBUG_ /* DATA_BUF_SIZE define for Loopback example */ -#ifndef DATA_BUF_SIZE - #define DATA_BUF_SIZE 2048 +#ifndef LOOPBACK_DATA_BUF_SIZE + #define LOOPBACK_DATA_BUF_SIZE 512 #endif /************************/ diff --git a/04_m1284p_WIZNET_loopback_DHCP/globals.c b/04_m1284p_WIZNET_loopback_DHCP/globals.c new file mode 100644 index 0000000..da3992e --- /dev/null +++ b/04_m1284p_WIZNET_loopback_DHCP/globals.c @@ -0,0 +1,26 @@ +/* + * globals.c + * + * Created on: 07 февр. 2019 г. + * Author: maxx + */ +#include "globals.h" + +#ifdef IP_WORK +//NIC metrics for WORK PC +wiz_NetInfo netInfo = { .mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef}, // Mac address + .ip = {192, 168, 0, 199}, // IP address + .sn = {255, 255, 255, 0}, // Subnet mask + .dns = {8,8,8,8}, // DNS address (google dns) + .gw = {192, 168, 0, 1}, // Gateway address + .dhcp = NETINFO_DHCP}; //Static IP configuration +#else +//NIC metrics for another PC (second IP configuration) +wiz_NetInfo netInfo = { .mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef}, // Mac address + .ip = {192, 168, 1, 199}, // IP address + .sn = {255, 255, 255, 0}, // Subnet mask + .dns = {8,8,8,8}, // DNS address (google dns) + .gw = {192, 168, 1, 1}, // Gateway address + .dhcp = NETINFO_DHCP}; //Static IP configuration +#endif + diff --git a/04_m1284p_WIZNET_loopback_DHCP/globals.h b/04_m1284p_WIZNET_loopback_DHCP/globals.h new file mode 100644 index 0000000..25410eb --- /dev/null +++ b/04_m1284p_WIZNET_loopback_DHCP/globals.h @@ -0,0 +1,74 @@ +/* + * globals.h + * + * Created on: 29 нояб. 2018 г. + * Author: maxx + */ + +#ifndef GLOBALS_H_ +#define GLOBALS_H_ + +#include +#include +#include +#include "avr/wdt.h" // WatchDog + +#include "Ethernet/socket.h" +#include "Ethernet/wizchip_conf.h" + +//******************************* Fat FS declare related: BEGIN +/* +#include "string.h" +#include "ff.h" +#include "diskio.h" +#include "integer.h" +#include "Internet/httpServer_avr/httpParser.h" +static FATFS Fatfs; //File system object for each logical drive. >= 2 +//static FIL File; //File object. there are _FS_LOCK file objects available, >= 2 +*/ +//******************************* Fat FS declare related: END + + +//#define HTTPD_MAX_BUF_SIZE 2048 //For Mega1284p(16kb RAM)/Mega2560(8kb RAM) +//#define HTTPD_MAX_BUF_SIZE MAX_URI_SIZE+10 //For Mega644p(4kb RAM)/Mega128(4kb RAM) (ie. 512+10=522 bytes look at httpParser.h <_st_http_request> definition) + +#define LOOPBACK_DATA_BUF_SIZE 512 + +#define PRINTF_EN 1 +#if PRINTF_EN +#define PRINTF(FORMAT,args...) printf_P(PSTR(FORMAT),##args) +#else +#define PRINTF(...) +#endif + +#define IP_WORK + +//SPI CLOCK 4 or 8Mhz +#define SPI_4_MHZ +//#define SPI_8_MHZ + +extern unsigned long millis(void); +extern int freeRam (void); + +//M644P/M1284p Users LEDS: +//LED1/PORTC.4- m644p/m1284p maxxir +#define led1_conf() DDRC |= (1< 60000) + { + //here every 60 sec + timer_uptime_60sec = millis(); +#ifdef CHK_RAM_LEAKAGE + //Printout RAM usage every 1 minute + PRINTF(">> Free RAM is: %d bytes\r\n", freeRam()); +#endif + +#ifdef CHK_UPTIME + //Printout RAM usage every 1 minute + PRINTF(">> Uptime %lu sec\r\n", millis()/1000); +#endif + } + } return 0; } @@ -594,10 +571,10 @@ void print_network_information(void) PRINTF("STATIC IP\r\n"); else PRINTF("DHCP IP\r\n"); - printf("Mac address: %02x:%02x:%02x:%02x:%02x:%02x\n\r",gWIZNETINFO.mac[0],gWIZNETINFO.mac[1],gWIZNETINFO.mac[2],gWIZNETINFO.mac[3],gWIZNETINFO.mac[4],gWIZNETINFO.mac[5]); - printf("IP address : %d.%d.%d.%d\n\r",gWIZNETINFO.ip[0],gWIZNETINFO.ip[1],gWIZNETINFO.ip[2],gWIZNETINFO.ip[3]); - printf("SM Mask : %d.%d.%d.%d\n\r",gWIZNETINFO.sn[0],gWIZNETINFO.sn[1],gWIZNETINFO.sn[2],gWIZNETINFO.sn[3]); - printf("Gate way : %d.%d.%d.%d\n\r",gWIZNETINFO.gw[0],gWIZNETINFO.gw[1],gWIZNETINFO.gw[2],gWIZNETINFO.gw[3]); - printf("DNS Server : %d.%d.%d.%d\n\r",gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]); + PRINTF("Mac address: %02x:%02x:%02x:%02x:%02x:%02x\n\r",gWIZNETINFO.mac[0],gWIZNETINFO.mac[1],gWIZNETINFO.mac[2],gWIZNETINFO.mac[3],gWIZNETINFO.mac[4],gWIZNETINFO.mac[5]); + PRINTF("IP address : %d.%d.%d.%d\n\r",gWIZNETINFO.ip[0],gWIZNETINFO.ip[1],gWIZNETINFO.ip[2],gWIZNETINFO.ip[3]); + PRINTF("SM Mask : %d.%d.%d.%d\n\r",gWIZNETINFO.sn[0],gWIZNETINFO.sn[1],gWIZNETINFO.sn[2],gWIZNETINFO.sn[3]); + PRINTF("Gate way : %d.%d.%d.%d\n\r",gWIZNETINFO.gw[0],gWIZNETINFO.gw[1],gWIZNETINFO.gw[2],gWIZNETINFO.gw[3]); + PRINTF("DNS Server : %d.%d.%d.%d\n\r",gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]); }