Working on the ether/USB problem. The network can now be disabled (#define NETWORK in Configuration.h). With it disabled the USB works with or without a network cable plugged in. With it enabled the USB only works with a network cable plugged in too. You have to wait for the ether to reinitialise (ether socket lights go out for a couple of secs, then come on, then the green one starts flashing) before trying to talk via the USB. The ether is initialised before config.g is run, so the IP is the one defined in platform.h. The network is disabled in this commit. The heaters are set on by 0, not 1 (i.e. Duet board v0.6 or later). To change this see #define HEAT_ON in platform.h
This commit is contained in:
parent
1792c68b49
commit
c0b7b4bace
10 changed files with 171 additions and 59 deletions
|
@ -75,5 +75,7 @@ enum Compatibility
|
|||
|
||||
#define EOF_STRING "<!-- **EoF** -->"
|
||||
|
||||
#define NETWORK false // Set true to turn the ethernet on
|
||||
|
||||
|
||||
#endif
|
||||
|
|
118
GCodes.cpp
118
GCodes.cpp
|
@ -68,6 +68,7 @@ void GCodes::Init()
|
|||
homeY = false;
|
||||
homeZ = false;
|
||||
homeAxisFinalMove = false;
|
||||
offSetSet = false;
|
||||
dwellWaiting = false;
|
||||
stackPointer = 0;
|
||||
selectedHead = -1;
|
||||
|
@ -312,7 +313,7 @@ bool GCodes::ReadMove(float* m, bool& ce)
|
|||
// be ignored. Recall that moveToDo[DRIVES] should contain the feedrate
|
||||
// you want (if action[DRIVES] is true).
|
||||
|
||||
bool GCodes::DoCannedCycleMove(float moveToDo[], bool action[], bool ce)
|
||||
bool GCodes::DoCannedCycleMove(bool ce)
|
||||
{
|
||||
// Is the move already running?
|
||||
|
||||
|
@ -338,6 +339,75 @@ bool GCodes::DoCannedCycleMove(float moveToDo[], bool action[], bool ce)
|
|||
return false;
|
||||
}
|
||||
|
||||
// This sets positions. I.e. it handles G92.
|
||||
|
||||
bool GCodes::SetPositions(GCodeBuffer *gb)
|
||||
{
|
||||
if(!AllMovesAreFinishedAndMoveBufferIsLoaded())
|
||||
return false;
|
||||
|
||||
LoadMoveBufferFromGCode(gb);
|
||||
reprap.GetMove()->SetLiveCoordinates(moveBuffer);
|
||||
reprap.GetMove()->SetPositions(moveBuffer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Offset the axes by the X, Y, and Z amounts in the M code in gb. Say the machine is at [10, 20, 30] and
|
||||
// the offsets specified are [8, 2, -5]. The machine will move to [18, 22, 25] and henceforth consider that point
|
||||
// to be [10, 20, 30].
|
||||
|
||||
bool GCodes::OffsetAxes(GCodeBuffer* gb)
|
||||
{
|
||||
if(!offSetSet)
|
||||
{
|
||||
if(!AllMovesAreFinishedAndMoveBufferIsLoaded())
|
||||
return false;
|
||||
for(int8_t drive = 0; drive <= DRIVES; drive++)
|
||||
{
|
||||
if(drive < AXES)
|
||||
{
|
||||
record[drive] = moveBuffer[drive];
|
||||
moveToDo[drive] = moveBuffer[drive];
|
||||
} else
|
||||
{
|
||||
record[drive] = 0.0;
|
||||
moveToDo[drive] = 0.0;
|
||||
}
|
||||
action[drive] = false;
|
||||
}
|
||||
|
||||
for(int8_t axis = 0; axis < AXES; axis++)
|
||||
{
|
||||
if(gb->Seen(gCodeLetters[axis]))
|
||||
{
|
||||
moveToDo[axis] += gb->GetFValue();
|
||||
action[axis] = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(gb->Seen(gCodeLetters[DRIVES]))
|
||||
{
|
||||
moveToDo[DRIVES] = gb->GetFValue();
|
||||
action[DRIVES] = true;
|
||||
}
|
||||
|
||||
offSetSet = true;
|
||||
}
|
||||
|
||||
|
||||
if(DoCannedCycleMove(false))
|
||||
{
|
||||
platform->GetLine()->Write(record[0]);
|
||||
reprap.GetMove()->SetLiveCoordinates(record); // This doesn't transform record
|
||||
reprap.GetMove()->SetPositions(record); // This does
|
||||
offSetSet = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Home one or more of the axes. Which ones are decided by the
|
||||
// booleans homeX, homeY and homeZ.
|
||||
|
||||
|
@ -346,8 +416,6 @@ bool GCodes::DoHome()
|
|||
// Treat more or less like any other move
|
||||
// Do one axis at a time, starting with X.
|
||||
|
||||
float moveToDo[DRIVES+1];
|
||||
bool action[DRIVES+1];
|
||||
for(int8_t drive = 0; drive < DRIVES; drive++)
|
||||
action[drive] = false;
|
||||
action[DRIVES] = true;
|
||||
|
@ -360,7 +428,7 @@ bool GCodes::DoHome()
|
|||
if(homeAxisFinalMove)
|
||||
{
|
||||
moveToDo[X_AXIS] = 0.0;
|
||||
if(DoCannedCycleMove(moveToDo, action, false))
|
||||
if(DoCannedCycleMove(false))
|
||||
{
|
||||
homeAxisFinalMove = false;
|
||||
homeX = false;
|
||||
|
@ -369,14 +437,14 @@ bool GCodes::DoHome()
|
|||
}else
|
||||
{
|
||||
moveToDo[X_AXIS] = 2.0*platform->AxisLength(X_AXIS);
|
||||
if(DoCannedCycleMove(moveToDo, action, true))
|
||||
if(DoCannedCycleMove(true))
|
||||
homeAxisFinalMove = true;
|
||||
}
|
||||
} else
|
||||
{
|
||||
moveToDo[X_AXIS] = -2.0*platform->AxisLength(X_AXIS);
|
||||
moveToDo[DRIVES] = platform->HomeFeedRate(X_AXIS);
|
||||
if(DoCannedCycleMove(moveToDo, action, true))
|
||||
if(DoCannedCycleMove(true))
|
||||
{
|
||||
homeX = false;
|
||||
return NoHome();
|
||||
|
@ -393,7 +461,7 @@ bool GCodes::DoHome()
|
|||
if(homeAxisFinalMove)
|
||||
{
|
||||
moveToDo[Y_AXIS] = 0.0;
|
||||
if(DoCannedCycleMove(moveToDo, action, false))
|
||||
if(DoCannedCycleMove(false))
|
||||
{
|
||||
homeAxisFinalMove = false;
|
||||
homeY = false;
|
||||
|
@ -402,14 +470,14 @@ bool GCodes::DoHome()
|
|||
}else
|
||||
{
|
||||
moveToDo[Y_AXIS] = 2.0*platform->AxisLength(Y_AXIS);
|
||||
if(DoCannedCycleMove(moveToDo, action, true))
|
||||
if(DoCannedCycleMove(true))
|
||||
homeAxisFinalMove = true;
|
||||
}
|
||||
} else
|
||||
{
|
||||
moveToDo[Y_AXIS] = -2.0*platform->AxisLength(Y_AXIS);
|
||||
moveToDo[DRIVES] = platform->HomeFeedRate(Y_AXIS);
|
||||
if(DoCannedCycleMove(moveToDo, action, true))
|
||||
if(DoCannedCycleMove(true))
|
||||
{
|
||||
homeY = false;
|
||||
return NoHome();
|
||||
|
@ -425,7 +493,7 @@ bool GCodes::DoHome()
|
|||
if(homeAxisFinalMove)
|
||||
{
|
||||
moveToDo[Z_AXIS] = 0.0;
|
||||
if(DoCannedCycleMove(moveToDo, action, false))
|
||||
if(DoCannedCycleMove(false))
|
||||
{
|
||||
homeAxisFinalMove = false;
|
||||
homeZ = false;
|
||||
|
@ -434,7 +502,7 @@ bool GCodes::DoHome()
|
|||
}else
|
||||
{
|
||||
moveToDo[Z_AXIS] = -2.0*platform->AxisLength(Z_AXIS);
|
||||
if(DoCannedCycleMove(moveToDo, action, true))
|
||||
if(DoCannedCycleMove(true))
|
||||
homeAxisFinalMove = true;
|
||||
}
|
||||
return false;
|
||||
|
@ -458,8 +526,6 @@ bool GCodes::DoSingleZProbe()
|
|||
|
||||
reprap.GetMove()->SetIdentityTransform(); // It doesn't matter if these are called repeatedly
|
||||
|
||||
float moveToDo[DRIVES+1];
|
||||
bool action[DRIVES+1];
|
||||
for(int8_t drive = 0; drive <= DRIVES; drive++)
|
||||
action[drive] = false;
|
||||
|
||||
|
@ -471,7 +537,7 @@ bool GCodes::DoSingleZProbe()
|
|||
moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS);
|
||||
action[DRIVES] = true;
|
||||
reprap.GetMove()->SetZProbing(false);
|
||||
if(DoCannedCycleMove(moveToDo, action, false))
|
||||
if(DoCannedCycleMove(false))
|
||||
cannedCycleMoveCount++;
|
||||
return false;
|
||||
|
||||
|
@ -483,7 +549,7 @@ bool GCodes::DoSingleZProbe()
|
|||
moveToDo[DRIVES] = platform->HomeFeedRate(X_AXIS);
|
||||
action[DRIVES] = true;
|
||||
reprap.GetMove()->SetZProbing(false);
|
||||
if(DoCannedCycleMove(moveToDo, action, false))
|
||||
if(DoCannedCycleMove(false))
|
||||
cannedCycleMoveCount++;
|
||||
return false;
|
||||
|
||||
|
@ -493,7 +559,7 @@ bool GCodes::DoSingleZProbe()
|
|||
moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS);
|
||||
action[DRIVES] = true;
|
||||
reprap.GetMove()->SetZProbing(true);
|
||||
if(DoCannedCycleMove(moveToDo, action, true))
|
||||
if(DoCannedCycleMove(true))
|
||||
cannedCycleMoveCount++;
|
||||
return false;
|
||||
|
||||
|
@ -503,7 +569,7 @@ bool GCodes::DoSingleZProbe()
|
|||
moveToDo[DRIVES] = platform->HomeFeedRate(Z_AXIS);
|
||||
action[DRIVES] = true;
|
||||
reprap.GetMove()->SetZProbing(false);
|
||||
if(DoCannedCycleMove(moveToDo, action, false))
|
||||
if(DoCannedCycleMove(false))
|
||||
cannedCycleMoveCount++;
|
||||
return false;
|
||||
|
||||
|
@ -802,20 +868,6 @@ void GCodes::LoadMoveBufferFromGCode(GCodeBuffer *gb)
|
|||
moveBuffer[DRIVES] = gFeedRate; // We always set it, as Move may have modified the last one.
|
||||
}
|
||||
|
||||
// This sets positions. I.e. it handles G92.
|
||||
|
||||
bool GCodes::SetPositions(GCodeBuffer *gb)
|
||||
{
|
||||
if(!AllMovesAreFinishedAndMoveBufferIsLoaded())
|
||||
return false;
|
||||
|
||||
LoadMoveBufferFromGCode(gb);
|
||||
|
||||
reprap.GetMove()->SetPositions(moveBuffer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Does what it says.
|
||||
|
||||
bool GCodes::DisableDrives()
|
||||
|
@ -1281,6 +1333,10 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb)
|
|||
case 205: //M205 advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk
|
||||
break;
|
||||
|
||||
case 206: // Offset axes
|
||||
result = OffsetAxes(gb);
|
||||
break;
|
||||
|
||||
case 208: // Set maximum axis lengths
|
||||
for(int8_t axis = 0; axis < AXES; axis++)
|
||||
{
|
||||
|
|
7
GCodes.h
7
GCodes.h
|
@ -81,7 +81,7 @@ class GCodes
|
|||
private:
|
||||
|
||||
bool AllMovesAreFinishedAndMoveBufferIsLoaded();
|
||||
bool DoCannedCycleMove(float moveToDo[], bool action[], bool ce);
|
||||
bool DoCannedCycleMove(bool ce);
|
||||
bool ActOnGcode(GCodeBuffer* gb);
|
||||
bool SetUpMove(GCodeBuffer* gb);
|
||||
bool DoDwell(GCodeBuffer *gb);
|
||||
|
@ -102,6 +102,7 @@ class GCodes
|
|||
void WriteGCodeToFile(GCodeBuffer *gb);
|
||||
bool SendConfigToLine();
|
||||
void WriteHTMLToFile(char b, GCodeBuffer *gb);
|
||||
bool OffsetAxes(GCodeBuffer *gb);
|
||||
|
||||
int8_t Heater(int8_t head);
|
||||
Platform* platform;
|
||||
|
@ -123,6 +124,10 @@ class GCodes
|
|||
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 action[DRIVES+1];
|
||||
bool offSetSet;
|
||||
float distanceScale;
|
||||
FileStore* fileBeingPrinted;
|
||||
FileStore* fileToPrint;
|
||||
|
|
6
Move.cpp
6
Move.cpp
|
@ -953,8 +953,8 @@ MovementProfile DDA::Init(LookAhead* lookAhead, float& u, float& v)
|
|||
if(velocity <= 0.0)
|
||||
{
|
||||
velocity = 1.0;
|
||||
if(reprap.Debug())
|
||||
platform->Message(HOST_MESSAGE, "DDA.Init(): Zero or negative initial velocity!\n");
|
||||
// if(reprap.Debug())
|
||||
// platform->Message(HOST_MESSAGE, "DDA.Init(): Zero or negative initial velocity!\n");
|
||||
}
|
||||
|
||||
// How far have we gone?
|
||||
|
@ -1052,7 +1052,7 @@ void DDA::Step(bool noTest)
|
|||
if(!active && noTest)
|
||||
{
|
||||
for(int8_t drive = 0; drive < DRIVES; drive++)
|
||||
move->liveCoordinates[drive] = myLookAheadEntry->MachineToEndPoint(drive);
|
||||
move->liveCoordinates[drive] = myLookAheadEntry->MachineToEndPoint(drive); // Don't use SetLiveCoordinates because that applies the transform
|
||||
move->liveCoordinates[DRIVES] = myLookAheadEntry->FeedRate();
|
||||
myLookAheadEntry->Release();
|
||||
platform->SetInterrupt(STANDBY_INTERRUPT_RATE);
|
||||
|
|
13
Move.h
13
Move.h
|
@ -172,11 +172,12 @@ class Move
|
|||
void InverseTransform(float move[]);
|
||||
void Diagnostics();
|
||||
float ComputeCurrentCoordinate(int8_t drive, LookAhead* la, DDA* runningDDA);
|
||||
void SetLiveCoordinates(float coords[]);
|
||||
|
||||
friend class DDA;
|
||||
|
||||
protected:
|
||||
float liveCoordinates[DRIVES + 1];
|
||||
// protected:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
@ -193,6 +194,7 @@ class Move
|
|||
LookAhead* LookAheadRingGet();
|
||||
int8_t GetMovementType(long sp[], long ep[]);
|
||||
|
||||
float liveCoordinates[DRIVES + 1];
|
||||
|
||||
Platform* platform;
|
||||
GCodes* gCodes;
|
||||
|
@ -382,6 +384,13 @@ inline void Move::LiveCoordinates(float m[])
|
|||
InverseTransform(m);
|
||||
}
|
||||
|
||||
inline void Move::SetLiveCoordinates(float coords[])
|
||||
{
|
||||
for(int8_t drive = 0; drive <= DRIVES; drive++)
|
||||
liveCoordinates[drive] = coords[drive];
|
||||
Transform(liveCoordinates);
|
||||
}
|
||||
|
||||
// To wait until all the current moves in the buffers are
|
||||
// complete, call this function repeatedly and wait for it to
|
||||
// return true. Then do whatever you wanted to do after all
|
||||
|
|
37
Platform.cpp
37
Platform.cpp
|
@ -64,6 +64,7 @@ void Platform::Init()
|
|||
compatibility = me;
|
||||
|
||||
line->Init();
|
||||
messageIndent = 0;
|
||||
|
||||
//network->Init();
|
||||
|
||||
|
@ -213,7 +214,6 @@ void Platform::StartNetwork()
|
|||
}
|
||||
|
||||
|
||||
//int zcount; // NASTY - FIX ME
|
||||
|
||||
void Platform::Spin()
|
||||
{
|
||||
|
@ -229,12 +229,6 @@ void Platform::Spin()
|
|||
lastTime = Time();
|
||||
ClassReport("Platform", longWait);
|
||||
|
||||
// zcount++;
|
||||
// if(zcount > 30)
|
||||
// {
|
||||
// zcount = 0;
|
||||
// SerialUSB.println(GetRawZHeight());
|
||||
// }
|
||||
}
|
||||
|
||||
//*****************************************************************************************************************
|
||||
|
@ -280,7 +274,9 @@ void Platform::PrintMemoryUsage()
|
|||
char *heapend=sbrk(0);
|
||||
register char * stack_ptr asm ("sp");
|
||||
struct mallinfo mi=mallinfo();
|
||||
snprintf(scratchString, STRING_LENGTH, "\nMemory usage\nDynamic ram used: %d\n",mi.uordblks);
|
||||
Message(HOST_MESSAGE, "\n");
|
||||
Message(HOST_MESSAGE, "Memory usage:\n\n");
|
||||
snprintf(scratchString, STRING_LENGTH, "Dynamic ram used: %d\n",mi.uordblks);
|
||||
Message(HOST_MESSAGE, scratchString);
|
||||
snprintf(scratchString, STRING_LENGTH, "Program static ram used: %d\n",&_end - ramstart);
|
||||
Message(HOST_MESSAGE, scratchString);
|
||||
|
@ -807,6 +803,10 @@ void Platform::ReturnFileStore(FileStore* fs)
|
|||
}
|
||||
}
|
||||
|
||||
void Platform::SetMessageIndent(uint8_t i)
|
||||
{
|
||||
messageIndent = i;
|
||||
}
|
||||
|
||||
void Platform::Message(char type, char* message)
|
||||
{
|
||||
|
@ -831,6 +831,8 @@ void Platform::Message(char type, char* message)
|
|||
// m->Close();
|
||||
// } else
|
||||
// line->Write("Can't open message file.\n");
|
||||
for(uint8_t i = 0; i < messageIndent; i++)
|
||||
line->Write(' ');
|
||||
line->Write(message);
|
||||
}
|
||||
}
|
||||
|
@ -865,6 +867,8 @@ void Line::Init()
|
|||
extern "C"
|
||||
{
|
||||
|
||||
//void ResetEther();
|
||||
|
||||
// Transmit data to the Network
|
||||
|
||||
void RepRapNetworkSendOutput(char* data, int length, void* pbuf, void* pcb, void* hs);
|
||||
|
@ -914,8 +918,12 @@ bool RepRapNetworkHasALiveClient()
|
|||
|
||||
Network::Network()
|
||||
{
|
||||
active = false;
|
||||
|
||||
ethPinsInit();
|
||||
|
||||
//ResetEther();
|
||||
|
||||
// Construct the ring buffer
|
||||
|
||||
netRingAddPointer = new NetRing(NULL);
|
||||
|
@ -950,15 +958,22 @@ void Network::CleanRing()
|
|||
|
||||
void Network::Init()
|
||||
{
|
||||
// alternateInput = NULL;
|
||||
// alternateOutput = NULL;
|
||||
init_ethernet(reprap.GetPlatform()->IPAddress(), reprap.GetPlatform()->NetMask(), reprap.GetPlatform()->GateWay());
|
||||
CleanRing();
|
||||
Reset();
|
||||
if(!NETWORK) // NETWORK needs to be true to turn on the ethernet. It is defined in Configuration.h
|
||||
return;
|
||||
init_ethernet(reprap.GetPlatform()->IPAddress(), reprap.GetPlatform()->NetMask(), reprap.GetPlatform()->GateWay());
|
||||
active = true;
|
||||
}
|
||||
|
||||
void Network::Spin()
|
||||
{
|
||||
if(!active)
|
||||
{
|
||||
//ResetEther();
|
||||
return;
|
||||
}
|
||||
|
||||
// Keep the Ethernet running
|
||||
|
||||
ethernet_task();
|
||||
|
|
|
@ -97,7 +97,7 @@ Licence: GPL
|
|||
|
||||
// AXES
|
||||
|
||||
#define AXIS_LENGTHS {210, 200, 120} // mm
|
||||
#define AXIS_LENGTHS {210, 195, 140} // mm
|
||||
#define HOME_FEEDRATES {50.0, 50.0, 1.0} // mm/sec
|
||||
#define HEAD_OFFSETS {0.0, 0.0, 0.0}
|
||||
|
||||
|
@ -163,7 +163,7 @@ Licence: GPL
|
|||
|
||||
#define HTTP_STATE_SIZE 5
|
||||
|
||||
#define IP_ADDRESS {192, 168, 1, 10} // Need some sort of default...
|
||||
#define IP_ADDRESS {192, 168, 1, 14} // Need some sort of default...
|
||||
#define NET_MASK {255, 255, 255, 0}
|
||||
#define GATE_WAY {192, 168, 1, 1}
|
||||
|
||||
|
@ -290,6 +290,7 @@ private:
|
|||
int8_t status;
|
||||
NetRing* netRingGetPointer;
|
||||
NetRing* netRingAddPointer;
|
||||
bool active;
|
||||
};
|
||||
|
||||
// This class handles serial I/O - typically via USB
|
||||
|
@ -440,6 +441,7 @@ class Platform
|
|||
|
||||
void Message(char type, char* message); // Send a message. Messages may simply flash an LED, or,
|
||||
// say, display the messages on an LCD. This may also transmit the messages to the host.
|
||||
void SetMessageIndent(uint8_t i);
|
||||
|
||||
// Movement
|
||||
|
||||
|
@ -564,6 +566,7 @@ class Platform
|
|||
// Serial/USB
|
||||
|
||||
Line* line;
|
||||
uint8_t messageIndent;
|
||||
|
||||
// Files
|
||||
|
||||
|
|
Binary file not shown.
|
@ -176,16 +176,28 @@ void RepRap::Init()
|
|||
move->Init();
|
||||
heat->Init();
|
||||
active = true;
|
||||
|
||||
platform->StartNetwork();
|
||||
|
||||
platform->Message(HOST_MESSAGE, NAME);
|
||||
platform->Message(HOST_MESSAGE, " Version ");
|
||||
platform->Message(HOST_MESSAGE, VERSION);
|
||||
platform->Message(HOST_MESSAGE, ", dated ");
|
||||
platform->Message(HOST_MESSAGE, DATE);
|
||||
platform->Message(HOST_MESSAGE, ".\n\nExecuting ");
|
||||
platform->Message(HOST_MESSAGE, platform->GetConfigFile());
|
||||
platform->Message(HOST_MESSAGE, ":\n\n");
|
||||
platform->SetMessageIndent(2);
|
||||
gCodes->RunConfigurationGCodes();
|
||||
while(gCodes->PrintingAFile()) // Wait till the file is finished
|
||||
Spin();
|
||||
platform->StartNetwork(); // Need to do this here, as the configuration GCodes may set IP address etc.
|
||||
|
||||
// platform->StartNetwork(); // Need to do this here, as the configuration GCodes may set IP address etc.
|
||||
|
||||
platform->Message(HOST_MESSAGE, "\n");
|
||||
platform->SetMessageIndent(0);
|
||||
platform->Message(HOST_MESSAGE, NAME);
|
||||
platform->Message(HOST_MESSAGE, " version: ");
|
||||
platform->Message(HOST_MESSAGE, VERSION);
|
||||
platform->Message(HOST_MESSAGE, " dated: ");
|
||||
platform->Message(HOST_MESSAGE, DATE);
|
||||
platform->Message(HOST_MESSAGE, " Started\n");
|
||||
platform->Message(HOST_MESSAGE, " is up and running.\n");
|
||||
}
|
||||
|
||||
void RepRap::Exit()
|
||||
|
|
12
Reprap.h
12
Reprap.h
|
@ -57,7 +57,17 @@ inline Heat* RepRap::GetHeat() { return heat; }
|
|||
inline GCodes* RepRap::GetGCodes() { return gCodes; }
|
||||
inline Webserver* RepRap::GetWebserver() { return webserver; }
|
||||
inline bool RepRap::Debug() { return debug; }
|
||||
inline void RepRap::SetDebug(bool d) { debug = d; if(debug) platform->PrintMemoryUsage(); }
|
||||
|
||||
inline void RepRap::SetDebug(bool d)
|
||||
{
|
||||
debug = d;
|
||||
if(debug)
|
||||
{
|
||||
platform->Message(HOST_MESSAGE, "Debugging enabled\n");
|
||||
platform->PrintMemoryUsage();
|
||||
}
|
||||
}
|
||||
|
||||
inline void RepRap::Interrupt() { move->Interrupt(); }
|
||||
|
||||
|
||||
|
|
Reference in a new issue