# This file is part of the Coriolis Software.
# Copyright (c) Sorbonne Université 2019-2023, All Rights Reserved
#
# +-----------------------------------------------------------------+
# |                   C O R I O L I S                               |
# |          Alliance / Hurricane  Interface                        |
# |                                                                 |
# |  Author      :                    Jean-Paul CHAPUT              |
# |  E-mail      :            Jean-Paul.Chaput@lip6.fr              |
# | =============================================================== |
# |  Python      :       "./common/devices.py"                      |
# +-----------------------------------------------------------------+


from coriolis.Hurricane  import DataBase
from coriolis.helpers.io import catch, ErrorMessage, WarningMessage


tech = DataBase.getDB().getTechnology()


def addDevice ( **kw ):
    global tech
    
    try:
        if 'name' in kw:
            devDesc = tech.addDeviceDescriptor( kw['name'] )
            if 'spice' in kw: devDesc.setSpiceFilePath( kw['spice'] )
            if 'connectors' in kw:
                for connector in kw['connectors']:
                    devDesc.addConnector( connector )
            else:
                print( WarningMessage( 'common.addDevice(): Missing connectors on device "{}".' \
                                       .format(kw['name'])))
            if 'layouts' in kw:
                for layout in kw['layouts']:
                    devDesc.addLayout( layout[0], layout[1] )
            else:
                print( WarningMessage( 'common.addDevice(): Missing layouts on device "{}".' \
                                       .format( kw['name'] )))
    except Exception as e:
        catch( e )
    return