581 for(i = 0; i < symbol->n; i++) { |
581 for(i = 0; i < symbol->n; i++) { |
582 generate_c_sfc_elements->generate(symbol->elements[i], generate_c_sfc_elements_c::transitionlist_sg); |
582 generate_c_sfc_elements->generate(symbol->elements[i], generate_c_sfc_elements_c::transitionlist_sg); |
583 } |
583 } |
584 |
584 |
585 s4o.print(s4o.indent_spaces +"INT i;\n"); |
585 s4o.print(s4o.indent_spaces +"INT i;\n"); |
586 s4o.print(s4o.indent_spaces +"BOOL transition;\n\n"); |
586 s4o.print(s4o.indent_spaces +"BOOL transition;\n"); |
|
587 s4o.print(s4o.indent_spaces +"TIME elapsed_time, current_time;\n\n"); |
|
588 |
|
589 /* generate elapsed_time initialisations */ |
|
590 s4o.print(s4o.indent_spaces + "// Calculate elapsed_time\n"); |
|
591 s4o.print(s4o.indent_spaces +"current_time = __CURRENT_TIME;\n"); |
|
592 s4o.print(s4o.indent_spaces +"elapsed_time = __time_sub(current_time, "); |
|
593 print_variable_prefix(); |
|
594 s4o.print("lasttick_time);\n"); |
|
595 s4o.print(s4o.indent_spaces); |
|
596 print_variable_prefix(); |
|
597 s4o.print("lasttick_time = current_time;\n"); |
587 |
598 |
588 /* generate step initialisations */ |
599 /* generate step initialisations */ |
589 s4o.print(s4o.indent_spaces + "// Steps initialisation\n"); |
600 s4o.print(s4o.indent_spaces + "// Steps initialisation\n"); |
590 s4o.print(s4o.indent_spaces + "for (i = 0; i < "); |
601 s4o.print(s4o.indent_spaces + "for (i = 0; i < "); |
591 print_variable_prefix(); |
602 print_variable_prefix(); |
602 s4o.indent_right(); |
613 s4o.indent_right(); |
603 s4o.print(s4o.indent_spaces); |
614 s4o.print(s4o.indent_spaces); |
604 print_variable_prefix(); |
615 print_variable_prefix(); |
605 s4o.print("step_list[i].elapsed_time = __time_add("); |
616 s4o.print("step_list[i].elapsed_time = __time_add("); |
606 print_variable_prefix(); |
617 print_variable_prefix(); |
607 s4o.print("step_list[i].elapsed_time, "); |
618 s4o.print("step_list[i].elapsed_time, elapsed_time);\n"); |
608 print_variable_prefix(); |
|
609 s4o.print("period);\n"); |
|
610 s4o.indent_left(); |
619 s4o.indent_left(); |
611 s4o.print(s4o.indent_spaces + "}\n"); |
620 s4o.print(s4o.indent_spaces + "}\n"); |
612 s4o.indent_left(); |
621 s4o.indent_left(); |
613 s4o.print(s4o.indent_spaces + "}\n"); |
622 s4o.print(s4o.indent_spaces + "}\n"); |
614 |
623 |
634 s4o.indent_right(); |
643 s4o.indent_right(); |
635 s4o.print(s4o.indent_spaces); |
644 s4o.print(s4o.indent_spaces); |
636 print_variable_prefix(); |
645 print_variable_prefix(); |
637 s4o.print("action_list[i].set_remaining_time = __time_sub("); |
646 s4o.print("action_list[i].set_remaining_time = __time_sub("); |
638 print_variable_prefix(); |
647 print_variable_prefix(); |
639 s4o.print("action_list[i].set_remaining_time, "); |
648 s4o.print("action_list[i].set_remaining_time, elapsed_time);\n"); |
640 print_variable_prefix(); |
|
641 s4o.print("period);\n"); |
|
642 s4o.print(s4o.indent_spaces + "if ("); |
649 s4o.print(s4o.indent_spaces + "if ("); |
643 s4o.print("__le_TIME(2, "); |
650 s4o.print("__le_TIME(2, "); |
644 print_variable_prefix(); |
651 print_variable_prefix(); |
645 s4o.print("action_list[i].set_remaining_time, __time_to_timespec(1, 0, 0, 0, 0, 0))) {\n"); |
652 s4o.print("action_list[i].set_remaining_time, __time_to_timespec(1, 0, 0, 0, 0, 0))) {\n"); |
646 s4o.indent_right(); |
653 s4o.indent_right(); |
661 s4o.indent_right(); |
668 s4o.indent_right(); |
662 s4o.print(s4o.indent_spaces); |
669 s4o.print(s4o.indent_spaces); |
663 print_variable_prefix(); |
670 print_variable_prefix(); |
664 s4o.print("action_list[i].reset_remaining_time = __time_sub("); |
671 s4o.print("action_list[i].reset_remaining_time = __time_sub("); |
665 print_variable_prefix(); |
672 print_variable_prefix(); |
666 s4o.print("action_list[i].reset_remaining_time, "); |
673 s4o.print("action_list[i].reset_remaining_time, elapsed_time);\n"); |
667 print_variable_prefix(); |
|
668 s4o.print("period);\n"); |
|
669 s4o.print(s4o.indent_spaces + "if ("); |
674 s4o.print(s4o.indent_spaces + "if ("); |
670 s4o.print("__le_TIME(2, "); |
675 s4o.print("__le_TIME(2, "); |
671 print_variable_prefix(); |
676 print_variable_prefix(); |
672 s4o.print("action_list[i].reset_remaining_time, __time_to_timespec(1, 0, 0, 0, 0, 0))) {\n"); |
677 s4o.print("action_list[i].reset_remaining_time, __time_to_timespec(1, 0, 0, 0, 0, 0))) {\n"); |
673 s4o.indent_right(); |
678 s4o.indent_right(); |