5
5
* @version 1.0.0
6
6
******************************************************************************/
7
7
#include <stdio.h>
8
- #include "context.h"
9
8
#include "default_scenario.h"
10
- #include "unit_test.h"
11
-
12
- /*******************************************************************************
13
- * Definitions
14
- ******************************************************************************/
15
- #define LUOS_TASK_NUMBER 3
16
- #define TX_TASK_NUMBER 3
17
9
18
10
/*******************************************************************************
19
11
* Variables
20
12
******************************************************************************/
21
-
22
13
default_scenario_t default_sc ;
23
- extern volatile uint8_t msg_buffer [MSG_BUFFER_SIZE ];
24
-
25
- volatile uint8_t * transmit_msg ;
26
- msg_t receive_msg [DUMMY_SERVICE_NUMBER ];
27
- uint8_t stream_Buffer1 [STREAM_BUFFER_SIZE ] = {0 };
28
- uint8_t stream_Buffer2 [STREAM_BUFFER_SIZE ] = {0 };
29
- streaming_channel_t Default_StreamChannel1 ;
30
- streaming_channel_t Default_StreamChannel2 ;
31
14
32
15
/*******************************************************************************
33
16
* Function
34
17
******************************************************************************/
35
- extern void MsgAlloc_LuosTaskAlloc (ll_service_t * service_concerned_by_current_msg , msg_t * concerned_msg );
36
-
37
- static void Reset_Streaming (void );
38
- static void Init_Messages (void );
39
18
static void Detection (service_t * service );
40
19
static void App_1_MsgHandler (service_t * service , msg_t * msg );
41
20
static void App_2_MsgHandler (service_t * service , msg_t * msg );
@@ -48,6 +27,18 @@ static void App_3_MsgHandler(service_t *service, msg_t *msg);
48
27
******************************************************************************/
49
28
void Init_Context (void )
50
29
{
30
+ // Reset context
31
+ RESET_ASSERT ();
32
+ Luos_ServicesClear ();
33
+ RoutingTB_Erase (); // Delete RTB
34
+ Luos_Init ();
35
+ if (IS_ASSERT ())
36
+ {
37
+ printf ("[FATAL] Can't reset scenario context\n" );
38
+ TEST_ASSERT_TRUE (IS_ASSERT ());
39
+ }
40
+ Luos_Loop ();
41
+
51
42
RESET_ASSERT ();
52
43
Luos_Init ();
53
44
@@ -57,49 +48,17 @@ void Init_Context(void)
57
48
default_sc .App_2 .app = Luos_CreateService (App_2_MsgHandler , VOID_TYPE , "Dummy_App_2" , revision );
58
49
default_sc .App_3 .app = Luos_CreateService (App_3_MsgHandler , VOID_TYPE , "Dummy_App_3" , revision );
59
50
60
- Reset_Streaming ();
61
- // Create stream channels
62
- Default_StreamChannel1 = Stream_CreateStreamingChannel (stream_Buffer1 , STREAM_BUFFER_SIZE , 1 );
63
- Default_StreamChannel2 = Stream_CreateStreamingChannel (stream_Buffer2 , STREAM_BUFFER_SIZE , 1 );
64
-
65
51
// Detection
66
52
Detection (default_sc .App_1 .app );
67
53
Luos_Loop ();
68
54
69
- // Init messages pointers
70
- transmit_msg = msg_buffer ;
71
-
72
- // Fill basic messages
73
- Init_Messages ();
74
-
75
55
if (IS_ASSERT ())
76
56
{
77
57
printf ("[FATAL] Can't initialize scenario context\n" );
78
58
TEST_ASSERT_TRUE (IS_ASSERT ());
79
59
}
80
60
}
81
61
82
- /******************************************************************************
83
- * @brief Reset context to init state
84
- * @param None
85
- * @return None
86
- ******************************************************************************/
87
- void Reset_Context (void )
88
- {
89
- RESET_ASSERT ();
90
- Luos_ServicesClear ();
91
- RoutingTB_Erase (); // Delete RTB
92
- Luos_Init ();
93
- transmit_msg = msg_buffer ;
94
- Init_Messages ();
95
- Reset_Streaming ();
96
- if (IS_ASSERT ())
97
- {
98
- printf ("[FATAL] Can't reset scenario context\n" );
99
- TEST_ASSERT_TRUE (IS_ASSERT ());
100
- }
101
- }
102
-
103
62
/******************************************************************************
104
63
* @brief Launch a detection
105
64
* @param Service who launches the detection
@@ -110,123 +69,14 @@ static void Detection(service_t *service)
110
69
search_result_t result ;
111
70
112
71
Luos_Detect (service );
113
- Luos_Loop ();
72
+ do
73
+ {
74
+ Luos_Loop ();
75
+ } while (!Luos_IsNodeDetected ());
114
76
115
77
RTFilter_Reset (& result );
116
78
printf ("[INFO] %d services are active\n" , result .result_nbr );
117
- TEST_ASSERT_EQUAL (DUMMY_SERVICE_NUMBER , result .result_nbr );
118
- }
119
-
120
- /******************************************************************************
121
- * @brief Messages are reseted to default values
122
- * @param None
123
- * @return None
124
- ******************************************************************************/
125
- void Init_Messages (void )
126
- {
127
- // Init tx messages pointers
128
- default_sc .App_1 .tx_msg = (msg_t * )(& msg_buffer [0 ]);
129
- default_sc .App_2 .tx_msg = (msg_t * )(& msg_buffer [sizeof (msg_t )]);
130
- default_sc .App_3 .tx_msg = (msg_t * )(& msg_buffer [0 ]);
131
-
132
- // Init rx messages pointers
133
- default_sc .App_1 .last_rx_msg = & receive_msg [0 ];
134
- default_sc .App_2 .last_rx_msg = & receive_msg [1 ];
135
- default_sc .App_3 .last_rx_msg = & receive_msg [2 ];
136
-
137
- // App 1 : Send message to App 2
138
- // -------------------------------
139
- default_sc .App_1 .tx_msg -> header .config = PROTOCOL_REVISION ;
140
- default_sc .App_1 .tx_msg -> header .source = 1 ;
141
- default_sc .App_1 .tx_msg -> header .target = 2 ;
142
- default_sc .App_1 .tx_msg -> header .target_mode = SERVICEIDACK ;
143
- default_sc .App_1 .tx_msg -> header .cmd = DEFAULT_CMD ;
144
- default_sc .App_1 .tx_msg -> header .size = MAX_DATA_MSG_SIZE ;
145
-
146
- // App 2 : Send message to App 1
147
- // -------------------------------
148
- default_sc .App_2 .tx_msg -> header .config = PROTOCOL_REVISION ;
149
- default_sc .App_2 .tx_msg -> header .source = 2 ;
150
- default_sc .App_2 .tx_msg -> header .target = 1 ;
151
- default_sc .App_2 .tx_msg -> header .target_mode = SERVICEIDACK ;
152
- default_sc .App_2 .tx_msg -> header .cmd = DEFAULT_CMD ;
153
- default_sc .App_2 .tx_msg -> header .size = MAX_DATA_MSG_SIZE ; // data = half of max size
154
-
155
- // App 3 : Send message to App 2
156
- // -------------------------------
157
- default_sc .App_3 .tx_msg -> header .config = PROTOCOL_REVISION ;
158
- default_sc .App_3 .tx_msg -> header .source = 3 ;
159
- default_sc .App_3 .tx_msg -> header .target = 2 ;
160
- default_sc .App_3 .tx_msg -> header .target_mode = SERVICEIDACK ;
161
- default_sc .App_3 .tx_msg -> header .cmd = DEFAULT_CMD ;
162
- default_sc .App_3 .tx_msg -> header .size = MAX_DATA_MSG_SIZE ; // data = half of max size
163
-
164
- // TX message : Only fill half of datas with a counter
165
- for (uint16_t i = 0 ; i < MAX_DATA_MSG_SIZE / 2 ; i ++ )
166
- {
167
- default_sc .App_1 .tx_msg -> data [i ] = (uint8_t )i ;
168
- default_sc .App_2 .tx_msg -> data [i ] = (uint8_t )i ;
169
- default_sc .App_3 .tx_msg -> data [i ] = (uint8_t )i ;
170
- }
171
- // TX message : Last half of datas is set to 0
172
- for (uint16_t i = MAX_DATA_MSG_SIZE / 2 ; i < MAX_DATA_MSG_SIZE ; i ++ )
173
- {
174
- default_sc .App_1 .tx_msg -> data [i ] = 0 ;
175
- default_sc .App_2 .tx_msg -> data [i ] = 0 ;
176
- default_sc .App_3 .tx_msg -> data [i ] = 0 ;
177
- }
178
- // RX message : datas are set to 0
179
- for (uint16_t i = 0 ; i < MAX_DATA_MSG_SIZE ; i ++ )
180
- {
181
- default_sc .App_1 .last_rx_msg -> data [i ] = 0 ;
182
- default_sc .App_2 .last_rx_msg -> data [i ] = 0 ;
183
- default_sc .App_3 .last_rx_msg -> data [i ] = 0 ;
184
- }
185
- }
186
-
187
- /******************************************************************************
188
- * @brief Create a streaming channel
189
- * @param None
190
- * @return None
191
- ******************************************************************************/
192
- static void Reset_Streaming (void )
193
- {
194
- // Stream Channel reset
195
- Stream_ResetStreamingChannel (& Default_StreamChannel1 );
196
- Stream_ResetStreamingChannel (& Default_StreamChannel2 );
197
- default_sc .streamChannel1 = & Default_StreamChannel1 ;
198
- default_sc .streamChannel2 = & Default_StreamChannel2 ;
199
- for (uint16_t i = 0 ; i < STREAM_BUFFER_SIZE ; i ++ )
200
- {
201
- stream_Buffer1 [i ] = (uint8_t )(i );
202
- stream_Buffer2 [i ] = (uint8_t )(i );
203
- }
204
- }
205
- /******************************************************************************
206
- * @brief Loop Service App_1
207
- * @param None
208
- * @return None
209
- ******************************************************************************/
210
- void App_1_Loop (void )
211
- {
212
- }
213
-
214
- /******************************************************************************
215
- * @brief Loop Service App_2
216
- * @param None
217
- * @return None
218
- ******************************************************************************/
219
- void App_2_Loop (void )
220
- {
221
- }
222
-
223
- /******************************************************************************
224
- * @brief Loop Service App_3
225
- * @param None
226
- * @return None
227
- ******************************************************************************/
228
- void App_3_Loop (void )
229
- {
79
+ TEST_ASSERT_EQUAL (3 , result .result_nbr );
230
80
}
231
81
232
82
/******************************************************************************
@@ -237,23 +87,7 @@ void App_3_Loop(void)
237
87
******************************************************************************/
238
88
static void App_1_MsgHandler (service_t * service , msg_t * msg )
239
89
{
240
- default_sc .App_1 .last_rx_msg -> header .config = msg -> header .config ;
241
- default_sc .App_1 .last_rx_msg -> header .source = msg -> header .source ;
242
- default_sc .App_1 .last_rx_msg -> header .target = msg -> header .target ;
243
- default_sc .App_1 .last_rx_msg -> header .target_mode = msg -> header .target_mode ;
244
- default_sc .App_1 .last_rx_msg -> header .cmd = msg -> header .cmd ;
245
- default_sc .App_1 .last_rx_msg -> header .size = msg -> header .size ;
246
- for (uint16_t i = 0 ; i < msg -> header .size ; i ++ )
247
- {
248
- default_sc .App_1 .last_rx_msg -> data [i ] = msg -> data [i ];
249
- }
250
- if (msg -> header .config == TIMESTAMP_PROTOCOL )
251
- {
252
- for (uint16_t i = 0 ; i < sizeof (time_luos_t ); i ++ )
253
- {
254
- default_sc .App_1 .last_rx_msg -> data [msg -> header .size + i ] = msg -> data [msg -> header .size + i ];
255
- }
256
- }
90
+ memcpy (& default_sc .App_1 .last_rx_msg , msg , sizeof (msg_t ));
257
91
}
258
92
259
93
/******************************************************************************
@@ -264,23 +98,7 @@ static void App_1_MsgHandler(service_t *service, msg_t *msg)
264
98
******************************************************************************/
265
99
static void App_2_MsgHandler (service_t * service , msg_t * msg )
266
100
{
267
- default_sc .App_2 .last_rx_msg -> header .config = msg -> header .config ;
268
- default_sc .App_2 .last_rx_msg -> header .source = msg -> header .source ;
269
- default_sc .App_2 .last_rx_msg -> header .target = msg -> header .target ;
270
- default_sc .App_2 .last_rx_msg -> header .target_mode = msg -> header .target_mode ;
271
- default_sc .App_2 .last_rx_msg -> header .cmd = msg -> header .cmd ;
272
- default_sc .App_2 .last_rx_msg -> header .size = msg -> header .size ;
273
- for (uint16_t i = 0 ; i < msg -> header .size ; i ++ )
274
- {
275
- default_sc .App_2 .last_rx_msg -> data [i ] = msg -> data [i ];
276
- }
277
- if (msg -> header .config == TIMESTAMP_PROTOCOL )
278
- {
279
- for (uint16_t i = 0 ; i < sizeof (time_luos_t ); i ++ )
280
- {
281
- default_sc .App_2 .last_rx_msg -> data [msg -> header .size + i ] = msg -> data [msg -> header .size + i ];
282
- }
283
- }
101
+ memcpy (& default_sc .App_2 .last_rx_msg , msg , sizeof (msg_t ));
284
102
}
285
103
286
104
/******************************************************************************
@@ -291,23 +109,5 @@ static void App_2_MsgHandler(service_t *service, msg_t *msg)
291
109
******************************************************************************/
292
110
static void App_3_MsgHandler (service_t * service , msg_t * msg )
293
111
{
294
- // Save last message
295
- default_sc .App_3 .last_rx_msg -> header .config = msg -> header .config ;
296
- default_sc .App_3 .last_rx_msg -> header .source = msg -> header .source ;
297
- default_sc .App_3 .last_rx_msg -> header .target = msg -> header .target ;
298
- default_sc .App_3 .last_rx_msg -> header .target_mode = msg -> header .target_mode ;
299
- default_sc .App_3 .last_rx_msg -> header .cmd = msg -> header .cmd ;
300
- default_sc .App_3 .last_rx_msg -> header .size = msg -> header .size ;
301
- for (uint16_t i = 0 ; i < msg -> header .size ; i ++ )
302
- {
303
- default_sc .App_3 .last_rx_msg -> data [i ] = msg -> data [i ];
304
- }
305
-
306
- if (msg -> header .config == TIMESTAMP_PROTOCOL )
307
- {
308
- for (uint16_t i = 0 ; i < sizeof (time_luos_t ); i ++ )
309
- {
310
- default_sc .App_3 .last_rx_msg -> data [msg -> header .size + i ] = msg -> data [msg -> header .size + i ];
311
- }
312
- }
112
+ memcpy (& default_sc .App_3 .last_rx_msg , msg , sizeof (msg_t ));
313
113
}
0 commit comments