Added globals.h/globals.c and made some minor modifications.
This commit is contained in:
@@ -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 :
|
||||
|
||||
@@ -6,13 +6,15 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#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
|
||||
|
||||
/************************/
|
||||
|
||||
26
04_m1284p_WIZNET_loopback_DHCP/globals.c
Normal file
26
04_m1284p_WIZNET_loopback_DHCP/globals.c
Normal file
@@ -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
|
||||
|
||||
74
04_m1284p_WIZNET_loopback_DHCP/globals.h
Normal file
74
04_m1284p_WIZNET_loopback_DHCP/globals.h
Normal file
@@ -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 "spi.h"
|
||||
|
||||
#include "globals.h" //Global definitions for project
|
||||
|
||||
#include "stdbool.h"
|
||||
#include "Ethernet/socket.h"
|
||||
#include "Ethernet/wizchip_conf.h"
|
||||
#include "Internet/DHCP/dhcp.h"
|
||||
@@ -46,28 +49,6 @@ void get_mcusr(void)
|
||||
* 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
|
||||
#define TICK_PER_SEC 1000UL
|
||||
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
|
||||
static void avr_init(void);
|
||||
void timer0_init(void);
|
||||
static inline unsigned long millis(void);
|
||||
|
||||
//Wiznet FUNC headers
|
||||
void print_network_information(void);
|
||||
|
||||
// RAM Memory usage test
|
||||
static int freeRam (void)
|
||||
int freeRam (void)
|
||||
{
|
||||
extern int __heap_start, *__brkval;
|
||||
int v;
|
||||
@@ -126,7 +106,7 @@ ISR (TIMER0_COMPA_vect)
|
||||
// LED_TGL;
|
||||
}
|
||||
|
||||
static inline unsigned long millis(void)
|
||||
inline unsigned long millis(void)
|
||||
{
|
||||
unsigned long i;
|
||||
cli();
|
||||
@@ -144,9 +124,9 @@ static inline unsigned long millis(void)
|
||||
//#define F_CPU 16000000UL
|
||||
//#endif
|
||||
|
||||
/* 19200 baud */
|
||||
#define UART_BAUD_RATE 19200
|
||||
//#define UART_BAUD_RATE 19200
|
||||
//#define UART_BAUD_RATE 38400
|
||||
#define UART_BAUD_RATE 115200
|
||||
|
||||
static int uart0_putchar(char ch,FILE *stream);
|
||||
static void uart0_rx_flash(void);
|
||||
@@ -227,27 +207,7 @@ uint16_t adc_read(uint8_t channel)
|
||||
#define PORT_TCPS 5000
|
||||
#define PORT_UDPS 3000
|
||||
|
||||
//#define IP_WORK
|
||||
|
||||
#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
|
||||
#define ETH_MAX_BUF_SIZE LOOPBACK_DATA_BUF_SIZE
|
||||
|
||||
unsigned char ethBuf0[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_dhcp_1sec = millis();
|
||||
uint32_t timer_dhcp_1sec_count = 0;
|
||||
uint32_t timer_uptime_60sec = millis();
|
||||
while(1)
|
||||
{
|
||||
//Here at least every 1sec
|
||||
@@ -515,6 +476,22 @@ int main()
|
||||
//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((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;
|
||||
}
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user