From cc5af3f70ec2d75b6f0fc84745fd7e51db0cbf40 Mon Sep 17 00:00:00 2001
From: Andrea Enrici <andrea.enrici@nokia.com>
Date: Thu, 26 Mar 2015 09:51:19 +0000
Subject: [PATCH] added symmetrical value to MapperBuffer. corrected bugs when
 reloading the model

---
 src/tmltranslator/ctranslator/FepBuffer.java  |  2 +-
 src/tmltranslator/ctranslator/MMBuffer.java   |  2 +-
 .../ctranslator/MapperBuffer.java             |  3 +-
 src/ui/tmldd/TMLArchiPortArtifact.java        | 10 ++-
 src/ui/window/JDialogPortArtifact.java        | 75 ++++++++-----------
 5 files changed, 42 insertions(+), 50 deletions(-)

diff --git a/src/tmltranslator/ctranslator/FepBuffer.java b/src/tmltranslator/ctranslator/FepBuffer.java
index 3a8c334533..9e51484d6e 100755
--- a/src/tmltranslator/ctranslator/FepBuffer.java
+++ b/src/tmltranslator/ctranslator/FepBuffer.java
@@ -54,7 +54,7 @@ import tmltranslator.*;
 public class FepBuffer extends BaseBuffer	{
 
 
-	public static final String DECLARATION = "struct FEP_BUFFER_TYPE {\n\tint num_samples;\n\tint base_ddress;\n\tint bank;\n\tint type;\n};";
+	public static final String DECLARATION = "extern struct FEP_BUFFER_TYPE {\n\tint num_samples;\n\tint base_ddress;\n\tint bank;\n\tint type;\n};";
 	public static final String[] dataTypeList = { "int8", "int16", "cpx16", "cpx32" };
 	public static final String[] banksList = { "0", "1", "2", "3" };
 	
diff --git a/src/tmltranslator/ctranslator/MMBuffer.java b/src/tmltranslator/ctranslator/MMBuffer.java
index 829baba4f5..095c529119 100644
--- a/src/tmltranslator/ctranslator/MMBuffer.java
+++ b/src/tmltranslator/ctranslator/MMBuffer.java
@@ -53,7 +53,7 @@ import tmltranslator.*;
 
 public class MMBuffer extends BaseBuffer	{
 
-	public static final String DECLARATION = "struct MM_BUFFER_TYPE {\n\tint num_samples;\n\tint base_address;\n};";
+	public static final String DECLARATION = "extern struct MM_BUFFER_TYPE {\n\tint num_samples;\n\tint base_address;\n};";
 	protected int num_samples;
 	protected String num_samples_value;
 	private String Context = "embb_mainmemory_context";
diff --git a/src/tmltranslator/ctranslator/MapperBuffer.java b/src/tmltranslator/ctranslator/MapperBuffer.java
index 1df2e1a1cd..ceabf6e871 100644
--- a/src/tmltranslator/ctranslator/MapperBuffer.java
+++ b/src/tmltranslator/ctranslator/MapperBuffer.java
@@ -59,7 +59,8 @@ public class MapperBuffer extends BaseBuffer	{
 	protected String bits_per_symbol;
 	protected String symmetrical;
 	protected int symmetrical_value;
-	public static final String DECLARATION = "struct MAPPER_BUFFER_TYPE {\n\tint num_samples;\n\tint base_address;\n};";
+	public static final String DECLARATION = "extern struct MAPPER_BUFFER_TYPE {\n\tint num_samples;\n\tint base_address;\n};";
+	public static final String[] symmetricalValues = { "ON" , "OFF" };
 	private String Context = "embb_mapper_context";
 	
 	/*public MapperBuffer( String _name, String _type, int _base_address_value, int _num_samples_value, int _bits_per_symbol_value, int _symmetrical_value )	{
diff --git a/src/ui/tmldd/TMLArchiPortArtifact.java b/src/ui/tmldd/TMLArchiPortArtifact.java
index dc2297981f..d75ddb4eff 100644
--- a/src/ui/tmldd/TMLArchiPortArtifact.java
+++ b/src/ui/tmldd/TMLArchiPortArtifact.java
@@ -276,7 +276,7 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
         			sb.append("\" bank=\"" + bufferParameters.get(3) );
         			sb.append("\" dataType=\"" + bufferParameters.get(4) );
 							break;
-						case Buffer.MapperBuffer:	
+						case Buffer.InterleaverBuffer:	
   	      		sb.append("\" baseAddress=\"" + bufferParameters.get(1) );
     	    		sb.append("\" numSamples=\"" + bufferParameters.get(2) );
 							TraceManager.addDev( "I am writing the parameters to XML" );
@@ -285,11 +285,12 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
         			sb.append("\" baseAddress=\"" + bufferParameters.get(1) );
         			sb.append("\" numSamples=\"" + bufferParameters.get(2) );
 							break;
-						case Buffer.InterleaverBuffer:	
+						case Buffer.MapperBuffer:	
     	    		sb.append("\" baseAddress=\"" + bufferParameters.get(1) );
       	  		sb.append("\" numSamples=\"" + bufferParameters.get(2) );
         			sb.append("\" bitsPerSymbol=\"" + bufferParameters.get(3) );
         			sb.append("\" symbolBaseAddress=\"" + bufferParameters.get(4) );
+        			sb.append("\" symmetricalValue=\"" + bufferParameters.get(5) );
 							break;
 						case Buffer.MainMemoryBuffer:	
   	      		sb.append("\" baseAddress=\"" + bufferParameters.get(1) );
@@ -347,7 +348,7 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
 												        		bufferParameters.add( elt.getAttribute( "bank" ) );
 												        		bufferParameters.add( elt.getAttribute( "dataType" ) );
 																		break;
-																	case Buffer.MapperBuffer:	
+																	case Buffer.InterleaverBuffer:	
 												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );
 												        		bufferParameters.add( elt.getAttribute( "numSamples" ) );
 																		break;
@@ -355,11 +356,12 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
 												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );
 												        		bufferParameters.add( elt.getAttribute( "numSamples" ) );
 																		break;
-																	case Buffer.InterleaverBuffer:	
+																	case Buffer.MapperBuffer:	
 												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );
 												        		bufferParameters.add( elt.getAttribute( "numSamples" ) );
 												        		bufferParameters.add( elt.getAttribute( "bitsPerSymbol" ) );
 												        		bufferParameters.add( elt.getAttribute( "symbolBaseAddress" ) );
+												        		bufferParameters.add( elt.getAttribute( "symmetricalValue" ) );
 																		break;
 																	case Buffer.MainMemoryBuffer:	
 												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );
diff --git a/src/ui/window/JDialogPortArtifact.java b/src/ui/window/JDialogPortArtifact.java
index 793080db08..466170ef2c 100755
--- a/src/ui/window/JDialogPortArtifact.java
+++ b/src/ui/window/JDialogPortArtifact.java
@@ -69,9 +69,10 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
   private TMLArchiPortArtifact artifact;
   private String mappedMemory = "VOID"; 
 	protected JComboBox referenceCommunicationName, priority, memoryCB;
-	protected JTextField baseAddressTF, endAddressTF, numSamplesTF, symbolBaseAddressTF, bitsPerSymbolTF;
-	protected String baseAddress, endAddress, mappedPort, sampleLength, numSamples, symbolBaseAddress, bitsPerSymbol, bank, dataType;
-	protected JComboBox dataTypeCB, bankCB;
+	protected JTextField baseAddressTF, numSamplesTF, symbolBaseAddressTF, bitsPerSymbolTF;
+	protected String baseAddress, mappedPort, sampleLength, numSamples, symbolBaseAddress, bitsPerSymbol;
+	protected String bank, dataType, symmetricalValue;
+	protected JComboBox dataTypeCB, bankCB, symmetricalValueCB;
 	
   // Main Panel
   private JButton closeButton;
@@ -226,12 +227,12 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 				}
 				makeFepBufferPanel( c1, c2 );
 				break;
-			case Buffer.MapperBuffer:	
+			case Buffer.InterleaverBuffer:	
 				if( loadBufferParameters )	{
 					baseAddress = bufferParameters.get(1);
 					numSamples = bufferParameters.get(2);
 				}
-				makeMapperBufferPanel( c1, c2 );
+				makeInterleaverBufferPanel( c1, c2 );
 				break;
 			case Buffer.AdaifBuffer:	
 				if( loadBufferParameters )	{
@@ -240,14 +241,15 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 				}
 				makeAdaifBufferPanel( c1, c2 );
 				break;
-			case Buffer.InterleaverBuffer:	
+			case Buffer.MapperBuffer:	
 				if( loadBufferParameters )	{
 					baseAddress = bufferParameters.get(1);
 					numSamples = bufferParameters.get(2);
 					bitsPerSymbol = bufferParameters.get(3);
 					symbolBaseAddress = bufferParameters.get(4);
+					symmetricalValue = bufferParameters.get(5);
 				}
-				makeInterleaverBufferPanel( c1, c2 );
+				makeMapperBufferPanel( c1, c2 );
 				break;
 			case Buffer.MainMemoryBuffer:	
 				if( loadBufferParameters )	{
@@ -263,7 +265,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 					bank = bufferParameters.get(3);
 					dataType = bufferParameters.get(4);
 				}
-				makeMapperBufferPanel( c1, c2 );
+				makeFepBufferPanel( c1, c2 );
 				break;
 		}
 
@@ -318,12 +320,12 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		panel3.add( new JLabel( "Data type = "),  c2 );
 		c1.gridwidth = GridBagConstraints.REMAINDER;
 		if( dataType != null )	{
-			dataTypeCB.setSelectedIndex( Integer.parseInt( dataType ) );
+			dataTypeCB.setSelectedItem( dataType );
 		}
 		panel3.add( dataTypeCB, c1 );
 	}
 
-	private void makeMapperBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
+	private void makeInterleaverBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
 		c2.anchor = GridBagConstraints.LINE_START;
 		makeMainMemoryBufferPanel( c1, c2 );
 	}
@@ -333,32 +335,36 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		makeMainMemoryBufferPanel( c1, c2 );
 	}
 
-	private void makeInterleaverBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
+	private void makeMapperBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
 
 		c2.anchor = GridBagConstraints.LINE_START;
 		numSamplesTF = new JTextField( numSamples, 5 );
 		panel3.add( new JLabel( "Number of samples = "),  c2 );
 		c1.gridwidth = GridBagConstraints.REMAINDER;
-		numSamplesTF = new JTextField( numSamples, 5 );
 		panel3.add( numSamplesTF, c1 );
 		//
 		baseAddressTF = new JTextField( baseAddress, 5 );
 		panel3.add( new JLabel( "Base address = "),  c2 );
 		c1.gridwidth = GridBagConstraints.REMAINDER;
-		baseAddressTF = new JTextField( baseAddress, 5 );
 		panel3.add( baseAddressTF, c1 );
 		//
 		bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 );
 		panel3.add( new JLabel( "Number of bits/symbol = "),  c2 );
 		c1.gridwidth = GridBagConstraints.REMAINDER;
-		bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 );
 		panel3.add( bitsPerSymbolTF, c1 );
 		//
 		symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 );
 		panel3.add( new JLabel( "Symbol base address = "),  c2 );
 		c1.gridwidth = GridBagConstraints.REMAINDER;
-		symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 );
 		panel3.add( symbolBaseAddressTF, c1 );
+		//
+		symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) );
+		panel3.add( new JLabel( "Symmetrical value = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		if( symmetricalValue != null )	{
+			symmetricalValueCB.setSelectedItem( symmetricalValue );
+		}
+		panel3.add( symmetricalValueCB, c1 );
 	}
 
 	private void makeMainMemoryBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
@@ -477,12 +483,12 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 	private void flushBuffersStrings()	{
 	
 		baseAddress = "";
-		endAddress = "";
 		mappedPort = "";
 		sampleLength = "";
 		numSamples = "";
 		symbolBaseAddress = "";
 		bitsPerSymbol = "";
+		symmetricalValue = "";
 	}
 	
 	
@@ -537,7 +543,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 			return checkBaseAddress() && checkNumSamples();
 		}
 
-		private boolean handleClosureWhenSelectedMapperBuffer()	{
+		private boolean handleClosureWhenSelectedInterleaverBuffer()	{
 
 			return checkBaseAddress() && checkNumSamples();
 		}
@@ -547,8 +553,9 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 			return checkBaseAddress() && checkNumSamples();
 		}
 
-		private boolean handleClosureWhenSelectedInterleaverBuffer()	{
-
+		private boolean handleClosureWhenSelectedMapperBuffer()	{
+			
+			symmetricalValue = (String)symmetricalValueCB.getSelectedItem();
 			return checkBaseAddress() && checkNumSamples() && checkNumBitsPerSymbol() && checkSymbolBaseAddress();
 		}
 
@@ -569,10 +576,6 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 			return baseAddress;
 		}
 
-		public String getEndAddress()	{
-			return endAddress;
-		}
-
     public void cancelDialog() {
         dispose();
     }
@@ -635,24 +638,6 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		return priority.getSelectedIndex();
 	}
 
-	private boolean checkEndAddress()	{
-
-		endAddress = (String) endAddressTF.getText();
-		if( endAddress.length() <= 2 && endAddress.length() > 0 )	{
-			JOptionPane.showMessageDialog( frame, "Please enter a valid end address", "Badly formatted parameter",
-																				JOptionPane.INFORMATION_MESSAGE );
-			return false;
-		}
-		if( endAddress.length() > 2 )	{
-			if( !( endAddress.substring(0,2).equals("0x") || endAddress.substring(0,2).equals("0X") ) )	{
-				JOptionPane.showMessageDialog( frame, "End address must be expressed in hexadecimal", "Badly formatted parameter",
-																				JOptionPane.INFORMATION_MESSAGE );
-				return false;
-			}
-		}
-	return true;
-	}
-
 	private boolean checkBaseAddress()	{
 
 		baseAddress = (String) baseAddressTF.getText();
@@ -695,6 +680,9 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 
 		String regex = "[0-9]+";
 		bitsPerSymbol = (String) bitsPerSymbolTF.getText();
+		if( !( bitsPerSymbol.length() > 0 ) )	{
+			return true;
+		}
 		if( Integer.parseInt( bitsPerSymbol ) == 0 )	{
 			JOptionPane.showMessageDialog( frame, "The number of bits/samples must be greater than 0", "Badly formatted parameter",
 																			JOptionPane.INFORMATION_MESSAGE );
@@ -737,7 +725,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 				params.add( (String)bankCB.getSelectedItem() );
 				params.add( (String)dataTypeCB.getSelectedItem() );
 				break;
-			case Buffer.MapperBuffer:	
+			case Buffer.InterleaverBuffer:	
 				params.add( baseAddress );
 				params.add( numSamples );
 				break;
@@ -745,11 +733,12 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 				params.add( baseAddress );
 				params.add( numSamples );
 				break;
-			case Buffer.InterleaverBuffer:	
+			case Buffer.MapperBuffer:	
 				params.add( baseAddress );
 				params.add( numSamples );
 				params.add( bitsPerSymbol );
 				params.add( symbolBaseAddress );
+				params.add( symmetricalValue );
 				break;
 			case Buffer.MainMemoryBuffer:	
 				params.add( baseAddress );
-- 
GitLab