1144 /* (A.1) resource name in comment */ |
1144 /* (A.1) resource name in comment */ |
1145 s4o.print("// RESOURCE "); |
1145 s4o.print("// RESOURCE "); |
1146 current_resource_name->accept(*this); |
1146 current_resource_name->accept(*this); |
1147 s4o.print("\n"); |
1147 s4o.print("\n"); |
1148 |
1148 |
1149 /* (A.2) POUs inclusion */ |
1149 /* (A.2) Global variables... */ |
1150 s4o.print("#include \"POUS.c\"\n\n"); |
|
1151 |
|
1152 /* (A.3) Global variables... */ |
|
1153 if (current_global_vars != NULL) { |
1150 if (current_global_vars != NULL) { |
1154 vardecl = new generate_cc_vardecl_c(&s4o, |
1151 vardecl = new generate_cc_vardecl_c(&s4o, |
1155 generate_cc_vardecl_c::local_vf, |
1152 generate_cc_vardecl_c::localstatic_vf, |
1156 generate_cc_vardecl_c::global_vt); |
1153 generate_cc_vardecl_c::global_vt); |
1157 vardecl->print(current_global_vars); |
1154 vardecl->print(current_global_vars); |
1158 delete vardecl; |
1155 delete vardecl; |
1159 } |
1156 } |
1160 s4o.print("\n"); |
1157 s4o.print("\n"); |
|
1158 |
|
1159 /* (A.3) POUs inclusion */ |
|
1160 s4o.print("#include \"POUS.c\"\n\n"); |
1161 |
1161 |
1162 /* (A.4) Resource programs declaration... */ |
1162 /* (A.4) Resource programs declaration... */ |
1163 wanted_declaretype = declare_dt; |
1163 wanted_declaretype = declare_dt; |
1164 symbol->program_configuration_list->accept(*this); |
1164 symbol->program_configuration_list->accept(*this); |
1165 s4o.print("\n"); |
1165 s4o.print("\n"); |
1380 |
1380 |
1381 class generate_cc_c: public iterator_visitor_c { |
1381 class generate_cc_c: public iterator_visitor_c { |
1382 protected: |
1382 protected: |
1383 stage4out_c &s4o; |
1383 stage4out_c &s4o; |
1384 stage4out_c pous_s4o; |
1384 stage4out_c pous_s4o; |
|
1385 stage4out_c located_variables_s4o; |
1385 generate_cc_pous_c generate_cc_pous; |
1386 generate_cc_pous_c generate_cc_pous; |
1386 |
1387 |
1387 symbol_c *current_configuration; |
1388 symbol_c *current_configuration; |
1388 |
1389 |
1389 const char *current_name; |
1390 const char *current_name; |
1392 |
1393 |
1393 public: |
1394 public: |
1394 generate_cc_c(stage4out_c *s4o_ptr): |
1395 generate_cc_c(stage4out_c *s4o_ptr): |
1395 s4o(*s4o_ptr), |
1396 s4o(*s4o_ptr), |
1396 pous_s4o("POUS", "c"), |
1397 pous_s4o("POUS", "c"), |
|
1398 located_variables_s4o("LOCATED_VARIABLES","h"), |
1397 generate_cc_pous(&pous_s4o) { |
1399 generate_cc_pous(&pous_s4o) { |
1398 current_configuration = NULL; |
1400 current_configuration = NULL; |
1399 } |
1401 } |
1400 |
1402 |
1401 ~generate_cc_c(void) {} |
1403 ~generate_cc_c(void) {} |
1402 |
1404 |
1403 /***************************/ |
1405 /***************************/ |
1404 /* B 0 - Programming Model */ |
1406 /* B 0 - Programming Model */ |
1405 /***************************/ |
1407 /***************************/ |
1406 void *visit(library_c *symbol) { |
1408 void *visit(library_c *symbol) { |
1407 generate_location_list_c generate_location_list(&s4o); |
1409 generate_location_list_c generate_location_list(&located_variables_s4o); |
1408 symbol->accept(generate_location_list); |
1410 symbol->accept(generate_location_list); |
1409 |
1411 |
1410 for(int i = 0; i < symbol->n; i++) { |
1412 for(int i = 0; i < symbol->n; i++) { |
1411 symbol->elements[i]->accept(*this); |
1413 symbol->elements[i]->accept(*this); |
1412 } |
1414 } |
1466 current_configuration = symbol; |
1468 current_configuration = symbol; |
1467 |
1469 |
1468 calculate_common_ticktime_c calculate_common_ticktime; |
1470 calculate_common_ticktime_c calculate_common_ticktime; |
1469 symbol->accept(calculate_common_ticktime); |
1471 symbol->accept(calculate_common_ticktime); |
1470 common_ticktime = calculate_common_ticktime.get_ticktime(); |
1472 common_ticktime = calculate_common_ticktime.get_ticktime(); |
1471 s4o.print("common_ticktime : "); |
|
1472 s4o.print_integer((int)(common_ticktime / 1000000)); |
|
1473 s4o.print("ms\n"); |
|
1474 |
1473 |
1475 symbol->configuration_name->accept(*this); |
1474 symbol->configuration_name->accept(*this); |
1476 stage4out_c config_s4o(current_name, "c"); |
1475 stage4out_c config_s4o(current_name, "c"); |
1477 generate_cc_config_c generate_cc_config(&config_s4o); |
1476 generate_cc_config_c generate_cc_config(&config_s4o); |
1478 symbol->accept(generate_cc_config); |
1477 symbol->accept(generate_cc_config); |
|
1478 |
|
1479 config_s4o.print("int common_ticktime__ = "); |
|
1480 config_s4o.print_integer((int)(common_ticktime / 1000000)); |
|
1481 config_s4o.print("; /*ms*/\n"); |
|
1482 |
1479 symbol->resource_declarations->accept(*this); |
1483 symbol->resource_declarations->accept(*this); |
1480 |
1484 |
1481 current_configuration = NULL; |
1485 current_configuration = NULL; |
1482 |
1486 |
1483 return NULL; |
1487 return NULL; |
1484 } |
1488 } |
1485 |
1489 |