Added globals.h/globals.c and made some minor modifications.

master
maxxir_w 7 years ago
parent 33aeb28a64
commit a2ef3ea162

@ -24,13 +24,13 @@ int32_t loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port)
getSn_DIPR(sn, destip); getSn_DIPR(sn, destip);
destport = getSn_DPORT(sn); 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 #endif
setSn_IR(sn,Sn_IR_CON); 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 = 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); ret = recv(sn, buf, size);
if(ret <= 0) return ret; // check SOCKERR_BUSY & SOCKERR_XXX. For showing the occurrence of SOCKERR_BUSY. 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 #endif
if((ret = disconnect(sn)) != SOCK_OK) return ret; if((ret = disconnect(sn)) != SOCK_OK) return ret;
#ifdef _LOOPBACK_DEBUG_ #ifdef _LOOPBACK_DEBUG_
printf("%d:Socket Closed\r\n", sn); PRINTF("%d:Socket Closed\r\n", sn);
#endif #endif
break; break;
case SOCK_INIT : case SOCK_INIT :
#ifdef _LOOPBACK_DEBUG_ #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 #endif
if( (ret = listen(sn)) != SOCK_OK) return ret; if( (ret = listen(sn)) != SOCK_OK) return ret;
break; 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 if(getSn_IR(sn) & Sn_IR_CON) // Socket n interrupt register mask; TCP CON interrupt = connection with peer is successful
{ {
#ifdef _LOOPBACK_DEBUG_ #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 #endif
setSn_IR(sn, Sn_IR_CON); // this interrupt should be write the bit cleared to '1' 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 = 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) 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 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 #endif
if((ret=disconnect(sn)) != SOCK_OK) return ret; if((ret=disconnect(sn)) != SOCK_OK) return ret;
#ifdef _LOOPBACK_DEBUG_ #ifdef _LOOPBACK_DEBUG_
printf("%d:Socket Closed\r\n", sn); PRINTF("%d:Socket Closed\r\n", sn);
#endif #endif
break; break;
case SOCK_INIT : case SOCK_INIT :
#ifdef _LOOPBACK_DEBUG_ #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 #endif
if( (ret = connect(sn, destip, destport)) != SOCK_OK) return ret; // Try to TCP connect to the TCP server (destination) if( (ret = connect(sn, destip, destport)) != SOCK_OK) return ret; // Try to TCP connect to the TCP server (destination)
break; break;
@ -181,12 +181,12 @@ int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port)
case SOCK_UDP : case SOCK_UDP :
if((size = getSn_RX_RSR(sn)) > 0) 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); ret = recvfrom(sn, buf, size, destip, (uint16_t*)&destport);
if(ret <= 0) if(ret <= 0)
{ {
#ifdef _LOOPBACK_DEBUG_ #ifdef _LOOPBACK_DEBUG_
printf("%d: recvfrom error. %ld\r\n",sn,ret); PRINTF("%d: recvfrom error. %ld\r\n",sn,ret);
#endif #endif
return ret; return ret;
} }
@ -198,7 +198,7 @@ int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port)
if(ret < 0) if(ret < 0)
{ {
#ifdef _LOOPBACK_DEBUG_ #ifdef _LOOPBACK_DEBUG_
printf("%d: sendto error. %ld\r\n",sn,ret); PRINTF("%d: sendto error. %ld\r\n",sn,ret);
#endif #endif
return ret; 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) if((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn)
return ret; return ret;
#ifdef _LOOPBACK_DEBUG_ #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 #endif
break; break;
default : default :

@ -6,13 +6,15 @@ extern "C" {
#endif #endif
#include <stdint.h> #include <stdint.h>
#include <stdio.h>
#include "../../globals.h"
/* Loopback test debug message printout enable */ /* Loopback test debug message printout enable */
#define _LOOPBACK_DEBUG_ #define _LOOPBACK_DEBUG_
/* DATA_BUF_SIZE define for Loopback example */ /* DATA_BUF_SIZE define for Loopback example */
#ifndef DATA_BUF_SIZE #ifndef LOOPBACK_DATA_BUF_SIZE
#define DATA_BUF_SIZE 2048 #define LOOPBACK_DATA_BUF_SIZE 512
#endif #endif
/************************/ /************************/

@ -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

@ -0,0 +1,74 @@
/*
* globals.h
*
* Created on: 29 нояб. 2018 г.
* Author: maxx
*/
#ifndef GLOBALS_H_
#define GLOBALS_H_
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#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<<DDC4)
#define led1_high() PORTC |= (1<<PORTC4)
#define led1_low() PORTC &= ~(1<<PORTC4)
#define led1_tgl() PORTC ^= (1<<PORTC4)
#define led1_read() (PORTC & (1<<PORTC4))
#define sw1_conf() {DDRC &= ~(1<<DDC5); PORTC |= (1<<PORTC5);}
#define sw1_read() (PINC & (1<<PINC5))
extern const char PROGMEM str_mcu[];
extern const char compile_date[] PROGMEM;
extern const char compile_time[] PROGMEM;
extern const char str_prog_name[] PROGMEM;
extern wiz_NetInfo netInfo;
#define CHK_RAM_LEAKAGE
#define CHK_UPTIME
#endif /* GLOBALS_H_ */

@ -14,6 +14,9 @@
#include "uart_extd.h" #include "uart_extd.h"
#include "spi.h" #include "spi.h"
#include "globals.h" //Global definitions for project
#include "stdbool.h"
#include "Ethernet/socket.h" #include "Ethernet/socket.h"
#include "Ethernet/wizchip_conf.h" #include "Ethernet/wizchip_conf.h"
#include "Internet/DHCP/dhcp.h" #include "Internet/DHCP/dhcp.h"
@ -46,28 +49,6 @@ void get_mcusr(void)
* https://www.hw-group.com/software/hercules-setup-utility * https://www.hw-group.com/software/hercules-setup-utility
* *
*/ */
#define PRINTF_EN 1
#if PRINTF_EN
#define PRINTF(FORMAT,args...) printf_P(PSTR(FORMAT),##args)
#else
#define PRINTF(...)
#endif
/*
* m1284p minimum template, with one button & one led
*/
//M644P/M1284p Users LEDS:
//LED1/PORTC.4- m644p/m1284p maxxir
#define led1_conf() DDRC |= (1<<DDC4)
#define led1_high() PORTC |= (1<<PORTC4)
#define led1_low() PORTC &= ~(1<<PORTC4)
#define led1_tgl() PORTC ^= (1<<PORTC4)
#define led1_read() (PORTC & (1<<PORTC4))
#define sw1_conf() {DDRC &= ~(1<<DDC5); PORTC |= (1<<PORTC5);}
#define sw1_read() (PINC & (1<<PINC5))
//*********Global vars //*********Global vars
#define TICK_PER_SEC 1000UL #define TICK_PER_SEC 1000UL
volatile unsigned long _millis; // for millis tick !! Overflow every ~49.7 days volatile unsigned long _millis; // for millis tick !! Overflow every ~49.7 days
@ -99,13 +80,12 @@ const char PROGMEM str_mcu[] = "Unknown CPU"; //CPU is unknown
//FUNC headers //FUNC headers
static void avr_init(void); static void avr_init(void);
void timer0_init(void); void timer0_init(void);
static inline unsigned long millis(void);
//Wiznet FUNC headers //Wiznet FUNC headers
void print_network_information(void); void print_network_information(void);
// RAM Memory usage test // RAM Memory usage test
static int freeRam (void) int freeRam (void)
{ {
extern int __heap_start, *__brkval; extern int __heap_start, *__brkval;
int v; int v;
@ -126,7 +106,7 @@ ISR (TIMER0_COMPA_vect)
// LED_TGL; // LED_TGL;
} }
static inline unsigned long millis(void) inline unsigned long millis(void)
{ {
unsigned long i; unsigned long i;
cli(); cli();
@ -144,9 +124,9 @@ static inline unsigned long millis(void)
//#define F_CPU 16000000UL //#define F_CPU 16000000UL
//#endif //#endif
/* 19200 baud */ //#define UART_BAUD_RATE 19200
#define UART_BAUD_RATE 19200
//#define UART_BAUD_RATE 38400 //#define UART_BAUD_RATE 38400
#define UART_BAUD_RATE 115200
static int uart0_putchar(char ch,FILE *stream); static int uart0_putchar(char ch,FILE *stream);
static void uart0_rx_flash(void); static void uart0_rx_flash(void);
@ -227,27 +207,7 @@ uint16_t adc_read(uint8_t channel)
#define PORT_TCPS 5000 #define PORT_TCPS 5000
#define PORT_UDPS 3000 #define PORT_UDPS 3000
//#define IP_WORK #define ETH_MAX_BUF_SIZE LOOPBACK_DATA_BUF_SIZE
#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}; //Dynamic IP configuration from a DHCP sever
#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}; //Dynamic IP configuration from a DHCP sever
#endif
#define ETH_MAX_BUF_SIZE 2048
unsigned char ethBuf0[ETH_MAX_BUF_SIZE]; unsigned char ethBuf0[ETH_MAX_BUF_SIZE];
unsigned char ethBuf1[ETH_MAX_BUF_SIZE]; unsigned char ethBuf1[ETH_MAX_BUF_SIZE];
@ -414,6 +374,7 @@ int main()
uint32_t timer_link_1sec = millis(); uint32_t timer_link_1sec = millis();
uint32_t timer_dhcp_1sec = millis(); uint32_t timer_dhcp_1sec = millis();
uint32_t timer_dhcp_1sec_count = 0; uint32_t timer_dhcp_1sec_count = 0;
uint32_t timer_uptime_60sec = millis();
while(1) while(1)
{ {
//Here at least every 1sec //Here at least every 1sec
@ -515,6 +476,22 @@ int main()
//loopback_ret = loopback_tcpc(SOCK_TCPS, gDATABUF, destip, destport); //loopback_ret = loopback_tcpc(SOCK_TCPS, gDATABUF, destip, destport);
//if(loopback_ret < 0) printf("loopback ret: %ld\r\n", loopback_ret); // TCP Socket Error code //if(loopback_ret < 0) printf("loopback ret: %ld\r\n", loopback_ret); // TCP Socket Error code
} }
if((millis()-timer_uptime_60sec)> 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; return 0;
} }
@ -594,10 +571,10 @@ void print_network_information(void)
PRINTF("STATIC IP\r\n"); PRINTF("STATIC IP\r\n");
else else
PRINTF("DHCP IP\r\n"); 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("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("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("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("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("DNS Server : %d.%d.%d.%d\n\r",gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]);
} }