From 68748b6883d51c9f8b0c08137455e77ad4444d47 Mon Sep 17 00:00:00 2001
From: Pepping <pepping>
Date: Fri, 29 Jan 2016 09:53:48 +0000
Subject: [PATCH] Chaned the constructor so it can also be called without
 reading a file directly from file. A mmm_conf can now also be generated using
 the methods add_peripheral and add_input_clk

---
 tools/oneclick/base/mmm_config.py | 87 +++++++++++++++++++------------
 1 file changed, 53 insertions(+), 34 deletions(-)

diff --git a/tools/oneclick/base/mmm_config.py b/tools/oneclick/base/mmm_config.py
index a7e9b70a78..e0062541dd 100644
--- a/tools/oneclick/base/mmm_config.py
+++ b/tools/oneclick/base/mmm_config.py
@@ -41,43 +41,62 @@ peripherals_vhdl2python = { 'reg_wdi'             : "reg_wdi",\
 
 class MmmConfig:
 
-    def __init__(self, mmmRootDir = os.environ['RADIOHDL'], mmmFileName='mmm.cfg', mmmLibraryName=''):
+    def __init__(self, mmmRootDir = os.environ['RADIOHDL'], mmmFileName='', mmmLibraryName=''):
         """
         """
-        self.mmmRootDir = mmmRootDir
-        self.mmmFileName = mmmFileName
-        self.mmmLibraryName = mmmLibraryName
-        # mmm config files
-        self.mmm = common_dict_file.CommonDictFile(mmmRootDir, mmmFileName)        # library dict files
-        if self.mmm.nof_dicts==0: sys.exit('Error : No mmm config file found')
-        if self.mmmLibraryName=='': sys.exit('Error: No mmmLibraryName specified');
+        self.mmmRootDir         = mmmRootDir
+        self.mmmFileName        = mmmFileName
+        self.mmmLibraryName     = mmmLibraryName
+        self.peripherals        = []
+        self.input_clks         = []
+        self.board_select       = 'unb1' 
+        self.designName         = ''
+        self.mmmName            = ''
+        self.VhdlOutputPath     = ''
+        self.VhdlFileName       = ''
+        self.QsysName           = ''
+        self.QsysFileName       = ''
+        self.custom_peripherals = []  
+        self.board_peripherals  = []
         
-        for d in self.mmm.dicts:
-            name = self.mmm.get_key_value('mmm_name', d)
-            if name == mmmLibraryName:
-                self.mmm.remove_all_but_the_dict_from_list(d)
-        
-        self.board_select = self.mmm.get_key_values('board_select')
-        
-        if self.board_select == 'unb1':
-            self.board_peripherals_path = mmmRootDir + "/boards/uniboard1/libraries/unb1_board/unb1_board_peripherals.cfg"
-        elif self.board_select == 'unb2':
-            self.board_peripherals_path = mmmRootDir + "/boards/uniboard2/libraries/unb2_board/unb2_board_peripherals.cfg"
-        
-        self.board_peripherals_dict = self.mmm.read_dict_file(self.board_peripherals_path , ' ')
-        self.board_peripherals      = self.chunks(self.mmm.get_key_values('board_peripherals', dicts=self.board_peripherals_dict).split(), 3)
-        
-        # Keep list of HDL library names
-        self.designName                  = self.mmm.get_key_values('mmm_name')
-        self.mmmName                     = "mmm_" + self.mmm.get_key_values('mmm_name')
-        self.VhdlOutputPath              = cm.expand_file_path_name(self.mmm.get_key_values('vhdl_output_path'), self.mmm.filePaths[0])
-        self.VhdlFileName                = self.mmmName + '.vhd'
-        self.QsysName                    = "qsys_" + self.designName
-        self.QsysFileName                = self.QsysName + '.vhd'
-        self.input_clks                  = self.mmm.get_key_values('input_clks') 
-        self.custom_peripherals_temp     = self.mmm.get_key_values('custom_peripherals').split() 
-        self.custom_peripherals          = self.chunks(self.custom_peripherals_temp, 3)
-        self.peripherals                 = self.board_peripherals + self.custom_peripherals
+        # mmm config from files
+        if self.mmmFileName != '':
+            self.mmm = common_dict_file.CommonDictFile(mmmRootDir, mmmFileName)        # library dict files
+            if self.mmm.nof_dicts==0: sys.exit('Error : No mmm config file found')
+            if self.mmmLibraryName=='': sys.exit('Error: No mmmLibraryName specified');
+            
+            for d in self.mmm.dicts:
+                name = self.mmm.get_key_value('mmm_name', d)
+                if name == mmmLibraryName:
+                    self.mmm.remove_all_but_the_dict_from_list(d)     
+                    
+            self.designName              = self.mmm.get_key_values('mmm_name')
+            self.mmmName                 = "mmm_" + self.mmm.get_key_values('mmm_name')
+            self.VhdlOutputPath          = cm.expand_file_path_name(self.mmm.get_key_values('vhdl_output_path'), self.mmm.filePaths[0])
+            self.VhdlFileName            = self.mmmName + '.vhd'
+            self.QsysName                = "qsys_" + self.designName
+            self.QsysFileName            = self.QsysName + '.vhd'
+            self.input_clks              = self.mmm.get_key_values('input_clks') 
+            self.custom_peripherals_temp = self.mmm.get_key_values('custom_peripherals').split() 
+            self.custom_peripherals      = self.chunks(self.custom_peripherals_temp, 3)
+            self.board_select            = self.mmm.get_key_values('board_select')    
+
+            if self.board_select == 'unb1':
+                self.board_peripherals_path = mmmRootDir + "/boards/uniboard1/libraries/unb1_board/unb1_board_peripherals.cfg"
+            elif self.board_select == 'unb2':
+                self.board_peripherals_path = mmmRootDir + "/boards/uniboard2/libraries/unb2_board/unb2_board_peripherals.cfg"
+            
+            self.board_peripherals_dict = self.mmm.read_dict_file(self.board_peripherals_path , ' ')
+            self.board_peripherals      = self.chunks(self.mmm.get_key_values('board_peripherals', dicts=self.board_peripherals_dict).split(), 3)
+            
+        self.peripherals            = self.board_peripherals + self.custom_peripherals
+    
+    def add_peripheral(self, peripheral):
+        self.custom_peripherals.append(peripheral)                                  
+        self.peripherals = self.board_peripherals + self.custom_peripherals
+    
+    def add_input_clk(self, input_clk):
+        self.input_clks.append(input_clk)
          
     def chunks(self, l, n):
         n = max(1, n)
-- 
GitLab