Commit 8b8a31c7 authored by Tomasz Wlostowski's avatar Tomasz Wlostowski

wrc_main.c: automatic MAC assignment

parent 1580d8bb
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "minic.h" #include "minic.h"
#include "pps_gen.h" #include "pps_gen.h"
#include "ptpd.h" #include "ptpd.h"
#include "ptpd_netif.h"
...@@ -62,8 +63,6 @@ RunTimeOpts rtOpts = { ...@@ -62,8 +63,6 @@ RunTimeOpts rtOpts = {
static PtpPortDS *ptpPortDS; static PtpPortDS *ptpPortDS;
static PtpClockDS ptpClockDS; static PtpClockDS ptpClockDS;
const uint8_t mac_addr[] = {0x00, 0x50, 0xde, 0xad, 0xba, 0xbe};
const uint8_t dst_mac_addr[] = {0x00, 0x00, 0x12, 0x24, 0x46, 0x11};
volatile int count = 0; volatile int count = 0;
...@@ -72,25 +71,6 @@ uint32_t tag_prev; ...@@ -72,25 +71,6 @@ uint32_t tag_prev;
uint32_t tics_last; uint32_t tics_last;
void silly_minic_test()
{
uint8_t hdr[14];
uint8_t buf_hdr[18], buf[256];
for(;;)
{
memcpy(buf_hdr, dst_mac_addr, 6);
memset(buf_hdr+6, 0, 6);
buf_hdr[12] = 0xc0;
buf_hdr[13] = 0xef;
minic_tx_frame(buf_hdr, buf, 64, buf);
mprintf("Send\n");
timer_delay(1000);
}
}
void test_transition() void test_transition()
{ {
...@@ -127,20 +107,75 @@ int button_pressed() ...@@ -127,20 +107,75 @@ int button_pressed()
int enable_tracking = 1; int enable_tracking = 1;
void rx_test()
{
uint8_t mac[]= {0x1, 0x1b, 0x19, 0,0,0};
uint16_t buf[100];
wr_socket_t *sock;
wr_sockaddr_t addr;
memcpy(addr.mac, mac, 6);
addr.ethertype = 0x88f7;
ptpd_netif_init();
sock = ptpd_netif_create_socket(PTPD_SOCK_RAW_ETHERNET, 0, &addr);
mprintf("Sock @ %x\n", sock);
wrc_extra_debug = 0;
for(;;)
{
update_rx_queues();
int n = ptpd_netif_recvfrom(sock, &addr, buf, sizeof(buf), NULL);
if(n>0)
{
uint16_t sum = 0 ,i, rx;
rx=n;
n= buf[0];
for(i=1;i<n;i++) sum+=buf[i];
mprintf("%x %x\n", sum, buf[n]);
if(sum != buf[n])
{
mprintf("****************** ERR: rxed %d size %d\n", rx, n);
}
}
timer_delay(10);
mprintf(".");
}
}
void wrc_initialize() void wrc_initialize()
{ {
int ret; int ret;
uint32_t dna_lo, dna_hi;
uint8_t mac_addr[6];
uart_init(); uart_init();
uart_write_string(__FILE__ " is up (compiled on " uart_write_string(__FILE__ " is up (compiled on "
__DATE__ " " __TIME__ ")\n"); __DATE__ " " __TIME__ ")\n");
mprintf("wr_core: starting up (press G to launch the GUI and D for extra debug messages)....\n"); mprintf("wr_core: starting up (press G to launch the GUI and D for extra debug messages)....\n");
dna_read(&dna_lo, &dna_hi);
mac_addr[0] = 0;
mac_addr[1] = 0x50;
mac_addr[2] = (dna_lo >> 24) & 0xff;
mac_addr[3] = (dna_lo >> 16) & 0xff;
mac_addr[4] = (dna_lo >> 8) & 0xff;
mac_addr[5] = (dna_lo >> 0) & 0xff;
mprintf("wr_core: local MAC address: %02x:%02x:%02x:%02x:%02x:%02x\n", mac_addr[0],mac_addr[1],mac_addr[2],mac_addr[3],mac_addr[4],mac_addr[5]);
ep_init(mac_addr); ep_init(mac_addr);
ep_enable(1, 1); ep_enable(1, 1);
minic_init(); minic_init();
pps_gen_init(); pps_gen_init();
// for(;;);
// rx_test();
netStartup(); netStartup();
...@@ -157,8 +192,10 @@ void wrc_initialize() ...@@ -157,8 +192,10 @@ void wrc_initialize()
initDataClock(&rtOpts, &ptpClockDS); initDataClock(&rtOpts, &ptpClockDS);
} }
#define LINK_UP 1 #define LINK_WENT_UP 1
#define LINK_DOWN 2 #define LINK_WENT_DOWN 2
#define LINK_UP 3
#define LINK_DOWN 4
int wrc_check_link() int wrc_check_link()
{ {
...@@ -170,19 +207,19 @@ int wrc_check_link() ...@@ -170,19 +207,19 @@ int wrc_check_link()
{ {
TRACE_DEV("Link up.\n"); TRACE_DEV("Link up.\n");
gpio_out(GPIO_PIN_LED_LINK, 1); gpio_out(GPIO_PIN_LED_LINK, 1);
rv = LINK_UP; rv = LINK_WENT_UP;
} else if(prev_link_state && !link_state) } else if(prev_link_state && !link_state)
{ {
TRACE_DEV("Link down.\n"); TRACE_DEV("Link down.\n");
gpio_out(GPIO_PIN_LED_LINK, 0); gpio_out(GPIO_PIN_LED_LINK, 0);
rv = LINK_DOWN; rv = LINK_WENT_DOWN;
} } else rv = (link_state ? LINK_UP : LINK_DOWN);
prev_link_state = link_state; prev_link_state = link_state;
return rv; return rv;
} }
int wrc_extra_debug = 0; int wrc_extra_debug = 1;
int wrc_gui_mode = 0; int wrc_gui_mode = 0;
void wrc_debug_printf(int subsys, const char *fmt, ...) void wrc_debug_printf(int subsys, const char *fmt, ...)
...@@ -248,6 +285,7 @@ void wrc_handle_input() ...@@ -248,6 +285,7 @@ void wrc_handle_input()
extern volatile int irq_cnt; extern volatile int irq_cnt;
int main(void) int main(void)
{ {
int rx, tx; int rx, tx;
...@@ -257,25 +295,36 @@ int main(void) ...@@ -257,25 +295,36 @@ int main(void)
int16_t ret; int16_t ret;
wrc_initialize(); wrc_initialize();
softpll_enable();
for(;;) for(;;)
{ {
wrc_check_link();
wrc_handle_input(); wrc_handle_input();
if(wrc_gui_mode) if(wrc_gui_mode)
wrc_mon_gui(); wrc_mon_gui();
/* if(button_pressed()) int l_status = wrc_check_link();
switch (l_status)
{ {
enable_tracking = 1-enable_tracking; case LINK_WENT_UP:
wr_servo_enable_tracking(enable_tracking); // mprintf("**********************************S\n");
} /* kill_sockets();
*/ netStartup();
ptpPortDS = ptpdStartup(0, NULL, &ret, &rtOpts, &ptpClockDS);
initDataClock(&rtOpts, &ptpClockDS);
protocol_restart(&rtOpts, &ptpClockDS);*/
break;
case LINK_UP:
// softpll_check_lock();
update_rx_queues();
break;
case LINK_WENT_DOWN:
softpll_disable();
break;
}
// mprintf(".");
protocol_nonblock(&rtOpts, ptpPortDS); protocol_nonblock(&rtOpts, ptpPortDS);
update_rx_queues();
// softpll_check_lock();
timer_delay(10);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment