stage4/generate_c/generate_c_sfc.cc
changeset 125 7ec16536bc87
parent 121 9e8ce092e169
child 141 d2dc99c319b6
equal deleted inserted replaced
124:4debc565109d 125:7ec16536bc87
   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();