Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Software for White Rabbit PTP Core
Manage
Activity
Members
Labels
Plan
Issues
39
Issue boards
Milestones
Wiki
Code
Merge requests
5
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Projects
Software for White Rabbit PTP Core
Commits
8b8a31c7
Commit
8b8a31c7
authored
13 years ago
by
Tomasz Wlostowski
Browse files
Options
Downloads
Patches
Plain Diff
wrc_main.c: automatic MAC assignment
parent
1580d8bb
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
wrc_main.c
+88
-39
88 additions, 39 deletions
wrc_main.c
with
88 additions
and
39 deletions
wrc_main.c
+
88
−
39
View file @
8b8a31c7
...
...
@@ -9,6 +9,7 @@
#include
"minic.h"
#include
"pps_gen.h"
#include
"ptpd.h"
#include
"ptpd_netif.h"
...
...
@@ -62,8 +63,6 @@ RunTimeOpts rtOpts = {
static
PtpPortDS
*
ptpPortDS
;
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
;
...
...
@@ -72,25 +71,6 @@ uint32_t tag_prev;
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
()
{
...
...
@@ -127,20 +107,75 @@ int button_pressed()
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
()
{
int
ret
;
uint32_t
dna_lo
,
dna_hi
;
uint8_t
mac_addr
[
6
];
uart_init
();
uart_write_string
(
__FILE__
" is up (compiled on "
__DATE__
" "
__TIME__
")
\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_enable
(
1
,
1
);
minic_init
();
pps_gen_init
();
// for(;;);
// rx_test();
netStartup
();
...
...
@@ -157,8 +192,10 @@ void wrc_initialize()
initDataClock
(
&
rtOpts
,
&
ptpClockDS
);
}
#define LINK_UP 1
#define LINK_DOWN 2
#define LINK_WENT_UP 1
#define LINK_WENT_DOWN 2
#define LINK_UP 3
#define LINK_DOWN 4
int
wrc_check_link
()
{
...
...
@@ -170,19 +207,19 @@ int wrc_check_link()
{
TRACE_DEV
(
"Link up.
\n
"
);
gpio_out
(
GPIO_PIN_LED_LINK
,
1
);
rv
=
LINK_UP
;
rv
=
LINK_
WENT_
UP
;
}
else
if
(
prev_link_state
&&
!
link_state
)
{
TRACE_DEV
(
"Link down.
\n
"
);
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
;
return
rv
;
}
int
wrc_extra_debug
=
0
;
int
wrc_extra_debug
=
1
;
int
wrc_gui_mode
=
0
;
void
wrc_debug_printf
(
int
subsys
,
const
char
*
fmt
,
...)
...
...
@@ -248,6 +285,7 @@ void wrc_handle_input()
extern
volatile
int
irq_cnt
;
int
main
(
void
)
{
int
rx
,
tx
;
...
...
@@ -257,25 +295,36 @@ int main(void)
int16_t
ret
;
wrc_initialize
();
softpll_enable
();
for
(;;)
{
wrc_check_link
();
wrc_handle_input
();
if
(
wrc_gui_mode
)
wrc_mon_gui
();
/* if(button_pressed())
int
l_status
=
wrc_check_link
();
switch
(
l_status
)
{
enable_tracking = 1-enable_tracking;
wr_servo_enable_tracking(enable_tracking);
}
*/
case
LINK_WENT_UP
:
// 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
);
update_rx_queues
();
// softpll_check_lock();
timer_delay
(
10
);
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment