mirror of https://github.com/FOME-Tech/fome-fw.git
Merge branch 'master' of https://github.com/fome-tech/fome-fw
This commit is contained in:
commit
baa9bc3cfc
|
@ -1 +0,0 @@
|
|||
pcb_sync
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AntConfiguration">
|
||||
<buildFile url="file://$PROJECT_DIR$/build.xml" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||
<resourceExtensions />
|
||||
<wildcardResourcePatterns>
|
||||
<entry name="!?*.java" />
|
||||
<entry name="!?*.form" />
|
||||
<entry name="!?*.class" />
|
||||
<entry name="!?*.groovy" />
|
||||
<entry name="!?*.scala" />
|
||||
<entry name="!?*.flex" />
|
||||
<entry name="!?*.kt" />
|
||||
<entry name="!?*.clj" />
|
||||
</wildcardResourcePatterns>
|
||||
<annotationProcessing>
|
||||
<profile default="true" name="Default" enabled="false">
|
||||
<processorPath useClasspath="true" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
<component name="CopyrightManager">
|
||||
<settings default="" />
|
||||
</component>
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
|
||||
</project>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="junit">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/junit.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
|
@ -1,12 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<entry_points version="2.0" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="false" assert-keyword="true" jdk-15="true" project-jdk-name="1.7 64b" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
<component name="SvnBranchConfigurationManager">
|
||||
<option name="mySupportsUserInfoFilter" value="true" />
|
||||
</component>
|
||||
</project>
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/pcb_sync.iml" filepath="$PROJECT_DIR$/pcb_sync.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="BomBuilder" type="Application" factoryName="Application">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="MAIN_CLASS_NAME" value="com.rusefi.bom.BomBuilder" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="in.cmp comp.csv out.csv" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="pcb_sync" />
|
||||
<envs />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
|
@ -1,25 +0,0 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Main move" type="Application" factoryName="Application">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="MAIN_CLASS_NAME" value="com.rusefi.Main" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="pcb_move frankenso_foundation.kicad_pcb frankenso_foundation.kicad_pcb 0 25.4" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="pcb_sync" />
|
||||
<envs />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
|
@ -1,25 +0,0 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Main pcb_merge" type="Application" factoryName="Application">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="MAIN_CLASS_NAME" value="com.rusefi.Main" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="pcb_merge test.kicad_pcb out.kicad_pcb changes.txt" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="pcb_sync" />
|
||||
<envs />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
|
@ -1,25 +0,0 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Main rename" type="Application" factoryName="Application">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="MAIN_CLASS_NAME" value="com.rusefi.Main" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="rename mmc_replace.txt in out" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="pcb_sync" />
|
||||
<envs />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
|
@ -1,25 +0,0 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="RemoveUnneededTraces" type="Application" factoryName="Application" nameIsGenerated="true">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="MAIN_CLASS_NAME" value="com.rusefi.misc.RemoveUnneededTraces" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="test.kicad_pcb test.kicad_pcb" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="pcb_sync" />
|
||||
<envs />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
|
@ -1,23 +0,0 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="main cmp_merge" type="Application" factoryName="Application">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="MAIN_CLASS_NAME" value="com.rusefi.Main" />
|
||||
<option name="VM_PARAMETERS" value="" />
|
||||
<option name="PROGRAM_PARAMETERS" value="cmp_merge output\res.cmp 1.cmp 2.cmp" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="pcb_sync" />
|
||||
<envs />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
|
@ -1,5 +0,0 @@
|
|||
<component name="DependencyValidationManager">
|
||||
<state>
|
||||
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
|
||||
</state>
|
||||
</component>
|
|
@ -1,125 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="svn" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
P1;P401
|
||||
P2;P402
|
||||
P3;P403
|
||||
P4;P404
|
||||
P5;P405
|
||||
P7;P406
|
||||
|
||||
R4;R401
|
||||
R18;R402
|
||||
|
||||
R5;R403
|
||||
R16;R404
|
||||
|
||||
R6;R405
|
||||
R14;R406
|
||||
|
||||
R7;R407
|
||||
R17;R408
|
||||
|
||||
R8;R409
|
||||
R15;R410
|
||||
|
||||
R9;R411
|
||||
R13;R412
|
||||
|
||||
|
||||
R1;R451
|
||||
R2;R452
|
||||
R3;R453
|
||||
|
||||
|
||||
Q1;Q401
|
||||
Q2;Q402
|
||||
Q3;Q403
|
||||
Q4;Q404
|
||||
Q5;Q405
|
||||
Q6;Q406
|
||||
|
||||
|
||||
D1;D401
|
||||
D2;D402
|
||||
D3;D403
|
||||
D4;D404
|
||||
D5;D405
|
||||
D6;D406
|
||||
D7;D407
|
||||
D8;D408
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
<project default="jar">
|
||||
|
||||
<target name="clean">
|
||||
<delete dir="build"/>
|
||||
</target>
|
||||
|
||||
<target name="compile">
|
||||
<mkdir dir="build/classes"/>
|
||||
<javac destdir="build/classes" classpath="lib/junit.jar:lib/annotations.jar">
|
||||
<src path="src/main/java"/>
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="compile">
|
||||
<mkdir dir="build/jar"/>
|
||||
<jar destfile="../pcb_sync.jar" basedir="build/classes">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="com.rusefi.Main"/>
|
||||
</manifest>
|
||||
<zipfileset dir="build/classes" includes="**/*.class"/>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
</project>
|
|
@ -1,5 +0,0 @@
|
|||
#comment
|
||||
|
||||
SM0805_500K,resistor,resistto_part,hi resistor
|
||||
|
||||
LOGO_LOGO,ignore,ignore,ignore
|
|
|
@ -1,843 +0,0 @@
|
|||
Cmp-Mod V01 Created by CvPcb (2013-mar-13)-testing date = Пнд 20 Янв 2014 20:56:23
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524A0957;
|
||||
Reference = C210;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524A0814;
|
||||
Reference = C211;
|
||||
ValeurCmp = 0.1uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B71C8;
|
||||
Reference = C220;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B795A;
|
||||
Reference = C230;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B797C;
|
||||
Reference = C240;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B84CE;
|
||||
Reference = C250;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B84BC;
|
||||
Reference = C251;
|
||||
ValeurCmp = 0.1uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B84F0;
|
||||
Reference = C260;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8405;
|
||||
Reference = C270;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8427;
|
||||
Reference = C280;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FCF;
|
||||
Reference = C290;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FBD;
|
||||
Reference = C291;
|
||||
ValeurCmp = 0.1uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FED;
|
||||
Reference = C300;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CCE4;
|
||||
Reference = C310;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CD02;
|
||||
Reference = C320;
|
||||
ValeurCmp = 0.01uF;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7F12;
|
||||
Reference = D210;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7EE6;
|
||||
Reference = D220;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7290;
|
||||
Reference = D230;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7ED1;
|
||||
Reference = D240;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52894617;
|
||||
Reference = D250;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /528945F7;
|
||||
Reference = D260;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52895644;
|
||||
Reference = D270;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5289563E;
|
||||
Reference = D280;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F800B;
|
||||
Reference = D290;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F8039;
|
||||
Reference = D300;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CD1A;
|
||||
Reference = D310;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CD43;
|
||||
Reference = D320;
|
||||
ValeurCmp = DOUBLE_SCHOTTKY;
|
||||
IdModule = sot23;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /529C04C3;
|
||||
Reference = G200;
|
||||
ValeurCmp = LOGO;
|
||||
IdModule = LOGO;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /529C091E;
|
||||
Reference = G201;
|
||||
ValeurCmp = LOGO;
|
||||
IdModule = LOGO_F;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /529C09B9;
|
||||
Reference = G202;
|
||||
ValeurCmp = LOGO;
|
||||
IdModule = LOGO_F;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F705F;
|
||||
Reference = LD200;
|
||||
ValeurCmp = LED;
|
||||
IdModule = LED-1206;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52530AFC;
|
||||
Reference = M200;
|
||||
ValeurCmp = CONN_1;
|
||||
IdModule = PIN_ARRAY_1;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52530B0B;
|
||||
Reference = M201;
|
||||
ValeurCmp = CONN_1;
|
||||
IdModule = PIN_ARRAY_1;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52896702;
|
||||
Reference = M202;
|
||||
ValeurCmp = CONN_1;
|
||||
IdModule = PIN_ARRAY_1;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5234F161;
|
||||
Reference = P201;
|
||||
ValeurCmp = CONN_10X2;
|
||||
IdModule = PIN_ARRAY_10X2_M;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F6D3B;
|
||||
Reference = P202;
|
||||
ValeurCmp = CONN_3;
|
||||
IdModule = PIN_ARRAY_3X1;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5296836D;
|
||||
Reference = P203;
|
||||
ValeurCmp = CONN_2;
|
||||
IdModule = SIL-2;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52941801;
|
||||
Reference = P204;
|
||||
ValeurCmp = CONN_1;
|
||||
IdModule = PIN_ARRAY_1;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295D3A8;
|
||||
Reference = P205;
|
||||
ValeurCmp = CONN_1;
|
||||
IdModule = PIN_ARRAY_1;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5297EAA7;
|
||||
Reference = P207;
|
||||
ValeurCmp = CONN_2;
|
||||
IdModule = SIL-2;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52967E40;
|
||||
Reference = P208;
|
||||
ValeurCmp = CONN_6;
|
||||
IdModule = PIN_ARRAY-6X1;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7A58;
|
||||
Reference = P209;
|
||||
ValeurCmp = CONN_6;
|
||||
IdModule = PIN_ARRAY-6X1;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F714A;
|
||||
Reference = R200;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524A0A89;
|
||||
Reference = R210;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52350E9D;
|
||||
Reference = R211;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /525221CC;
|
||||
Reference = R212;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524A093F;
|
||||
Reference = R213;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5234EE8F;
|
||||
Reference = R214;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5234EE80;
|
||||
Reference = R215;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B7296;
|
||||
Reference = R220;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52351952;
|
||||
Reference = R221;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /525223BA;
|
||||
Reference = R222;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B71C2;
|
||||
Reference = R223;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52353061;
|
||||
Reference = R224;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5235311B;
|
||||
Reference = R225;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B7962;
|
||||
Reference = R230;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B7902;
|
||||
Reference = R231;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52894D15;
|
||||
Reference = R232;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B7954;
|
||||
Reference = R233;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B78DA;
|
||||
Reference = R234;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B78D4;
|
||||
Reference = R235;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B798A;
|
||||
Reference = R240;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B7914;
|
||||
Reference = R241;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52894D25;
|
||||
Reference = R242;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B7976;
|
||||
Reference = R243;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B7920;
|
||||
Reference = R244;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B7926;
|
||||
Reference = R245;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B84D6;
|
||||
Reference = R250;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8476;
|
||||
Reference = R251;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52894FE9;
|
||||
Reference = R252;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B84C8;
|
||||
Reference = R253;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B844E;
|
||||
Reference = R254;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8448;
|
||||
Reference = R255;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B84FE;
|
||||
Reference = R260;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8488;
|
||||
Reference = R261;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52894FEF;
|
||||
Reference = R262;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B84EA;
|
||||
Reference = R263;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8494;
|
||||
Reference = R264;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B849A;
|
||||
Reference = R265;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B840D;
|
||||
Reference = R270;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B83AD;
|
||||
Reference = R271;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52895668;
|
||||
Reference = R272;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B83FF;
|
||||
Reference = R273;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8385;
|
||||
Reference = R274;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B837F;
|
||||
Reference = R275;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8435;
|
||||
Reference = R280;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B83BF;
|
||||
Reference = R281;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52895662;
|
||||
Reference = R282;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B8421;
|
||||
Reference = R283;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B83CB;
|
||||
Reference = R284;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524B83D1;
|
||||
Reference = R285;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FD5;
|
||||
Reference = R290;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7F8D;
|
||||
Reference = R291;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /528954AB;
|
||||
Reference = R292;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FC9;
|
||||
Reference = R293;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7F71;
|
||||
Reference = R294;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7F6B;
|
||||
Reference = R295;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FF9;
|
||||
Reference = R300;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7F9F;
|
||||
Reference = R301;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /528954A5;
|
||||
Reference = R302;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FE7;
|
||||
Reference = R303;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FAB;
|
||||
Reference = R304;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /524F7FB1;
|
||||
Reference = R305;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CCEA;
|
||||
Reference = R310;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CCA2;
|
||||
Reference = R311;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CD5B;
|
||||
Reference = R312;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CCDE;
|
||||
Reference = R313;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CC8C;
|
||||
Reference = R314;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CC86;
|
||||
Reference = R315;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CD0E;
|
||||
Reference = R320;
|
||||
ValeurCmp = 2700;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CCB4;
|
||||
Reference = R321;
|
||||
ValeurCmp = 500K;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CD55;
|
||||
Reference = R322;
|
||||
ValeurCmp = 10k;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CCFC;
|
||||
Reference = R323;
|
||||
ValeurCmp = 100;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CCC0;
|
||||
Reference = R324;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5295CCC6;
|
||||
Reference = R325;
|
||||
ValeurCmp = 1500;
|
||||
IdModule = SM0805;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52895DF7;
|
||||
Reference = U201;
|
||||
ValeurCmp = LMV324IDR;
|
||||
IdModule = so-14;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52896407;
|
||||
Reference = U202;
|
||||
ValeurCmp = LMV324IDR;
|
||||
IdModule = so-14;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /528965D2;
|
||||
Reference = U203;
|
||||
ValeurCmp = LMV324IDR;
|
||||
IdModule = so-14;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /52987094;
|
||||
Reference = W211;
|
||||
ValeurCmp = TEST;
|
||||
IdModule = SIL-2;
|
||||
EndCmp
|
||||
|
||||
BeginCmp
|
||||
TimeStamp = /5298705E;
|
||||
Reference = W212;
|
||||
ValeurCmp = TEST;
|
||||
IdModule = SIL-2;
|
||||
EndCmp
|
||||
|
||||
EndListe
|
|
@ -1,41 +0,0 @@
|
|||
C5;C101
|
||||
C6;C102
|
||||
C10;C103
|
||||
C13;C104
|
||||
C31;C105
|
||||
C32;C106
|
||||
C33;C107
|
||||
C34;C108
|
||||
|
||||
D1;D101
|
||||
D2;D102
|
||||
|
||||
G1;G101
|
||||
|
||||
P1;P101
|
||||
P2;P102
|
||||
P3;P103
|
||||
P4;P104
|
||||
|
||||
R1;R101
|
||||
R38;R102
|
||||
R39;R103
|
||||
R40;R104
|
||||
R41;R105
|
||||
R42;R106
|
||||
R43;R107
|
||||
R44;R108
|
||||
R45;R109
|
||||
R46;R110
|
||||
R48;R111
|
||||
R49;R112
|
||||
R52;R113
|
||||
R53;R114
|
||||
R62;R115
|
||||
R64;R116
|
||||
R65;R117
|
||||
R66;R118
|
||||
|
||||
|
||||
U20;U101
|
||||
U24;U102
|
|
@ -1,55 +0,0 @@
|
|||
|
||||
optimize ../can_board/can_brd_1.kicad_pcb can_brd_1.kicad_pcb
|
||||
|
||||
|
||||
add ../adc_amp_divider.vertical12/adc_amp_divider.kicad_pcb
|
||||
add ../usb_mmc_spi/mmc_usb_1.kicad_pcb
|
||||
add ../knock_VR_Art_ELectro/cps_vrs_io_1.kicad_pcb
|
||||
add can_brd_1.kicad_pcb
|
||||
|
||||
|
||||
# DD from the VR board
|
||||
# knock in
|
||||
remove P101
|
||||
# amp chip
|
||||
remove U102
|
||||
# data out
|
||||
remove P103
|
||||
|
||||
remove R115
|
||||
remove R116
|
||||
remove R117
|
||||
remove R118
|
||||
|
||||
|
||||
remove C105
|
||||
remove C106
|
||||
remove C107
|
||||
remove C108
|
||||
|
||||
|
||||
# VR board power LED
|
||||
remove R101
|
||||
remove D102
|
||||
remove D101
|
||||
remove R105
|
||||
|
||||
|
||||
|
||||
|
||||
# CAN module connector
|
||||
remove P471
|
||||
# CAN module power LED
|
||||
remove R471
|
||||
remove D471
|
||||
|
||||
# SD/TTL module 3.3v LED
|
||||
remove R354
|
||||
remove D353
|
||||
|
||||
# SD/TTL module 5v LED
|
||||
remove R353
|
||||
remove D352
|
||||
|
||||
# SD/TTL right 10x2
|
||||
remove P354
|
|
@ -1,61 +0,0 @@
|
|||
package com.rusefi;
|
||||
|
||||
import com.rusefi.bom.BomBuilder;
|
||||
import com.rusefi.misc.CmpMergeTool;
|
||||
import com.rusefi.misc.RemoveUnneededTraces;
|
||||
import com.rusefi.pcb.PcbMergeTool;
|
||||
import com.rusefi.pcb.PcbMoveTool;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
/**
|
||||
* (c) Andrey Belomutskiy
|
||||
* 12/16/13.
|
||||
*/
|
||||
public class Main {
|
||||
private static final Map<String, Class> TOOLS = new TreeMap<String, Class>(String.CASE_INSENSITIVE_ORDER);
|
||||
|
||||
static {
|
||||
registerTool("pcb_move", PcbMoveTool.class);
|
||||
registerTool("pcb_merge", PcbMergeTool.class);
|
||||
|
||||
registerTool("copy", PcbCopyTool.class);
|
||||
|
||||
registerTool("cmp_merge", CmpMergeTool.class);
|
||||
registerTool("rename", RenameComponents.class);
|
||||
|
||||
registerTool("optimize", RemoveUnneededTraces.class);
|
||||
|
||||
registerTool("bom_builder", BomBuilder.class);
|
||||
}
|
||||
|
||||
private static void registerTool(String name, Class<?> clazz) {
|
||||
TOOLS.put(name, clazz);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
|
||||
if (args.length < 1) {
|
||||
System.out.println("At least tool name parameter expected");
|
||||
System.out.println(TOOLS.size() + " tools available:");
|
||||
for (String name : TOOLS.keySet())
|
||||
System.out.println("\t\t" + name);
|
||||
return;
|
||||
}
|
||||
String name = args[0];
|
||||
Class c = TOOLS.get(name);
|
||||
if (c == null)
|
||||
throw new NullPointerException("No tool: " + name);
|
||||
|
||||
Method main = c.getMethod("main", String[].class);
|
||||
|
||||
List<String> asList = Arrays.asList(args);
|
||||
String[] a = asList.subList(1, asList.size()).toArray(new String[args.length - 1]);
|
||||
|
||||
main.invoke(null, new Object[]{a});
|
||||
}
|
||||
}
|
|
@ -1,106 +0,0 @@
|
|||
package com.rusefi;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class RenameComponents {
|
||||
private static final Map<String, String> replaceMap = new HashMap<String, String>();
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
if (args.length != 3) {
|
||||
System.out.println("Three paramters expected:");
|
||||
System.out.println(" replace_replace_file source_folder destination_folder");
|
||||
return;
|
||||
}
|
||||
String requestFileName = args[0];
|
||||
File file = new File(requestFileName);
|
||||
if (!file.exists() || !file.isFile())
|
||||
throw new IllegalArgumentException("No replace_request_file");
|
||||
String sourceDir = args[1];
|
||||
assertFolder(sourceDir);
|
||||
String destinationDir = args[2];
|
||||
assertFolder(destinationDir);
|
||||
|
||||
readReplaceRequest(file);
|
||||
for (String fileName : new File(sourceDir).list())
|
||||
processFile(sourceDir, destinationDir, fileName);
|
||||
}
|
||||
|
||||
private static void processFile(String sourceDir, String destinationDir, String fileName) throws IOException {
|
||||
String newFileName = destinationDir + File.separator + fileName;
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(newFileName));
|
||||
|
||||
String sourceFile = sourceDir + File.separator + fileName;
|
||||
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
|
||||
|
||||
System.out.println("Making " + newFileName + " from " + sourceFile);
|
||||
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
line = processLine(line);
|
||||
bw.append(line + "\r\n");
|
||||
}
|
||||
|
||||
bw.close();
|
||||
}
|
||||
|
||||
private static String processLine(String line) {
|
||||
for (Map.Entry<String, String> e : replaceMap.entrySet()) {
|
||||
String from = e.getKey();
|
||||
String to = e.getValue();
|
||||
|
||||
line = Pattern.compile(" " + from + "$").matcher(
|
||||
line).replaceAll(Matcher.quoteReplacement(" " + to));
|
||||
|
||||
line = processLine(line, " " + from + ";", " " + to + ";");
|
||||
line = processLine(line, " " + from + ")", " " + to + ")");
|
||||
line = processLine(line, " " + from + " ", " " + to + " ");
|
||||
line = processLine(line, " " + from + "-", " " + to + "-");
|
||||
line = processLine(line, "\"" + from + "\"", "\"" + to + "\"");
|
||||
}
|
||||
return line;
|
||||
}
|
||||
|
||||
private static String processLine(String line, String s, String s1) {
|
||||
return line.replace(s, s1);
|
||||
}
|
||||
|
||||
private static void readReplaceRequest(File file) throws IOException {
|
||||
String line;
|
||||
BufferedReader br = new BufferedReader(new FileReader(file));
|
||||
int lineNumber = 0;
|
||||
|
||||
while ((line = br.readLine()) != null) {
|
||||
lineNumber++;
|
||||
line = line.trim();
|
||||
if (line.isEmpty())
|
||||
continue;
|
||||
String[] s = line.split("\\;");
|
||||
if (s.length != 2)
|
||||
throw new IllegalArgumentException("Invalid replace request: " + line);
|
||||
|
||||
String from = s[0];
|
||||
String to = s[1];
|
||||
|
||||
|
||||
if (replaceMap.containsKey(from) || replaceMap.containsValue(from))
|
||||
throw new IllegalArgumentException("Name already mentioned: " + from + " @" + lineNumber);
|
||||
|
||||
if (replaceMap.containsKey(to) || replaceMap.containsValue(to))
|
||||
throw new IllegalArgumentException("Name already mentioned: " + to + " @" + lineNumber);
|
||||
|
||||
replaceMap.put(from, to);
|
||||
|
||||
System.out.println("Replacing [" + from + "] by [" + to + "]");
|
||||
}
|
||||
}
|
||||
|
||||
private static void assertFolder(String dir) {
|
||||
File d = new File(dir);
|
||||
if (!d.exists() || !d.isDirectory())
|
||||
throw new IllegalArgumentException("No such folder: " + dir);
|
||||
}
|
||||
}
|
|
@ -1,230 +0,0 @@
|
|||
package com.rusefi.bom;
|
||||
|
||||
import com.rusefi.pcb.ModuleNode;
|
||||
import com.rusefi.pcb.PcbNode;
|
||||
import com.rusefi.util.FileUtils;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* (c) Andrey Belomutskiy
|
||||
* 2/2/14
|
||||
*/
|
||||
public class BomBuilder {
|
||||
private static final String DELIMITER = ",";
|
||||
|
||||
private static final CpmFileModel allComponents = new CpmFileModel();
|
||||
private static final String IGNORE_TAG = "ignore";
|
||||
private static String cmpFileName;
|
||||
private static String bomDictionaryName;
|
||||
private static Map<String, BomRecord> bomDictionary;
|
||||
private static Set<String> ignoreList = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
|
||||
|
||||
private static boolean printQtyInFull = true;
|
||||
private static boolean printPadCount = false;
|
||||
private static boolean printReference = false;
|
||||
private static boolean printUserComment = false;
|
||||
private static PcbNode pcb;
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
if (args.length < 3) {
|
||||
System.out.println("bom_builder FILE_NAME.CMP PCB.kicad_pcb COMPONENTS_DICTIONARY.CSV OUTPUT_FILE.CSV");
|
||||
return;
|
||||
}
|
||||
cmpFileName = args[0];
|
||||
String pcbFileName = args[1];
|
||||
bomDictionaryName = args[2];
|
||||
String outputFileName = args[3];
|
||||
|
||||
pcb = PcbNode.readFromFile(pcbFileName);
|
||||
|
||||
for (int i = 4; i < args.length; i++) {
|
||||
String option = args[i].trim();
|
||||
if (option.equalsIgnoreCase("printUserComment")) {
|
||||
printUserComment = true;
|
||||
} else if (option.equalsIgnoreCase("printreference")) {
|
||||
printReference = true;
|
||||
} else if (option.equalsIgnoreCase("printpadcount")) {
|
||||
printPadCount = true;
|
||||
} else if (option.equalsIgnoreCase("skipqtyinfull")) {
|
||||
printQtyInFull = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
allComponents.readCmpFile(FileUtils.readFileToList(cmpFileName));
|
||||
|
||||
bomDictionary = readBomDictionary(FileUtils.readFileToList(bomDictionaryName));
|
||||
|
||||
writeCompactPartList(outputFileName + "_compact.csv", bomDictionary);
|
||||
writeFullPartList(outputFileName + "_full.csv", bomDictionary);
|
||||
}
|
||||
|
||||
private static void writeMissingElements(Map<String, BomRecord> bomDictionary, BufferedWriter bw, Map<String, List<BomComponent>> componentsByKey) throws IOException {
|
||||
for (Iterator<Map.Entry<String, List<BomComponent>>> i = componentsByKey.entrySet().iterator(); i.hasNext(); ) {
|
||||
Map.Entry<String, List<BomComponent>> e = i.next();
|
||||
String key = e.getKey();
|
||||
|
||||
if (ignoreList.contains(key))
|
||||
continue;
|
||||
|
||||
BomRecord bomRecord = bomDictionary.get(key);
|
||||
if (bomRecord == null) {
|
||||
bw.write("### no BOM record for " + key + ": " + e.getValue() + "\r\n");
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
bw.write("\r\n\n\n\n");
|
||||
}
|
||||
|
||||
private static void writeFullPartList(String outputFileName, Map<String, BomRecord> bomDictionary) throws IOException {
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(outputFileName));
|
||||
|
||||
Map<String, List<BomComponent>> componentsByKey = new TreeMap<String, List<BomComponent>>(allComponents.componentsByKey);
|
||||
|
||||
log("Writing full parts list to " + outputFileName);
|
||||
writeCommonHeader(bw);
|
||||
writeMissingElements(bomDictionary, bw, componentsByKey);
|
||||
|
||||
StringBuilder notMounted = new StringBuilder();
|
||||
|
||||
for (Map.Entry<String, List<BomComponent>> e : componentsByKey.entrySet()) {
|
||||
// for instance, SM0805_47pF
|
||||
String componentName = e.getKey();
|
||||
|
||||
List<BomComponent> list = e.getValue();
|
||||
|
||||
if (ignoreList.contains(componentName))
|
||||
continue;
|
||||
|
||||
BomRecord bomRecord = bomDictionary.get(componentName);
|
||||
if (bomRecord == null)
|
||||
throw new NullPointerException();
|
||||
|
||||
|
||||
|
||||
|
||||
for (BomComponent c : list) {
|
||||
if (!findModule(c.getReference())) {
|
||||
bw.write("Not mounted: " + c.getReference() + "\r\n");
|
||||
continue;
|
||||
}
|
||||
writeLine(bw, bomRecord, 1, c.getReference() + ": ", c.getReference());
|
||||
}
|
||||
}
|
||||
bw.close();
|
||||
}
|
||||
|
||||
private static boolean findModule(String reference) {
|
||||
for (PcbNode node : pcb.iterate("module")) {
|
||||
if (node instanceof ModuleNode) {
|
||||
ModuleNode mn = (ModuleNode) node;
|
||||
if (mn.getReference().equalsIgnoreCase(reference))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void writeCompactPartList(String outputFileName, Map<String, BomRecord> bomDictionary) throws IOException {
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(outputFileName));
|
||||
Map<String, List<BomComponent>> componentsByKey = new TreeMap<String, List<BomComponent>>(allComponents.componentsByKey);
|
||||
|
||||
log("Writing compact parts list to " + outputFileName);
|
||||
writeCommonHeader(bw);
|
||||
writeMissingElements(bomDictionary, bw, componentsByKey);
|
||||
|
||||
for (Map.Entry<String, List<BomComponent>> e : componentsByKey.entrySet()) {
|
||||
// for instance, SM0805_47pF
|
||||
String componentName = e.getKey();
|
||||
|
||||
if (ignoreList.contains(componentName))
|
||||
continue;
|
||||
|
||||
List<BomComponent> list = e.getValue();
|
||||
log(list.size() + " items of " + componentName);
|
||||
|
||||
BomRecord bomRecord = bomDictionary.get(componentName);
|
||||
if (bomRecord == null)
|
||||
throw new NullPointerException();
|
||||
writeLine(bw, bomRecord, list.size(), "", "");
|
||||
}
|
||||
bw.close();
|
||||
}
|
||||
|
||||
private static void writeCommonHeader(BufferedWriter bw) throws IOException {
|
||||
bw.write("### this file was generated by rusEfi bom_builder on " + new Date() + "\r\n");
|
||||
bw.write("### " + allComponents.componentsCount + " components in " + allComponents.linesCount + " lines of " + cmpFileName + "\r\n");
|
||||
bw.write("### " + allComponents.componentsByKey.size() + " kinds of components in input file\r\n");
|
||||
bw.write("### " + bomDictionary.size() + " entries in BOM dictionary " + bomDictionaryName + "\r\n");
|
||||
bw.write("### " + ignoreList.size() + " entries in ignore list\r\n");
|
||||
}
|
||||
|
||||
private static void writeLine(BufferedWriter bw, BomRecord bomRecord, int quantity, String prefix, String reference) throws IOException {
|
||||
bw.write(quantity + DELIMITER +
|
||||
bomRecord.getStorePart() + DELIMITER +
|
||||
prefix + bomRecord.getCustomerRef() + DELIMITER +
|
||||
(printReference ? reference + DELIMITER : "") +
|
||||
(printUserComment ? bomRecord.getUserComment() + DELIMITER : "") +
|
||||
(printPadCount ? bomRecord.getPadCount() + DELIMITER : "") +
|
||||
"\r\n"
|
||||
);
|
||||
}
|
||||
|
||||
private static Map<String, BomRecord> readBomDictionary(List<String> strings) {
|
||||
Map<String, BomRecord> result = new TreeMap<String, BomRecord>(String.CASE_INSENSITIVE_ORDER);
|
||||
for (String line : strings) {
|
||||
line = line.trim();
|
||||
if (line.isEmpty())
|
||||
continue;
|
||||
|
||||
if (line.startsWith("#")) {
|
||||
log("Skipping comment: " + line);
|
||||
continue;
|
||||
}
|
||||
|
||||
String[] tokens = line.split(",");
|
||||
|
||||
if (tokens.length < 2) {
|
||||
log("Unexpected line: " + line + " Expected at least two tokens but " + tokens.length);
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
String ref = tokens[0];
|
||||
String mfgPart = tokens[1];
|
||||
|
||||
if (mfgPart.equalsIgnoreCase(IGNORE_TAG)) {
|
||||
log("Ignoring entry: " + ref);
|
||||
ignoreList.add(ref);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (tokens.length != 6) {
|
||||
log("Unexpected line: [" + line + "] Expected 6 tokens but " + tokens.length);
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
String storePart = tokens[2];
|
||||
String componentName = tokens[3];
|
||||
int padCount = Integer.parseInt(tokens[4]);
|
||||
String customerRef = tokens[5];
|
||||
|
||||
result.put(ref, new BomRecord(mfgPart, storePart, customerRef, padCount, componentName));
|
||||
|
||||
log("BOM key: " + ref);
|
||||
log("mfgPartNo: " + mfgPart);
|
||||
log("storePartNo: " + storePart);
|
||||
}
|
||||
|
||||
log("Got " + result.size() + " entries in BOM dictionary");
|
||||
log("Got " + ignoreList.size() + " entries in ignore list");
|
||||
return result;
|
||||
}
|
||||
|
||||
protected static void log(String msg) {
|
||||
System.out.println(msg);
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
package com.rusefi.bom;
|
||||
|
||||
/**
|
||||
* (c) Andrey Belomutskiy
|
||||
* 2/2/14
|
||||
*/
|
||||
public class BomComponent {
|
||||
private final String reference;
|
||||
|
||||
public BomComponent(String reference) {
|
||||
this.reference = reference;
|
||||
}
|
||||
|
||||
public String getReference() {
|
||||
return reference;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return reference;
|
||||
}
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
package com.rusefi.bom;
|
||||
|
||||
/**
|
||||
* (c) Andrey Belomutskiy
|
||||
* 2/2/14
|
||||
*/
|
||||
public class BomRecord {
|
||||
private final String mfgPart;
|
||||
private final String storePart;
|
||||
private final String customerRef;
|
||||
private final int padCount;
|
||||
private final String userComment;
|
||||
|
||||
public BomRecord(String mfgPart, String storePart, String customerRef, int padCount, String userComment) {
|
||||
this.mfgPart = mfgPart;
|
||||
this.storePart = storePart;
|
||||
this.customerRef = customerRef;
|
||||
this.padCount = padCount;
|
||||
this.userComment = userComment;
|
||||
}
|
||||
|
||||
public String getMfgPart() {
|
||||
return mfgPart;
|
||||
}
|
||||
|
||||
public String getStorePart() {
|
||||
return storePart;
|
||||
}
|
||||
|
||||
public String getCustomerRef() {
|
||||
return customerRef;
|
||||
}
|
||||
|
||||
public int getPadCount() {
|
||||
return padCount;
|
||||
}
|
||||
|
||||
public String getUserComment() {
|
||||
return userComment;
|
||||
}
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
package com.rusefi.bom;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import static com.rusefi.bom.BomBuilder.log;
|
||||
|
||||
/**
|
||||
* (c) Andrey Belomutskiy
|
||||
* 2/22/14
|
||||
*/
|
||||
public class CpmFileModel {
|
||||
|
||||
public final Map<String, List<BomComponent>> componentsByKey = new TreeMap<String, List<BomComponent>>(String.CASE_INSENSITIVE_ORDER);
|
||||
|
||||
public int linesCount;
|
||||
public int componentsCount;
|
||||
|
||||
|
||||
public void readCmpFile(List<String> list) throws IOException {
|
||||
linesCount = list.size();
|
||||
componentsCount = 0;
|
||||
|
||||
for (int lineIndex = 0; lineIndex < list.size(); lineIndex++) {
|
||||
String line = list.get(lineIndex);
|
||||
if ("BeginCmp".equals(line)) {
|
||||
componentsCount++;
|
||||
|
||||
lineIndex += 2; // skipping 'TimeStamp' line
|
||||
|
||||
String a = list.get(lineIndex);
|
||||
String reference = parseReferenceLine(a);
|
||||
log(lineIndex + ": reference: " + reference);
|
||||
lineIndex++;
|
||||
|
||||
String valueLine = list.get(lineIndex);
|
||||
String value = parseValueLine(valueLine);
|
||||
log(lineIndex + ": value: " + value);
|
||||
lineIndex++;
|
||||
|
||||
String packageLine = list.get(lineIndex);
|
||||
|
||||
String packageName = packageLine.split("=")[1].trim();
|
||||
packageName = cutLastSymbol(packageName);
|
||||
log(lineIndex + ": package: " + packageName);
|
||||
lineIndex++;
|
||||
|
||||
String package_value = packageName + "_" + value;
|
||||
List<BomComponent> l = componentsByKey.get(package_value);
|
||||
if (l == null) {
|
||||
l = new ArrayList<BomComponent>();
|
||||
componentsByKey.put(package_value, l);
|
||||
}
|
||||
l.add(new BomComponent(reference));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String parseValueLine(String s) {
|
||||
String value = s.split("=")[1].trim();
|
||||
return cutLastSymbol(value);
|
||||
}
|
||||
|
||||
private static String parseReferenceLine(String line) {
|
||||
String reference = line.split("=")[1].trim();
|
||||
return cutLastSymbol(reference);
|
||||
}
|
||||
|
||||
private static String cutLastSymbol(String reference) {
|
||||
return reference.substring(0, reference.length() - 1);
|
||||
}
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
package com.rusefi.misc;
|
||||
|
||||
import com.rusefi.util.FileUtils;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 12/8/13
|
||||
* (c) Andrey Belomutskiy
|
||||
*/
|
||||
public class CmpMergeTool {
|
||||
private CmpMergeTool() {
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
if (args.length < 2) {
|
||||
System.out.println("This tool merges .cmp KiCad component mappting files");
|
||||
System.out.println("usage:");
|
||||
System.out.println("NetListMerge DEST_FILE SOURCE_1 SOURCE_2 [SOURCE_x]*");
|
||||
return;
|
||||
}
|
||||
|
||||
String destinationFile = args[0];
|
||||
|
||||
System.out.println("Writing result into " + destinationFile);
|
||||
BufferedWriter bw = new BufferedWriter(new FileWriter(destinationFile));
|
||||
|
||||
bw.write("Cmp-Mod V01 Created by CvPcb (2013-07-07 BZR 4022)-stable date = 01/12/2013 21:54:01\r\n");
|
||||
|
||||
for (int i = 1; i < args.length; i++) {
|
||||
String sourceFile = args[i];
|
||||
|
||||
List<String> list = FileUtils.readFileToList(sourceFile);
|
||||
|
||||
for (String line : list.subList(1, list.size() - 2))
|
||||
bw.write(line + "\r\n");
|
||||
}
|
||||
|
||||
bw.write("\r\nEndListe\r\n");
|
||||
bw.close();
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
inc
|
||||
config
|
||||
TunerStudio.properties
|
||||
lib
|
||||
images
|
||||
output.xml
|
||||
rusEFI-project*.md
|
|
@ -1,35 +0,0 @@
|
|||
<project default="jar">
|
||||
|
||||
<property name="javac.source" value="1.8"/>
|
||||
<property name="javac.target" value="1.8"/>
|
||||
|
||||
<target name="clean">
|
||||
<delete dir="build"/>
|
||||
</target>
|
||||
|
||||
<target name="compile">
|
||||
<mkdir dir="build/classes"/>
|
||||
<javac
|
||||
source="${javac.source}"
|
||||
debug="true"
|
||||
target="${javac.target}"
|
||||
destdir="build/classes"
|
||||
classpath="../../java_console/lib/junit.jar:../../java_console/lib/annotations.jar:lib/TunerStudioMS.jar">
|
||||
<src path="screen/src/main/java"/>
|
||||
<src path="../../java_console/inifile/src/main/java"/>
|
||||
</javac>
|
||||
|
||||
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="compile">
|
||||
<mkdir dir="build/jar"/>
|
||||
<jar destfile="ScreenShots.jar" basedir="build/classes">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="com.rusefi.ScreenCaptureLauncher"/>
|
||||
</manifest>
|
||||
<zipfileset dir="build/classes" includes="**/*.class"/>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
</project>
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
step 0:
|
||||
|
||||
In TunerStudio, set "Options->Preferences->Load Last Project on startup". Exit TunerStudio.
|
||||
|
||||
|
||||
step 1:
|
||||
|
||||
``ant``
|
||||
|
||||
Expected output: ScreenShots.jar
|
||||
|
||||
|
||||
step 2:
|
||||
|
||||
Copy ScreenShots.jar inside
|
|
@ -1,23 +0,0 @@
|
|||
import com.rusefi.ScreenGenerator;
|
||||
|
||||
public class ScreenCaptureLauncher {
|
||||
public static void main(String[] args) throws Exception {
|
||||
startTunerStudio(args);
|
||||
ScreenGenerator.main(args);
|
||||
}
|
||||
|
||||
private static void startTunerStudio(String[] args) {
|
||||
Thread t = new Thread(() -> {
|
||||
try {
|
||||
TunerStudio.main(args);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
});
|
||||
|
||||
t.setDaemon(false);
|
||||
t.start();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
package com.rusefi;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
interface Callback {
|
||||
void onComponent(Component parent, Component component);
|
||||
}
|
|
@ -1,102 +0,0 @@
|
|||
package com.rusefi;
|
||||
|
||||
import com.rusefi.xml.*;
|
||||
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Unused and replaced by http://rusefi.online?
|
||||
* REMOVE ONE DAY PRETTY SOON
|
||||
*/
|
||||
public class MdGenerator {
|
||||
public static final String PREFIX = "rusEFI-project";
|
||||
static String FOLDER;
|
||||
|
||||
private static final String EOL = "\r\n";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
//FOLDER = "images/";
|
||||
FOLDER = "overview/TS_generated/";
|
||||
|
||||
ContentModel contentModel = XmlUtil.readModel(ContentModel.class, ScreenGenerator.FILE_NAME);
|
||||
|
||||
generateTopLevel(contentModel);
|
||||
|
||||
for (TopLevelMenuModel topLevelMenuModel : contentModel.getTopLevelMenus()) {
|
||||
String pageName = getPageName(topLevelMenuModel);
|
||||
FileWriter md = new FileWriter(pageName + ".md");
|
||||
|
||||
md.append("# [rusEFI project](rusEFI-project)"+ EOL);
|
||||
|
||||
md.append("## " + topLevelMenuModel.getTitle() + EOL);
|
||||
|
||||
for (DialogModel dialogModel : topLevelMenuModel.getDialogs()) {
|
||||
md.append("[" + dialogModel.getDialogTitle() + "](" + "#" + safeUrl(dialogModel.getDialogTitle()).toLowerCase() + ")" + EOL + EOL);
|
||||
}
|
||||
|
||||
|
||||
for (DialogModel dialogModel : topLevelMenuModel.getDialogs()) {
|
||||
appendDialog(md, dialogModel);
|
||||
}
|
||||
|
||||
md.write(EOL);
|
||||
md.write("generated by " + MdGenerator.class + " on " + new Date());
|
||||
md.write(EOL);
|
||||
md.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static String getPageName(TopLevelMenuModel topLevelMenuModel) {
|
||||
return PREFIX + "-" + safeUrl(topLevelMenuModel.getTitle());
|
||||
}
|
||||
|
||||
private static String safeUrl(String title) {
|
||||
return title.replace(" ", "-");
|
||||
}
|
||||
|
||||
private static void generateTopLevel(ContentModel contentModel) throws IOException {
|
||||
FileWriter md = new FileWriter(PREFIX + ".md");
|
||||
|
||||
for (TopLevelMenuModel topLevelMenuModel : contentModel.getTopLevelMenus()) {
|
||||
String url = getPageName(topLevelMenuModel);
|
||||
md.append("# [" + topLevelMenuModel.getTitle() + "](" + url + ")" + EOL + EOL);
|
||||
|
||||
md.append("<a href='" + url + "'>" + getImageTag(topLevelMenuModel.getImageName()) + "</a>");
|
||||
|
||||
for (DialogModel dialogModel : topLevelMenuModel.getDialogs()) {
|
||||
md.append("[" + dialogModel.getDialogTitle() + "](" + url + "#" + safeUrl(dialogModel.getDialogTitle()).toLowerCase() + ")" + EOL + EOL);
|
||||
}
|
||||
|
||||
md.append(EOL);
|
||||
}
|
||||
md.write(EOL);
|
||||
md.write("generated by " + MdGenerator.class + " on " + new Date());
|
||||
md.write(EOL);
|
||||
md.close();
|
||||
}
|
||||
|
||||
private static void appendDialog(FileWriter md, DialogModel dialogModel) throws IOException {
|
||||
md.append("### " + dialogModel.getDialogTitle() + EOL);
|
||||
|
||||
md.append(getImageTag(dialogModel.getImageName()) + EOL);
|
||||
|
||||
for (FieldModel fieldModel : dialogModel.fields) {
|
||||
String tooltip = fieldModel.getTooltip();
|
||||
|
||||
if (tooltip.length() > 0) {
|
||||
tooltip = tooltip.replace("\\n", EOL);
|
||||
|
||||
md.append(fieldModel.getUiName() + ": " + tooltip + EOL + EOL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String getImageTag(String imageName) {
|
||||
String IMG_SUFFIX = ")" + EOL;
|
||||
String IMG_PREFIX = "![x](";
|
||||
|
||||
return IMG_PREFIX + FOLDER + imageName + IMG_SUFFIX;
|
||||
}
|
||||
}
|
|
@ -1,271 +0,0 @@
|
|||
package com.rusefi;
|
||||
|
||||
import com.opensr5.ini.IniFileModel;
|
||||
import com.rusefi.xml.*;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.RasterFormatException;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
public class ScreenGenerator {
|
||||
public static final String FILE_NAME = "output.xml";
|
||||
private static final String PNG = "png";
|
||||
private static ArrayList<AbstractButton> topLevelButtons = new ArrayList<>();
|
||||
|
||||
private static final int MENU_CLICK_DELAY = 50;
|
||||
private static final int TOP_MENU_CLICK_DELAY = 200;
|
||||
private static final int WAITING_FOR_FRAME_PERIOD = 1000;
|
||||
|
||||
|
||||
private static final String DESTINATION = "images" + File.separator;
|
||||
|
||||
static ContentModel contentModel = new ContentModel();
|
||||
static IniFileModel iniFileModel = new IniFileModel();
|
||||
|
||||
static Map<String, com.opensr5.ini.DialogModel.Field> byCleanUiName = new TreeMap<>();
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
if (args.length != 1) {
|
||||
System.out.println("One parameter expected: path to directory containing rusefi.ini file");
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
iniFileModel.readIniFile(".");
|
||||
|
||||
for (Map.Entry<String, com.opensr5.ini.DialogModel.Field> a : iniFileModel.getAllFields().entrySet()) {
|
||||
String cleanUiName = cleanName(a.getValue().getUiName());
|
||||
byCleanUiName.put(cleanUiName, a.getValue());
|
||||
}
|
||||
|
||||
if (byCleanUiName.isEmpty())
|
||||
throw new IllegalStateException("Something not right with input file. April 29 version is needed");
|
||||
|
||||
|
||||
System.out.println("mkdirs " + DESTINATION);
|
||||
new File(DESTINATION).mkdirs();
|
||||
|
||||
System.out.println("Launching TunerStudioIntegration");
|
||||
Frame mainFrame = TunerStudioIntegration.findMainFrame();
|
||||
|
||||
waitForMainFrame(mainFrame);
|
||||
|
||||
System.out.println("Done discovering buttons, " + topLevelButtons.size());
|
||||
|
||||
Thread.sleep(2 * WAITING_FOR_FRAME_PERIOD); // we have this sleep to avoid an artifact on first screenshot
|
||||
|
||||
handleTopLevelButtons(mainFrame, topLevelButtons);
|
||||
|
||||
XmlUtil.writeXml(contentModel, ContentModel.class, FILE_NAME);
|
||||
}
|
||||
|
||||
private static void waitForMainFrame(Frame mainFrame) throws InterruptedException {
|
||||
while (topLevelButtons.isEmpty()) {
|
||||
UiUtils.visitComponents(mainFrame, "", (parent, component) -> {
|
||||
if (component instanceof AbstractButton) {
|
||||
AbstractButton ab = (AbstractButton) component;
|
||||
System.out.println("topLevelButton " + ab.getText());
|
||||
|
||||
if (TunerStudioIntegration.isTopLevelMenuButton(component)) {
|
||||
topLevelButtons.add(ab);
|
||||
}
|
||||
}
|
||||
});
|
||||
Thread.sleep(WAITING_FOR_FRAME_PERIOD);
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleTopLevelButtons(Frame frame, ArrayList<AbstractButton> topLevelButtons) throws Exception {
|
||||
for (AbstractButton topLevel : topLevelButtons) {
|
||||
handleTopLevelButton(frame, topLevel);
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleTopLevelButton(Frame frame, AbstractButton topLevel) throws Exception {
|
||||
SwingUtilities.invokeAndWait(topLevel::doClick);
|
||||
Thread.sleep(TOP_MENU_CLICK_DELAY);
|
||||
|
||||
|
||||
String imageName = "top_level_" + cleanName(topLevel.getText()) + "." + PNG;
|
||||
|
||||
TopLevelMenuModel topLevelMenuModel = new TopLevelMenuModel(topLevel.getText(), imageName);
|
||||
ScreenGenerator.contentModel.getTopLevelMenus().add(topLevelMenuModel);
|
||||
|
||||
ImageIO.write(
|
||||
UiUtils.getScreenShot(frame),
|
||||
PNG,
|
||||
new File(DESTINATION + imageName));
|
||||
|
||||
List<JMenuItem> menuItems = TunerStudioIntegration.findMenuItems(frame);
|
||||
|
||||
for (JMenuItem menuItem : menuItems) {
|
||||
handleMenuItem(menuItem, topLevelMenuModel);
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleMenuItem(JMenuItem menuItem, TopLevelMenuModel topLevelMenuModel) throws InterruptedException, InvocationTargetException {
|
||||
SwingUtilities.invokeAndWait(menuItem::doClick);
|
||||
|
||||
Thread.sleep(MENU_CLICK_DELAY);
|
||||
|
||||
AtomicReference<JDialog> ref = new AtomicReference<>();
|
||||
SwingUtilities.invokeAndWait(() -> ref.set(TunerStudioIntegration.findDynamicDialog()));
|
||||
// let's give it time to appear on the screen
|
||||
Thread.sleep(MENU_CLICK_DELAY);
|
||||
JDialog dialog = ref.get();
|
||||
if (dialog == null) {
|
||||
System.out.println("Not found for " + menuItem);
|
||||
return;
|
||||
}
|
||||
|
||||
String dialogTitle = dialog.getTitle();
|
||||
|
||||
String imageName = "dialog_" + cleanName(dialogTitle) + "." + PNG;
|
||||
DialogModel dialogModel = new DialogModel(dialogTitle, imageName);
|
||||
topLevelMenuModel.getDialogs().add(dialogModel);
|
||||
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
try {
|
||||
findSlices(dialog, dialogModel);
|
||||
|
||||
if (dialog == null) {
|
||||
// this happens for example for disabled menu items
|
||||
return;
|
||||
}
|
||||
|
||||
// Robot robot = new Robot();
|
||||
// Rectangle captureRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
|
||||
// BufferedImage screenFullImage = robot.createScreenCapture(captureRect);
|
||||
// ImageIO.write(screenFullImage, PNG, new File(DESTINATION + "full_" + d.getTitle() + ".png"));
|
||||
|
||||
BufferedImage dialogScreenShot = UiUtils.getScreenShot(dialog);
|
||||
ImageIO.write(
|
||||
dialogScreenShot,
|
||||
PNG,
|
||||
new File(DESTINATION + imageName));
|
||||
dialog.setVisible(false);
|
||||
dialog.dispose();
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void saveSlices(String dialogTitle, Map<Integer, String> yCoordinates, BufferedImage dialogScreenShot, DialogModel dialogModel) {
|
||||
System.out.println("Label Y coordinates: " + yCoordinates);
|
||||
yCoordinates.put(0, "top");
|
||||
yCoordinates.put(dialogScreenShot.getHeight(), "bottom");
|
||||
|
||||
List<Integer> sorted = new ArrayList<>(yCoordinates.keySet());
|
||||
|
||||
for (int i = 0; i < sorted.size() - 1; i++) {
|
||||
int fromY = sorted.get(i);
|
||||
int toY = sorted.get(i + 1);
|
||||
|
||||
String sectionNameWithSpecialCharacters = yCoordinates.get(sorted.get(i));
|
||||
String sectionName = cleanName(sectionNameWithSpecialCharacters);
|
||||
|
||||
BufferedImage slice;
|
||||
try {
|
||||
slice = dialogScreenShot.getSubimage(0, fromY, dialogScreenShot.getWidth(), toY - fromY);
|
||||
} catch (RasterFormatException e) {
|
||||
System.out.println("Dialog does not fit screen? " + sectionNameWithSpecialCharacters);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (slice == null) {
|
||||
System.out.println("Weird");
|
||||
continue;
|
||||
}
|
||||
String fileName = cleanName(dialogTitle) + "_slice_" + fromY + "_" + sectionName + "." + PNG;
|
||||
|
||||
com.opensr5.ini.DialogModel.Field f = byCleanUiName.get(sectionName);
|
||||
if (f == null)
|
||||
continue;
|
||||
|
||||
String fieldName = f.getKey();
|
||||
String tooltip = iniFileModel.tooltips.get(fieldName);
|
||||
|
||||
dialogModel.fields.add(new FieldModel(sectionNameWithSpecialCharacters, fieldName, fileName, tooltip));
|
||||
|
||||
File output = new File(DESTINATION + fileName);
|
||||
if (output == null) {
|
||||
System.out.println(sectionName + " in " + fileName + " was not a success");
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
ImageIO.write(slice, PNG, output);
|
||||
} catch (Exception e) {
|
||||
System.out.println(sectionName + " in " + fileName + " was not a success?");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void findSlices(JDialog dialog, DialogModel dialogModel) {
|
||||
UiUtils.visitComponents(dialog, "Dynamic dialog", new Callback() {
|
||||
@Override
|
||||
public void onComponent(Component parent, Component component) {
|
||||
if (component instanceof JPanel) {
|
||||
JPanel panel = (JPanel) component;
|
||||
handleBox(dialog.getTitle(), panel, dialogModel);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void handleBox(String dialogTitle, JPanel panel, DialogModel dialogModel) {
|
||||
if (panel.getLayout() instanceof BoxLayout) {
|
||||
BoxLayout layout = (BoxLayout) panel.getLayout();
|
||||
if (layout.getAxis() == BoxLayout.X_AXIS)
|
||||
return;
|
||||
|
||||
BufferedImage panelImage = UiUtils.getScreenShot(panel);
|
||||
|
||||
Map<Integer, String> yCoordinates = new TreeMap<>();
|
||||
int relativeY = panel.getLocationOnScreen().y;
|
||||
|
||||
UiUtils.visitComponents(panel, "Looking inside the box", new Callback() {
|
||||
@Override
|
||||
public void onComponent(Component parent, Component component) {
|
||||
if (component instanceof JLabel) {
|
||||
JLabel label = (JLabel) component;
|
||||
if (!label.isVisible() || label.getSize().width == 0)
|
||||
return;
|
||||
String labelText = label.getText();
|
||||
if (labelText.length() > 0) {
|
||||
System.out.println("Looking at " + label);
|
||||
try {
|
||||
yCoordinates.put(label.getLocationOnScreen().y - relativeY, labelText);
|
||||
} catch (IllegalComponentStateException e) {
|
||||
System.out.printf("Did not go well for " + label);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
saveSlices(dialogTitle, yCoordinates, panelImage, dialogModel);
|
||||
}
|
||||
}
|
||||
|
||||
private static String cleanName(String title) {
|
||||
title = title.replace(' ', '_');
|
||||
title = title.replace(")", "");
|
||||
title = title.replace("%", "");
|
||||
title = title.replace(">", "");
|
||||
title = title.replace("<", "");
|
||||
title = title.replace("?", "");
|
||||
title = title.replace("(", "");
|
||||
title = title.replace('/', '_');
|
||||
title = title.replace('\\', '_');
|
||||
title = title.replace(" ", " ");
|
||||
return title;
|
||||
}
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
package com.rusefi;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TunerStudioIntegration {
|
||||
/**
|
||||
* these magic class names are specific to TS build
|
||||
* At the moment we use 3.1.02 names
|
||||
* http://www.tunerstudio.com/downloads2/TunerStudioMS_Setup_v3.1.02.exe
|
||||
*/
|
||||
private static final String VERSION = "3.1.02";
|
||||
private static final String TS_DIALOG = "com.efiAnalytics.ui.dg";
|
||||
private static final String TS_POPUP_MAIN_MENU = "aH.gc";
|
||||
private static final String TUNER_STUDIO = "TunerStudio";
|
||||
|
||||
static Frame findMainFrame() throws InterruptedException {
|
||||
while (true) {
|
||||
Frame[] all = JFrame.getFrames();
|
||||
|
||||
for (Frame frame : all) {
|
||||
String frameTitle = frame.getTitle();
|
||||
System.out.println("I see " + frameTitle);
|
||||
if (frameTitle.contains(TUNER_STUDIO)) {
|
||||
if (!frameTitle.contains(VERSION)) {
|
||||
System.out.println("Title does not look right " + frameTitle + " not " + VERSION);
|
||||
System.exit(-1);
|
||||
}
|
||||
return frame;
|
||||
}
|
||||
}
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
static boolean isTopLevelMenuButton(Component component) {
|
||||
return component instanceof bi.b;
|
||||
}
|
||||
|
||||
static java.util.List<JMenuItem> findMenuItems(Frame frame) {
|
||||
List<JMenuItem> menuItems = new ArrayList<>();
|
||||
UiUtils.visitComponents(frame, "Just clicked ", (parent, component) -> {
|
||||
if (component instanceof JMenuItem && component.getClass().getName().endsWith(TS_POPUP_MAIN_MENU)) {
|
||||
JMenuItem menuItem = (JMenuItem) component;
|
||||
System.out.println("Menu item " + menuItem.getText());
|
||||
menuItems.add(menuItem);
|
||||
}
|
||||
});
|
||||
return menuItems;
|
||||
}
|
||||
|
||||
static JDialog findDynamicDialog() {
|
||||
for (Window d : Dialog.getWindows()) {
|
||||
if (d.getClass().getName().equals(TS_DIALOG) && d.isVisible()) {
|
||||
return (JDialog) d;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
package com.rusefi;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class UiUtils {
|
||||
public static void visitComponents(Component cmp, String prefix, Callback callback) {
|
||||
visitComponents(cmp, null, prefix, callback);
|
||||
}
|
||||
|
||||
public static void visitComponents(Component component, Component parent, String prefix, Callback callback) {
|
||||
if (component == null)
|
||||
throw new NullPointerException("component");
|
||||
if (component instanceof AbstractButton) {
|
||||
AbstractButton ab = (AbstractButton) component;
|
||||
System.out.println("[button " + ab.getText() + "]");
|
||||
} else if (component instanceof JLabel) {
|
||||
JLabel ab = (JLabel) component;
|
||||
System.out.println("[label " + ab.getText() + "]");
|
||||
} else if (component instanceof JComboBox) {
|
||||
JComboBox ab = (JComboBox) component;
|
||||
System.out.println("[combo " + ab.getSelectedItem() + "]");
|
||||
} else if (component instanceof JPanel) {
|
||||
JPanel p = (JPanel) component;
|
||||
System.out.println("[panel " + p.getLayout() + "] children=" + p.getComponents().length);
|
||||
System.out.println("[panel " + p.getLayout() + "] " + p.getLocation() + " size = " + p.getSize());
|
||||
}
|
||||
|
||||
System.out.println(prefix + " I see " + component.getClass());
|
||||
callback.onComponent(parent, component);
|
||||
Container container = (Container) component;
|
||||
if (container == null) {
|
||||
// Not a container, return
|
||||
return;
|
||||
}
|
||||
// Go visit and add all children
|
||||
for (Component subComponent : container.getComponents()) {
|
||||
if (subComponent == null)
|
||||
continue;
|
||||
visitComponents(subComponent, component, prefix + " " + subComponent.getClass().getSimpleName(), callback);
|
||||
}
|
||||
}
|
||||
|
||||
public static BufferedImage getScreenShot(Component component) {
|
||||
BufferedImage image = new BufferedImage(
|
||||
component.getWidth(),
|
||||
component.getHeight(),
|
||||
BufferedImage.TYPE_INT_RGB
|
||||
);
|
||||
// call the Component's paint method, using
|
||||
// the Graphics object of the image.
|
||||
component.paint(image.getGraphics()); // alternately use .printAll(..)
|
||||
return image;
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
package com.rusefi.xml;
|
||||
|
||||
import com.rusefi.ScreenGenerator;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@XmlRootElement
|
||||
public class ContentModel {
|
||||
private List<TopLevelMenuModel> menus = new ArrayList<>();
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "keyword")
|
||||
public List<TopLevelMenuModel> getTopLevelMenus() {
|
||||
return menus;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getVersion() {
|
||||
return "Generated by " + ScreenGenerator.class + " on " + new Date();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ContentModel{" +
|
||||
"menus=" + menus +
|
||||
'}';
|
||||
}
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
package com.rusefi.xml;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DialogModel {
|
||||
private String dialogTitle;
|
||||
private String imageName;
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "field")
|
||||
public List<FieldModel> fields = new ArrayList<>();
|
||||
|
||||
public DialogModel() {
|
||||
}
|
||||
|
||||
public DialogModel(String dialogTitle, String imageName) {
|
||||
this.dialogTitle = dialogTitle;
|
||||
this.imageName = imageName;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getImageName() {
|
||||
return imageName;
|
||||
}
|
||||
|
||||
public void setImageName(String imageName) {
|
||||
this.imageName = imageName;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getDialogTitle() {
|
||||
return dialogTitle;
|
||||
}
|
||||
|
||||
public void setDialogTitle(String dialogTitle) {
|
||||
this.dialogTitle = dialogTitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DialogModel{" +
|
||||
"dialogTitle='" + dialogTitle + '\'' +
|
||||
", imageName='" + imageName + '\'' +
|
||||
", fields=" + fields +
|
||||
'}';
|
||||
}
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
package com.rusefi.xml;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
public class FieldModel {
|
||||
|
||||
private String uiName;
|
||||
private String fieldName;
|
||||
private String imageName;
|
||||
private String tooltip;
|
||||
|
||||
public FieldModel() {
|
||||
}
|
||||
|
||||
public FieldModel(String uiName, String fieldName, String fileName, String tooltip) {
|
||||
this.uiName = uiName;
|
||||
this.fieldName = fieldName;
|
||||
this.imageName = fileName;
|
||||
this.tooltip = tooltip == null ? "" : tooltip;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getUiName() {
|
||||
return uiName;
|
||||
}
|
||||
|
||||
public void setUiName(String uiName) {
|
||||
this.uiName = uiName;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getFieldName() {
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
public void setFieldName(String fieldName) {
|
||||
this.fieldName = fieldName;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getImageName() {
|
||||
return imageName;
|
||||
}
|
||||
|
||||
public void setImageName(String imageName) {
|
||||
this.imageName = imageName;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getTooltip() {
|
||||
return tooltip;
|
||||
}
|
||||
|
||||
public void setTooltip(String tooltip) {
|
||||
this.tooltip = tooltip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "FieldModel{" +
|
||||
"uiName='" + uiName + '\'' +
|
||||
", fieldName='" + fieldName + '\'' +
|
||||
", imageName='" + imageName + '\'' +
|
||||
", tooltip='" + tooltip + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
package com.rusefi.xml;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TopLevelMenuModel {
|
||||
private String title;
|
||||
private String imageName;
|
||||
|
||||
@XmlElementWrapper
|
||||
@XmlElement(name = "dialog")
|
||||
private List<DialogModel> dialogs = new ArrayList<>();
|
||||
|
||||
public TopLevelMenuModel() {
|
||||
}
|
||||
|
||||
public TopLevelMenuModel(String title, String imageName) {
|
||||
this.title = title;
|
||||
this.imageName = imageName;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
public String getImageName() {
|
||||
return imageName;
|
||||
}
|
||||
|
||||
public void setImageName(String imageName) {
|
||||
this.imageName = imageName;
|
||||
}
|
||||
|
||||
public List<DialogModel> getDialogs() {
|
||||
return dialogs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TopLevelMenuModel{" +
|
||||
"title='" + title + '\'' +
|
||||
", imageName='" + imageName + '\'' +
|
||||
", dialogs=" + dialogs +
|
||||
'}';
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue