diff --git a/CHANGELOG.md b/CHANGELOG.md index 3611ab99..37037c21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PCBWay](https://www.pcbway.com) - Support for ZIP/TAR/RAR generation. - Makefile generation. +- KiAuto time-out control. ### Changed - Now the default output name applies to the DRC and ERC report names. diff --git a/kibot/config_reader.py b/kibot/config_reader.py index 2aa96511..66f8be51 100644 --- a/kibot/config_reader.py +++ b/kibot/config_reader.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2020 Salvador E. Tropea -# Copyright (c) 2020 Instituto Nacional de Tecnología Industrial +# Copyright (c) 2020-2021 Salvador E. Tropea +# Copyright (c) 2020-2021 Instituto Nacional de Tecnología Industrial # Copyright (c) 2018 John Beard # License: GPL-3.0 # Project: KiBot (formerly KiPlot) @@ -184,6 +184,8 @@ class CfgYamlReader(object): # Transfer command line global overwrites GS.global_output = GS.global_from_cli.get('output', None) GS.global_variant = GS.global_from_cli.get('variant', None) + GS.global_kiauto_wait_start = GS.global_from_cli.get('kiauto_wait_start', None) + GS.global_kiauto_time_out_scale = GS.global_from_cli.get('kiauto_time_out_scale', None) # List of outputs outputs = [] version = None diff --git a/kibot/globals.py b/kibot/globals.py index d932af32..e5044a4a 100644 --- a/kibot/globals.py +++ b/kibot/globals.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2020 Salvador E. Tropea -# Copyright (c) 2020 Instituto Nacional de Tecnología Industrial +# Copyright (c) 2020-2021 Salvador E. Tropea +# Copyright (c) 2020-2021 Instituto Nacional de Tecnología Industrial # License: GPL-3.0 # Project: KiBot (formerly KiPlot) from .gs import GS @@ -18,6 +18,10 @@ class Globals(FiltersOptions): """ Default pattern for output file names """ self.variant = '' """ Default variant to apply to all outputs """ + self.kiauto_wait_start = 0 + """ Time to wait for KiCad in KiAuto operations """ + self.kiauto_time_out_scale = 0.0 + """ Time-out multiplier for KiAuto operations """ self.set_doc('filters', " [list(dict)] KiBot warnings to be ignored ") self._filter_what = 'KiBot warnings' self._unkown_is_error = True @@ -36,6 +40,9 @@ class Globals(FiltersOptions): super().config() GS.global_output = self.set_global(GS.global_output, self.output, 'output') GS.global_variant = self.set_global(GS.global_variant, self.variant, 'variant') + GS.global_kiauto_wait_start = self.set_global(GS.global_kiauto_wait_start, self.kiauto_wait_start, 'kiauto_wait_start') + GS.global_kiauto_time_out_scale = self.set_global(GS.global_kiauto_time_out_scale, self.kiauto_time_out_scale, + 'kiauto_time_out_scale') set_filters(self.unparsed) diff --git a/kibot/gs.py b/kibot/gs.py index 91de3b6c..0e06510c 100644 --- a/kibot/gs.py +++ b/kibot/gs.py @@ -69,6 +69,8 @@ class GS(object): global_from_cli = {} global_output = None global_variant = None + global_kiauto_wait_start = None + global_kiauto_time_out_scale = None global_opts_class = None test_boolean = True diff --git a/kibot/kiplot.py b/kibot/kiplot.py index e0c46e60..81b6c0b8 100644 --- a/kibot/kiplot.py +++ b/kibot/kiplot.py @@ -130,6 +130,16 @@ def exec_with_retry(cmd): return ret +def add_time_out_options(cmd): + if GS.global_kiauto_time_out_scale: + cmd.insert(1, str(GS.global_kiauto_time_out_scale)) + cmd.insert(1, '--time_out_scale') + if GS.global_kiauto_wait_start: + cmd.insert(1, str(GS.global_kiauto_wait_start)) + cmd.insert(1, '--wait_start') + return cmd + + def load_board(pcb_file=None): if GS.board is not None: # Already loaded diff --git a/kibot/out_pdf_pcb_print.py b/kibot/out_pdf_pcb_print.py index 49be2897..69ae7ef6 100644 --- a/kibot/out_pdf_pcb_print.py +++ b/kibot/out_pdf_pcb_print.py @@ -9,7 +9,7 @@ from tempfile import NamedTemporaryFile from .pre_base import BasePreFlight from .error import (KiPlotConfigurationError) from .gs import (GS) -from .kiplot import check_script, exec_with_retry +from .kiplot import check_script, exec_with_retry, add_time_out_options from .misc import (CMD_PCBNEW_PRINT_LAYERS, URL_PCBNEW_PRINT_LAYERS, PDF_PCB_PRINT, KICAD_VERSION_5_99) from .out_base import VariantOptions from .macros import macros, document, output_class # noqa: F401 @@ -114,6 +114,7 @@ class PDF_Pcb_PrintOptions(VariantOptions): if GS.debug_enabled: cmd.insert(1, '-vv') cmd.insert(1, '-r') + cmd = add_time_out_options(cmd) # Add the layers cmd.extend([la.layer for la in layers]) # Execute it diff --git a/kibot/out_pdf_sch_print.py b/kibot/out_pdf_sch_print.py index 6f532cbc..d3d23d45 100644 --- a/kibot/out_pdf_sch_print.py +++ b/kibot/out_pdf_sch_print.py @@ -7,7 +7,7 @@ import os from tempfile import mkdtemp from shutil import rmtree from .gs import (GS) -from .kiplot import check_eeschema_do, exec_with_retry +from .kiplot import check_eeschema_do, exec_with_retry, add_time_out_options from .misc import (CMD_EESCHEMA_DO, PDF_SCH_PRINT) from .out_base import VariantOptions from .macros import macros, document, output_class # noqa: F401 @@ -50,6 +50,7 @@ class PDF_Sch_PrintOptions(VariantOptions): if GS.debug_enabled: cmd.insert(1, '-vv') cmd.insert(1, '-r') + cmd = add_time_out_options(cmd) ret = exec_with_retry(cmd) if ret: logger.error(CMD_EESCHEMA_DO+' returned %d', ret) diff --git a/kibot/out_svg_sch_print.py b/kibot/out_svg_sch_print.py index 9e1eac35..e910ec98 100644 --- a/kibot/out_svg_sch_print.py +++ b/kibot/out_svg_sch_print.py @@ -8,7 +8,7 @@ import os from tempfile import mkdtemp from shutil import rmtree from .gs import (GS) -from .kiplot import check_eeschema_do, exec_with_retry +from .kiplot import check_eeschema_do, exec_with_retry, add_time_out_options from .misc import (CMD_EESCHEMA_DO, SVG_SCH_PRINT) from .out_base import VariantOptions from .macros import macros, document, output_class # noqa: F401 @@ -47,6 +47,7 @@ class SVG_Sch_PrintOptions(VariantOptions): if GS.debug_enabled: cmd.insert(1, '-vv') cmd.insert(1, '-r') + cmd = add_time_out_options(cmd) ret = exec_with_retry(cmd) if ret: logger.error(CMD_EESCHEMA_DO+' returned %d', ret) diff --git a/kibot/pre_drc.py b/kibot/pre_drc.py index 04bcfa40..a598fe54 100644 --- a/kibot/pre_drc.py +++ b/kibot/pre_drc.py @@ -8,7 +8,7 @@ from .macros import macros, pre_class # noqa: F401 from .error import (KiPlotConfigurationError) from .gs import (GS) from .optionable import Optionable -from .kiplot import check_script, exec_with_retry, load_board +from .kiplot import check_script, exec_with_retry, load_board, add_time_out_options from .misc import (CMD_PCBNEW_RUN_DRC, URL_PCBNEW_RUN_DRC, DRC_ERROR) from .log import (get_logger) @@ -45,6 +45,7 @@ class Run_DRC(BasePreFlight): # noqa: F821 if GS.debug_enabled: cmd.insert(1, '-vv') cmd.insert(1, '-r') + cmd = add_time_out_options(cmd) logger.info('- Running the DRC') ret = exec_with_retry(cmd) if ret: diff --git a/kibot/pre_erc.py b/kibot/pre_erc.py index 2d288b40..aaa38780 100644 --- a/kibot/pre_erc.py +++ b/kibot/pre_erc.py @@ -7,7 +7,7 @@ from sys import (exit) from .macros import macros, pre_class # noqa: F401 from .gs import (GS) from .optionable import Optionable -from .kiplot import check_eeschema_do, exec_with_retry, load_sch +from .kiplot import check_eeschema_do, exec_with_retry, load_sch, add_time_out_options from .error import (KiPlotConfigurationError) from .misc import (CMD_EESCHEMA_DO, ERC_ERROR) from .log import (get_logger) @@ -45,6 +45,7 @@ class Run_ERC(BasePreFlight): # noqa: F821 if GS.debug_enabled: cmd.insert(1, '-vv') cmd.insert(1, '-r') + cmd = add_time_out_options(cmd) logger.info('- Running the ERC') ret = exec_with_retry(cmd) if ret: diff --git a/kibot/pre_update_xml.py b/kibot/pre_update_xml.py index febbd093..5226f099 100644 --- a/kibot/pre_update_xml.py +++ b/kibot/pre_update_xml.py @@ -7,7 +7,7 @@ from sys import (exit) from .macros import macros, pre_class # noqa: F401 from .error import (KiPlotConfigurationError) from .gs import (GS) -from .kiplot import check_eeschema_do, exec_with_retry +from .kiplot import check_eeschema_do, exec_with_retry, add_time_out_options from .misc import (CMD_EESCHEMA_DO, BOM_ERROR) from .log import (get_logger) @@ -37,6 +37,7 @@ class Update_XML(BasePreFlight): # noqa: F821 if GS.debug_enabled: cmd.insert(1, '-vv') cmd.insert(1, '-r') + cmd = add_time_out_options(cmd) logger.info('- Updating BoM in XML format') ret = exec_with_retry(cmd) if ret: