Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
rt-UA
libnetwork
Commits
fd45ecf1
Commit
fd45ecf1
authored
1 year ago
by
Local Nuc Development
Browse files
Options
Download
Email Patches
Plain Diff
updatd demo program
parent
76d0bfc2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
examples/patmos_tsn_udp_tcp_hello.c
+47
-24
examples/patmos_tsn_udp_tcp_hello.c
with
47 additions
and
24 deletions
+47
-24
examples/patmos_tsn_udp_tcp_hello.c
View file @
fd45ecf1
...
...
@@ -25,7 +25,7 @@ uint8_t network_stack_buffer[NETWORK_STACK_MEMORY_POOL_SIZE];
// Network interface config
char
eth0_if_name
[]
=
"eth0"
;
uint8_t
eth0_if_ipv4
[
4
]
=
{
172
,
16
,
0
,
201
};
uint8_t
eth0_if_ipv4
[
4
]
=
{
172
,
16
,
10
0
,
201
};
uint8_t
eth0_if_mac
[
6
]
=
{
0x00
,
0x80
,
0x6e
,
0xF0
,
0xDA
,
0x42
};
uint16_t
eth0_interface_id
=
0xFFFF
;
...
...
@@ -41,7 +41,7 @@ unsigned short udp_src_port_isr = 55555;
// destination config
socket_address_t
eth0_udp_dest_addr
;
//unsigned char dst_mac[6] ={0x00, 0x0e, 0xc6, 0xc9, 0x48, 0x59};
unsigned
char
eth0_udp_dst_ipv4
[
4
]
=
{
172
,
16
,
0
,
200
};
unsigned
char
eth0_udp_dst_ipv4
[
4
]
=
{
172
,
16
,
10
0
,
200
};
unsigned
short
udp_dst_port
=
12345
;
// CONFIGURATION FOR TCP SOCKET (server)
...
...
@@ -78,6 +78,7 @@ volatile uint32_t packets_received = 0;
volatile
uint8_t
isr_fired
=
0
;
#define TICK_INTERVALL_US 10000
#define LEDS (*((volatile _IODEV unsigned *) PATMOS_IO_LED))
#define GPIOS (*((volatile _IODEV unsigned *) PATMOS_IO_GPIO))
int
init_network_and_socket
(
void
)
{
...
...
@@ -190,8 +191,8 @@ int populate_tsn_schedule(void)
gcl
[
3
].
gate_state
=
0x00
;
gcl
[
3
].
slot_duration
=
1000000
;
// ns
tsn_config
.
gcl_length
=
4
;
tsn_config
.
cycle_duration
=
5000000
0
;
//1000000*(tsn_config.gcl_length+1); //ns
tsn_config
.
gcl_length
=
4
;
tsn_config
.
cycle_duration
=
5000000
;
//1000000*(tsn_config.gcl_length+1); //ns
tsn_config
.
admin_cycle_time
.
seconds
=
0
;
tsn_config
.
admin_cycle_time
.
nanoseconds
=
0
;
...
...
@@ -342,17 +343,21 @@ void fault_handler(void) {
void
isr_routine
(
void
)
{
SEI
();
static
uint8_t
cnt
=
0
;
cnt
=
(
cnt
+
1
)
>=
10
?
0
:
cnt
+
1
;
cnt
=
(
cnt
+
1
)
>=
5
?
0
:
cnt
+
1
;
if
(
cnt
==
0
)
{
// Only relevant for high prioriy socket
uint8_t
*
data
=
(
uint8_t
*
)
&
hello_short
;
uint16_t
data_len
=
strlen
(
(
char
*
)
&
hello_short
);
network_error_t
ret
=
socket_send
(
eth0_udp_isr_socket_id
,
&
eth0_udp_dest_addr
,
data
,
data_len
);
GPIOS
|=
(
1
<<
0
);
network_error_t
ret
=
socket_send
(
eth0_udp_isr_socket_id
,
&
eth0_udp_dest_addr
,
data
,
data_len
);
GPIOS
&=
~
(
1
<<
0
);
if
(
ret
!=
NET_ERR_OK
&&
ret
!=
NET_ERR_ARP_UNKNOWN_ADDR
&&
ret
!=
NET_ERR_DRVR_FRAME_QUEUED
&&
ret
!=
NET_ERR_DRVR_TIMESLOT_TO_SHORT
&&
ret
!=
NET_ERR_DRVR_TSN_QUEUES_CLOSED
)
{
...
...
@@ -368,16 +373,17 @@ void isr_routine(void)
packets_sent
++
;
}
}
// general for all sockets/interfaces
else
if
(
cnt
==
5
)
{
network_update
();
}
// general for all sockets/interfaces
else
if
(
cnt
==
7
)
{
network_read_interface
(
eth0_interface_id
);
}
// // general for all sockets/interfaces
// else if(cnt == 5)
// {
// network_update();
// }
// // general for all sockets/interfaces
// else if(cnt == 7)
// {
// network_read_interface(eth0_interface_id);
// }
CLI
();
}
...
...
@@ -478,7 +484,7 @@ int main(void)
init_tcp_socket_eth0
();
if
(
eth0_tcp_socket_id
==
0xFFFF
)
{
return
-
1
;
return
-
1
;
}
#ifdef WCET_ANALYSIS
...
...
@@ -524,14 +530,28 @@ int main(void)
packets_sent
=
0
;
while
(
1
)
{
unsigned
long
long
int
start_time
=
get_cpu_usecs
();
while
(
get_cpu_usecs
()
-
start_time
<
500000
){}
for
(
uint8_t
i
=
0
;
i
<
10
;
i
++
)
{
unsigned
long
long
int
start_time
=
get_cpu_usecs
();
//while (get_cpu_usecs()-start_time < 100000){}
while
(
get_cpu_usecs
()
-
start_time
<
10000
){}
//GPIOS |= (1 << 0);
network_update
();
network_read_interface
(
eth0_interface_id
);
network_low_priority_update
();
//GPIOS &= ~(1 << 0);
}
// Handle TCP handshakes and possibly other low-priority management tasks
network_low_priority_update
();
LEDS
^=
0x1
;
//LEDS ^= 0x01; // LEDS ^= 0x1;
// GPIOS ^= 0x01;
GPIOS
|=
(
1
<<
1
);
ret
=
socket_send
(
eth0_udp_socket_id
,
&
eth0_udp_dest_addr
,
data
,
data_len
);
GPIOS
&=
~
(
1
<<
1
);
if
(
ret
!=
NET_ERR_OK
&&
ret
!=
NET_ERR_ARP_UNKNOWN_ADDR
&&
ret
!=
NET_ERR_DRVR_FRAME_QUEUED
&&
ret
!=
NET_ERR_DRVR_TIMESLOT_TO_SHORT
&&
ret
!=
NET_ERR_DRVR_TSN_QUEUES_CLOSED
)
{
...
...
@@ -593,7 +613,7 @@ int main(void)
}
else
if
(
ret
==
NET_ERR_OK
)
{
tcp_state_t
conn_state
=
socket_tcp_get_connection_state
(
eth0_tcp_socket_id
,
&
msg_src_addr
.
ip_address
,
&
msg_src_addr
.
port
);
tcp_state_t
conn_state
=
socket_tcp_get_connection_state
(
eth0_tcp_socket_id
,
&
msg_src_addr
.
ip_address
,
msg_src_addr
.
port
);
if
(
conn_state
!=
TCP_STATE_ESTABLISHED
)
{
// if we received a message, but the connection is not yet fully established, we should trigger the tcp stack to complete the three-way handshake
network_low_priority_update
();
// check if the final ACK of the three-way handshake has been received and set the connection state accordingly
...
...
@@ -611,8 +631,11 @@ int main(void)
network_error_t
ret_send
;
if
(
compare_request
(
tcp_request_buffer
,
tcp_request_length
,
request_hello
,
(
uint16_t
)
strlen
(
request_hello
)))
{
printf
(
"received give me hello request
\n
"
);
GPIOS
|=
(
1
<<
2
);
ret_send
=
socket_tcp_write
(
eth0_tcp_socket_id
,
&
msg_src_addr
,
(
uint8_t
*
)
hello_world
,
tcp_response_hello_length
);
GPIOS
&=
~
(
1
<<
2
);
if
(
ret_send
!=
NET_ERR_OK
)
utils_log
(
"prb to send response : 0x%04x
\n
"
,
ret_send
);
/*
if(ret_send == NET_ERR_TCP_CONNECTION_STATE) {
...
...
@@ -644,7 +667,7 @@ int main(void)
//LEDS ^= 0x10;
packets_received
+=
cnt
;
////
LEDS = packets_sent - packets_received;
LEDS
=
packets_sent
-
packets_received
;
packets_sent_last
=
packets_sent
;
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help