77#define MESSAGE_CONTENT "Hello S4NOC"
88#define MESSAGE_CONNECTION_ID 42
99#define SOURCE_CORE 1
10- #define DESTINATION_CORE 0
10+ #define DESTINATION_CORE 2
11+ #define MAX_TRIES 10
1112
1213Reactor parent ;
1314FederatedEnvironment fed_env ;
@@ -34,6 +35,7 @@ void setUp(void) {
3435 FederatedConnectionBundle_ctor (& receiver_bundle , & parent , receiver , NULL , NULL , 0 , NULL , NULL , 0 , 0 );
3536
3637 s4noc_global_state .core_channels [SOURCE_CORE ][DESTINATION_CORE ] = & receiver_channel ;
38+ s4noc_global_state .core_channels [DESTINATION_CORE ][SOURCE_CORE ] = & sender_channel ;
3739
3840}
3941
@@ -63,30 +65,41 @@ void send_message(void) {
6365 const char * message = MESSAGE_CONTENT ;
6466 memcpy (port_message -> payload .bytes , message , sizeof (MESSAGE_CONTENT )); // NOLINT
6567 port_message -> payload .size = sizeof (MESSAGE_CONTENT );
66- LF_INFO (NET , "Sender: Sending message with connection number %i and content %s\n" , port_message -> conn_id ,
67- (char * )port_message -> payload .bytes );
68+ LF_INFO (NET , "Sender: Sending message with connection number %i and content %s\n" , port_message -> conn_id , (char * )port_message -> payload .bytes );
6869 TEST_ASSERT_OK (sender -> send_blocking (sender , & msg ));
6970}
7071
72+ void receive_message (void ) {
73+ int tries = 0 ;
74+ do {
75+ LF_WARN (NET , "Receiver: Polling for messages, tries: %i\n" , tries );
76+ tries ++ ;
77+ ((PolledNetworkChannel * )& receiver_channel .super )-> poll ((PolledNetworkChannel * )& receiver_channel .super );
78+ } while (receiver_callback_called == false && tries < MAX_TRIES );
79+ }
80+
7181void test_sender_send_and_receiver_recv (void ) {
7282 TEST_ASSERT_OK (sender -> open_connection (sender ));
7383 TEST_ASSERT_OK (receiver -> open_connection (receiver ));
7484
7585 receiver -> register_receive_callback (receiver , receiver_callback_handler , NULL );
7686
7787 if (pthread_create (& sender_channel .worker_thread , NULL , send_message , NULL )) {
78- LF_INFO (NET ,"Error creating thread\n" );
88+ LF_ERR (NET ,"Error creating thread\n" );
89+ return ;
90+ }
91+ if (pthread_create (& receiver_channel .worker_thread , NULL , receive_message , NULL )) {
92+ LF_ERR (NET ,"Error creating thread\n" );
7993 return ;
8094 }
8195 if (pthread_join (sender_channel .worker_thread , NULL )) {
82- LF_INFO (NET ,"Error joining thread\n" );
96+ LF_ERR (NET ,"Error joining thread\n" );
97+ return ;
98+ }
99+ if (pthread_join (receiver_channel .worker_thread , NULL )) {
100+ LF_ERR (NET ,"Error joining thread\n" );
83101 return ;
84102 }
85-
86- do {
87- LF_INFO (NET , "Receiver: Waiting for callback to be called\n" );
88- ((PolledNetworkChannel * )& receiver_channel .super )-> poll ((PolledNetworkChannel * )& receiver_channel .super );
89- } while (!receiver_callback_called );
90103
91104 TEST_ASSERT_TRUE (receiver_callback_called );
92105}
@@ -95,4 +108,4 @@ int main(void) {
95108 UNITY_BEGIN ();
96109 RUN_TEST (test_sender_send_and_receiver_recv );
97110 return UNITY_END ();
98- }
111+ }
0 commit comments