##// END OF EJS Templates
Behaviour changed upon reception of a TC_LFR_ENTER_MODE with a transition...
paul -
r247:c33dcdaef462 R3a
parent child
Show More
@@ -1255,7 +1255,9 void launch_waveform_picker( unsigned ch
1255
1255
1256 if (transitionCoarseTime == 0)
1256 if (transitionCoarseTime == 0)
1257 {
1257 {
1258 waveform_picker_regs->start_date = time_management_regs->coarse_time;
1258 // instant transition means transition on the next valid date
1259 // this is mandatory to have a good snapshot period a a good correction of the snapshot period
1260 waveform_picker_regs->start_date = time_management_regs->coarse_time + 1;
1259 }
1261 }
1260 else
1262 else
1261 {
1263 {
@@ -321,15 +321,12 rtems_task wfrm_task(rtems_task_argument
321 rtems_event_set event_out;
321 rtems_event_set event_out;
322 rtems_id queue_id;
322 rtems_id queue_id;
323 rtems_status_code status;
323 rtems_status_code status;
324 bool resynchronisationEngaged;
325 ring_node *ring_node_swf1_extracted_ptr;
324 ring_node *ring_node_swf1_extracted_ptr;
326 ring_node *ring_node_swf2_extracted_ptr;
325 ring_node *ring_node_swf2_extracted_ptr;
327
326
328 ring_node_swf1_extracted_ptr = (ring_node *) &ring_node_swf1_extracted;
327 ring_node_swf1_extracted_ptr = (ring_node *) &ring_node_swf1_extracted;
329 ring_node_swf2_extracted_ptr = (ring_node *) &ring_node_swf2_extracted;
328 ring_node_swf2_extracted_ptr = (ring_node *) &ring_node_swf2_extracted;
330
329
331 resynchronisationEngaged = false;
332
333 status = get_message_queue_id_send( &queue_id );
330 status = get_message_queue_id_send( &queue_id );
334 if (status != RTEMS_SUCCESSFUL)
331 if (status != RTEMS_SUCCESSFUL)
335 {
332 {
@@ -342,18 +339,9 rtems_task wfrm_task(rtems_task_argument
342 // wait for an RTEMS_EVENT
339 // wait for an RTEMS_EVENT
343 rtems_event_receive(RTEMS_EVENT_MODE_NORMAL,
340 rtems_event_receive(RTEMS_EVENT_MODE_NORMAL,
344 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
341 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
345 if(resynchronisationEngaged == false)
342
346 { // engage resynchronisation
343 snapshot_resynchronization( (unsigned char *) &ring_node_to_send_swf_f0->coarseTime );
347 snapshot_resynchronization( (unsigned char *) &ring_node_to_send_swf_f0->coarseTime );
344
348 resynchronisationEngaged = true;
349 }
350 else
351 { // reset delta_snapshot to the nominal value
352 PRINTF("no resynchronisation, reset delta_snapshot to the nominal value\n");
353 set_wfp_delta_snapshot();
354 resynchronisationEngaged = false;
355 }
356 //
357 if (event_out == RTEMS_EVENT_MODE_NORMAL)
345 if (event_out == RTEMS_EVENT_MODE_NORMAL)
358 {
346 {
359 DEBUG_PRINTF("WFRM received RTEMS_EVENT_MODE_SBM2\n");
347 DEBUG_PRINTF("WFRM received RTEMS_EVENT_MODE_SBM2\n");
@@ -520,9 +508,9 rtems_task cwf1_task(rtems_task_argument
520 PRINTF1("in CWF1 *** ERR get_message_queue_id_send %d\n", status)
508 PRINTF1("in CWF1 *** ERR get_message_queue_id_send %d\n", status)
521 }
509 }
522
510
523 BOOT_PRINTF("in CWF1 ***\n")
511 BOOT_PRINTF("in CWF1 ***\n");
524
512
525 while(1){
513 while(1){
526 // wait for an RTEMS_EVENT
514 // wait for an RTEMS_EVENT
527 rtems_event_receive( RTEMS_EVENT_MODE_NORM_S1_S2,
515 rtems_event_receive( RTEMS_EVENT_MODE_NORM_S1_S2,
528 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
516 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
@@ -905,15 +893,15 void snapshot_resynchronization( unsigne
905 // which tick is the closest
893 // which tick is the closest
906 if (deltaPreviousTick > deltaNextTick)
894 if (deltaPreviousTick > deltaNextTick)
907 {
895 {
908 // deltaNext is in [ms]
896 // the snapshot center is just before the second => increase delta_snapshot
909 deltaTickInF2 = floor( (deltaNext_ms * 256. / 1000.) );
897 deltaTickInF2 = ceil( (deltaNext_ms * 256. / 1000.) );
910 waveform_picker_regs->delta_snapshot = waveform_picker_regs->delta_snapshot + 1 * deltaTickInF2;
898 waveform_picker_regs->delta_snapshot = waveform_picker_regs->delta_snapshot + 1 * deltaTickInF2;
911 PRINTF2("correction of = + %u, delta_snapshot = %d\n", deltaTickInF2, waveform_picker_regs->delta_snapshot);
899 PRINTF2("correction of = + %u, delta_snapshot = %d\n", deltaTickInF2, waveform_picker_regs->delta_snapshot);
912 }
900 }
913 else
901 else
914 {
902 {
915 // deltaPrevious is in [ms]
903 // the snapshot center is just after the second => decrease delat_snapshot
916 deltaTickInF2 = floor( (deltaPrevious_ms * 256. / 1000.) );
904 deltaTickInF2 = ceil( (deltaPrevious_ms * 256. / 1000.) );
917 waveform_picker_regs->delta_snapshot = waveform_picker_regs->delta_snapshot - 1 * deltaTickInF2;
905 waveform_picker_regs->delta_snapshot = waveform_picker_regs->delta_snapshot - 1 * deltaTickInF2;
918 PRINTF2("correction of = - %u, delta_snapshot = %d\n", deltaTickInF2, waveform_picker_regs->delta_snapshot);
906 PRINTF2("correction of = - %u, delta_snapshot = %d\n", deltaTickInF2, waveform_picker_regs->delta_snapshot);
919 }
907 }
General Comments 0
You need to be logged in to leave comments. Login now