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