This commit DOESN'T WORK. Use the next one or the previous one. This is an intermediate commit done merely to facilitate the moving of files between machines.
This commit is contained in:
parent
c5d6085772
commit
fedd74750f
42 changed files with 2675 additions and 265 deletions
0
.metadata/.lock
Normal file
0
.metadata/.lock
Normal file
280
.metadata/.log
Normal file
280
.metadata/.log
Normal file
|
@ -0,0 +1,280 @@
|
||||||
|
!SESSION 2013-11-24 15:24:42.338 -----------------------------------------------
|
||||||
|
eclipse.buildId=M20130204-1200
|
||||||
|
java.version=1.6.0_24
|
||||||
|
java.vendor=Sun Microsystems Inc.
|
||||||
|
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_GB
|
||||||
|
Framework arguments: -product org.eclipse.epp.package.cpp.product
|
||||||
|
Command-line arguments: -os linux -ws gtk -arch x86 -product org.eclipse.epp.package.cpp.product
|
||||||
|
|
||||||
|
!ENTRY org.eclipse.jface 4 2 2013-11-24 15:25:45.840
|
||||||
|
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
|
||||||
|
!STACK 0
|
||||||
|
java.lang.NullPointerException: element not initialized.
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.getElement(AbstractPage.java:1272)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.getProject(AbstractPage.java:409)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.populateConfigurations(AbstractPage.java:745)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.setVisible(AbstractPage.java:829)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1324)
|
||||||
|
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:675)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:709)
|
||||||
|
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:705)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:888)
|
||||||
|
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
|
||||||
|
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
|
||||||
|
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:886)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1726)
|
||||||
|
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1139)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1055)
|
||||||
|
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:730)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:376)
|
||||||
|
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:372)
|
||||||
|
at org.eclipse.jface.window.Window.create(Window.java:431)
|
||||||
|
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
|
||||||
|
at org.eclipse.ui.internal.dialogs.PropertyDialog.createDialogOn(PropertyDialog.java:83)
|
||||||
|
at org.eclipse.ui.dialogs.PropertyDialogAction.createDialog(PropertyDialogAction.java:175)
|
||||||
|
at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
|
||||||
|
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
|
||||||
|
at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)
|
||||||
|
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:76)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:616)
|
||||||
|
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
|
||||||
|
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:231)
|
||||||
|
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:212)
|
||||||
|
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:131)
|
||||||
|
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:171)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:831)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:724)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:708)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:647)
|
||||||
|
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
|
||||||
|
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
|
||||||
|
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
|
||||||
|
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
|
||||||
|
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
|
||||||
|
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
|
||||||
|
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
|
||||||
|
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:616)
|
||||||
|
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
|
||||||
|
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
|
||||||
|
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
|
||||||
|
|
||||||
|
!ENTRY org.eclipse.jface 4 2 2013-11-24 15:26:07.835
|
||||||
|
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
|
||||||
|
!STACK 0
|
||||||
|
java.lang.NullPointerException: element not initialized.
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.getElement(AbstractPage.java:1272)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.getProject(AbstractPage.java:409)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.populateConfigurations(AbstractPage.java:745)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.setVisible(AbstractPage.java:829)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1324)
|
||||||
|
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:675)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:709)
|
||||||
|
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:705)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:888)
|
||||||
|
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
|
||||||
|
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
|
||||||
|
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:886)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1726)
|
||||||
|
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1139)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1055)
|
||||||
|
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:730)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:376)
|
||||||
|
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:372)
|
||||||
|
at org.eclipse.jface.window.Window.create(Window.java:431)
|
||||||
|
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
|
||||||
|
at org.eclipse.ui.internal.dialogs.PropertyDialog.createDialogOn(PropertyDialog.java:83)
|
||||||
|
at org.eclipse.ui.dialogs.PropertyDialogAction.createDialog(PropertyDialogAction.java:175)
|
||||||
|
at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
|
||||||
|
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
|
||||||
|
at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)
|
||||||
|
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:76)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:616)
|
||||||
|
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
|
||||||
|
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:231)
|
||||||
|
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:212)
|
||||||
|
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:131)
|
||||||
|
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:171)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:831)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:724)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:708)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:647)
|
||||||
|
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
|
||||||
|
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
|
||||||
|
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
|
||||||
|
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
|
||||||
|
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
|
||||||
|
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
|
||||||
|
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
|
||||||
|
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:616)
|
||||||
|
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
|
||||||
|
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
|
||||||
|
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
|
||||||
|
|
||||||
|
!ENTRY org.eclipse.ui 4 0 2013-11-24 15:26:32.753
|
||||||
|
!MESSAGE Unhandled event loop exception
|
||||||
|
!STACK 0
|
||||||
|
java.lang.NullPointerException
|
||||||
|
at it.baeyens.arduino.tools.ArduinoHelpers.searchFiles(ArduinoHelpers.java:324)
|
||||||
|
at it.baeyens.arduino.tools.ArduinoHelpers.getBoardsFiles(ArduinoHelpers.java:805)
|
||||||
|
at it.baeyens.arduino.ui.ArduinoSelectionPage.draw(ArduinoSelectionPage.java:170)
|
||||||
|
at it.baeyens.arduino.ui.ArduinoSettingsPage.createControl(ArduinoSettingsPage.java:46)
|
||||||
|
at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:174)
|
||||||
|
at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:736)
|
||||||
|
at org.eclipse.jface.wizard.WizardDialog.setWizard(WizardDialog.java:1182)
|
||||||
|
at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1241)
|
||||||
|
at org.eclipse.jface.wizard.WizardDialog.access$4(WizardDialog.java:1238)
|
||||||
|
at org.eclipse.jface.wizard.WizardDialog$8.run(WizardDialog.java:1227)
|
||||||
|
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
|
||||||
|
at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1225)
|
||||||
|
at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:915)
|
||||||
|
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:428)
|
||||||
|
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
|
||||||
|
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
|
||||||
|
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
|
||||||
|
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
|
||||||
|
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
|
||||||
|
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
|
||||||
|
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
|
||||||
|
at org.eclipse.jface.window.Window.open(Window.java:801)
|
||||||
|
at org.eclipse.ui.actions.NewProjectAction.run(NewProjectAction.java:117)
|
||||||
|
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
|
||||||
|
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
|
||||||
|
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
|
||||||
|
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
|
||||||
|
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
|
||||||
|
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
|
||||||
|
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
|
||||||
|
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
|
||||||
|
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
|
||||||
|
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
|
||||||
|
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
|
||||||
|
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:616)
|
||||||
|
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
|
||||||
|
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
|
||||||
|
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
|
||||||
|
|
||||||
|
!ENTRY org.eclipse.jface 4 2 2013-11-24 15:27:00.782
|
||||||
|
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
|
||||||
|
!STACK 0
|
||||||
|
java.lang.NullPointerException: element not initialized.
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.getElement(AbstractPage.java:1272)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.getProject(AbstractPage.java:409)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.populateConfigurations(AbstractPage.java:745)
|
||||||
|
at org.eclipse.cdt.ui.newui.AbstractPage.setVisible(AbstractPage.java:829)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1324)
|
||||||
|
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:675)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:709)
|
||||||
|
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:705)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:888)
|
||||||
|
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
|
||||||
|
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
|
||||||
|
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:886)
|
||||||
|
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1726)
|
||||||
|
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1139)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1055)
|
||||||
|
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:730)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:376)
|
||||||
|
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
|
||||||
|
at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:372)
|
||||||
|
at org.eclipse.jface.window.Window.create(Window.java:431)
|
||||||
|
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
|
||||||
|
at org.eclipse.ui.internal.dialogs.PropertyDialog.createDialogOn(PropertyDialog.java:83)
|
||||||
|
at org.eclipse.ui.dialogs.PropertyDialogAction.createDialog(PropertyDialogAction.java:175)
|
||||||
|
at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
|
||||||
|
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
|
||||||
|
at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)
|
||||||
|
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:76)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:616)
|
||||||
|
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
|
||||||
|
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:231)
|
||||||
|
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:212)
|
||||||
|
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:131)
|
||||||
|
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:171)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:831)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:724)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:708)
|
||||||
|
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:647)
|
||||||
|
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
|
||||||
|
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
|
||||||
|
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
|
||||||
|
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
|
||||||
|
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
|
||||||
|
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
|
||||||
|
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
|
||||||
|
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
|
||||||
|
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:616)
|
||||||
|
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
|
||||||
|
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
|
||||||
|
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
|
BIN
.metadata/.mylyn/repositories.xml.zip
Normal file
BIN
.metadata/.mylyn/repositories.xml.zip
Normal file
Binary file not shown.
BIN
.metadata/.mylyn/tasks.xml.zip
Normal file
BIN
.metadata/.mylyn/tasks.xml.zip
Normal file
Binary file not shown.
1
.metadata/.plugins/org.eclipse.cdt.core/.log
Normal file
1
.metadata/.plugins/org.eclipse.cdt.core/.log
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*** SESSION Nov 24, 2013 15:25:18.96 -------------------------------------------
|
1
.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
Normal file
1
.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
1
.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
Normal file
1
.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="org.eclipse.cdt.internal.ui.MakeView">
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1 @@
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
|
BIN
.metadata/.plugins/org.eclipse.core.resources/.root/1.tree
Normal file
BIN
.metadata/.plugins/org.eclipse.core.resources/.root/1.tree
Normal file
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,5 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
spelling_locale=en_GB
|
||||||
|
spelling_locale_initialized=true
|
||||||
|
useAnnotationsPrefPage=true
|
||||||
|
useQuickDiffPrefPage=true
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
version=1
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
mylyn.attention.migrated=true
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.rse.systemtype.local.systemType.defaultUserId=ensab
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.rse.preferences.order.connections=reprap.Local
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
pref_first_startup=false
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.team.ui.first_time=false
|
|
@ -0,0 +1,5 @@
|
||||||
|
PROBLEMS_FILTERS_MIGRATE=true
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
platformState=1382915063068
|
||||||
|
quickStart=false
|
||||||
|
tipsAndTricks=true
|
|
@ -0,0 +1,2 @@
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
showIntro=false
|
|
@ -0,0 +1,2 @@
|
||||||
|
ENABLED_DECORATORS=org.eclipse.cdt.ui.indexedFiles\:false,org.eclipse.cdt.managedbuilder.ui.excludedFile\:true,org.eclipse.cdt.managedbuilder.ui.includeFolder\:true,org.eclipse.cdt.internal.ui.CustomBuildSettingsDecorator\:true,org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator\:true,org.eclipse.linuxtools.tmf.ui.trace_folder.decorator\:true,org.eclipse.linuxtools.tmf.ui.experiment_folder.decorator\:true,org.eclipse.linuxtools.tmf.ui.linked_trace.decorator\:true,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.rse.core.virtualobject.decorator\:true,org.eclipse.rse.core.binary.executable.decorator\:true,org.eclipse.rse.core.script.executable.decorator\:true,org.eclipse.rse.core.java.executable.decorator\:true,org.eclipse.rse.core.library.decorator\:true,org.eclipse.rse.core.link.decorator\:true,org.eclipse.rse.subsystems.error.decorator\:true,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.VirtualResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,org.eclipse.ui.ResourceFilterDecorator\:false,
|
||||||
|
eclipse.preferences.version=1
|
1936
.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
Normal file
1936
.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
Normal file
File diff suppressed because it is too large
Load diff
0
.metadata/.plugins/org.eclipse.rse.core/.log
Normal file
0
.metadata/.plugins/org.eclipse.rse.core/.log
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
# RSE DOM Node
|
||||||
|
00-name=reprap\:local.files
|
||||||
|
01-type=FilterPool
|
||||||
|
03-attr.default=true
|
||||||
|
03-attr.deletable=true
|
||||||
|
03-attr.id=local.files
|
||||||
|
03-attr.nonRenamable=false
|
||||||
|
03-attr.owningParentName=null
|
||||||
|
03-attr.release=200
|
||||||
|
03-attr.singleFilterStringOnly=false
|
||||||
|
03-attr.singleFilterStringOnlyESet=false
|
||||||
|
03-attr.stringsCaseSensitive=true
|
||||||
|
03-attr.supportsDuplicateFilterStrings=false
|
||||||
|
03-attr.supportsNestedFilters=true
|
||||||
|
03-attr.type=default
|
||||||
|
06-child.00000.00-name=My Home
|
||||||
|
06-child.00000.01-type=Filter
|
||||||
|
06-child.00000.03-attr.default=false
|
||||||
|
06-child.00000.03-attr.filterType=default
|
||||||
|
06-child.00000.03-attr.id=My Home
|
||||||
|
06-child.00000.03-attr.nonChangable=false
|
||||||
|
06-child.00000.03-attr.nonDeletable=false
|
||||||
|
06-child.00000.03-attr.nonRenamable=false
|
||||||
|
06-child.00000.03-attr.promptable=false
|
||||||
|
06-child.00000.03-attr.relativeOrder=0
|
||||||
|
06-child.00000.03-attr.release=200
|
||||||
|
06-child.00000.03-attr.singleFilterStringOnly=false
|
||||||
|
06-child.00000.03-attr.stringsCaseSensitive=true
|
||||||
|
06-child.00000.03-attr.stringsNonChangable=false
|
||||||
|
06-child.00000.03-attr.supportsDuplicateFilterStrings=false
|
||||||
|
06-child.00000.03-attr.supportsNestedFilters=true
|
||||||
|
06-child.00000.06-child.00000.00-name=/home/ensab/*
|
||||||
|
06-child.00000.06-child.00000.01-type=FilterString
|
||||||
|
06-child.00000.06-child.00000.03-attr.default=false
|
||||||
|
06-child.00000.06-child.00000.03-attr.string=/home/ensab/*
|
||||||
|
06-child.00000.06-child.00000.03-attr.type=default
|
||||||
|
06-child.00001.00-name=Root
|
||||||
|
06-child.00001.01-type=Filter
|
||||||
|
06-child.00001.03-attr.default=false
|
||||||
|
06-child.00001.03-attr.filterType=default
|
||||||
|
06-child.00001.03-attr.id=Root
|
||||||
|
06-child.00001.03-attr.nonChangable=false
|
||||||
|
06-child.00001.03-attr.nonDeletable=false
|
||||||
|
06-child.00001.03-attr.nonRenamable=false
|
||||||
|
06-child.00001.03-attr.promptable=false
|
||||||
|
06-child.00001.03-attr.relativeOrder=0
|
||||||
|
06-child.00001.03-attr.release=200
|
||||||
|
06-child.00001.03-attr.singleFilterStringOnly=false
|
||||||
|
06-child.00001.03-attr.stringsCaseSensitive=true
|
||||||
|
06-child.00001.03-attr.stringsNonChangable=false
|
||||||
|
06-child.00001.03-attr.supportsDuplicateFilterStrings=false
|
||||||
|
06-child.00001.03-attr.supportsNestedFilters=true
|
||||||
|
06-child.00001.06-child.00000.00-name=/*
|
||||||
|
06-child.00001.06-child.00000.01-type=FilterString
|
||||||
|
06-child.00001.06-child.00000.03-attr.default=false
|
||||||
|
06-child.00001.06-child.00000.03-attr.string=/*
|
||||||
|
06-child.00001.06-child.00000.03-attr.type=default
|
|
@ -0,0 +1,25 @@
|
||||||
|
# RSE DOM Node
|
||||||
|
00-name=Local
|
||||||
|
01-type=Host
|
||||||
|
03-attr.description=
|
||||||
|
03-attr.hostname=LOCALHOST
|
||||||
|
03-attr.offline=false
|
||||||
|
03-attr.promptable=false
|
||||||
|
03-attr.systemType=org.eclipse.rse.systemtype.local
|
||||||
|
03-attr.type=Local
|
||||||
|
06-child.00000.00-name=Local Connector Service
|
||||||
|
06-child.00000.01-type=ConnectorService
|
||||||
|
06-child.00000.03-attr.group=Local Connector Service
|
||||||
|
06-child.00000.03-attr.port=0
|
||||||
|
06-child.00000.03-attr.useSSL=false
|
||||||
|
06-child.00000.06-child.00000.00-name=Local Files
|
||||||
|
06-child.00000.06-child.00000.01-type=SubSystem
|
||||||
|
06-child.00000.06-child.00000.03-attr.hidden=false
|
||||||
|
06-child.00000.06-child.00000.03-attr.type=local.files
|
||||||
|
06-child.00000.06-child.00000.06-child.00000.00-name=reprap___reprap\:local.files
|
||||||
|
06-child.00000.06-child.00000.06-child.00000.01-type=FilterPoolReference
|
||||||
|
06-child.00000.06-child.00000.06-child.00000.03-attr.refID=local.files
|
||||||
|
06-child.00000.06-child.00001.00-name=Local Shells
|
||||||
|
06-child.00000.06-child.00001.01-type=SubSystem
|
||||||
|
06-child.00000.06-child.00001.03-attr.hidden=false
|
||||||
|
06-child.00000.06-child.00001.03-attr.type=local.shells
|
|
@ -0,0 +1,7 @@
|
||||||
|
# RSE DOM Node
|
||||||
|
00-name=reprap
|
||||||
|
01-type=Profile
|
||||||
|
03-attr.defaultPrivate=true
|
||||||
|
03-attr.isActive=true
|
||||||
|
05-ref.00000=FP.local.files_0
|
||||||
|
05-ref.00001=H.local_16
|
0
.metadata/.plugins/org.eclipse.rse.ui/.log
Normal file
0
.metadata/.plugins/org.eclipse.rse.ui/.log
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="NewWizardAction">
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="org.eclipse.ui.internal.QuickAccess">
|
||||||
|
<item value="640" key="dialogWidth"/>
|
||||||
|
<item value="480" key="dialogHeight"/>
|
||||||
|
<list key="orderedProviders">
|
||||||
|
</list>
|
||||||
|
<list key="textArray">
|
||||||
|
</list>
|
||||||
|
<list key="orderedElements">
|
||||||
|
</list>
|
||||||
|
<list key="textEntries">
|
||||||
|
</list>
|
||||||
|
</section>
|
||||||
|
</section>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<workingSetManager>
|
||||||
|
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1385306720488_0" label="Window Working Set" name="Aggregate for window 1385306720487"/>
|
||||||
|
</workingSetManager>
|
1
.metadata/version.ini
Normal file
1
.metadata/version.ini
Normal file
|
@ -0,0 +1 @@
|
||||||
|
org.eclipse.core.runtime=1
|
|
@ -24,9 +24,9 @@ Licence: GPL
|
||||||
#define CONFIGURATION_H
|
#define CONFIGURATION_H
|
||||||
|
|
||||||
#define NAME "RepRapFirmware"
|
#define NAME "RepRapFirmware"
|
||||||
#define VERSION "0.58"
|
#define VERSION "0.59"
|
||||||
#define DATE "2014-02-08"
|
#define DATE "2014-02-19"
|
||||||
#define LAST_AUTHOR "dc42"
|
#define LAST_AUTHOR "reprappro"
|
||||||
|
|
||||||
// Other firmware that we might switch to be compatible with.
|
// Other firmware that we might switch to be compatible with.
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ enum Compatibility
|
||||||
#define STANDBY_INTERRUPT_RATE 2.0e-4 // Seconds
|
#define STANDBY_INTERRUPT_RATE 2.0e-4 // Seconds
|
||||||
|
|
||||||
#define NUMBER_OF_PROBE_POINTS 4
|
#define NUMBER_OF_PROBE_POINTS 4
|
||||||
#define Z_DIVE 5.0 // Height from which to probe the bed (mm)
|
#define Z_DIVE 8.0 // Height from which to probe the bed (mm)
|
||||||
|
|
||||||
#define SILLY_Z_VALUE -9999.0
|
#define SILLY_Z_VALUE -9999.0
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ void GCodes::Init()
|
||||||
axisIsHomed[X_AXIS] = axisIsHomed[Y_AXIS] = axisIsHomed[Z_AXIS] = false;
|
axisIsHomed[X_AXIS] = axisIsHomed[Y_AXIS] = axisIsHomed[Z_AXIS] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GCodes::doFilePrint(GCodeBuffer* gb)
|
void GCodes::DoFilePrint(GCodeBuffer* gb)
|
||||||
{
|
{
|
||||||
char b;
|
char b;
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ void GCodes::Spin()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
doFilePrint(fileGCode);
|
DoFilePrint(fileGCode);
|
||||||
|
|
||||||
platform->ClassReport("GCodes", longWait);
|
platform->ClassReport("GCodes", longWait);
|
||||||
}
|
}
|
||||||
|
@ -456,7 +456,7 @@ bool GCodes::DoFileCannedCycles(const char* fileName)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
doFilePrint(cannedCycleGCode);
|
DoFilePrint(cannedCycleGCode);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
225
GCodes.h
225
GCodes.h
|
@ -33,30 +33,30 @@ class GCodeBuffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GCodeBuffer(Platform* p, const char* id);
|
GCodeBuffer(Platform* p, const char* id);
|
||||||
void Init();
|
void Init(); // Set it up
|
||||||
bool Put(char c);
|
bool Put(char c); // Add a character to the end
|
||||||
bool Seen(char c);
|
bool Seen(char c); // Is a character present?
|
||||||
float GetFValue();
|
float GetFValue(); // Get a float after a key letter
|
||||||
int GetIValue();
|
int GetIValue(); // Get an integer after a key letter
|
||||||
long GetLValue();
|
long GetLValue(); // Get a long integer after a key letter
|
||||||
const char* GetUnprecedentedString();
|
const char* GetUnprecedentedString(); // Get a string with no preceeding key letter
|
||||||
const char* GetString();
|
const char* GetString(); // Get a string after a key letter
|
||||||
const char* Buffer();
|
const char* Buffer(); // All of the G Code itself
|
||||||
bool Finished() const;
|
bool Finished() const; // Has the G Code been executed?
|
||||||
void SetFinished(bool f);
|
void SetFinished(bool f); // Set the G Code executed (or not)
|
||||||
const char* WritingFileDirectory() const;
|
const char* WritingFileDirectory() const; // If we are writing the G Code to a file, where that file is
|
||||||
void SetWritingFileDirectory(const char* wfd);
|
void SetWritingFileDirectory(const char* wfd); // Set the directory for the file to write the GCode in
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int CheckSum();
|
int CheckSum(); // Compute the checksum (if any) at the end of the G Code
|
||||||
Platform* platform;
|
Platform* platform; // Pointer to the RepRap's controlling class
|
||||||
char gcodeBuffer[GCODE_LENGTH];
|
char gcodeBuffer[GCODE_LENGTH]; // The G Code
|
||||||
const char* identity;
|
const char* identity; // Where we are from (web, file, serial line etc)
|
||||||
int gcodePointer;
|
int gcodePointer; // Index in the buffer
|
||||||
int readPointer;
|
int readPointer; // Where in the buffer to read next
|
||||||
bool inComment;
|
bool inComment; // Are we after a ';' character?
|
||||||
bool finished;
|
bool finished; // Has the G Code been executed?
|
||||||
const char* writingFileDirectory;
|
const char* writingFileDirectory; // If the G Code is going into a file, where that is
|
||||||
};
|
};
|
||||||
|
|
||||||
//****************************************************************************************************
|
//****************************************************************************************************
|
||||||
|
@ -68,99 +68,102 @@ class GCodes
|
||||||
public:
|
public:
|
||||||
|
|
||||||
GCodes(Platform* p, Webserver* w);
|
GCodes(Platform* p, Webserver* w);
|
||||||
void Spin();
|
void Spin(); // Called in a tight loop to make this class work
|
||||||
void Init();
|
void Init(); // Set it up
|
||||||
void Exit();
|
void Exit(); // Shut it down
|
||||||
bool RunConfigurationGCodes();
|
bool RunConfigurationGCodes(); // Run the configuration G Code file on reboot
|
||||||
bool ReadMove(float* m, bool& ce);
|
bool ReadMove(float* m, bool& ce); // Called by the Move class to get a movement set by the last G Code
|
||||||
void QueueFileToPrint(const char* fileName);
|
void QueueFileToPrint(const char* fileName); // Open a file of G Codes to run
|
||||||
void DeleteFile(const char* fileName);
|
void DeleteFile(const char* fileName); // Does what it says
|
||||||
bool GetProbeCoordinates(int count, float& x, float& y, float& z);
|
bool GetProbeCoordinates(int count, float& x, float& y, float& z); // Get pre-recorded probe coordinates
|
||||||
char* GetCurrentCoordinates();
|
char* GetCurrentCoordinates(); // Get where we are as a string
|
||||||
bool PrintingAFile() const;
|
bool PrintingAFile() const; // Are we in the middle of printing a file?
|
||||||
void Diagnostics();
|
void Diagnostics(); // Send helpful information out
|
||||||
bool HaveIncomingData() const;
|
bool HaveIncomingData() const; // Is there something that we have to do?
|
||||||
bool GetAxisIsHomed(uint8_t axis) const { return axisIsHomed[axis]; }
|
//bool GetAxisIsHomed(uint8_t axis) const { return axisIsHomed[axis]; } // Not needed on voyage?
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void doFilePrint(GCodeBuffer* gb);
|
void DoFilePrint(GCodeBuffer* gb); // Get G Codes from a file and print them
|
||||||
bool AllMovesAreFinishedAndMoveBufferIsLoaded();
|
bool AllMovesAreFinishedAndMoveBufferIsLoaded(); // Wait for move queue to exhaust and the current position is loaded
|
||||||
bool DoCannedCycleMove(bool ce);
|
bool DoCannedCycleMove(bool ce); // Do a move from an internally programmed canned cycle
|
||||||
bool DoFileCannedCycles(const char* fileName);
|
bool DoFileCannedCycles(const char* fileName); // Run a GCode macro in a file
|
||||||
bool FileCannedCyclesReturn();
|
bool FileCannedCyclesReturn(); // End a macro
|
||||||
bool ActOnGcode(GCodeBuffer* gb);
|
bool ActOnGcode(GCodeBuffer* gb); // Do the G Code
|
||||||
bool SetUpMove(GCodeBuffer* gb);
|
bool SetUpMove(GCodeBuffer* gb); // Set up a new movement
|
||||||
bool DoDwell(GCodeBuffer *gb);
|
bool DoDwell(GCodeBuffer *gb); // Wait for a bit
|
||||||
bool DoHome(char *reply, bool& error);
|
bool DoHome(char *reply, bool& error); // Home some axes
|
||||||
bool DoSingleZProbeAtPoint();
|
bool DoSingleZProbeAtPoint(); // Probe at a given point
|
||||||
bool DoSingleZProbe();
|
bool DoSingleZProbe(); // Probe where we are
|
||||||
bool SetSingleZProbeAtAPosition(GCodeBuffer *gb);
|
bool SetSingleZProbeAtAPosition(GCodeBuffer *gb); // Probes at a given position - see the comment at the head of the function itself
|
||||||
bool DoMultipleZProbe();
|
bool DoMultipleZProbe(); // Probes a series of points and sets the bed equation
|
||||||
bool SetPrintZProbe(GCodeBuffer *gb, char *reply);
|
bool SetPrintZProbe(GCodeBuffer *gb, char *reply); // Either return the probe value, or set its threshold
|
||||||
bool SetOffsets(GCodeBuffer *gb);
|
bool SetOffsets(GCodeBuffer *gb); // Deal with a G10
|
||||||
bool SetPositions(GCodeBuffer *gb);
|
bool SetPositions(GCodeBuffer *gb); // Deal with a G92
|
||||||
void LoadMoveBufferFromGCode(GCodeBuffer *gb, bool doingG92, bool applyLimits);
|
void LoadMoveBufferFromGCode(GCodeBuffer *gb, // Set up a move for the Move class
|
||||||
bool NoHome() const;
|
bool doingG92, bool applyLimits);
|
||||||
bool Push();
|
bool NoHome() const; // Are we homing and not finished?
|
||||||
bool Pop();
|
bool Push(); // Push feedrate etc on the stack
|
||||||
bool DisableDrives();
|
bool Pop(); // Pop feedrate etc
|
||||||
bool StandbyHeaters();
|
bool DisableDrives(); // Turn the motors off
|
||||||
void SetEthernetAddress(GCodeBuffer *gb, int mCode);
|
bool StandbyHeaters(); // Set all heaters to standby temperatures
|
||||||
void HandleReply(bool error, bool fromLine, const char* reply, char gMOrT, int code, bool resend);
|
void SetEthernetAddress(GCodeBuffer *gb, int mCode); // Does what it says
|
||||||
void OpenFileToWrite(const char* directory, const char* fileName, GCodeBuffer *gb);
|
void HandleReply(bool error, bool fromLine, const char* reply, // If the GCode is from the serial interface, reply to it
|
||||||
void WriteGCodeToFile(GCodeBuffer *gb);
|
char gMOrT, int code, bool resend);
|
||||||
bool SendConfigToLine();
|
void OpenFileToWrite(const char* directory, // Start saving GCodes in a file
|
||||||
void WriteHTMLToFile(char b, GCodeBuffer *gb);
|
const char* fileName, GCodeBuffer *gb);
|
||||||
bool OffsetAxes(GCodeBuffer *gb);
|
void WriteGCodeToFile(GCodeBuffer *gb); // Write this GCode into a file
|
||||||
|
bool SendConfigToLine(); // Deal with M503
|
||||||
|
void WriteHTMLToFile(char b, GCodeBuffer *gb); // Save an HTML file (usually to upload a new web interface)
|
||||||
|
bool OffsetAxes(GCodeBuffer *gb); // Set offsets - deprecated, use G10
|
||||||
|
int8_t Heater(int8_t head) const; // Legacy G codes start heaters at 0, but we use 0 for the bed. This sorts that out.
|
||||||
|
|
||||||
int8_t Heater(int8_t head) const;
|
Platform* platform; // The RepRap machine
|
||||||
Platform* platform;
|
bool active; // Live and running?
|
||||||
bool active;
|
Webserver* webserver; // The webserver class
|
||||||
Webserver* webserver;
|
float dwellTime; // How long a pause for a dwell (seconds)?
|
||||||
float dwellTime;
|
bool dwellWaiting; // We are in a dwell
|
||||||
bool dwellWaiting;
|
GCodeBuffer* webGCode; // The sources...
|
||||||
GCodeBuffer* webGCode;
|
GCodeBuffer* fileGCode; // ...
|
||||||
GCodeBuffer* fileGCode;
|
GCodeBuffer* serialGCode; // ...
|
||||||
GCodeBuffer* serialGCode;
|
GCodeBuffer* cannedCycleGCode; // ... of G Codes
|
||||||
GCodeBuffer* cannedCycleGCode;
|
bool moveAvailable; // Have we seen a move G Code and set it up?
|
||||||
bool moveAvailable;
|
float moveBuffer[DRIVES+1]; // Move coordinates; last is feed rate
|
||||||
float moveBuffer[DRIVES+1]; // Last is feed rate
|
bool checkEndStops; // Should we check them on the next move?
|
||||||
bool checkEndStops;
|
bool drivesRelative; // Are movements relative - all except X, Y and Z
|
||||||
bool drivesRelative; // All except X, Y and Z
|
bool axesRelative; // Are movements relative - X, Y and Z
|
||||||
bool axesRelative; // X, Y and Z
|
bool drivesRelativeStack[STACK]; // For dealing with Push and Pop
|
||||||
bool drivesRelativeStack[STACK];
|
bool axesRelativeStack[STACK]; // For dealing with Push and Pop
|
||||||
bool axesRelativeStack[STACK];
|
float feedrateStack[STACK]; // For dealing with Push and Pop
|
||||||
float feedrateStack[STACK];
|
FileStore* fileStack[STACK]; // For dealing with Push and Pop
|
||||||
FileStore* fileStack[STACK];
|
int8_t stackPointer; // Push and Pop stack pointer
|
||||||
int8_t stackPointer;
|
char gCodeLetters[DRIVES + 1]; // 'X', 'Y' etc. Extra is for F
|
||||||
char gCodeLetters[DRIVES + 1]; // Extra is for F
|
float lastPos[DRIVES - AXES]; // Just needed for relative moves; i.e. not X, Y and Z
|
||||||
float lastPos[DRIVES - AXES]; // Just needed for relative moves.
|
float record[DRIVES+1]; // Temporary store for move positions
|
||||||
float record[DRIVES+1];
|
float moveToDo[DRIVES+1]; // Where to go set by G1 etc
|
||||||
float moveToDo[DRIVES+1];
|
bool activeDrive[DRIVES+1]; // Is this drive involved in a move?
|
||||||
bool activeDrive[DRIVES+1];
|
bool offSetSet; // Are any axis offsets non-zero?
|
||||||
bool offSetSet;
|
float distanceScale; // MM or inches
|
||||||
float distanceScale;
|
FileStore* fileBeingPrinted; // The file being printed at the moment (if any)
|
||||||
FileStore* fileBeingPrinted;
|
FileStore* fileToPrint; // A file to print in the future, or one that has been paused
|
||||||
FileStore* fileToPrint;
|
FileStore* fileBeingWritten; // A file to write G Codes (or sometimes HTML) in
|
||||||
FileStore* fileBeingWritten;
|
FileStore* configFile; // A file containing a macro
|
||||||
FileStore* configFile;
|
bool doingCannedCycleFile; // Are we executing a macro file?
|
||||||
bool doingCannedCycleFile;
|
char* eofString; // What's at the end of an HTML file?
|
||||||
char* eofString;
|
uint8_t eofStringCounter; // Check the...
|
||||||
uint8_t eofStringCounter;
|
uint8_t eofStringLength; // ... EoF string as we read.
|
||||||
uint8_t eofStringLength;
|
int8_t selectedHead; // Which extruder is in use
|
||||||
int8_t selectedHead;
|
bool homeX; // True to home the X axis this move
|
||||||
bool homeX;
|
bool homeY; // True to home the Y axis this move
|
||||||
bool homeY;
|
bool homeZ; // True to home the Z axis this move
|
||||||
bool homeZ;
|
//int8_t homeAxisMoveCount; // Not needed on voyage?
|
||||||
int8_t homeAxisMoveCount;
|
float gFeedRate; // Store for the current feedrate
|
||||||
float gFeedRate;
|
int probeCount; // Counts multiple probe points
|
||||||
int probeCount;
|
int8_t cannedCycleMoveCount; // Counts through internal (i.e. not macro) canned cycle moves
|
||||||
int8_t cannedCycleMoveCount;
|
bool cannedCycleMoveQueued; // True if a canned cycle move has been set
|
||||||
bool cannedCycleMoveQueued;
|
bool zProbesSet; // True if all Z probing is done and we can set the bed equation
|
||||||
bool zProbesSet;
|
float longWait; // Timer for things that happen occasionally (seconds)
|
||||||
float longWait;
|
bool axisIsHomed[3]; // These record which of the axes have been homed
|
||||||
bool axisIsHomed[3]; // these record which of the axes have been homed
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//*****************************************************************************************************
|
//*****************************************************************************************************
|
||||||
|
|
18
Heat.cpp
18
Heat.cpp
|
@ -61,6 +61,7 @@ void Heat::Spin()
|
||||||
void Heat::Diagnostics()
|
void Heat::Diagnostics()
|
||||||
{
|
{
|
||||||
platform->Message(HOST_MESSAGE, "Heat Diagnostics:\n");
|
platform->Message(HOST_MESSAGE, "Heat Diagnostics:\n");
|
||||||
|
// TODO - Put something useful in here
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Heat::AllHeatersAtSetTemperatures()
|
bool Heat::AllHeatersAtSetTemperatures()
|
||||||
|
@ -107,7 +108,7 @@ void PID::Init()
|
||||||
temp_dState = 0.0;
|
temp_dState = 0.0;
|
||||||
badTemperatureCount = 0;
|
badTemperatureCount = 0;
|
||||||
temperatureFault = false;
|
temperatureFault = false;
|
||||||
active = false;
|
active = false; // Default to standby temperature
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,8 +136,7 @@ void PID::Spin()
|
||||||
platform->Message(HOST_MESSAGE, ftoa(scratchString, temperature, 1));
|
platform->Message(HOST_MESSAGE, ftoa(scratchString, temperature, 1));
|
||||||
platform->Message(HOST_MESSAGE, "\n");
|
platform->Message(HOST_MESSAGE, "\n");
|
||||||
}
|
}
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
badTemperatureCount = 0;
|
badTemperatureCount = 0;
|
||||||
}
|
}
|
||||||
|
@ -175,6 +175,9 @@ void PID::Spin()
|
||||||
|
|
||||||
lastTemperature = temperature;
|
lastTemperature = temperature;
|
||||||
|
|
||||||
|
// Legacy - old RepRap PID parameters were set to give values in [0, 255] for 1 byte PWM control
|
||||||
|
// TODO - maybe change them to give [0.0, 1.0]?
|
||||||
|
|
||||||
if (result < 0.0) result = 0.0;
|
if (result < 0.0) result = 0.0;
|
||||||
else if (result > 255.0) result = 255.0;
|
else if (result > 255.0) result = 255.0;
|
||||||
result = result/255.0;
|
result = result/255.0;
|
||||||
|
@ -182,9 +185,8 @@ void PID::Spin()
|
||||||
if(!temperatureFault)
|
if(!temperatureFault)
|
||||||
platform->SetHeater(heater, result);
|
platform->SetHeater(heater, result);
|
||||||
|
|
||||||
#if 0 // debug
|
// char buffer[100];
|
||||||
char buffer[100];
|
// snprintf(buffer, ARRAY_SIZE(buffer), "Heat: e=%f, P=%f, I=%f, d=%f, r=%f\n", error, platform->PidKp(heater)*error, temp_iState, temp_dState, result);
|
||||||
snprintf(buffer, ARRAY_SIZE(buffer), "Heat: e=%f, P=%f, I=%f, d=%f, r=%f\n", error, platform->PidKp(heater)*error, temp_iState, temp_dState, result);
|
// platform->Message(HOST_MESSAGE, buffer);
|
||||||
platform->Message(HOST_MESSAGE, buffer);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
96
Heat.h
96
Heat.h
|
@ -21,66 +21,76 @@ Licence: GPL
|
||||||
#ifndef HEAT_H
|
#ifndef HEAT_H
|
||||||
#define HEAT_H
|
#define HEAT_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class implements a PID controller for the heaters
|
||||||
|
*/
|
||||||
|
|
||||||
class PID
|
class PID
|
||||||
{
|
{
|
||||||
public:
|
friend class Heat;
|
||||||
|
private:
|
||||||
|
//public:
|
||||||
|
|
||||||
PID(Platform* p, int8_t h);
|
PID(Platform* p, int8_t h);
|
||||||
void Init();
|
void Init(); // (Re)Set everything to start
|
||||||
void Spin();
|
void Spin(); // Called in a tight loop to keep things running
|
||||||
void SetActiveTemperature(const float& t);
|
void SetActiveTemperature(const float& t); // Set the temperature required when working (Celsius)
|
||||||
float GetActiveTemperature();
|
float GetActiveTemperature(); // Get the active temperature
|
||||||
void SetStandbyTemperature(const float& t);
|
void SetStandbyTemperature(const float& t); // Set the temperature to use when idle (celsius)
|
||||||
float GetStandbyTemperature();
|
float GetStandbyTemperature(); // Get the idle temperature
|
||||||
void Activate();
|
void Activate(); // Switch from idle to active
|
||||||
void Standby();
|
void Standby(); // Switch from active to idle
|
||||||
bool Active();
|
bool Active(); // Are we active?
|
||||||
void ResetFault();
|
void ResetFault(); // Reset a fault condition - only call this if you know what you are doing
|
||||||
float GetTemperature();
|
float GetTemperature(); // Get the current temperature
|
||||||
|
|
||||||
private:
|
// private:
|
||||||
|
|
||||||
Platform* platform;
|
Platform* platform; // The instance of the class that is the RepRap hardware
|
||||||
float activeTemperature;
|
float activeTemperature; // The required active temperature
|
||||||
float standbyTemperature;
|
float standbyTemperature; // The required standby temperature
|
||||||
float temperature;
|
float temperature; // The current temperature
|
||||||
float lastTemperature;
|
float lastTemperature; // The previous current temperature
|
||||||
float temp_iState;
|
float temp_iState; // The integral PID component
|
||||||
float temp_dState;
|
float temp_dState; // The derivative PID component
|
||||||
bool active;
|
bool active; // Are we active or standby?
|
||||||
int8_t heater;
|
int8_t heater; // The index of our heater
|
||||||
int8_t badTemperatureCount;
|
int8_t badTemperatureCount; // Count of sequential dud readings
|
||||||
bool temperatureFault;
|
bool temperatureFault; // Has our heater developed a fault?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The master class that controls all the heaters in the RepRap machine
|
||||||
|
*/
|
||||||
|
|
||||||
class Heat
|
class Heat
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Heat(Platform* p, GCodes* g);
|
Heat(Platform* p, GCodes* g);
|
||||||
void Spin();
|
void Spin(); // Called in a tight loop to keep everything going
|
||||||
void Init();
|
void Init(); // Set everything up
|
||||||
void Exit();
|
void Exit(); // Shut everything down
|
||||||
void SetActiveTemperature(int8_t heater, const float& t);
|
void SetActiveTemperature(int8_t heater, const float& t); // Set a heater's active temperature (celsius)
|
||||||
float GetActiveTemperature(int8_t heater);
|
float GetActiveTemperature(int8_t heater); // What is a heater's active temperature?
|
||||||
void SetStandbyTemperature(int8_t heater, const float& t);
|
void SetStandbyTemperature(int8_t heater, const float& t); // Set a heater's standby temperature (celsius)
|
||||||
float GetStandbyTemperature(int8_t heater);
|
float GetStandbyTemperature(int8_t heater); // What is a heater's standby temperature?
|
||||||
void Activate(int8_t heater);
|
void Activate(int8_t heater); // Turn on a heater
|
||||||
void Standby(int8_t heater);
|
void Standby(int8_t heater); // Set a heater idle
|
||||||
float GetTemperature(int8_t heater);
|
float GetTemperature(int8_t heater); // Get the temperature of a heater
|
||||||
void ResetFault(int8_t heater);
|
void ResetFault(int8_t heater); // Reset a heater fault - oly call this if you know what you are doing
|
||||||
bool AllHeatersAtSetTemperatures();
|
bool AllHeatersAtSetTemperatures(); // Is everything at temperature within tolerance?
|
||||||
void Diagnostics();
|
void Diagnostics(); // Output useful information
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Platform* platform;
|
Platform* platform; // The instance of the RepRap hardware class
|
||||||
GCodes* gCodes;
|
GCodes* gCodes; // The instance of the G Code interpreter class
|
||||||
bool active;
|
bool active; // Are we active?
|
||||||
PID* pids[HEATERS];
|
PID* pids[HEATERS]; // A PID controller for each heater
|
||||||
float lastTime;
|
float lastTime; // The last time our Spin() was called
|
||||||
float longWait;
|
float longWait; // Long time for things that happen occasionally
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
205
Move.h
205
Move.h
|
@ -60,7 +60,12 @@ enum PointCoordinateSet
|
||||||
zSet = 4
|
zSet = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class implements a look-ahead buffer for moves. It allows colinear
|
||||||
|
* moves not to decelerate between them, sets velocities at ends and beginnings
|
||||||
|
* for angled moves, and so on. Entries are joined in a doubly-linked list
|
||||||
|
* to form a ring buffer.
|
||||||
|
*/
|
||||||
class LookAhead
|
class LookAhead
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -70,42 +75,45 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LookAhead(Move* m, Platform* p, LookAhead* n);
|
LookAhead(Move* m, Platform* p, LookAhead* n);
|
||||||
void Init(long ep[], float feedRate, float vv, bool ce, int8_t mt);
|
void Init(long ep[], float feedRate, float vv, bool ce, int8_t mt); // Set up this move
|
||||||
LookAhead* Next();
|
LookAhead* Next(); // Next one in the ring
|
||||||
LookAhead* Previous();
|
LookAhead* Previous(); // Previous one in the ring
|
||||||
long* MachineEndPoints();
|
long* MachineEndPoints(); // Endpoints of a move in machine coordinates
|
||||||
float MachineToEndPoint(int8_t drive);
|
float MachineToEndPoint(int8_t drive); // Convert a move endpoint to real mm coordinates
|
||||||
static float MachineToEndPoint(int8_t drive, long coord);
|
static float MachineToEndPoint(int8_t drive, long coord); // Convert any number to a real coordinate
|
||||||
static long EndPointToMachine(int8_t drive, float coord);
|
static long EndPointToMachine(int8_t drive, float coord); // Convert real mm to a machine coordinate
|
||||||
int8_t GetMovementType();
|
int8_t GetMovementType(); // What sort of move is this?
|
||||||
float FeedRate();
|
float FeedRate(); // How fast is the maximum speed for this move
|
||||||
float V();
|
float V(); // The speed at the end of the move
|
||||||
void SetV(float vv);
|
void SetV(float vv); // Set the end speed
|
||||||
void SetFeedRate(float f);
|
void SetFeedRate(float f); // Set the desired feedrate
|
||||||
int8_t Processed();
|
int8_t Processed(); // Where we are in the look-ahead prediction sequence
|
||||||
void SetProcessed(MovementState ms);
|
void SetProcessed(MovementState ms); // Set where we are the the look ahead processing
|
||||||
void SetDriveCoordinateAndZeroEndSpeed(float a, int8_t drive);
|
void SetDriveCoordinateAndZeroEndSpeed(float a, int8_t drive); // Force an end ppoint and st its speed to stopped
|
||||||
bool CheckEndStops();
|
bool CheckEndStops(); // Are we checking endstops on this move?
|
||||||
void Release();
|
void Release(); // This move has been processed and executed
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Move* move;
|
Move* move; // The main movement control class
|
||||||
Platform* platform;
|
Platform* platform; // The RepRap machine
|
||||||
LookAhead* next;
|
LookAhead* next; // Next entry in the ring
|
||||||
LookAhead* previous;
|
LookAhead* previous; // Previous entry in the ring
|
||||||
long endPoint[DRIVES+1]; // Should never use the +1, but safety first
|
long endPoint[DRIVES+1]; // Machine coordinates of the endpoint. Should never use the +1, but safety first
|
||||||
int8_t movementType;
|
int8_t movementType; // XY move, Z move, extruder only etc
|
||||||
float Cosine();
|
float Cosine(); // The angle between the previous move and this one
|
||||||
bool checkEndStops;
|
bool checkEndStops; // Check endstops for this move
|
||||||
float cosine;
|
float cosine; // Store for the cosine value - the function uses lazy evaluation
|
||||||
float v; // The feedrate we can actually do
|
float v; // The feedrate we can actually do
|
||||||
float feedRate; // The requested feedrate
|
float feedRate; // The requested feedrate
|
||||||
float instantDv;
|
float instantDv; // The slowest speed we can move at. > 0
|
||||||
volatile int8_t processed;
|
volatile int8_t processed; // The stage in the look ahead process that this move is at.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This implements an integer space machine coordinates Bressenham-style DDA to step the drives.
|
||||||
|
* DDAs are stored in a linked list forming a ring buffer.
|
||||||
|
*/
|
||||||
class DDA
|
class DDA
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -115,80 +123,87 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
DDA(Move* m, Platform* p, DDA* n);
|
DDA(Move* m, Platform* p, DDA* n);
|
||||||
MovementProfile Init(LookAhead* lookAhead, float& u, float& v);
|
MovementProfile Init(LookAhead* lookAhead, float& u, float& v); // Set up the DDA. Also used experimentally in look ahead.
|
||||||
void Start(bool noTest);
|
void Start(bool noTest); // Start executing the DDA. I.e. move the move.
|
||||||
void Step();
|
void Step(); // Take one step of the DDA. Called by timed interrupt.
|
||||||
bool Active();
|
bool Active(); // Is the DDA running?
|
||||||
DDA* Next();
|
DDA* Next(); // Next entry in the ring
|
||||||
float InstantDv();
|
float InstantDv(); // The lowest speed that may be used
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MovementProfile AccelerationCalculation(float& u, float& v, MovementProfile result);
|
MovementProfile AccelerationCalculation(float& u, float& v, // Compute acceleration profiles
|
||||||
void SetXYAcceleration();
|
MovementProfile result);
|
||||||
void SetEAcceleration(float eDistance);
|
void SetXYAcceleration(); // Compute an XY acceleration
|
||||||
Move* move;
|
void SetEAcceleration(float eDistance); // Compute an extruder acceleration
|
||||||
Platform* platform;
|
|
||||||
DDA* next;
|
Move* move; // The main movement control class
|
||||||
LookAhead* myLookAheadEntry;
|
Platform* platform; // The RepRap machine
|
||||||
long counter[DRIVES];
|
DDA* next; // The next one in the ring
|
||||||
long delta[DRIVES];
|
LookAhead* myLookAheadEntry; // The look-ahead entry corresponding to this DDA
|
||||||
bool directions[DRIVES];
|
long counter[DRIVES]; // Step counters
|
||||||
long totalSteps;
|
long delta[DRIVES]; // How far to move each drive
|
||||||
long stepCount;
|
bool directions[DRIVES]; // Forwards or backwards?
|
||||||
bool checkEndStops;
|
long totalSteps; // Total number of steps for this move
|
||||||
float timeStep;
|
long stepCount; // How many steps we have already taken
|
||||||
float velocity;
|
bool checkEndStops; // Are we checking endstops?
|
||||||
long stopAStep;
|
float timeStep; // The current timestep (seconds)
|
||||||
long startDStep;
|
float velocity; // The current velocity
|
||||||
float distance;
|
long stopAStep; // The stepcount at which we stop accelerating
|
||||||
float acceleration;
|
long startDStep; // The stepcount at which we start decelerating
|
||||||
float instantDv;
|
float distance; // How long is the move in real distance
|
||||||
volatile bool active;
|
float acceleration; // The acceleration to use
|
||||||
|
float instantDv; // The lowest possible velocity
|
||||||
|
volatile bool active; // Is the DDA running?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the master movement class. It controls all movement in the machine.
|
||||||
|
*/
|
||||||
|
|
||||||
class Move
|
class Move
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Move(Platform* p, GCodes* g);
|
Move(Platform* p, GCodes* g);
|
||||||
void Init();
|
void Init(); // Start me up
|
||||||
void Spin();
|
void Spin(); // Called in a tight loop to keep the class going
|
||||||
void Exit();
|
void Exit(); // Shut down
|
||||||
bool GetCurrentState(float m[]); // takes account of all the rings and delays
|
bool GetCurrentState(float m[]); // Return the current position if possible. Send false otherwise
|
||||||
void LiveCoordinates(float m[]); // Just gives the last point at the end of the last DDA
|
void LiveCoordinates(float m[]); // Gives the last point at the end of the last complete DDA
|
||||||
void Interrupt();
|
void Interrupt(); // The hardware's (i.e. platform's) interrupt should call this.
|
||||||
void InterruptTime();
|
void InterruptTime(); // Test function - not used
|
||||||
bool AllMovesAreFinished();
|
bool AllMovesAreFinished(); // Is the look-ahead ring empty? Stops more moves being added as well.
|
||||||
void ResumeMoving();
|
void ResumeMoving(); // Allow moves to be added after a call to AllMovesAreFinished()
|
||||||
void DoLookAhead();
|
void DoLookAhead(); // Run the look-ahead procedure
|
||||||
void HitLowStop(int8_t drive, LookAhead* la, DDA* hitDDA);
|
void HitLowStop(int8_t drive, // What to do when a low endstop is hit
|
||||||
void HitHighStop(int8_t drive, LookAhead* la, DDA* hitDDA);
|
LookAhead* la, DDA* hitDDA);
|
||||||
void SetPositions(float move[]);
|
void HitHighStop(int8_t drive, // What to do when a high endstop is hit
|
||||||
void SetLiveCoordinates(float coords[]);
|
LookAhead* la, DDA* hitDDA);
|
||||||
void SetXBedProbePoint(int index, float x);
|
void SetPositions(float move[]); // Force the coordinates to be these
|
||||||
void SetYBedProbePoint(int index, float y);
|
void SetLiveCoordinates(float coords[]); // Force the live coordinates (see above) to be these
|
||||||
void SetZBedProbePoint(int index, float z);
|
void SetXBedProbePoint(int index, float x); // Record the X coordinate of a probe point
|
||||||
float xBedProbePoint(int index);
|
void SetYBedProbePoint(int index, float y); // Record the Y coordinate of a probe point
|
||||||
float yBedProbePoint(int index);
|
void SetZBedProbePoint(int index, float z); // Record the Z coordinate of a probe point
|
||||||
float zBedProbePoint(int index);
|
float xBedProbePoint(int index); // Get the X coordinate of a probe point
|
||||||
int NumberOfProbePoints();
|
float yBedProbePoint(int index); // Get the Y coordinate of a probe point
|
||||||
int NumberOfXYProbePoints();
|
float zBedProbePoint(int index); // Get the Z coordinate of a probe point
|
||||||
bool AllProbeCoordinatesSet(int index);
|
int NumberOfProbePoints(); // How many points to probe have been set? 0 if incomplete
|
||||||
bool XYProbeCoordinatesSet(int index);
|
int NumberOfXYProbePoints(); // How many XY coordinates of probe points have been set (Zs may not have been probed yet)
|
||||||
void SetZProbing(bool probing);
|
bool AllProbeCoordinatesSet(int index); // XY, and Z all set for this one?
|
||||||
void SetProbedBedEquation();
|
bool XYProbeCoordinatesSet(int index); // Just XY set for this one?
|
||||||
float SecondDegreeTransformZ(float x, float y);
|
void SetZProbing(bool probing); // Set the Z probe live
|
||||||
float GetLastProbedZ();
|
void SetProbedBedEquation(); // When we have a full set of probed points, work out the bed's equation
|
||||||
void SetAxisCompensation(int8_t axis, float tangent);
|
float SecondDegreeTransformZ(float x, float y); // Used for second degree bed equation
|
||||||
void SetIdentityTransform();
|
float GetLastProbedZ(); // What was the Z when the probe last fired?
|
||||||
void Transform(float move[]);
|
void SetAxisCompensation(int8_t axis, float tangent); // Set an axis-pair compensation angle
|
||||||
void InverseTransform(float move[]);
|
void SetIdentityTransform(); // Cancel the bed equation; does not reset axis angle compensation
|
||||||
void Diagnostics();
|
void Transform(float move[]); // Take a position and apply the bed and the axis-angle compensations
|
||||||
float ComputeCurrentCoordinate(int8_t drive, LookAhead* la, DDA* runningDDA);
|
void InverseTransform(float move[]); // Go from a transformed point back to user coordinates
|
||||||
void SetStepHypotenuse();
|
void Diagnostics(); // Report useful stuff
|
||||||
|
float ComputeCurrentCoordinate(int8_t drive,// Turn a DDA value back into a real world coordinate
|
||||||
|
LookAhead* la, DDA* runningDDA);
|
||||||
|
void SetStepHypotenuse(); // Set up the hypotenuse lengths for multiple axis steps, like step both X and Y
|
||||||
|
|
||||||
|
|
||||||
friend class DDA;
|
friend class DDA;
|
||||||
|
|
12
RemoteSystemsTempFiles/.project
Normal file
12
RemoteSystemsTempFiles/.project
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>RemoteSystemsTempFiles</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.rse.ui.remoteSystemsTempNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
Reference in a new issue