Merge branch 'duet' of https://github.com/reprappro/RepRapFirmware into duet
This commit is contained in:
commit
ba04363345
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 NAME "RepRapFirmware"
|
||||
#define VERSION "0.58"
|
||||
#define DATE "2014-02-08"
|
||||
#define LAST_AUTHOR "dc42"
|
||||
#define VERSION "0.59"
|
||||
#define DATE "2014-02-19"
|
||||
#define LAST_AUTHOR "reprappro"
|
||||
|
||||
// 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 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
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ void GCodes::Init()
|
|||
axisIsHomed[X_AXIS] = axisIsHomed[Y_AXIS] = axisIsHomed[Z_AXIS] = false;
|
||||
}
|
||||
|
||||
void GCodes::doFilePrint(GCodeBuffer* gb)
|
||||
void GCodes::DoFilePrint(GCodeBuffer* gb)
|
||||
{
|
||||
char b;
|
||||
|
||||
|
@ -212,7 +212,7 @@ void GCodes::Spin()
|
|||
}
|
||||
}
|
||||
|
||||
doFilePrint(fileGCode);
|
||||
DoFilePrint(fileGCode);
|
||||
|
||||
platform->ClassReport("GCodes", longWait);
|
||||
}
|
||||
|
@ -456,7 +456,7 @@ bool GCodes::DoFileCannedCycles(const char* fileName)
|
|||
return false;
|
||||
}
|
||||
|
||||
doFilePrint(cannedCycleGCode);
|
||||
DoFilePrint(cannedCycleGCode);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
225
GCodes.h
225
GCodes.h
|
@ -33,30 +33,30 @@ class GCodeBuffer
|
|||
{
|
||||
public:
|
||||
GCodeBuffer(Platform* p, const char* id);
|
||||
void Init();
|
||||
bool Put(char c);
|
||||
bool Seen(char c);
|
||||
float GetFValue();
|
||||
int GetIValue();
|
||||
long GetLValue();
|
||||
const char* GetUnprecedentedString();
|
||||
const char* GetString();
|
||||
const char* Buffer();
|
||||
bool Finished() const;
|
||||
void SetFinished(bool f);
|
||||
const char* WritingFileDirectory() const;
|
||||
void SetWritingFileDirectory(const char* wfd);
|
||||
void Init(); // Set it up
|
||||
bool Put(char c); // Add a character to the end
|
||||
bool Seen(char c); // Is a character present?
|
||||
float GetFValue(); // Get a float after a key letter
|
||||
int GetIValue(); // Get an integer after a key letter
|
||||
long GetLValue(); // Get a long integer after a key letter
|
||||
const char* GetUnprecedentedString(); // Get a string with no preceeding key letter
|
||||
const char* GetString(); // Get a string after a key letter
|
||||
const char* Buffer(); // All of the G Code itself
|
||||
bool Finished() const; // Has the G Code been executed?
|
||||
void SetFinished(bool f); // Set the G Code executed (or not)
|
||||
const char* WritingFileDirectory() const; // If we are writing the G Code to a file, where that file is
|
||||
void SetWritingFileDirectory(const char* wfd); // Set the directory for the file to write the GCode in
|
||||
|
||||
private:
|
||||
int CheckSum();
|
||||
Platform* platform;
|
||||
char gcodeBuffer[GCODE_LENGTH];
|
||||
const char* identity;
|
||||
int gcodePointer;
|
||||
int readPointer;
|
||||
bool inComment;
|
||||
bool finished;
|
||||
const char* writingFileDirectory;
|
||||
int CheckSum(); // Compute the checksum (if any) at the end of the G Code
|
||||
Platform* platform; // Pointer to the RepRap's controlling class
|
||||
char gcodeBuffer[GCODE_LENGTH]; // The G Code
|
||||
const char* identity; // Where we are from (web, file, serial line etc)
|
||||
int gcodePointer; // Index in the buffer
|
||||
int readPointer; // Where in the buffer to read next
|
||||
bool inComment; // Are we after a ';' character?
|
||||
bool finished; // Has the G Code been executed?
|
||||
const char* writingFileDirectory; // If the G Code is going into a file, where that is
|
||||
};
|
||||
|
||||
//****************************************************************************************************
|
||||
|
@ -68,99 +68,102 @@ class GCodes
|
|||
public:
|
||||
|
||||
GCodes(Platform* p, Webserver* w);
|
||||
void Spin();
|
||||
void Init();
|
||||
void Exit();
|
||||
bool RunConfigurationGCodes();
|
||||
bool ReadMove(float* m, bool& ce);
|
||||
void QueueFileToPrint(const char* fileName);
|
||||
void DeleteFile(const char* fileName);
|
||||
bool GetProbeCoordinates(int count, float& x, float& y, float& z);
|
||||
char* GetCurrentCoordinates();
|
||||
bool PrintingAFile() const;
|
||||
void Diagnostics();
|
||||
bool HaveIncomingData() const;
|
||||
bool GetAxisIsHomed(uint8_t axis) const { return axisIsHomed[axis]; }
|
||||
void Spin(); // Called in a tight loop to make this class work
|
||||
void Init(); // Set it up
|
||||
void Exit(); // Shut it down
|
||||
bool RunConfigurationGCodes(); // Run the configuration G Code file on reboot
|
||||
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); // Open a file of G Codes to run
|
||||
void DeleteFile(const char* fileName); // Does what it says
|
||||
bool GetProbeCoordinates(int count, float& x, float& y, float& z); // Get pre-recorded probe coordinates
|
||||
char* GetCurrentCoordinates(); // Get where we are as a string
|
||||
bool PrintingAFile() const; // Are we in the middle of printing a file?
|
||||
void Diagnostics(); // Send helpful information out
|
||||
bool HaveIncomingData() const; // Is there something that we have to do?
|
||||
//bool GetAxisIsHomed(uint8_t axis) const { return axisIsHomed[axis]; } // Not needed on voyage?
|
||||
|
||||
private:
|
||||
|
||||
void doFilePrint(GCodeBuffer* gb);
|
||||
bool AllMovesAreFinishedAndMoveBufferIsLoaded();
|
||||
bool DoCannedCycleMove(bool ce);
|
||||
bool DoFileCannedCycles(const char* fileName);
|
||||
bool FileCannedCyclesReturn();
|
||||
bool ActOnGcode(GCodeBuffer* gb);
|
||||
bool SetUpMove(GCodeBuffer* gb);
|
||||
bool DoDwell(GCodeBuffer *gb);
|
||||
bool DoHome(char *reply, bool& error);
|
||||
bool DoSingleZProbeAtPoint();
|
||||
bool DoSingleZProbe();
|
||||
bool SetSingleZProbeAtAPosition(GCodeBuffer *gb);
|
||||
bool DoMultipleZProbe();
|
||||
bool SetPrintZProbe(GCodeBuffer *gb, char *reply);
|
||||
bool SetOffsets(GCodeBuffer *gb);
|
||||
bool SetPositions(GCodeBuffer *gb);
|
||||
void LoadMoveBufferFromGCode(GCodeBuffer *gb, bool doingG92, bool applyLimits);
|
||||
bool NoHome() const;
|
||||
bool Push();
|
||||
bool Pop();
|
||||
bool DisableDrives();
|
||||
bool StandbyHeaters();
|
||||
void SetEthernetAddress(GCodeBuffer *gb, int mCode);
|
||||
void HandleReply(bool error, bool fromLine, const char* reply, char gMOrT, int code, bool resend);
|
||||
void OpenFileToWrite(const char* directory, const char* fileName, GCodeBuffer *gb);
|
||||
void WriteGCodeToFile(GCodeBuffer *gb);
|
||||
bool SendConfigToLine();
|
||||
void WriteHTMLToFile(char b, GCodeBuffer *gb);
|
||||
bool OffsetAxes(GCodeBuffer *gb);
|
||||
void DoFilePrint(GCodeBuffer* gb); // Get G Codes from a file and print them
|
||||
bool AllMovesAreFinishedAndMoveBufferIsLoaded(); // Wait for move queue to exhaust and the current position is loaded
|
||||
bool DoCannedCycleMove(bool ce); // Do a move from an internally programmed canned cycle
|
||||
bool DoFileCannedCycles(const char* fileName); // Run a GCode macro in a file
|
||||
bool FileCannedCyclesReturn(); // End a macro
|
||||
bool ActOnGcode(GCodeBuffer* gb); // Do the G Code
|
||||
bool SetUpMove(GCodeBuffer* gb); // Set up a new movement
|
||||
bool DoDwell(GCodeBuffer *gb); // Wait for a bit
|
||||
bool DoHome(char *reply, bool& error); // Home some axes
|
||||
bool DoSingleZProbeAtPoint(); // Probe at a given point
|
||||
bool DoSingleZProbe(); // Probe where we are
|
||||
bool SetSingleZProbeAtAPosition(GCodeBuffer *gb); // Probes at a given position - see the comment at the head of the function itself
|
||||
bool DoMultipleZProbe(); // Probes a series of points and sets the bed equation
|
||||
bool SetPrintZProbe(GCodeBuffer *gb, char *reply); // Either return the probe value, or set its threshold
|
||||
bool SetOffsets(GCodeBuffer *gb); // Deal with a G10
|
||||
bool SetPositions(GCodeBuffer *gb); // Deal with a G92
|
||||
void LoadMoveBufferFromGCode(GCodeBuffer *gb, // Set up a move for the Move class
|
||||
bool doingG92, bool applyLimits);
|
||||
bool NoHome() const; // Are we homing and not finished?
|
||||
bool Push(); // Push feedrate etc on the stack
|
||||
bool Pop(); // Pop feedrate etc
|
||||
bool DisableDrives(); // Turn the motors off
|
||||
bool StandbyHeaters(); // Set all heaters to standby temperatures
|
||||
void SetEthernetAddress(GCodeBuffer *gb, int mCode); // Does what it says
|
||||
void HandleReply(bool error, bool fromLine, const char* reply, // If the GCode is from the serial interface, reply to it
|
||||
char gMOrT, int code, bool resend);
|
||||
void OpenFileToWrite(const char* directory, // Start saving GCodes in a file
|
||||
const char* fileName, 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;
|
||||
bool active;
|
||||
Webserver* webserver;
|
||||
float dwellTime;
|
||||
bool dwellWaiting;
|
||||
GCodeBuffer* webGCode;
|
||||
GCodeBuffer* fileGCode;
|
||||
GCodeBuffer* serialGCode;
|
||||
GCodeBuffer* cannedCycleGCode;
|
||||
bool moveAvailable;
|
||||
float moveBuffer[DRIVES+1]; // Last is feed rate
|
||||
bool checkEndStops;
|
||||
bool drivesRelative; // All except X, Y and Z
|
||||
bool axesRelative; // X, Y and Z
|
||||
bool drivesRelativeStack[STACK];
|
||||
bool axesRelativeStack[STACK];
|
||||
float feedrateStack[STACK];
|
||||
FileStore* fileStack[STACK];
|
||||
int8_t stackPointer;
|
||||
char gCodeLetters[DRIVES + 1]; // Extra is for F
|
||||
float lastPos[DRIVES - AXES]; // Just needed for relative moves.
|
||||
float record[DRIVES+1];
|
||||
float moveToDo[DRIVES+1];
|
||||
bool activeDrive[DRIVES+1];
|
||||
bool offSetSet;
|
||||
float distanceScale;
|
||||
FileStore* fileBeingPrinted;
|
||||
FileStore* fileToPrint;
|
||||
FileStore* fileBeingWritten;
|
||||
FileStore* configFile;
|
||||
bool doingCannedCycleFile;
|
||||
char* eofString;
|
||||
uint8_t eofStringCounter;
|
||||
uint8_t eofStringLength;
|
||||
int8_t selectedHead;
|
||||
bool homeX;
|
||||
bool homeY;
|
||||
bool homeZ;
|
||||
int8_t homeAxisMoveCount;
|
||||
float gFeedRate;
|
||||
int probeCount;
|
||||
int8_t cannedCycleMoveCount;
|
||||
bool cannedCycleMoveQueued;
|
||||
bool zProbesSet;
|
||||
float longWait;
|
||||
bool axisIsHomed[3]; // these record which of the axes have been homed
|
||||
Platform* platform; // The RepRap machine
|
||||
bool active; // Live and running?
|
||||
Webserver* webserver; // The webserver class
|
||||
float dwellTime; // How long a pause for a dwell (seconds)?
|
||||
bool dwellWaiting; // We are in a dwell
|
||||
GCodeBuffer* webGCode; // The sources...
|
||||
GCodeBuffer* fileGCode; // ...
|
||||
GCodeBuffer* serialGCode; // ...
|
||||
GCodeBuffer* cannedCycleGCode; // ... of G Codes
|
||||
bool moveAvailable; // Have we seen a move G Code and set it up?
|
||||
float moveBuffer[DRIVES+1]; // Move coordinates; last is feed rate
|
||||
bool checkEndStops; // Should we check them on the next move?
|
||||
bool drivesRelative; // Are movements relative - all except X, Y and Z
|
||||
bool axesRelative; // Are movements relative - X, Y and Z
|
||||
bool drivesRelativeStack[STACK]; // For dealing with Push and Pop
|
||||
bool axesRelativeStack[STACK]; // For dealing with Push and Pop
|
||||
float feedrateStack[STACK]; // For dealing with Push and Pop
|
||||
FileStore* fileStack[STACK]; // For dealing with Push and Pop
|
||||
int8_t stackPointer; // Push and Pop stack pointer
|
||||
char gCodeLetters[DRIVES + 1]; // 'X', 'Y' etc. Extra is for F
|
||||
float lastPos[DRIVES - AXES]; // Just needed for relative moves; i.e. not X, Y and Z
|
||||
float record[DRIVES+1]; // Temporary store for move positions
|
||||
float moveToDo[DRIVES+1]; // Where to go set by G1 etc
|
||||
bool activeDrive[DRIVES+1]; // Is this drive involved in a move?
|
||||
bool offSetSet; // Are any axis offsets non-zero?
|
||||
float distanceScale; // MM or inches
|
||||
FileStore* fileBeingPrinted; // The file being printed at the moment (if any)
|
||||
FileStore* fileToPrint; // A file to print in the future, or one that has been paused
|
||||
FileStore* fileBeingWritten; // A file to write G Codes (or sometimes HTML) in
|
||||
FileStore* configFile; // A file containing a macro
|
||||
bool doingCannedCycleFile; // Are we executing a macro file?
|
||||
char* eofString; // What's at the end of an HTML file?
|
||||
uint8_t eofStringCounter; // Check the...
|
||||
uint8_t eofStringLength; // ... EoF string as we read.
|
||||
int8_t selectedHead; // Which extruder is in use
|
||||
bool homeX; // True to home the X axis this move
|
||||
bool homeY; // True to home the Y axis this move
|
||||
bool homeZ; // True to home the Z axis this move
|
||||
//int8_t homeAxisMoveCount; // Not needed on voyage?
|
||||
float gFeedRate; // Store for the current feedrate
|
||||
int probeCount; // Counts multiple probe points
|
||||
int8_t cannedCycleMoveCount; // Counts through internal (i.e. not macro) canned cycle moves
|
||||
bool cannedCycleMoveQueued; // True if a canned cycle move has been set
|
||||
bool zProbesSet; // True if all Z probing is done and we can set the bed equation
|
||||
float longWait; // Timer for things that happen occasionally (seconds)
|
||||
bool axisIsHomed[3]; // These record which of the axes have been homed
|
||||
};
|
||||
|
||||
//*****************************************************************************************************
|
||||
|
|
20
Heat.cpp
20
Heat.cpp
|
@ -60,7 +60,8 @@ void Heat::Spin()
|
|||
|
||||
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()
|
||||
|
@ -107,7 +108,7 @@ void PID::Init()
|
|||
temp_dState = 0.0;
|
||||
badTemperatureCount = 0;
|
||||
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, "\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
{
|
||||
badTemperatureCount = 0;
|
||||
}
|
||||
|
@ -175,6 +175,9 @@ void PID::Spin()
|
|||
|
||||
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;
|
||||
else if (result > 255.0) result = 255.0;
|
||||
result = result/255.0;
|
||||
|
@ -182,9 +185,8 @@ void PID::Spin()
|
|||
if(!temperatureFault)
|
||||
platform->SetHeater(heater, result);
|
||||
|
||||
#if 0 // debug
|
||||
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);
|
||||
platform->Message(HOST_MESSAGE, buffer);
|
||||
#endif
|
||||
// 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);
|
||||
// platform->Message(HOST_MESSAGE, buffer);
|
||||
|
||||
}
|
||||
|
|
96
Heat.h
96
Heat.h
|
@ -21,66 +21,76 @@ Licence: GPL
|
|||
#ifndef HEAT_H
|
||||
#define HEAT_H
|
||||
|
||||
/**
|
||||
* This class implements a PID controller for the heaters
|
||||
*/
|
||||
|
||||
class PID
|
||||
{
|
||||
public:
|
||||
friend class Heat;
|
||||
private:
|
||||
//public:
|
||||
|
||||
PID(Platform* p, int8_t h);
|
||||
void Init();
|
||||
void Spin();
|
||||
void SetActiveTemperature(const float& t);
|
||||
float GetActiveTemperature();
|
||||
void SetStandbyTemperature(const float& t);
|
||||
float GetStandbyTemperature();
|
||||
void Activate();
|
||||
void Standby();
|
||||
bool Active();
|
||||
void ResetFault();
|
||||
float GetTemperature();
|
||||
void Init(); // (Re)Set everything to start
|
||||
void Spin(); // Called in a tight loop to keep things running
|
||||
void SetActiveTemperature(const float& t); // Set the temperature required when working (Celsius)
|
||||
float GetActiveTemperature(); // Get the active temperature
|
||||
void SetStandbyTemperature(const float& t); // Set the temperature to use when idle (celsius)
|
||||
float GetStandbyTemperature(); // Get the idle temperature
|
||||
void Activate(); // Switch from idle to active
|
||||
void Standby(); // Switch from active to idle
|
||||
bool Active(); // Are we active?
|
||||
void ResetFault(); // Reset a fault condition - only call this if you know what you are doing
|
||||
float GetTemperature(); // Get the current temperature
|
||||
|
||||
private:
|
||||
// private:
|
||||
|
||||
Platform* platform;
|
||||
float activeTemperature;
|
||||
float standbyTemperature;
|
||||
float temperature;
|
||||
float lastTemperature;
|
||||
float temp_iState;
|
||||
float temp_dState;
|
||||
bool active;
|
||||
int8_t heater;
|
||||
int8_t badTemperatureCount;
|
||||
bool temperatureFault;
|
||||
Platform* platform; // The instance of the class that is the RepRap hardware
|
||||
float activeTemperature; // The required active temperature
|
||||
float standbyTemperature; // The required standby temperature
|
||||
float temperature; // The current temperature
|
||||
float lastTemperature; // The previous current temperature
|
||||
float temp_iState; // The integral PID component
|
||||
float temp_dState; // The derivative PID component
|
||||
bool active; // Are we active or standby?
|
||||
int8_t heater; // The index of our heater
|
||||
int8_t badTemperatureCount; // Count of sequential dud readings
|
||||
bool temperatureFault; // Has our heater developed a fault?
|
||||
};
|
||||
|
||||
/**
|
||||
* The master class that controls all the heaters in the RepRap machine
|
||||
*/
|
||||
|
||||
class Heat
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
Heat(Platform* p, GCodes* g);
|
||||
void Spin();
|
||||
void Init();
|
||||
void Exit();
|
||||
void SetActiveTemperature(int8_t heater, const float& t);
|
||||
float GetActiveTemperature(int8_t heater);
|
||||
void SetStandbyTemperature(int8_t heater, const float& t);
|
||||
float GetStandbyTemperature(int8_t heater);
|
||||
void Activate(int8_t heater);
|
||||
void Standby(int8_t heater);
|
||||
float GetTemperature(int8_t heater);
|
||||
void ResetFault(int8_t heater);
|
||||
bool AllHeatersAtSetTemperatures();
|
||||
void Diagnostics();
|
||||
void Spin(); // Called in a tight loop to keep everything going
|
||||
void Init(); // Set everything up
|
||||
void Exit(); // Shut everything down
|
||||
void SetActiveTemperature(int8_t heater, const float& t); // Set a heater's active temperature (celsius)
|
||||
float GetActiveTemperature(int8_t heater); // What is a heater's active temperature?
|
||||
void SetStandbyTemperature(int8_t heater, const float& t); // Set a heater's standby temperature (celsius)
|
||||
float GetStandbyTemperature(int8_t heater); // What is a heater's standby temperature?
|
||||
void Activate(int8_t heater); // Turn on a heater
|
||||
void Standby(int8_t heater); // Set a heater idle
|
||||
float GetTemperature(int8_t heater); // Get the temperature of a heater
|
||||
void ResetFault(int8_t heater); // Reset a heater fault - oly call this if you know what you are doing
|
||||
bool AllHeatersAtSetTemperatures(); // Is everything at temperature within tolerance?
|
||||
void Diagnostics(); // Output useful information
|
||||
|
||||
private:
|
||||
|
||||
Platform* platform;
|
||||
GCodes* gCodes;
|
||||
bool active;
|
||||
PID* pids[HEATERS];
|
||||
float lastTime;
|
||||
float longWait;
|
||||
Platform* platform; // The instance of the RepRap hardware class
|
||||
GCodes* gCodes; // The instance of the G Code interpreter class
|
||||
bool active; // Are we active?
|
||||
PID* pids[HEATERS]; // A PID controller for each heater
|
||||
float lastTime; // The last time our Spin() was called
|
||||
float longWait; // Long time for things that happen occasionally
|
||||
};
|
||||
|
||||
|
||||
|
|
205
Move.h
205
Move.h
|
@ -60,7 +60,12 @@ enum PointCoordinateSet
|
|||
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
|
||||
{
|
||||
public:
|
||||
|
@ -70,42 +75,45 @@ public:
|
|||
|
||||
protected:
|
||||
LookAhead(Move* m, Platform* p, LookAhead* n);
|
||||
void Init(long ep[], float feedRate, float vv, bool ce, int8_t mt);
|
||||
LookAhead* Next();
|
||||
LookAhead* Previous();
|
||||
long* MachineEndPoints();
|
||||
float MachineToEndPoint(int8_t drive);
|
||||
static float MachineToEndPoint(int8_t drive, long coord);
|
||||
static long EndPointToMachine(int8_t drive, float coord);
|
||||
int8_t GetMovementType();
|
||||
float FeedRate();
|
||||
float V();
|
||||
void SetV(float vv);
|
||||
void SetFeedRate(float f);
|
||||
int8_t Processed();
|
||||
void SetProcessed(MovementState ms);
|
||||
void SetDriveCoordinateAndZeroEndSpeed(float a, int8_t drive);
|
||||
bool CheckEndStops();
|
||||
void Release();
|
||||
void Init(long ep[], float feedRate, float vv, bool ce, int8_t mt); // Set up this move
|
||||
LookAhead* Next(); // Next one in the ring
|
||||
LookAhead* Previous(); // Previous one in the ring
|
||||
long* MachineEndPoints(); // Endpoints of a move in machine coordinates
|
||||
float MachineToEndPoint(int8_t drive); // Convert a move endpoint to real mm coordinates
|
||||
static float MachineToEndPoint(int8_t drive, long coord); // Convert any number to a real coordinate
|
||||
static long EndPointToMachine(int8_t drive, float coord); // Convert real mm to a machine coordinate
|
||||
int8_t GetMovementType(); // What sort of move is this?
|
||||
float FeedRate(); // How fast is the maximum speed for this move
|
||||
float V(); // The speed at the end of the move
|
||||
void SetV(float vv); // Set the end speed
|
||||
void SetFeedRate(float f); // Set the desired feedrate
|
||||
int8_t Processed(); // Where we are in the look-ahead prediction sequence
|
||||
void SetProcessed(MovementState ms); // Set where we are the the look ahead processing
|
||||
void SetDriveCoordinateAndZeroEndSpeed(float a, int8_t drive); // Force an end ppoint and st its speed to stopped
|
||||
bool CheckEndStops(); // Are we checking endstops on this move?
|
||||
void Release(); // This move has been processed and executed
|
||||
|
||||
private:
|
||||
|
||||
Move* move;
|
||||
Platform* platform;
|
||||
LookAhead* next;
|
||||
LookAhead* previous;
|
||||
long endPoint[DRIVES+1]; // Should never use the +1, but safety first
|
||||
int8_t movementType;
|
||||
float Cosine();
|
||||
bool checkEndStops;
|
||||
float cosine;
|
||||
float v; // The feedrate we can actually do
|
||||
float feedRate; // The requested feedrate
|
||||
float instantDv;
|
||||
volatile int8_t processed;
|
||||
Move* move; // The main movement control class
|
||||
Platform* platform; // The RepRap machine
|
||||
LookAhead* next; // Next entry in the ring
|
||||
LookAhead* previous; // Previous entry in the ring
|
||||
long endPoint[DRIVES+1]; // Machine coordinates of the endpoint. Should never use the +1, but safety first
|
||||
int8_t movementType; // XY move, Z move, extruder only etc
|
||||
float Cosine(); // The angle between the previous move and this one
|
||||
bool checkEndStops; // Check endstops for this move
|
||||
float cosine; // Store for the cosine value - the function uses lazy evaluation
|
||||
float v; // The feedrate we can actually do
|
||||
float feedRate; // The requested feedrate
|
||||
float instantDv; // The slowest speed we can move at. > 0
|
||||
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
|
||||
{
|
||||
public:
|
||||
|
@ -115,80 +123,87 @@ public:
|
|||
|
||||
protected:
|
||||
DDA(Move* m, Platform* p, DDA* n);
|
||||
MovementProfile Init(LookAhead* lookAhead, float& u, float& v);
|
||||
void Start(bool noTest);
|
||||
void Step();
|
||||
bool Active();
|
||||
DDA* Next();
|
||||
float InstantDv();
|
||||
MovementProfile Init(LookAhead* lookAhead, float& u, float& v); // Set up the DDA. Also used experimentally in look ahead.
|
||||
void Start(bool noTest); // Start executing the DDA. I.e. move the move.
|
||||
void Step(); // Take one step of the DDA. Called by timed interrupt.
|
||||
bool Active(); // Is the DDA running?
|
||||
DDA* Next(); // Next entry in the ring
|
||||
float InstantDv(); // The lowest speed that may be used
|
||||
|
||||
private:
|
||||
MovementProfile AccelerationCalculation(float& u, float& v, MovementProfile result);
|
||||
void SetXYAcceleration();
|
||||
void SetEAcceleration(float eDistance);
|
||||
Move* move;
|
||||
Platform* platform;
|
||||
DDA* next;
|
||||
LookAhead* myLookAheadEntry;
|
||||
long counter[DRIVES];
|
||||
long delta[DRIVES];
|
||||
bool directions[DRIVES];
|
||||
long totalSteps;
|
||||
long stepCount;
|
||||
bool checkEndStops;
|
||||
float timeStep;
|
||||
float velocity;
|
||||
long stopAStep;
|
||||
long startDStep;
|
||||
float distance;
|
||||
float acceleration;
|
||||
float instantDv;
|
||||
volatile bool active;
|
||||
MovementProfile AccelerationCalculation(float& u, float& v, // Compute acceleration profiles
|
||||
MovementProfile result);
|
||||
void SetXYAcceleration(); // Compute an XY acceleration
|
||||
void SetEAcceleration(float eDistance); // Compute an extruder acceleration
|
||||
|
||||
Move* move; // The main movement control class
|
||||
Platform* platform; // The RepRap machine
|
||||
DDA* next; // The next one in the ring
|
||||
LookAhead* myLookAheadEntry; // The look-ahead entry corresponding to this DDA
|
||||
long counter[DRIVES]; // Step counters
|
||||
long delta[DRIVES]; // How far to move each drive
|
||||
bool directions[DRIVES]; // Forwards or backwards?
|
||||
long totalSteps; // Total number of steps for this move
|
||||
long stepCount; // How many steps we have already taken
|
||||
bool checkEndStops; // Are we checking endstops?
|
||||
float timeStep; // The current timestep (seconds)
|
||||
float velocity; // The current velocity
|
||||
long stopAStep; // The stepcount at which we stop accelerating
|
||||
long startDStep; // The stepcount at which we start decelerating
|
||||
float distance; // How long is the move in real distance
|
||||
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
|
||||
{
|
||||
public:
|
||||
|
||||
Move(Platform* p, GCodes* g);
|
||||
void Init();
|
||||
void Spin();
|
||||
void Exit();
|
||||
bool GetCurrentState(float m[]); // takes account of all the rings and delays
|
||||
void LiveCoordinates(float m[]); // Just gives the last point at the end of the last DDA
|
||||
void Interrupt();
|
||||
void InterruptTime();
|
||||
bool AllMovesAreFinished();
|
||||
void ResumeMoving();
|
||||
void DoLookAhead();
|
||||
void HitLowStop(int8_t drive, LookAhead* la, DDA* hitDDA);
|
||||
void HitHighStop(int8_t drive, LookAhead* la, DDA* hitDDA);
|
||||
void SetPositions(float move[]);
|
||||
void SetLiveCoordinates(float coords[]);
|
||||
void SetXBedProbePoint(int index, float x);
|
||||
void SetYBedProbePoint(int index, float y);
|
||||
void SetZBedProbePoint(int index, float z);
|
||||
float xBedProbePoint(int index);
|
||||
float yBedProbePoint(int index);
|
||||
float zBedProbePoint(int index);
|
||||
int NumberOfProbePoints();
|
||||
int NumberOfXYProbePoints();
|
||||
bool AllProbeCoordinatesSet(int index);
|
||||
bool XYProbeCoordinatesSet(int index);
|
||||
void SetZProbing(bool probing);
|
||||
void SetProbedBedEquation();
|
||||
float SecondDegreeTransformZ(float x, float y);
|
||||
float GetLastProbedZ();
|
||||
void SetAxisCompensation(int8_t axis, float tangent);
|
||||
void SetIdentityTransform();
|
||||
void Transform(float move[]);
|
||||
void InverseTransform(float move[]);
|
||||
void Diagnostics();
|
||||
float ComputeCurrentCoordinate(int8_t drive, LookAhead* la, DDA* runningDDA);
|
||||
void SetStepHypotenuse();
|
||||
void Init(); // Start me up
|
||||
void Spin(); // Called in a tight loop to keep the class going
|
||||
void Exit(); // Shut down
|
||||
bool GetCurrentState(float m[]); // Return the current position if possible. Send false otherwise
|
||||
void LiveCoordinates(float m[]); // Gives the last point at the end of the last complete DDA
|
||||
void Interrupt(); // The hardware's (i.e. platform's) interrupt should call this.
|
||||
void InterruptTime(); // Test function - not used
|
||||
bool AllMovesAreFinished(); // Is the look-ahead ring empty? Stops more moves being added as well.
|
||||
void ResumeMoving(); // Allow moves to be added after a call to AllMovesAreFinished()
|
||||
void DoLookAhead(); // Run the look-ahead procedure
|
||||
void HitLowStop(int8_t drive, // What to do when a low endstop is hit
|
||||
LookAhead* la, DDA* hitDDA);
|
||||
void HitHighStop(int8_t drive, // What to do when a high endstop is hit
|
||||
LookAhead* la, DDA* hitDDA);
|
||||
void SetPositions(float move[]); // Force the coordinates to be these
|
||||
void SetLiveCoordinates(float coords[]); // Force the live coordinates (see above) to be these
|
||||
void SetXBedProbePoint(int index, float x); // Record the X coordinate of a probe point
|
||||
void SetYBedProbePoint(int index, float y); // Record the Y coordinate of a probe point
|
||||
void SetZBedProbePoint(int index, float z); // Record the Z coordinate of a probe point
|
||||
float xBedProbePoint(int index); // Get the X coordinate of a probe point
|
||||
float yBedProbePoint(int index); // Get the Y coordinate of a probe point
|
||||
float zBedProbePoint(int index); // Get the Z coordinate of a probe point
|
||||
int NumberOfProbePoints(); // How many points to probe have been set? 0 if incomplete
|
||||
int NumberOfXYProbePoints(); // How many XY coordinates of probe points have been set (Zs may not have been probed yet)
|
||||
bool AllProbeCoordinatesSet(int index); // XY, and Z all set for this one?
|
||||
bool XYProbeCoordinatesSet(int index); // Just XY set for this one?
|
||||
void SetZProbing(bool probing); // Set the Z probe live
|
||||
void SetProbedBedEquation(); // When we have a full set of probed points, work out the bed's equation
|
||||
float SecondDegreeTransformZ(float x, float y); // Used for second degree bed equation
|
||||
float GetLastProbedZ(); // What was the Z when the probe last fired?
|
||||
void SetAxisCompensation(int8_t axis, float tangent); // Set an axis-pair compensation angle
|
||||
void SetIdentityTransform(); // Cancel the bed equation; does not reset axis angle compensation
|
||||
void Transform(float move[]); // Take a position and apply the bed and the axis-angle compensations
|
||||
void InverseTransform(float move[]); // Go from a transformed point back to user coordinates
|
||||
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;
|
||||
|
|
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