diff --git a/src/Ctranslator/TMLCCodeGeneration.java b/src/Ctranslator/TMLCCodeGeneration.java index e1e730e73f928d2bafd1a23815ee8fdce17cf30b..2090846057b2a5f49c64fddd08396cf70d14597c 100755 --- a/src/Ctranslator/TMLCCodeGeneration.java +++ b/src/Ctranslator/TMLCCodeGeneration.java @@ -215,8 +215,8 @@ public class TMLCCodeGeneration { "/********* INIT PREX OPs signals ********/" + CR + "sig[feed_out].f=true;" + CR + "sig[src_out].f=true;" + CR + - "/********* OPs scheduller ***************/" + CR + - TAB + "while( ERROR: there are not exit signals ) {" + CR + + "/********* OPs scheduler ***************/" + CR + + TAB + "while( !exit_rule() ) {" + CR + TAB2 + "for( int n_op = 0; n_op < NUM_OPS; ++n_op ) {" + CR + TAB3 + "valid_signal = (*fire_rule[n_op])();" + CR + TAB3 + "if( valid_signal ) {" + CR + @@ -225,7 +225,7 @@ public class TMLCCodeGeneration { TAB3 + "}" + CR + TAB2 + "}" + CR + TAB2 + "if( blocked ) {" + CR + - TAB3 + "printf(\"ERROR:the system got blocked, no new signals\\n\");" + CR + + TAB3 + "printf(\"ERROR: the system got blocked, no new signals\\n\");" + CR + TAB3 + "return 1;" + CR + TAB2 + "}" + CR + TAB2 + "blocked = true;" + CR + @@ -341,6 +341,7 @@ public class TMLCCodeGeneration { private void generateInitProgram( ArrayList<TMLTask> mappedTasks ) { String init_code = ""; + String XOD = ""; initString += "#include \"" + applicationName + "_final.h\"" + CR2; @@ -361,29 +362,29 @@ public class TMLCCodeGeneration { initString += "/**** init code ****/" + CR; for( TMLTask task: mappedTasks ) { - String XOD = task.getName().split( "__" )[1]; + XOD = task.getXOD(); if( XOD.contains( "CWP" ) || XOD.contains( "cwp" ) ) { - CwpMEC cwp = new CwpMEC( XOD, "", "", "" ); + CwpMEC cwp = new CwpMEC( XOD, task.getID0(), task.getOD0(), "" ); init_code = cwp.getInitCode(); } if( XOD.contains( "CWM" ) || XOD.contains( "cwm" ) ) { - CwmMEC cwm = new CwmMEC( XOD, "", "", "" ); + CwmMEC cwm = new CwmMEC( XOD, task.getID0(), task.getOD0(), "" ); init_code = cwm.getInitCode(); } if( XOD.contains( "CWA" ) || XOD.contains( "cwa" ) ) { - CwaMEC cwa = new CwaMEC( XOD, "", "", "" ); + CwaMEC cwa = new CwaMEC( XOD, task.getID0(), task.getOD0(), "" ); init_code = cwa.getInitCode(); } if( XOD.contains( "CWL" ) || XOD.contains( "cwl" ) ) { - CwlMEC cwl = new CwlMEC( XOD, "", "", "" ); + CwlMEC cwl = new CwlMEC( XOD, task.getID0(), task.getOD0(), "" ); init_code = cwl.getInitCode(); } if( XOD.contains( "SUM" ) || XOD.contains( "sum" ) ) { - SumMEC sum = new SumMEC( XOD, "", "", "" ); + SumMEC sum = new SumMEC( XOD, task.getID0(), task.getOD0(), "" ); init_code = sum.getInitCode(); } if( XOD.contains( "FFT" ) || XOD.contains( "fft" ) ) { - FftMEC fft = new FftMEC( XOD, "", "", "" ); + FftMEC fft = new FftMEC( XOD, task.getID0(), task.getOD0(), "" ); init_code = fft.getInitCode(); } initString += init_code + CR; @@ -404,7 +405,7 @@ public class TMLCCodeGeneration { } initString += "}"; } - + private ArrayList<String> getTaskNamePerMappedUnit( String mappedUnit, ArrayList<TMLTask> mappedTasks ) { ArrayList<String> list = new ArrayList<String>(); diff --git a/src/tmltranslator/TMLTask.java b/src/tmltranslator/TMLTask.java index 7f639b0e8f521af1c6e6072cb64dd8498ba6fc82..55277ce817400e89df5f0e3a3cbc2fad24c4c2f5 100755 --- a/src/tmltranslator/TMLTask.java +++ b/src/tmltranslator/TMLTask.java @@ -159,6 +159,31 @@ public class TMLTask extends TMLElement { } return list; } + + public String getID0() { + + if( getReadChannels().size() > 0 ) { + return getReadChannels().get(0).toString().split("__")[1]; + } + else { + return ""; + } + } + + public String getOD0() { + + if( getWriteChannels().size() > 0 ) { + return getWriteChannels().get(0).toString().split("__")[1]; + } + else { + return ""; + } + } + + public String getXOD() { + return getName().split( "__" )[1]; + } + public TMLActivity getActivityDiagram() { return activity;