Files
2023-05-16 09:18:06 +03:00

304 lines
7.6 KiB
C++

#pragma once
#include <cstdint>
#include <string>
#include "grbl.h"
namespace iosender {
struct Color {
union {
float r, g, b, a;
};
float values[4];
};
class GrblConstants {
public:
static const uint8_t CMD_EXIT = 0x03; // ctrl-C
static const uint8_t CMD_RESET = 0x18; // ctrl-X
static const uint8_t CMD_STOP = 0x19; // ctrl-Y
static const uint8_t CMD_STATUS_REPORT = 0x80;
static const uint8_t CMD_CYCLE_START = 0x81;
static const uint8_t CMD_FEED_HOLD = 0x82;
static const uint8_t CMD_GCODE_REPORT = 0x83;
static const uint8_t CMD_SAFETY_DOOR = 0x84;
static const uint8_t CMD_JOG_CANCEL = 0x85;
static const uint8_t CMD_STATUS_REPORT_ALL = 0x87;
static const uint8_t CMD_OPTIONAL_STOP_TOGGLE = 0x88;
static const uint8_t CMD_SINGLE_BLOCK_TOGGLE = 0x89;
static const uint8_t CMD_OVERRIDE_FAN0_TOGGLE = 0x8A;
static const uint8_t CMD_FEED_OVR_RESET = 0x90;
static const uint8_t CMD_FEED_OVR_COARSE_PLUS = 0x91;
static const uint8_t CMD_FEED_OVR_COARSE_MINUS = 0x92;
static const uint8_t CMD_FEED_OVR_FINE_PLUS = 0x93;
static const uint8_t CMD_FEED_OVR_FINE_MINUS = 0x94;
static const uint8_t CMD_RAPID_OVR_RESET = 0x95;
static const uint8_t CMD_RAPID_OVR_MEDIUM = 0x96;
static const uint8_t CMD_RAPID_OVR_LOW = 0x97;
static const uint8_t CMD_SPINDLE_OVR_RESET = 0x99;
static const uint8_t CMD_SPINDLE_OVR_COARSE_PLUS = 0x9A;
static const uint8_t CMD_SPINDLE_OVR_COARSE_MINUS = 0x9B;
static const uint8_t CMD_SPINDLE_OVR_FINE_PLUS = 0x9C;
static const uint8_t CMD_SPINDLE_OVR_FINE_MINUS = 0x9D;
static const uint8_t CMD_SPINDLE_OVR_STOP = 0x9E;
static const uint8_t CMD_COOLANT_FLOOD_OVR_TOGGLE = 0xA0;
static const uint8_t CMD_COOLANT_MIST_OVR_TOGGLE = 0xA1;
static const uint8_t CMD_PID_REPORT = 0xA2;
static const uint8_t CMD_TOOL_ACK = 0xA3;
static const uint8_t CMD_PROBE_CONNECTED_TOGGLE = 0xA4;
static const std::string CMD_STATUS_REPORT_LEGACY;
static const std::string CMD_CYCLE_START_LEGACY;
static const std::string CMD_FEED_HOLD_LEGACY;
static const std::string CMD_UNLOCK;
static const std::string CMD_HOMING;
static const std::string CMD_CHECK;
static const std::string CMD_GETSETTINGS;
static const std::string CMD_GETSETTINGS_ALL;
static const std::string CMD_GETPARSERSTATE;
static const std::string CMD_GETINFO;
static const std::string CMD_GETINFO_EXTENDED;
static const std::string CMD_GETNGCPARAMETERS;
static const std::string CMD_GETSTARTUPLINES;
static const std::string CMD_GETSETTINGSDETAILS;
static const std::string CMD_GETSETTINGSGROUPS;
static const std::string CMD_GETALARMCODES;
static const std::string CMD_GETERRORCODES;
static const std::string CMD_PROGRAM_DEMARCATION;
static const std::string CMD_SDCARD_MOUNT;
static const std::string CMD_SDCARD_DIR;
static const std::string CMD_SDCARD_DIR_ALL;
static const std::string CMD_SDCARD_REWIND;
static const std::string CMD_SDCARD_RUN;
static const std::string CMD_SDCARD_UNLINK;
static const std::string CMD_SDCARD_DUMP;
static const std::string FORMAT_METRIC;
static const std::string FORMAT_IMPERIAL;
static const std::string NO_TOOL;
static const std::string THCSIGNALS; // Keep in sync with THCSignals enum below!!
static const int X_AXIS = 0;
static const int Y_AXIS = 1;
static const int Z_AXIS = 2;
static const int A_AXIS = 3;
static const int B_AXIS = 4;
static const int C_AXIS = 5;
};
enum class CameraMoveMode {
XAxisFirst = 1,
YAxisFirst = 2,
BothAxes = 3
};
enum class GrblStates {
Unknown = 0,
Idle,
Run,
Tool,
Hold,
Home,
Check,
Jog,
Alarm,
Door,
Sleep
};
enum class GrblMode {
Normal = 0,
Laser,
Lathe
};
enum class GrblEncoderMode {
Unknown = 0,
FeedRate = 1,
RapidRate = 2,
SpindleRPM = 3
};
enum class GrblSetting {
PulseMicroseconds = 0,
StepperIdleLockTime = 1,
StepInvertMask = 2,
DirInvertMask = 3,
InvertStepperEnable = 4,
LimitPinsInvertMask = 5,
InvertProbePin = 6,
StatusReportMask = 10,
JunctionDeviation = 11,
ArcTolerance = 12,
ReportInches = 13,
SoftLimitsEnable = 20,
HardLimitsEnable = 21,
HomingEnable = 22,
HomingDirMask = 23,
HomingFeedRate = 24,
HomingSeekRate = 25,
HomingDebounceDelay = 26,
HomingPulloff = 27,
G73Retract = 28,
PulseDelayMicroseconds = 29,
RpmMax = 30,
RpmMin = 31,
Mode = 32, // enum GrblMode
PWMFreq = 33,
PWMOffValue = 34,
PWMMinValue = 35,
PWMMaxValue = 36,
TravelResolutionBase = 100,
MaxFeedRateBase = 110,
AccelerationBase = 120,
MaxTravelBase = 130,
MotorCurrentBase = 140,
};
enum class grblHALSetting {
PulseMicroseconds = 0,
StepperIdleLockTime = 1,
StepInvertMask = 2,
DirInvertMask = 3,
InvertStepperEnable = 4,
LimitPinsInvertMask = 5,
InvertProbePin = 6,
StatusReportMask = 10,
JunctionDeviation = 11,
ArcTolerance = 12,
ReportInches = 13,
ControlInvertMask = 14, // Note: Used for detecting GrblHAL firmware
CoolantInvertMask = 15,
SpindleInvertMask = 16,
ControlPullUpDisableMask = 17,
LimitPullUpDisableMask = 18,
ProbePullUpDisable = 19,
SoftLimitsEnable = 20,
HardLimitsEnable = 21,
HomingEnable = 22,
HomingDirMask = 23,
HomingFeedRate = 24,
HomingSeekRate = 25,
HomingDebounceDelay = 26,
HomingPulloff = 27,
G73Retract = 28,
PulseDelayMicroseconds = 29,
RpmMax = 30,
RpmMin = 31,
Mode = 32, // enum GrblMode
PWMFreq = 33,
PWMOffValue = 34,
PWMMinValue = 35,
PWMMaxValue = 36,
StepperDeenergizeMask = 37,
SpindlePPR = 38,
EnableLegacyRTCommands = 39,
SoftLimitJogging = 40,
HomingLocateCycles = 43,
HomingCycle_1 = 44,
HomingCycle_2 = 45,
HomingCycle_3 = 46,
HomingCycle_4 = 47,
HomingCycle_5 = 48,
HomingCycle_6 = 49,
JogStepSpeed = 50,
JogSlowSpeed = 51,
JogFastSpeed = 52,
JogStepDistance = 53,
JogSlowDistance = 54,
JogFastDistance = 55,
// Per axis settings
TravelResolutionBase = 100,
MaxFeedRateBase = 110,
AccelerationBase = 120,
MaxTravelBase = 130,
MotorCurrentBase = 140,
MicroStepsBase = 150,
StallGuardBase = 200,
// End per axis settings
ToolChangeMode = 341
};
enum class StreamingState {
NoFile = 0,
Idle,
Send,
SendMDI,
Home,
Halted,
FeedHold,
ToolChange,
Start,
Stop,
Paused,
JobFinished,
Reset,
AwaitResetAck,
Disabled,
Error
};
enum class HomedState {
Unknown = 0,
NotHomed,
Homed
};
// Keep in sync with GrblInfo.SignalLetters constant below
enum class Signals : int {
Off = 0,
LimitX = 1 << 0,
LimitY = 1 << 1,
LimitZ = 1 << 2,
LimitA = 1 << 3,
LimitB = 1 << 4,
LimitC = 1 << 5,
LimitU = 1 << 6,
LimitV = 1 << 7,
LimitW = 1 << 8,
EStop = 1 << 9,
Probe = 1 << 10,
Reset = 1 << 11,
SafetyDoor = 1 << 12,
Hold = 1 << 13,
CycleStart = 1 << 14,
BlockDelete = 1 << 15,
OptionalStop = 1 << 16,
ProbeDisconnected = 1 << 17,
MotorWarning = 1 << 18,
MotorFault = 1 << 19
};
enum class THCSignals : int {
Off = 0,
ArcOk = 1 << 0,
THCEnabled = 1 << 1,
THCActive = 1 << 2,
TorchOn = 1 << 3,
OhmicProbe = 1 << 4,
VelocityLock = 1 << 5,
VoidLock = 1 << 6,
Down = 1 << 7,
Up = 1 << 8
};
struct GrblState {
GrblStates State;
int Substate;
int LastAlarm;
int Error;
Color color;
bool MPG;
};
class Grbl {
public:
static void Reset();
};
}