File indexing completed on 2025-05-11 08:24:44
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #include "system.h"
0034
0035 rtems_task Task_1(
0036 rtems_task_argument argument
0037 )
0038 {
0039 rtems_event_set eventout;
0040 rtems_time_of_day time;
0041 rtems_status_code status;
0042 uint32_t index;
0043
0044 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_16 to TA2" );
0045 status = rtems_event_send( Task_id[ 2 ], RTEMS_EVENT_16 );
0046 directive_failed( status, "rtems_event_send" );
0047
0048 puts(
0049 "TA1 - rtems_event_receive - waiting forever on "
0050 "RTEMS_EVENT_14 and RTEMS_EVENT_15"
0051 );
0052 status = rtems_event_receive(
0053 RTEMS_EVENT_14 | RTEMS_EVENT_15,
0054 RTEMS_DEFAULT_OPTIONS,
0055 RTEMS_NO_TIMEOUT,
0056 &eventout
0057 );
0058 directive_failed( status, "rtems_event_receive" );
0059 printf(
0060 "TA1 - RTEMS_EVENT_14 and RTEMS_EVENT_15 received - "
0061 "eventout => %08" PRIxrtems_event_set "\n",
0062 eventout
0063 );
0064
0065 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_18 to TA2" );
0066 status = rtems_event_send( Task_id[ 2 ], RTEMS_EVENT_18 );
0067 directive_failed( status, "rtems_event_send" );
0068
0069 puts(
0070 "TA1 - rtems_event_receive - waiting with 10 second timeout "
0071 "on RTEMS_EVENT_14"
0072 );
0073 status = rtems_event_receive(
0074 RTEMS_EVENT_14,
0075 RTEMS_DEFAULT_OPTIONS,
0076 10 * rtems_clock_get_ticks_per_second(),
0077 &eventout
0078 );
0079 directive_failed( status, "rtems_event_receive" );
0080 printf(
0081 "TA1 - RTEMS_EVENT_14 received - eventout => "
0082 "%08" PRIxrtems_event_set "\n",
0083 eventout
0084 );
0085
0086 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_19 to TA2" );
0087 status = rtems_event_send( Task_id[ 2 ], RTEMS_EVENT_19 );
0088 directive_failed( status, "rtems_event_send" );
0089
0090 status = rtems_clock_get_tod( &time );
0091 directive_failed( status, "rtems_clock_get_tod" );
0092 print_time( "TA1 - rtems_clock_get_tod - ", &time, "\n" );
0093
0094 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_18 to self after 5 seconds");
0095 status = rtems_timer_fire_after(
0096 Timer_id[ 1 ],
0097 5 * rtems_clock_get_ticks_per_second(),
0098 TA1_send_18_to_self_5_seconds,
0099 NULL
0100 );
0101 directive_failed( status, "rtems_timer_fire_after 5 seconds" );
0102
0103 puts( "TA1 - rtems_event_receive - waiting forever on RTEMS_EVENT_18" );
0104 status = rtems_event_receive(
0105 RTEMS_EVENT_18,
0106 RTEMS_DEFAULT_OPTIONS,
0107 RTEMS_NO_TIMEOUT,
0108 &eventout
0109 );
0110 directive_failed( status, "rtems_event_receive of 18" );
0111 printf(
0112 "TA1 - RTEMS_EVENT_18 received - eventout => %08" PRIxrtems_event_set "\n",
0113 eventout
0114 );
0115
0116 status = rtems_clock_get_tod( &time );
0117 directive_failed( status, "TA1 rtems_clock_get_tod" );
0118 print_time( "TA1 - rtems_clock_get_tod - ", &time, "\n" );
0119
0120 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_3 to self" );
0121 status = rtems_event_send( RTEMS_SELF, RTEMS_EVENT_3 );
0122 directive_failed( status, "rtems_event_send" );
0123
0124 puts(
0125 "TA1 - rtems_event_receive - RTEMS_EVENT_3 or "
0126 "RTEMS_EVENT_22 - NO_WAIT and ANY"
0127 );
0128 status = rtems_event_receive(
0129 RTEMS_EVENT_3 | RTEMS_EVENT_22,
0130 RTEMS_NO_WAIT | RTEMS_EVENT_ANY,
0131 RTEMS_NO_TIMEOUT,
0132 &eventout
0133 );
0134 directive_failed( status, "rtems_event_receive of 3 and 22" );
0135 printf(
0136 "TA1 - RTEMS_EVENT_3 received - eventout => %08" PRIxrtems_event_set "\n",
0137 eventout
0138 );
0139
0140 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_4 to self" );
0141 status = rtems_event_send( RTEMS_SELF, RTEMS_EVENT_4 );
0142 directive_failed( status, "rtems_event_send" );
0143
0144 puts (
0145 "TA1 - rtems_event_receive - RTEMS_EVENT_4 or "
0146 "RTEMS_EVENT_5 - forever and ANY"
0147 );
0148 status = rtems_event_receive(
0149 RTEMS_EVENT_4 | RTEMS_EVENT_5,
0150 RTEMS_EVENT_ANY,
0151 RTEMS_NO_TIMEOUT,
0152 &eventout
0153 );
0154 directive_failed( status, "rtems_event_receive" );
0155 printf(
0156 "TA1 - RTEMS_EVENT_4 received - eventout => %08" PRIxrtems_event_set "\n",
0157 eventout
0158 );
0159
0160 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_18 to self after 5 seconds");
0161 status = rtems_timer_fire_after(
0162 Timer_id[ 1 ],
0163 5 * rtems_clock_get_ticks_per_second(),
0164 TA1_send_18_to_self_5_seconds,
0165 NULL
0166 );
0167 directive_failed( status, "rtems_timer_fire_after 5 seconds" );
0168
0169 puts( "TA1 - rtems_timer_cancel - cancelling timer for event RTEMS_EVENT_18");
0170 status = rtems_timer_cancel( Timer_id[ 1 ] );
0171 directive_failed( status, "rtems_timer_cancel" );
0172
0173 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_8 to self after 60 seconds");
0174 status = rtems_timer_fire_after(
0175 Timer_id[ 1 ],
0176 60 * rtems_clock_get_ticks_per_second(),
0177 TA1_send_8_to_self_60_seconds,
0178 NULL
0179 );
0180 directive_failed( status, "rtems_timer_fire_after 60 seconds" );
0181
0182 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_9 to self after 60 seconds");
0183 status = rtems_timer_fire_after(
0184 Timer_id[ 2 ],
0185 60 * rtems_clock_get_ticks_per_second(),
0186 TA1_send_9_to_self_60_seconds,
0187 NULL
0188 );
0189 directive_failed( status, "rtems_timer_fire_after 60 seconds" );
0190
0191 puts(
0192 "TA1 - rtems_event_send - send RTEMS_EVENT_10 to self after 60 seconds"
0193 );
0194 status = rtems_timer_fire_after(
0195 Timer_id[ 3 ],
0196 60 * rtems_clock_get_ticks_per_second(),
0197 TA1_send_10_to_self,
0198 NULL
0199 );
0200 directive_failed( status, "rtems_timer_fire_after 60 seconds" );
0201
0202 puts( "TA1 - rtems_timer_cancel - cancelling timer for event RTEMS_EVENT_8" );
0203 status = rtems_timer_cancel( Timer_id[ 1 ] );
0204 directive_failed( status, "rtems_timer_cancel" );
0205
0206 build_time( &time, 2, 12, 1988, 8, 15, 0, 0 );
0207
0208 print_time( "TA1 - rtems_clock_set - ", &time, "\n" );
0209 status = rtems_clock_set( &time );
0210 directive_failed( status, "rtems_clock_set" );
0211
0212 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_1 every second" );
0213 status = rtems_timer_fire_after(
0214 Timer_id[ 1 ],
0215 rtems_clock_get_ticks_per_second(),
0216 TA1_send_1_to_self_every_second,
0217 NULL
0218 );
0219 directive_failed( status, "rtems_timer_fire_after 1 second" );
0220
0221 for ( index = 0; index < 3; index++ ) {
0222
0223 status = rtems_event_receive(
0224 RTEMS_EVENT_1,
0225 RTEMS_EVENT_ANY,
0226 RTEMS_NO_TIMEOUT,
0227 &eventout
0228 );
0229 directive_failed( status, "rtems_event_receive" );
0230
0231 status = rtems_clock_get_tod( &time );
0232 directive_failed( status, "rtems_clock_get_tod" );
0233
0234 printf(
0235 "TA1 - RTEMS_EVENT_1 received - eventout => %08"
0236 PRIxrtems_event_set " - ",
0237 eventout
0238 );
0239 print_time( "at ", &time, "\n" );
0240
0241 if ( index < 2 ) {
0242 status = rtems_timer_reset( Timer_id[ 1 ] );
0243 directive_failed( status, "rtems_timer_reset" );
0244 };
0245
0246 }
0247
0248 puts( "TA1 - rtems_timer_cancel - cancelling timer for event RTEMS_EVENT_1" );
0249 status = rtems_timer_cancel( Timer_id[ 1 ] );
0250 directive_failed( status, "rtems_timer_cancel" );
0251
0252 time.day = 13;
0253 puts( "TA1 - rtems_event_send - sending RTEMS_EVENT_11 to self in 1 day" );
0254 status = rtems_timer_fire_when(
0255 Timer_id[ 1 ],
0256 &time,
0257 TA1_send_11_to_self,
0258 NULL
0259 );
0260 directive_failed( status, "rtems_timer_fire_when 1 day" );
0261
0262 time.hour = 7;
0263 puts( "TA1 - rtems_event_send - sending RTEMS_EVENT_11 to self in 1 day" );
0264 status = rtems_timer_fire_when(
0265 Timer_id[ 2 ],
0266 &time,
0267 TA1_send_11_to_self,
0268 NULL
0269 );
0270 directive_failed( status, "rtems_timer_fire_when 1 day" );
0271
0272 time.hour = 8;
0273 time.day = 14;
0274 puts( "TA1 - rtems_event_send - sending RTEMS_EVENT_11 to self in 2 days" );
0275 status = rtems_timer_fire_when(
0276 Timer_id[ 3 ],
0277 &time,
0278 TA1_send_11_to_self,
0279 NULL
0280 );
0281 directive_failed( status, "rtems_timer_fire_when 2 days" );
0282
0283 puts("TA1 - rtems_timer_cancel - cancelling RTEMS_EVENT_11 to self in 1 day");
0284 status = rtems_timer_cancel( Timer_id[ 1 ] );
0285 directive_failed( status, "rtems_timer_cancel" );
0286
0287 puts(
0288 "TA1 - rtems_timer_cancel - cancelling RTEMS_EVENT_11 to self in 2 days"
0289 );
0290 status = rtems_timer_cancel( Timer_id[ 3 ] );
0291 directive_failed( status, "rtems_timer_cancel" );
0292
0293 puts(
0294 "TA1 - rtems_event_send - resending RTEMS_EVENT_11 to self in 2 days"
0295 );
0296 status = rtems_timer_fire_when(
0297 Timer_id[ 3 ],
0298 &time,
0299 TA1_send_11_to_self,
0300 NULL
0301 );
0302 directive_failed( status, "rtems_timer_fire_when 2 days" );
0303
0304 time.day = 15;
0305 print_time( "TA1 - rtems_clock_set - ", &time, "\n" );
0306 status = rtems_clock_set( &time );
0307 directive_failed( status, "TA1 rtems_clock_set" );
0308
0309 puts( "TA1 - rtems_event_receive - waiting forever on RTEMS_EVENT_11" );
0310 status = rtems_event_receive(
0311 RTEMS_EVENT_11,
0312 RTEMS_DEFAULT_OPTIONS,
0313 RTEMS_NO_TIMEOUT,
0314 &eventout
0315 );
0316 directive_failed( status, "rtems_event_receive" );
0317 printf(
0318 "TA1 - RTEMS_EVENT_11 received - eventout => %08" PRIxrtems_event_set "\n",
0319 eventout
0320 );
0321
0322 puts( "TA1 - rtems_event_send/rtems_event_receive combination" );
0323 status = rtems_timer_fire_after(
0324 Timer_id[ 1 ],
0325 10,
0326 TA1_send_11_to_self,
0327 NULL
0328 );
0329 directive_failed( status, "rtems_timer_fire_after 10 ticks" );
0330
0331 status = rtems_event_receive(
0332 RTEMS_EVENT_11,
0333 RTEMS_DEFAULT_OPTIONS,
0334 RTEMS_NO_TIMEOUT,
0335 &eventout
0336 );
0337 directive_failed( status, "rtems_event_receive" );
0338
0339 build_time( &time, 2, 12, 1988, 8, 15, 0, 0 );
0340
0341 print_time( "TA1 - rtems_clock_set - ", &time, "\n" );
0342 status = rtems_clock_set( &time );
0343 directive_failed( status, "rtems_clock_set" );
0344
0345 time.day = 13;
0346 puts( "TA1 - rtems_event_receive all outstanding events" );
0347 status = rtems_event_receive(
0348 RTEMS_ALL_EVENTS,
0349 RTEMS_NO_WAIT | RTEMS_EVENT_ANY,
0350 0,
0351 &eventout
0352 );
0353 fatal_directive_status(
0354 status,
0355 RTEMS_UNSATISFIED,
0356 "rtems_event_receive all events"
0357 );
0358
0359 puts( "TA1 - rtems_event_send - sending RTEMS_EVENT_10 to self in 1 day" );
0360 status = rtems_timer_fire_when(
0361 Timer_id[ 1 ],
0362 &time,
0363 TA1_send_10_to_self,
0364 NULL
0365 );
0366 directive_failed( status, "rtems_timer_fire_when 1 day" );
0367
0368 time.day = 14;
0369 puts( "TA1 - rtems_event_send - sending RTEMS_EVENT_11 to self in 2 days" );
0370 status = rtems_timer_fire_when(
0371 Timer_id[ 2 ],
0372 &time,
0373 TA1_send_11_to_self,
0374 NULL
0375 );
0376 directive_failed( status, "rtems_timer_fire_when 2 days" );
0377
0378 build_time( &time, 2, 12, 1988, 7, 15, 0, 0 );
0379
0380 print_time( "TA1 - rtems_clock_set - ", &time, "\n" );
0381 puts( "TA1 - set time backwards" );
0382 status = rtems_clock_set( &time );
0383 directive_failed( status, "rtems_clock_set" );
0384
0385 status = rtems_event_receive(
0386 RTEMS_ALL_EVENTS,
0387 RTEMS_NO_WAIT | RTEMS_EVENT_ANY,
0388 RTEMS_NO_TIMEOUT,
0389 &eventout
0390 );
0391 if ( eventout )
0392 printf( "ERROR -0x%08" PRIxrtems_event_set " events received\n", eventout );
0393 else
0394 puts( "TA1 - no events received" );
0395 fatal_directive_status(
0396 status,
0397 RTEMS_UNSATISFIED,
0398 "rtems_event_receive all events"
0399 );
0400
0401 build_time( &time, 2, 14, 1988, 7, 15, 0, 0 );
0402
0403 print_time( "TA1 - rtems_clock_set - ", &time, "\n" );
0404 puts( "TA1 - set time forwards (leave a timer)" );
0405 status = rtems_clock_set( &time );
0406 directive_failed( status, "rtems_clock_set" );
0407
0408 status = rtems_event_receive(
0409 RTEMS_ALL_EVENTS,
0410 RTEMS_NO_WAIT | RTEMS_EVENT_ANY,
0411 RTEMS_NO_TIMEOUT,
0412 &eventout
0413 );
0414 if ( eventout == RTEMS_EVENT_10 )
0415 puts( "TA1 - RTEMS_EVENT_10 received" );
0416 else
0417 printf( "ERROR -0x%08" PRIxrtems_event_set " events received\n", eventout );
0418 directive_failed( status, "rtems_event_receive all events" );
0419
0420 puts( "TA1 - rtems_event_send - sending RTEMS_EVENT_11 to self in 100 ticks");
0421 status = rtems_timer_fire_after(
0422 Timer_id[ 1 ],
0423 100,
0424 TA1_send_11_to_self,
0425 NULL
0426 );
0427 directive_failed( status, "rtems_timer_fire_after 100 ticks" );
0428
0429 puts( "TA1 - rtems_event_send - sending RTEMS_EVENT_11 to self in 200 ticks");
0430 status = rtems_timer_fire_after(
0431 Timer_id[ 1 ],
0432 200,
0433 TA1_send_11_to_self,
0434 NULL
0435 );
0436 directive_failed( status, "rtems_timer_fire_after 200 ticks" );
0437
0438
0439 puts( "TA1 - rtems_event_send - send RTEMS_EVENT_4 to self" );
0440 status = rtems_event_send( RTEMS_SELF, RTEMS_EVENT_4 );
0441 directive_failed( status, "rtems_event_send" );
0442
0443 eventout = 0;
0444 puts(
0445 "TA1 - rtems_event_receive - RTEMS_EVENT_4 AND RTEMS_EVENT_5 - UNSATISFIED"
0446 );
0447 status = rtems_event_receive(
0448 RTEMS_EVENT_4 | RTEMS_EVENT_5,
0449 RTEMS_NO_WAIT | RTEMS_EVENT_ALL,
0450 RTEMS_NO_TIMEOUT,
0451 &eventout
0452 );
0453 fatal_directive_status( status, RTEMS_UNSATISFIED, "rtems_event_receive" );
0454
0455
0456 TEST_END();
0457 rtems_test_exit( 0 );
0458 }