From 7fe440301a6a13af916d0d251ac886be89bbbbac Mon Sep 17 00:00:00 2001
From: Andrea Enrici <andrea.enrici@nokia.com>
Date: Mon, 4 May 2015 13:49:13 +0000
Subject: [PATCH] corrected code generation when no parameters are added.
 modified the compilation process from gtaphical window

---
 bin/config.xml                                |  4 +-
 src/tmltranslator/ctranslator/FepBuffer.java  | 26 +++++----
 .../ctranslator/InterleaverBuffer.java        | 56 ++++++++++---------
 .../ctranslator/MapperBuffer.java             | 38 +++++++------
 .../ctranslator/TMLCCodeGeneration.java       | 28 ++--------
 src/ui/window/JDialogCCodeGeneration.java     | 32 ++++++-----
 6 files changed, 91 insertions(+), 93 deletions(-)

diff --git a/bin/config.xml b/bin/config.xml
index 1dd7d29956..f7591a5fd6 100755
--- a/bin/config.xml
+++ b/bin/config.xml
@@ -61,11 +61,11 @@
 <ExternalCommand2Host data="localhost"/>
 <ExternalCommand2 data="/packages/uppaal(4.0.11/uppaal /home/enrici/TURTLE/uppaal/spec.xml"/>
 
-<LastOpenFile data="/home/enrici/embb/trunk/baseband/docs/andreae/Zigbee/models/MYZigbee_final.xml"/>
+<LastOpenFile data="/home/enrici/embb/trunk/baseband/docs/andreae/Zigbee/models/Zigbee.xml"/>
 
 
 
-<LastWindowAttributes x="-1" y="27" width="1368" height="742" max="true" />
+<LastWindowAttributes x="0" y="27" width="1366" height="741" max="true" />
 
 
 </TURTLECONFIGURATION>
diff --git a/src/tmltranslator/ctranslator/FepBuffer.java b/src/tmltranslator/ctranslator/FepBuffer.java
index 0c17b41e52..cfced052a2 100755
--- a/src/tmltranslator/ctranslator/FepBuffer.java
+++ b/src/tmltranslator/ctranslator/FepBuffer.java
@@ -72,6 +72,8 @@ public class FepBuffer extends Buffer	{
 	protected String dataTypeValue = USER_TO_DO;
 	protected static final String dataTypeType = "uint8_t";
 
+	private static final int maxParameters = 4;
+
 	public static final String DECLARATION = "struct FEP_BUFFER_TYPE {" + CR + TAB +
 																						numSamplesType + SP + "num_samples" + SC + CR + TAB +
 																						baseAddressType + SP + "base_address" + SC + CR + TAB +
@@ -112,17 +114,19 @@ public class FepBuffer extends Buffer	{
 
 	private void retrieveBufferParameters()	{
 
-		if( bufferParameters.get( numSamplesIndex ).length() > 0 )	{
-			numSamplesValue = bufferParameters.get( numSamplesIndex );
-		}
-		if( bufferParameters.get( baseAddressIndex ).length() > 0 )	{
-			baseAddressValue = bufferParameters.get( baseAddressIndex );
-		}
-		if( bufferParameters.get( bankIndex ).length() > 0 )	{
-			bankValue = bufferParameters.get( bankIndex );
-		}
-		if( bufferParameters.get( dataTypeIndex ).length() > 0 )	{
-			dataTypeValue = String.valueOf(( new Vector<String>( Arrays.asList( dataTypeList ))).indexOf( bufferParameters.get( dataTypeIndex )));
+		if( bufferParameters.size() == maxParameters )	{
+			if( bufferParameters.get( numSamplesIndex ).length() > 0 )	{
+				numSamplesValue = bufferParameters.get( numSamplesIndex );
+			}
+			if( bufferParameters.get( baseAddressIndex ).length() > 0 )	{
+				baseAddressValue = bufferParameters.get( baseAddressIndex );
+			}
+			if( bufferParameters.get( bankIndex ).length() > 0 )	{
+				bankValue = bufferParameters.get( bankIndex );
+			}
+			if( bufferParameters.get( dataTypeIndex ).length() > 0 )	{
+				dataTypeValue = String.valueOf(( new Vector<String>( Arrays.asList( dataTypeList ))).indexOf( bufferParameters.get( dataTypeIndex )));
+			}
 		}
 	}
 
diff --git a/src/tmltranslator/ctranslator/InterleaverBuffer.java b/src/tmltranslator/ctranslator/InterleaverBuffer.java
index 6d65878f31..b3b39e6bf5 100644
--- a/src/tmltranslator/ctranslator/InterleaverBuffer.java
+++ b/src/tmltranslator/ctranslator/InterleaverBuffer.java
@@ -96,6 +96,8 @@ public class InterleaverBuffer extends Buffer	{
 	public String lengthPermIntlValue = USER_TO_DO;
 	public static String lengthPermIntlType = "uint16_t";
 
+	private static final int maxParameters = 9;
+
 	public static final String DECLARATION = "struct INTERLEAVER_BUFFER_TYPE {" + CR + TAB +
 																						packedBinaryInIntlType + SP + "packed_binary_input_mode" + SC + CR + TAB +
 																						widthIntlType + SP + "samples_width" + SC + CR + TAB +
@@ -156,32 +158,34 @@ public class InterleaverBuffer extends Buffer	{
 	
 	private void retrieveBufferParameters()	{
 
-		if( bufferParameters.get( packedBinaryInIntlIndex ).length() > 0 )	{
-			packedBinaryInIntlValue = String.valueOf((new Vector<String>( Arrays.asList( Buffer.onOffVector  ))).indexOf( bufferParameters.get( packedBinaryInIntlIndex )));
-		}
-		if( bufferParameters.get( widthIntlIndex ).length() > 0 )	{
-			widthIntlValue = bufferParameters.get( widthIntlIndex );
-		}
-		if( bufferParameters.get( bitInOffsetIntlIndex ).length() > 0 )	{
-			bitInOffsetIntlValue = bufferParameters.get( bitInOffsetIntlIndex );
-		}
-		if( bufferParameters.get( inputOffsetIntlIndex ).length() > 0 )	{
-			inputOffsetIntlValue = bufferParameters.get( inputOffsetIntlIndex );
-		}
-		if( bufferParameters.get( packedBinaryOutIntlIndex ).length() > 0 )	{
-			packedBinaryOutIntlValue = String.valueOf((new Vector<String>( Arrays.asList( Buffer.onOffVector  ))).indexOf( bufferParameters.get( packedBinaryOutIntlIndex )));
-		}
-		if( bufferParameters.get( bitOutOffsetIntlIndex ).length() > 0 )	{
-			bitOutOffsetIntlValue = bufferParameters.get( bitOutOffsetIntlIndex );
-		}
-		if( bufferParameters.get( outputOffsetIntlIndex ).length() > 0 )	{
-			outputOffsetIntlValue = bufferParameters.get( outputOffsetIntlIndex );
-		}
-		if( bufferParameters.get( offsetPermIntlIndex ).length() > 0 )	{
-			offsetPermIntlValue = bufferParameters.get( offsetPermIntlIndex );
-		}
-		if( bufferParameters.get( lengthPermIntlIndex ).length() > 0 )	{
-			lengthPermIntlValue = bufferParameters.get( lengthPermIntlIndex );
+		if( bufferParameters.size() == maxParameters )	{
+			if( bufferParameters.get( packedBinaryInIntlIndex ).length() > 0 )	{
+				packedBinaryInIntlValue = String.valueOf((new Vector<String>( Arrays.asList( Buffer.onOffVector  ))).indexOf( bufferParameters.get( packedBinaryInIntlIndex )));
+			}
+			if( bufferParameters.get( widthIntlIndex ).length() > 0 )	{
+				widthIntlValue = bufferParameters.get( widthIntlIndex );
+			}
+			if( bufferParameters.get( bitInOffsetIntlIndex ).length() > 0 )	{
+				bitInOffsetIntlValue = bufferParameters.get( bitInOffsetIntlIndex );
+			}
+			if( bufferParameters.get( inputOffsetIntlIndex ).length() > 0 )	{
+				inputOffsetIntlValue = bufferParameters.get( inputOffsetIntlIndex );
+			}
+			if( bufferParameters.get( packedBinaryOutIntlIndex ).length() > 0 )	{
+				packedBinaryOutIntlValue = String.valueOf((new Vector<String>( Arrays.asList( Buffer.onOffVector  ))).indexOf( bufferParameters.get( packedBinaryOutIntlIndex )));
+			}
+			if( bufferParameters.get( bitOutOffsetIntlIndex ).length() > 0 )	{
+				bitOutOffsetIntlValue = bufferParameters.get( bitOutOffsetIntlIndex );
+			}
+			if( bufferParameters.get( outputOffsetIntlIndex ).length() > 0 )	{
+				outputOffsetIntlValue = bufferParameters.get( outputOffsetIntlIndex );
+			}
+			if( bufferParameters.get( offsetPermIntlIndex ).length() > 0 )	{
+				offsetPermIntlValue = bufferParameters.get( offsetPermIntlIndex );
+			}
+			if( bufferParameters.get( lengthPermIntlIndex ).length() > 0 )	{
+				lengthPermIntlValue = bufferParameters.get( lengthPermIntlIndex );
+			}
 		}
 	}
 
diff --git a/src/tmltranslator/ctranslator/MapperBuffer.java b/src/tmltranslator/ctranslator/MapperBuffer.java
index d4b331b90b..9646edb4d9 100644
--- a/src/tmltranslator/ctranslator/MapperBuffer.java
+++ b/src/tmltranslator/ctranslator/MapperBuffer.java
@@ -82,6 +82,8 @@ public class MapperBuffer extends Buffer	{
 	public static final int baseAddressLUTMappIndex = 6;
 	protected String baseAddressLUTMappValue = USER_TO_DO;
 	public static final String baseAddressLUTMappType = "uint16_t";
+
+	private static final int maxParameters = 6;;
 	
 	public static final String DECLARATION = "struct MAPPER_BUFFER_TYPE {" + CR + TAB +
 																						numSamplesDataInMappType + SP + "num_symbols" + SC + CR + TAB +
@@ -128,23 +130,25 @@ public class MapperBuffer extends Buffer	{
 	
 	private void retrieveBufferParameters()	{
 
-		if( bufferParameters.get( numSamplesDataInMappIndex ).length() > 0 )	{
-			numSamplesDataInMappValue = bufferParameters.get( numSamplesDataInMappIndex );
-		}
-		if( bufferParameters.get( baseAddressDataInMappIndex ).length() > 0 )	{
-			baseAddressDataInMappValue = bufferParameters.get( baseAddressDataInMappIndex );
-		}
-		if( bufferParameters.get( bitsPerSymbolDataInMappIndex ).length() > 0 )	{
-			bitsPerSymbolDataInMappValue = bufferParameters.get( bitsPerSymbolDataInMappIndex );
-		}
-		if( bufferParameters.get( symmetricalValueDataInMappIndex ).length() > 0 )	{
-			symmetricalValueDataInMappValue = String.valueOf( ( new Vector<String>( Arrays.asList( symmetricalValues ))).indexOf( bufferParameters.get( symmetricalValueDataInMappIndex )));
-		}
-		if( bufferParameters.get( baseAddressDataOutMappIndex ).length() > 0 )	{
-			baseAddressDataOutMappValue = bufferParameters.get( baseAddressDataOutMappIndex );
-		}
-		if( bufferParameters.get( baseAddressLUTMappIndex ).length() > 0 )	{
-			baseAddressLUTMappValue = bufferParameters.get( baseAddressLUTMappIndex );
+		if( bufferParameters.size() == maxParameters )	{
+			if( bufferParameters.get( numSamplesDataInMappIndex ).length() > 0 )	{
+				numSamplesDataInMappValue = bufferParameters.get( numSamplesDataInMappIndex );
+			}
+			if( bufferParameters.get( baseAddressDataInMappIndex ).length() > 0 )	{
+				baseAddressDataInMappValue = bufferParameters.get( baseAddressDataInMappIndex );
+			}
+			if( bufferParameters.get( bitsPerSymbolDataInMappIndex ).length() > 0 )	{
+				bitsPerSymbolDataInMappValue = bufferParameters.get( bitsPerSymbolDataInMappIndex );
+			}
+			if( bufferParameters.get( symmetricalValueDataInMappIndex ).length() > 0 )	{
+				symmetricalValueDataInMappValue = String.valueOf( ( new Vector<String>( Arrays.asList( symmetricalValues ))).indexOf( bufferParameters.get( symmetricalValueDataInMappIndex )));
+			}
+			if( bufferParameters.get( baseAddressDataOutMappIndex ).length() > 0 )	{
+				baseAddressDataOutMappValue = bufferParameters.get( baseAddressDataOutMappIndex );
+			}
+			if( bufferParameters.get( baseAddressLUTMappIndex ).length() > 0 )	{
+				baseAddressLUTMappValue = bufferParameters.get( baseAddressLUTMappIndex );
+			}
 		}
 	}
 
diff --git a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java b/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
index c62173d67f..68937c0ab4 100755
--- a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
+++ b/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
@@ -1096,11 +1096,8 @@ public class TMLCCodeGeneration	{
 	private void generateCodeForCommunicationPatterns()	{
 		
 		int srcMemoryType = 0, dstMemoryType = 0;
-		String destinationAddress, sourceAddress, counter;
-		String destinationAddress1, sourceAddress1, counter1;
-		String destinationAddress2, sourceAddress2, counter2;
 		TMLCPLib tmlcplib;
-		String s, ctxName;
+		String s, ctxName, counter;
 		Vector<String> attributes;
 		ArchUnitMEC dmaArchMEC = new CpuMEC();
 
@@ -1116,7 +1113,8 @@ public class TMLCCodeGeneration	{
 			}
 			int cpMECType = tmlcplib.getCPMECType();
 			if( cpMECType == CPMEC.CpuMemoryCopyMEC )	{
-				counter = attributes.get( CpuMemoryCopyMEC.counterIndex );
+				TraceManager.addDev( "attributes contains " + attributes.size() + " elements!" );
+				counter = (attributes.size() == 0 ) ? "/* USER TODO */" : attributes.get( CpuMemoryCopyMEC.counterIndex );
 				CpuMemoryCopyMEC mec = new CpuMemoryCopyMEC( ctxName, new CpuMEC(), counter );	//mem2ip
 				programString.append( mec.getExecCode() );
 			}
@@ -1136,15 +1134,15 @@ public class TMLCCodeGeneration	{
 						dstMemoryType = tmla.getHwMemoryByName( memoryUnit ).BufferType;
 					}
 				}
-				counter = attributes.get( SingleDmaMEC.counterIndex );
+				counter = (attributes.size() == 0 ) ? "/* USER TODO */" : attributes.get( SingleDmaMEC.counterIndex );
 				SingleDmaMEC mec = new SingleDmaMEC( ctxName, dmaArchMEC, srcMemoryType, dstMemoryType, transferType, counter );
 				programString.append( mec.getExecCode() );
 			}
 			if( cpMECType == CPMEC.DoubleDmaMEC )	{
 				ArrayList<Integer> transferTypes = tmlcplib.getTransferTypes();
 				ArrayList<String> sizes = new ArrayList<String>();
-				sizes.add( attributes.get( DoubleDmaMEC.counter1Index ) );
-				sizes.add( attributes.get( DoubleDmaMEC.counter2Index ) );
+				sizes.add( (attributes.size() == 0 ) ? "/* USER TODO */" : attributes.get( DoubleDmaMEC.counter1Index ) );
+				sizes.add( (attributes.size() == 0 ) ? "/* USER TODO */" : attributes.get( DoubleDmaMEC.counter2Index ) );
 				for( int i = 0; i < 2; i++ )	{
 					DoubleDmaMEC mec = getDoubleDmaMEC( tmlcplib, i, ctxName, sizes, transferTypes );
 					programString.append( mec.getExecCode() );
@@ -1282,56 +1280,42 @@ public class TMLCCodeGeneration	{
 					case OperationMEC.CwpMEC:
 						CwpMEC cwp = new CwpMEC( ctxName, inSignalName, outSignalName );
 						init_code = cwp.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.CwmMEC:
 						CwmMEC cwm = new CwmMEC( ctxName, inSignalName, outSignalName );
 						init_code = cwm.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.CwaMEC:
 						CwaMEC cwa = new CwaMEC( ctxName, inSignalName, "", outSignalName );
 						init_code = cwa.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.CwlMEC:
 						CwlMEC cwl = new CwlMEC( ctxName, inSignalName, outSignalName );
 						init_code = cwl.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.SumMEC:
 						SumMEC sum = new SumMEC( ctxName, inSignalName, outSignalName );
 						init_code = sum.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.FftMEC:
 						FftMEC fft = new FftMEC( ctxName, inSignalName, outSignalName );
 						init_code = fft.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.IntlOperationMEC:
 						IntlOperationMEC intl = new IntlOperationMEC( ctxName, inSignalName, outSignalName );
 						init_code = intl.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.MappOperationMEC:
 						MappOperationMEC mapp = new MappOperationMEC( ctxName, inSignalName, outSignalName );
 						init_code = mapp.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.AdaifOperationMEC:
 						AdaifOperationMEC adaif = new AdaifOperationMEC( ctxName );
 						init_code = adaif.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
 					break;
 					case OperationMEC.CpuOperationMEC:
 						CpuOperationMEC cpu = new CpuOperationMEC( ctxName, inSignalName, outSignalName );
 						init_code = cpu.getInitCode();
-						TraceManager.addDev( "Operation type :" + xTaskOperationType + " for " + xTask.getName() );
-					break;
-					default:
-						TraceManager.addDev( "Operation type not found for: " + xTask.getName() + ". It has value: " + xTaskOperationType );
-						System.exit(0);
 					break;
 				}
 			initFileString.append( init_code + CR );
diff --git a/src/ui/window/JDialogCCodeGeneration.java b/src/ui/window/JDialogCCodeGeneration.java
index 128aa0dd5e..2ecac4ba4c 100755
--- a/src/ui/window/JDialogCCodeGeneration.java
+++ b/src/ui/window/JDialogCCodeGeneration.java
@@ -534,33 +534,35 @@ public class JDialogCCodeGeneration extends javax.swing.JDialog implements Actio
     public void compileCode() throws InterruptedException {
         String cmd = compiler1.getText();
 
-        jta.append("Compiling C code with command: \n" + cmd + "\n");
+        jta.append("Compiling C code with command: \n" + cmd + "\n****\n");
 
         rshc = new RshClient(hostSystemC);
         // Assuma data are on the remote host
         // Command
         try {
             processCmd(cmd, jta);
-            jta.append("Compilation done\n");
-        } catch (LauncherException le) {
-            jta.append("Error: " + le.getMessage() + "\n");
-            mode = STOPPED;
-            setButtons();
-            return;
-        } catch (Exception e) {
+        } catch( Exception e ) {
+            jta.append("**** ERROR ****\n" + e.getMessage() + "\n");
             mode = STOPPED;
             setButtons();
             return;
         }
     }
 
-    protected void processCmd( String cmd, JTextArea _jta ) throws LauncherException	{
-
-			rshc.setCmd( cmd );
-			String s = null;
-			rshc.sendProcessRequest();
-			rshc.fillJTA( _jta );
-			return;
+    protected void processCmd( String cmd, JTextArea _jta ) throws Exception	{
+
+			String s;
+			Process p;
+			p = Runtime.getRuntime().exec( cmd );
+			BufferedReader br = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
+			while( ( s = br.readLine() ) != null )	{
+				_jta.append( s + "\n" );
+			}
+			p.waitFor();
+			p.destroy();
+			if( p.exitValue() != 0 )	{
+				throw new Exception( "Make exit status: " + p.exitValue() );
+			}
     }
 
     protected void checkMode() {
-- 
GitLab