1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
/*
* GCodeMachineState.h
*
* Created on: 15 Nov 2016
* Author: David
*/
#ifndef SRC_GCODES_GCODEMACHINESTATE_H_
#define SRC_GCODES_GCODEMACHINESTATE_H_
#include <cstdint>
#include "Configuration.h"
#include "Storage/FileData.h"
// Enumeration to list all the possible states that the Gcode processing machine may be in
enum class GCodeState : uint8_t
{
normal, // not doing anything and ready to process a new GCode
waitingForMoveToComplete, // doing a homing move, so we must wait for it to finish before processing another GCode
homing,
setBed1,
setBed2,
setBed3,
toolChange1,
toolChange2,
toolChange3,
pausing1,
pausing2,
resuming1,
resuming2,
resuming3,
flashing1,
flashing2,
stopping,
sleeping,
gridProbing1,
gridProbing2,
gridProbing3,
gridProbing4
};
// Class to hold the state of gcode execution for some input source
class GCodeMachineState
{
public:
GCodeMachineState();
GCodeMachineState *previous;
float feedrate;
FileData fileState;
uint32_t lockedResources;
GCodeState state;
bool drivesRelative;
bool axesRelative;
bool doingFileMacro;
static GCodeMachineState *Allocate()
post(!result.IsLive(); result.state == GCodeState::normal);
static void Release(GCodeMachineState *ms);
static unsigned int GetNumAllocated() { return numAllocated; }
static unsigned int GetNumInUse();
private:
static GCodeMachineState *freeList;
static unsigned int numAllocated;
};
#endif /* SRC_GCODES_GCODEMACHINESTATE_H_ */
|