mirror of
https://github.com/grblHAL/core.git
synced 2026-02-06 00:52:35 +08:00
Added tool name, pocket number and some lathe specific data fields to the $# tool output when available from the tool table. If name is available it will be output as a push message on M6 if there is no message in the same block. Added support for directory up, .., to VFS. Added new option to $650 - File systems options to enable hierarchical listing of files and directories via $F and $F+ commands.
1176 lines
39 KiB
C
1176 lines
39 KiB
C
/*
|
|
settings.h - non-volatile storage configuration handling
|
|
|
|
Part of grblHAL
|
|
|
|
Copyright (c) 2017-2025 Terje Io
|
|
Copyright (c) 2011-2016 Sungeun K. Jeon for Gnea Research LLC
|
|
Copyright (c) 2009-2011 Simen Svale Skogsrud
|
|
|
|
grblHAL is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
grblHAL is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with grblHAL. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef _SETTINGS_H_
|
|
#define _SETTINGS_H_
|
|
|
|
#include "config.h"
|
|
#include "system.h"
|
|
#include "stream.h"
|
|
#include "plugins.h"
|
|
|
|
// Version of the persistent storage data. Always stored in byte 0 of non-volatile storage.
|
|
#define SETTINGS_VERSION 23 // NOTE: Check settings_reset() when moving to next version.
|
|
|
|
// Define axis settings numbering scheme. Starts at Setting_AxisSettingsBase, every INCREMENT, over N_SETTINGS.
|
|
#define AXIS_SETTINGS_INCREMENT 10 // Must be greater than the number of axis settings.
|
|
|
|
// Define encoder settings numbering scheme. Starts at Setting_EncoderSettingsBase, every INCREMENT, over N_SETTINGS.
|
|
// Not referenced by the core.
|
|
#define ENCODER_N_SETTINGS_MAX 5 // NOTE: This is the maximum number of encoders allowed.
|
|
#define ENCODER_SETTINGS_INCREMENT 10
|
|
|
|
#define SETTINGS_HARD_RESET_REQUIRED "\\n\\nNOTE: A hard reset of the controller is required after changing this setting."
|
|
|
|
#define PASSWORD_MASK "********"
|
|
|
|
typedef enum {
|
|
Setting_PulseMicroseconds = 0,
|
|
Setting_StepperIdleLockTime = 1,
|
|
Setting_StepInvertMask = 2,
|
|
Setting_DirInvertMask = 3,
|
|
Setting_InvertStepperEnable = 4,
|
|
Setting_LimitPinsInvertMask = 5,
|
|
Setting_InvertProbePin = 6,
|
|
Setting_SpindlePWMBehaviour = 7, // Deprecated - replaced by Setting_SpindlePWMOptions flag
|
|
Setting_GangedDirInvertMask = 8,
|
|
Setting_SpindlePWMOptions = 9,
|
|
Setting_StatusReportMask = 10,
|
|
Setting_JunctionDeviation = 11,
|
|
Setting_ArcTolerance = 12,
|
|
Setting_ReportInches = 13,
|
|
Setting_ControlInvertMask = 14,
|
|
Setting_CoolantInvertMask = 15,
|
|
Setting_SpindleInvertMask = 16,
|
|
Setting_ControlPullUpDisableMask = 17,
|
|
Setting_LimitPullUpDisableMask = 18,
|
|
Setting_ProbePullUpDisable = 19,
|
|
Setting_SoftLimitsEnable = 20,
|
|
Setting_HardLimitsEnable = 21,
|
|
Setting_HomingEnable = 22,
|
|
Setting_HomingDirMask = 23,
|
|
Setting_HomingFeedRate = 24,
|
|
Setting_HomingSeekRate = 25,
|
|
Setting_HomingDebounceDelay = 26,
|
|
Setting_HomingPulloff = 27,
|
|
Setting_G73Retract = 28,
|
|
Setting_PulseDelayMicroseconds = 29,
|
|
Setting_RpmMax = 30,
|
|
Setting_RpmMin = 31,
|
|
Setting_Mode = 32,
|
|
Setting_PWMFreq = 33,
|
|
Setting_PWMOffValue = 34,
|
|
Setting_PWMMinValue = 35,
|
|
Setting_PWMMaxValue = 36,
|
|
Setting_SteppersEnergize = 37,
|
|
Setting_SpindlePPR = 38,
|
|
Setting_EnableLegacyRTCommands = 39,
|
|
Setting_JogSoftLimited = 40,
|
|
Setting_ParkingEnable = 41,
|
|
Setting_ParkingAxis = 42,
|
|
|
|
Setting_HomingLocateCycles = 43,
|
|
Setting_HomingCycle_1 = 44,
|
|
Setting_HomingCycle_2 = 45,
|
|
Setting_HomingCycle_3 = 46,
|
|
Setting_HomingCycle_4 = 47,
|
|
Setting_HomingCycle_5 = 48,
|
|
Setting_HomingCycle_6 = 49,
|
|
// Optional driver implemented settings for jogging
|
|
Setting_JogStepSpeed = 50,
|
|
Setting_JogSlowSpeed = 51,
|
|
Setting_JogFastSpeed = 52,
|
|
Setting_JogStepDistance = 53,
|
|
Setting_JogSlowDistance = 54,
|
|
Setting_JogFastDistance = 55,
|
|
//
|
|
Setting_ParkingPulloutIncrement = 56,
|
|
Setting_ParkingPulloutRate = 57,
|
|
Setting_ParkingTarget = 58,
|
|
Setting_ParkingFastRate = 59,
|
|
|
|
Setting_RestoreOverrides = 60,
|
|
Setting_DoorOptions = 61,
|
|
Setting_SleepEnable = 62,
|
|
Setting_HoldActions = 63,
|
|
Setting_ForceInitAlarm = 64,
|
|
Setting_ProbingFlags = 65,
|
|
// Optional driver implemented settings for piecewise linear spindle PWM algorithm
|
|
Setting_LinearSpindlePiece1 = 66,
|
|
Setting_LinearSpindlePiece2 = 67,
|
|
Setting_LinearSpindlePiece3 = 68,
|
|
Setting_LinearSpindlePiece4 = 69,
|
|
//
|
|
|
|
// Optional driver implemented settings for additional streams
|
|
Setting_NetworkServices = 70,
|
|
Setting_BlueToothDeviceName = 71,
|
|
Setting_BlueToothServiceName = 72,
|
|
Setting_WifiMode = 73,
|
|
Setting_WiFi_STA_SSID = 74,
|
|
Setting_WiFi_STA_Password = 75,
|
|
Setting_WiFi_AP_SSID = 76,
|
|
Setting_WiFi_AP_Password = 77,
|
|
Setting_Wifi_AP_Country = 78,
|
|
Setting_Wifi_AP_Channel = 79,
|
|
//
|
|
|
|
// Optional settings for closed loop spindle speed control
|
|
Setting_SpindlePGain = 80,
|
|
Setting_SpindleIGain = 81,
|
|
Setting_SpindleDGain = 82,
|
|
Setting_SpindleDeadband = 83,
|
|
Setting_SpindleMaxError = 84,
|
|
Setting_SpindleIMaxError = 85,
|
|
Setting_SpindleDMaxError = 86,
|
|
|
|
// Optional settings for closed loop spindle synchronized motion
|
|
Setting_PositionPGain = 90,
|
|
Setting_PositionIGain = 91,
|
|
Setting_PositionDGain = 92,
|
|
Setting_PositionDeadband = 93,
|
|
Setting_PositionMaxError = 94,
|
|
Setting_PositionIMaxError = 95,
|
|
Setting_PositionDMaxError = 96,
|
|
//
|
|
|
|
// Reserving settings in the range 100 - 299 for axis settings.
|
|
Setting_AxisSettingsBase = 100, // Reserved for core settings
|
|
Setting_AxisSettingsMax = Setting_AxisSettingsBase + AXIS_SETTINGS_INCREMENT * 9 + N_AXIS,
|
|
Setting_AxisSettingsBase2 = 200, // Reserved for driver/plugin settings
|
|
Setting_AxisSettingsMax2 = Setting_AxisSettingsBase2 + AXIS_SETTINGS_INCREMENT * 9 + N_AXIS,
|
|
//
|
|
|
|
// Optional driver implemented settings
|
|
|
|
// Normally used for Ethernet
|
|
Setting_Hostname = 300,
|
|
Setting_IpMode = 301,
|
|
Setting_IpAddress = 302,
|
|
Setting_Gateway = 303,
|
|
Setting_NetMask = 304,
|
|
Setting_TelnetPort = 305,
|
|
Setting_HttpPort = 306,
|
|
Setting_WebSocketPort = 307,
|
|
Setting_FtpPort = 308,
|
|
|
|
// Normally used for WiFi Access Point
|
|
Setting_Hostname2 = 310,
|
|
Setting_IpMode2 = 311,
|
|
Setting_IpAddress2 = 312,
|
|
Setting_Gateway2 = 313,
|
|
Setting_NetMask2 = 314,
|
|
Setting_TelnetPort2 = 315,
|
|
Setting_HttpPort2 = 316,
|
|
Setting_WebSocketPort2 = 317,
|
|
Setting_FtpPort2 = 318,
|
|
|
|
// Normally used for WiFi Station
|
|
Setting_Hostname3 = 320,
|
|
Setting_IpMode3 = 321,
|
|
Setting_IpAddress3 = 322,
|
|
Setting_Gateway3 = 323,
|
|
Setting_NetMask3 = 324,
|
|
Setting_TelnetPort3 = 325,
|
|
Setting_HttpPort3 = 326,
|
|
Setting_WebSocketPort3 = 327,
|
|
Setting_FtpPort3 = 328,
|
|
|
|
Setting_AdminPassword = 330,
|
|
Setting_UserPassword = 331,
|
|
Setting_NTPServerURI = 332,
|
|
Setting_NTPServerURI_2 = 333,
|
|
Setting_NTPServerURI_3 = 334,
|
|
Setting_Timezone = 335,
|
|
Setting_DSTActive = 336,
|
|
|
|
Setting_Wifi_AP_BSSID = 337,
|
|
|
|
Setting_TrinamicDriver = 338,
|
|
Setting_TrinamicHoming = 339,
|
|
|
|
Setting_SpindleAtSpeedTolerance = 340,
|
|
Setting_ToolChangeMode = 341,
|
|
Setting_ToolChangeProbingDistance = 342,
|
|
Setting_ToolChangeFeedRate = 343,
|
|
Setting_ToolChangeSeekRate = 344,
|
|
Setting_ToolChangePulloffRate = 345,
|
|
Setting_ToolChangeOptions = 346,
|
|
|
|
Setting_DualAxisLengthFailPercent = 347,
|
|
Setting_DualAxisLengthFailMin = 348,
|
|
Setting_DualAxisLengthFailMax = 349,
|
|
|
|
Setting_THC_Mode = 350,
|
|
Setting_THC_Delay = 351,
|
|
Setting_THC_Threshold = 352,
|
|
Setting_THC_PGain = 353,
|
|
Setting_THC_IGain = 354,
|
|
Setting_THC_DGain = 355,
|
|
Setting_THC_VADThreshold = 356,
|
|
Setting_THC_VoidOverride = 357,
|
|
Setting_Arc_FailTimeout = 358,
|
|
Setting_Arc_RetryDelay = 359,
|
|
Setting_Arc_MaxRetries = 360,
|
|
Setting_Arc_VoltageScale = 361,
|
|
Setting_Arc_VoltageOffset = 362,
|
|
Setting_Arc_HeightPerVolt = 363,
|
|
Setting_Arc_OkHighVoltage = 364,
|
|
Setting_Arc_OkLowVoltage = 365,
|
|
Setting_Arc_VoltagePort = 366,
|
|
Setting_Arc_OkPort = 367,
|
|
Setting_THC_CutterDownPort = 368,
|
|
Setting_THC_CutterUpPort = 369,
|
|
|
|
Settings_IoPort_InvertIn = 370,
|
|
Settings_IoPort_Pullup_Disable = 371,
|
|
Settings_IoPort_InvertOut = 372,
|
|
Settings_IoPort_OD_Enable = 373,
|
|
Settings_ModBus_BaudRate = 374,
|
|
Settings_ModBus_RXTimeout = 375,
|
|
Settings_RotaryAxes = 376,
|
|
Setting_BlueToothInitOK = 377,
|
|
Setting_LaserCoolantOnDelay = 378,
|
|
Setting_LaserCoolantOffDelay = 379,
|
|
Setting_LaserCoolantMinTemp = 380,
|
|
Setting_LaserCoolantMaxTemp = 381,
|
|
Setting_LaserCoolantOffset = 382,
|
|
Setting_LaserCoolantGain = 383,
|
|
Setting_DisableG92Persistence = 384,
|
|
Setting_BlueToothStateInput = 385,
|
|
Setting_FanPort0 = 386,
|
|
Setting_FanPort1 = 387,
|
|
Setting_FanPort2 = 388,
|
|
Setting_FanPort3 = 389,
|
|
Setting_LaserCoolantTempPort = 390,
|
|
Setting_LaserCoolantOkPort = 391,
|
|
Setting_DoorSpindleOnDelay = 392,
|
|
Setting_DoorCoolantOnDelay = 393,
|
|
Setting_SpindleOnDelay = 394,
|
|
Setting_SpindleType = 395,
|
|
Setting_WebUiTimeout = 396,
|
|
Setting_WebUiAutoReportInterval = 397,
|
|
Setting_PlannerBlocks = 398,
|
|
Setting_CANbus_BaudRate = 399,
|
|
|
|
Setting_EncoderSettingsBase = 400, // NOTE: Reserving settings values >= 400 for encoder settings. Up to 449.
|
|
Setting_EncoderSettingsMax = 449,
|
|
|
|
// Reserved for user plugins - do NOT use for public plugins
|
|
Setting_UserDefined_0 = 450,
|
|
Setting_UserDefined_1 = 451,
|
|
Setting_UserDefined_2 = 452,
|
|
Setting_UserDefined_3 = 453,
|
|
Setting_UserDefined_4 = 454,
|
|
Setting_UserDefined_5 = 455,
|
|
Setting_UserDefined_6 = 456,
|
|
Setting_UserDefined_7 = 457,
|
|
Setting_UserDefined_8 = 458,
|
|
Setting_UserDefined_9 = 459,
|
|
|
|
Setting_VFD_ModbusAddress = 460,
|
|
Setting_VFD_RPM_Hz = 461,
|
|
Setting_VFD_10 = 462,
|
|
Setting_VFD_11 = 463,
|
|
Setting_VFD_12 = 464,
|
|
Setting_VFD_13 = 465,
|
|
Setting_VFD_14 = 466,
|
|
Setting_VFD_15 = 467,
|
|
Setting_VFD_16 = 468,
|
|
Setting_VFD_17 = 469,
|
|
Setting_VFD_18 = 470,
|
|
Setting_VFD_19 = 471,
|
|
Setting_VFD_20 = 472,
|
|
Setting_VFD_21 = 473,
|
|
|
|
Setting_VFD_ModbusAddress0 = 476,
|
|
Setting_VFD_ModbusAddress1 = 477,
|
|
Setting_VFD_ModbusAddress2 = 478,
|
|
Setting_VFD_ModbusAddress3 = 479,
|
|
|
|
Setting_Fan0OffDelay = 480,
|
|
Setting_AutoReportInterval = 481,
|
|
Setting_TimeZoneOffset = 482,
|
|
Setting_FanToSpindleLink = 483,
|
|
Setting_UnlockAfterEStop = 484,
|
|
Setting_EnableToolPersistence = 485,
|
|
Setting_OffsetLock = 486,
|
|
Setting_Spindle_OnPort = 487,
|
|
Setting_Spindle_DirPort = 488,
|
|
Setting_Spindle_PWMPort = 489,
|
|
|
|
Setting_Macro0 = 490,
|
|
Setting_MacroBase = Setting_Macro0,
|
|
Setting_Macro1 = 491,
|
|
Setting_Macro2 = 492,
|
|
Setting_Macro3 = 493,
|
|
Setting_Macro4 = 494,
|
|
Setting_Macro5 = 495,
|
|
Setting_Macro6 = 496,
|
|
Setting_Macro7 = 497,
|
|
Setting_Macro8 = 498,
|
|
Setting_Macro9 = 499,
|
|
|
|
Setting_MacroPort0 = 500,
|
|
Setting_MacroPortBase = Setting_MacroPort0,
|
|
Setting_MacroPort1 = 501,
|
|
Setting_MacroPort2 = 502,
|
|
Setting_MacroPort3 = 503,
|
|
Setting_MacroPort4 = 504,
|
|
Setting_MacroPort5 = 505,
|
|
Setting_MacroPort6 = 506,
|
|
Setting_MacroPort7 = 507,
|
|
Setting_MacroPort8 = 508,
|
|
Setting_MacroPort9 = 509,
|
|
|
|
Setting_SpindleEnable0 = 510,
|
|
Setting_SpindleEnableBase = Setting_SpindleEnable0,
|
|
Setting_SpindleEnable1 = 511,
|
|
Setting_SpindleEnable2 = 512,
|
|
Setting_SpindleEnable3 = 513,
|
|
Setting_SpindleEnable4 = 514,
|
|
Setting_SpindleEnable5 = 515,
|
|
Setting_SpindleEnable6 = 516,
|
|
Setting_SpindleEnable7 = 517,
|
|
Setting_EncoderSpindle = 519,
|
|
|
|
Setting_SpindleToolStart0 = 520,
|
|
Setting_SpindleToolStartBase = Setting_SpindleToolStart0,
|
|
Setting_SpindleToolStart1 = 521,
|
|
Setting_SpindleToolStart2 = 522,
|
|
Setting_SpindleToolStart3 = 523,
|
|
Setting_SpindleToolStart4 = 524,
|
|
Setting_SpindleToolStart5 = 525,
|
|
Setting_SpindleToolStart6 = 526,
|
|
Setting_SpindleToolStart7 = 527,
|
|
|
|
Setting_MQTTBrokerIpAddress = 530,
|
|
Setting_MQTTBrokerPort = 531,
|
|
Setting_MQTTBrokerUserName = 532,
|
|
Setting_MQTTBrokerPassword = 533,
|
|
|
|
Setting_NGCDebugOut = 534,
|
|
Setting_NetworkMAC = 535,
|
|
Setting_RGB_StripLengt0 = 536,
|
|
Setting_RGB_StripLengt1 = 537,
|
|
Setting_RotaryWrap = 538,
|
|
Setting_SpindleOffDelay = 539,
|
|
|
|
Setting_Panel_SpindleSpeed = 540, // NOTE: Reserving settings values 540 to 579 for panel settings.
|
|
Setting_Panel_ModbusAddress = 541,
|
|
Setting_Panel_UpdateInterval = 542,
|
|
Setting_Panel_JogSpeed_x1 = 543,
|
|
Setting_Panel_JogSpeed_x10 = 544,
|
|
Setting_Panel_JogSpeed_x100 = 545,
|
|
Setting_Panel_JogSpeed_Keypad = 546,
|
|
Setting_Panel_JogDistance_x1 = 547,
|
|
Setting_Panel_JogDistance_x10 = 548,
|
|
Setting_Panel_JogDistance_x100 = 549,
|
|
Setting_Panel_JogDistance_Keypad = 550,
|
|
Setting_Panel_JogAccelRamp = 551,
|
|
Setting_Panel_Encoder0_Mode = 552,
|
|
Setting_Panel_Encoder0_Cpd = 553,
|
|
Setting_Panel_Encoder1_Mode = 554,
|
|
Setting_Panel_Encoder1_Cpd = 555,
|
|
Setting_Panel_Encoder2_Mode = 556,
|
|
Setting_Panel_Encoder2_Cpd = 557,
|
|
Setting_Panel_Encoder3_Mode = 558,
|
|
Setting_Panel_Encoder3_Cpd = 559,
|
|
Setting_Panel_SettingsMax = 579,
|
|
|
|
Setting_ButtonAction0 = 590,
|
|
Setting_ButtonActionBase = Setting_ButtonAction0,
|
|
Setting_ButtonAction1 = 591,
|
|
Setting_ButtonAction2 = 592,
|
|
Setting_ButtonAction3 = 593,
|
|
Setting_ButtonAction4 = 594,
|
|
Setting_ButtonAction5 = 595,
|
|
Setting_ButtonAction6 = 596,
|
|
Setting_ButtonAction7 = 597,
|
|
Setting_ButtonAction8 = 598,
|
|
Setting_ButtonAction9 = 599,
|
|
|
|
Setting_ModbusTCPBase = 600, // Reserving settings values 600 to 639 for ModBus TCP (8 sets)
|
|
Setting_ModbusIpAddressBase = Setting_ModbusTCPBase + Setting_ModbusIpAddress,
|
|
Setting_ModbusPortBase = Setting_ModbusTCPBase + Setting_ModbusPort,
|
|
Setting_ModbusIdBase = Setting_ModbusTCPBase + Setting_ModbusId,
|
|
Setting_ModbusTCPMax = 639,
|
|
|
|
Setting_Kinematics0 = 640,
|
|
Setting_Kinematics1 = 641,
|
|
Setting_Kinematics2 = 642,
|
|
Setting_Kinematics3 = 643,
|
|
Setting_Kinematics4 = 644,
|
|
Setting_Kinematics5 = 645,
|
|
Setting_Kinematics6 = 646,
|
|
Setting_Kinematics7 = 647,
|
|
Setting_Kinematics8 = 648,
|
|
Setting_Kinematics9 = 649,
|
|
|
|
Setting_FSOptions = 650,
|
|
|
|
Setting_Stepper1 = 651,
|
|
Setting_Stepper2 = 652,
|
|
Setting_Stepper3 = 653,
|
|
Setting_Stepper4 = 654,
|
|
Setting_Stepper5 = 655,
|
|
Setting_Stepper6 = 656,
|
|
Setting_Stepper7 = 657,
|
|
Setting_Stepper8 = 658,
|
|
Setting_Stepper9 = 659,
|
|
Setting_Stepper10 = 660,
|
|
Setting_Stepper11 = 661,
|
|
Setting_Stepper12 = 662,
|
|
Setting_Stepper13 = 663,
|
|
Setting_Stepper14 = 664,
|
|
Setting_Stepper15 = 665,
|
|
Setting_Stepper16 = 666,
|
|
Setting_Stepper17 = 667,
|
|
Setting_Stepper18 = 668,
|
|
Setting_Stepper19 = 669,
|
|
Setting_Stepper20 = 670,
|
|
|
|
Setting_HomePinsInvertMask = 671,
|
|
Setting_Reserved672 = 672,
|
|
Setting_CoolantOnDelay = 673,
|
|
Setting_THC_Options = 674,
|
|
Setting_MacroATC_Options = 675,
|
|
Setting_ResetActions = 676,
|
|
Setting_StepperSpindle_Options = 677,
|
|
Setting_RelayPortToolsetter = 678,
|
|
Setting_RelayPortProbe2 = 679,
|
|
Setting_StepperEnableDelay = 680,
|
|
Setting_ModBus_StreamFormat = 681,
|
|
Setting_THC_FeedFactor = 682,
|
|
// 683 - 689 - reserved for Sienci
|
|
|
|
Setting_SpindlePWMOptions1 = 709,
|
|
|
|
Setting_SpindleInvertMask1 = 716,
|
|
|
|
Setting_RpmMax1 = 730,
|
|
Setting_RpmMin1 = 731,
|
|
Setting_Mode1 = 732,
|
|
Setting_PWMFreq1 = 733,
|
|
Setting_PWMOffValue1 = 734,
|
|
Setting_PWMMinValue1 = 735,
|
|
Setting_PWMMaxValue1 = 736,
|
|
|
|
// Optional driver implemented settings for piecewise linear spindle PWM algorithm
|
|
Setting_LinearSpindle1Piece1 = 737,
|
|
Setting_LinearSpindle1Piece2 = 738,
|
|
Setting_LinearSpindle1Piece3 = 739,
|
|
Setting_LinearSpindle1Piece4 = 740,
|
|
|
|
Setting_MotorWarningsEnable = 742,
|
|
Setting_MotorWarningsInvert = 743,
|
|
Setting_MotorFaultsEnable = 744,
|
|
Setting_MotorFaultsInvert = 745,
|
|
|
|
Setting_Action0 = 750,
|
|
Setting_ActionBase = Setting_Action0,
|
|
Setting_Action1 = 751,
|
|
Setting_Action2 = 752,
|
|
Setting_Action3 = 753,
|
|
Setting_Action4 = 754,
|
|
Setting_Action5 = 755,
|
|
Setting_Action6 = 756,
|
|
Setting_Action7 = 757,
|
|
Setting_Action8 = 758,
|
|
Setting_Action9 = 759,
|
|
|
|
Setting_ActionPort0 = 760,
|
|
Setting_ActionPortBase = Setting_ActionPort0,
|
|
Setting_ActionPort1 = 761,
|
|
Setting_ActionPort2 = 762,
|
|
Setting_ActionPort3 = 763,
|
|
Setting_ActionPort4 = 764,
|
|
Setting_ActionPort5 = 765,
|
|
Setting_ActionPort6 = 766,
|
|
Setting_ActionPort7 = 767,
|
|
Setting_ActionPort8 = 768,
|
|
Setting_ActionPort9 = 769,
|
|
|
|
Setting_SpindleOffsetX = 770,
|
|
Setting_SpindleOffsetY = 771,
|
|
Setting_SpindleOffsetOptions = 772,
|
|
//
|
|
// 773-779 - reserved for spindle offset settings
|
|
//
|
|
|
|
// Reserving settings in the range 800 - 899 for axis settings.
|
|
Setting_AxisSettingsBase1 = 800, // Reserved for driver/plugin settings
|
|
Setting_AxisSettingsMax1 = Setting_AxisSettingsBase1 + AXIS_SETTINGS_INCREMENT * 9 + N_AXIS,
|
|
//
|
|
|
|
//
|
|
// 900-999 - reserved for automatic tool changers (ATC)
|
|
//
|
|
|
|
// ---
|
|
Setting_SettingsMax,
|
|
Setting_SettingsAll = Setting_SettingsMax,
|
|
// ---
|
|
|
|
// Calculated base values for core stepper settings
|
|
Setting_AxisStepsPerMM = Setting_AxisSettingsBase,
|
|
Setting_AxisMaxRate = Setting_AxisSettingsBase + AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisAcceleration = Setting_AxisSettingsBase + 2 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisMaxTravel = Setting_AxisSettingsBase + 3 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisStepperCurrent = Setting_AxisSettingsBase + 4 * AXIS_SETTINGS_INCREMENT, // Not used by the core
|
|
Setting_AxisMicroSteps = Setting_AxisSettingsBase + 5 * AXIS_SETTINGS_INCREMENT, // Not used by the core
|
|
Setting_AxisBacklash = Setting_AxisSettingsBase + 6 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisAutoSquareOffset = Setting_AxisSettingsBase + 7 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisHomingFeedRate = Setting_AxisSettingsBase + 8 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisHomingSeekRate = Setting_AxisSettingsBase + 9 * AXIS_SETTINGS_INCREMENT,
|
|
|
|
Setting_AxisJerk = Setting_AxisSettingsBase1,
|
|
|
|
// Calculated base values for driver/plugin stepper settings
|
|
Setting_AxisExtended0 = Setting_AxisSettingsBase2,
|
|
Setting_AxisExtended1 = Setting_AxisSettingsBase2 + AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisExtended2 = Setting_AxisSettingsBase2 + 2 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisExtended3 = Setting_AxisSettingsBase2 + 3 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisExtended4 = Setting_AxisSettingsBase2 + 4 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisExtended5 = Setting_AxisSettingsBase2 + 5 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisExtended6 = Setting_AxisSettingsBase2 + 6 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisExtended7 = Setting_AxisSettingsBase2 + 7 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisExtended8 = Setting_AxisSettingsBase2 + 8 * AXIS_SETTINGS_INCREMENT,
|
|
Setting_AxisExtended9 = Setting_AxisSettingsBase2 + 9 * AXIS_SETTINGS_INCREMENT,
|
|
|
|
// Calculated base values for encoder settings
|
|
Setting_EncoderModeBase = Setting_EncoderSettingsBase + Setting_EncoderMode,
|
|
Setting_EncoderCPRBase = Setting_EncoderSettingsBase + Setting_EncoderCPR,
|
|
Setting_EncoderCPDBase = Setting_EncoderSettingsBase + Setting_EncoderCPD,
|
|
Setting_EncoderDblClickWindowBase = Setting_EncoderSettingsBase + Setting_EncoderDblClickWindow
|
|
} setting_id_t;
|
|
|
|
typedef union {
|
|
uint8_t mask;
|
|
struct {
|
|
uint8_t defaults :1,
|
|
parameters :1,
|
|
startup_lines :1,
|
|
build_info :1,
|
|
driver_parameters :1,
|
|
unassigned :3;
|
|
|
|
};
|
|
} settings_restore_t;
|
|
|
|
extern const settings_restore_t settings_all;
|
|
|
|
typedef char stored_line_t[MAX_STORED_LINE_LENGTH];
|
|
|
|
typedef union {
|
|
uint32_t value;
|
|
struct {
|
|
uint32_t report_inches :1,
|
|
restore_overrides :1,
|
|
dst_active :1, // Daylight savings time
|
|
sleep_enable :1,
|
|
disable_laser_during_hold :1,
|
|
force_initialization_alarm :1,
|
|
legacy_rt_commands :1,
|
|
restore_after_feed_hold :1,
|
|
ngc_debug_out :1,
|
|
g92_is_volatile :1,
|
|
compatibility_level :4,
|
|
no_restore_position_after_M6 :1,
|
|
no_unlock_after_estop :1,
|
|
settings_downgrade :1,
|
|
keep_offsets_on_reset :1,
|
|
tool_change_at_g30 :1,
|
|
tool_change_fast_pulloff :1,
|
|
tool_persistent :1,
|
|
keep_rapids_override_on_reset :1,
|
|
keep_feed_override_on_reset :1,
|
|
unassigned :9;
|
|
};
|
|
} settingflags_t;
|
|
|
|
typedef union {
|
|
uint16_t value;
|
|
struct {
|
|
uint16_t invert_probe_pin :1,
|
|
disable_probe_pullup :1,
|
|
invert_connected_pin :1,
|
|
disable_connected_pullup :1,
|
|
allow_feed_override :1,
|
|
enable_protection :1,
|
|
invert_toolsetter_input :1,
|
|
disable_toolsetter_pullup :1,
|
|
soft_limited :1,
|
|
toolsetter_auto_select :1,
|
|
invert_probe2_input :1,
|
|
probe2_auto_select :1,
|
|
unassigned :4;
|
|
};
|
|
} probeflags_t;
|
|
|
|
typedef union {
|
|
uint16_t mask;
|
|
struct {
|
|
uint16_t machine_position :1,
|
|
buffer_state :1,
|
|
line_numbers :1,
|
|
feed_speed :1,
|
|
pin_state :1,
|
|
work_coord_offset :1,
|
|
overrides :1,
|
|
probe_coordinates :1,
|
|
sync_on_wco_change :1,
|
|
parser_state :1,
|
|
alarm_substate :1,
|
|
run_substate :1,
|
|
when_homing :1,
|
|
distance_to_go :1,
|
|
unassigned :2;
|
|
};
|
|
} reportmask_t;
|
|
|
|
typedef union {
|
|
uint8_t value;
|
|
struct {
|
|
uint8_t ignore_when_idle :1,
|
|
keep_coolant_on :1,
|
|
unassigned :6;
|
|
};
|
|
} safety_door_setting_flags_t;
|
|
|
|
typedef struct {
|
|
safety_door_setting_flags_t flags; // TODO: move to last element in next revision
|
|
float spindle_on_delay; // TODO: change to uint16_t and move to parking_setting_flags_t in next revision
|
|
float coolant_on_delay; // TODO: change to uint16_t and move to parking_setting_flags_t in next revision
|
|
} safety_door_settings_t;
|
|
|
|
typedef union {
|
|
uint8_t value;
|
|
struct {
|
|
uint8_t enabled :1,
|
|
deactivate_upon_init :1,
|
|
enable_override_control :1,
|
|
unassigned :5;
|
|
};
|
|
} parking_setting_flags_t;
|
|
|
|
typedef struct {
|
|
parking_setting_flags_t flags;
|
|
uint8_t axis; // Define which axis that performs the parking motion
|
|
float target; // Parking axis target. In mm, as machine coordinate [-max_travel,0].
|
|
float rate; // Parking fast rate after pull-out in mm/min.
|
|
float pullout_rate; // Pull-out/plunge slow feed rate in mm/min.
|
|
float pullout_increment; // Spindle pull-out and plunge distance in mm. Incremental distance.
|
|
} parking_settings_t;
|
|
|
|
typedef struct {
|
|
pid_values_t pid;
|
|
} position_pid_t; // Used for synchronized motion
|
|
|
|
typedef union {
|
|
uint16_t value;
|
|
struct {
|
|
uint16_t enabled :1,
|
|
single_axis_commands :1,
|
|
init_lock :1,
|
|
force_set_origin :1,
|
|
two_switches :1, // -> limits.flags.two_switches, never set
|
|
manual :1,
|
|
override_locks :1,
|
|
keep_on_reset :1,
|
|
use_limit_switches :1,
|
|
per_axis_feedrates :1,
|
|
nx_scrips_on_homed_only :1,
|
|
unused :5;
|
|
};
|
|
} homing_settings_flags_t;
|
|
|
|
typedef struct {
|
|
float fail_length_percent; // DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT
|
|
float fail_distance_max; // DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX
|
|
float fail_distance_min; // DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN
|
|
} homing_dual_axis_t;
|
|
|
|
typedef struct {
|
|
float pulloff;
|
|
homing_dual_axis_t dual_axis;
|
|
uint16_t debounce_delay;
|
|
homing_settings_flags_t flags;
|
|
axes_signals_t dir_mask;
|
|
uint8_t locate_cycles;
|
|
axes_signals_t cycle[N_AXIS];
|
|
} homing_settings_t;
|
|
|
|
typedef struct {
|
|
axes_signals_t step_invert;
|
|
axes_signals_t dir_invert;
|
|
axes_signals_t ganged_dir_invert; // applied after inversion for the master motor
|
|
axes_signals_t enable_invert;
|
|
axes_signals_t energize;
|
|
#if N_AXIS > 3
|
|
axes_signals_t is_rotary; // rotary axes distances are not scaled in imperial mode
|
|
axes_signals_t rotary_wrap; // rotary axes that allows G28 wrap for faster move to home position
|
|
#endif
|
|
float pulse_microseconds;
|
|
float pulse_delay_microseconds;
|
|
uint16_t idle_lock_time; // If value = 255, steppers do not disable.
|
|
} stepper_settings_t;
|
|
|
|
typedef struct {
|
|
float steps_per_mm;
|
|
float max_rate;
|
|
float acceleration;
|
|
float max_travel;
|
|
float dual_axis_offset;
|
|
float homing_seek_rate;
|
|
float homing_feed_rate;
|
|
float jerk;
|
|
#if ENABLE_BACKLASH_COMPENSATION
|
|
float backlash;
|
|
#endif
|
|
} axis_settings_t;
|
|
|
|
typedef union {
|
|
uint8_t value;
|
|
struct {
|
|
uint8_t hard_enabled :1,
|
|
check_at_init :1,
|
|
jog_soft_limited :1,
|
|
two_switches :1,
|
|
hard_disabled_rotary :1,
|
|
unassigned :3;
|
|
};
|
|
} limit_settings_flags_t;
|
|
|
|
typedef struct {
|
|
limit_settings_flags_t flags;
|
|
axes_signals_t invert;
|
|
axes_signals_t disable_pullup;
|
|
axes_signals_t soft_enabled;
|
|
} limit_settings_t;
|
|
|
|
typedef union {
|
|
uint8_t value;
|
|
uint8_t mask;
|
|
struct {
|
|
uint8_t sd_mount_on_boot :1,
|
|
lfs_hidden :1,
|
|
hierarchical_listing :1,
|
|
unused :5;
|
|
};
|
|
} fs_options_t;
|
|
|
|
typedef union {
|
|
uint8_t value;
|
|
uint8_t mask;
|
|
struct {
|
|
uint8_t g59_1 :1,
|
|
g59_2 :1,
|
|
g59_3 :1,
|
|
unused :5;
|
|
};
|
|
} offset_lock_t;
|
|
|
|
typedef union {
|
|
uint32_t value;
|
|
uint32_t mask;
|
|
struct {
|
|
uint32_t bit0 :1,
|
|
bit1 :1,
|
|
bit2 :1,
|
|
bit3 :1,
|
|
bit4 :1,
|
|
bit5 :1,
|
|
bit6 :1,
|
|
bit7 :1,
|
|
bit8 :1,
|
|
bit9 :1,
|
|
bit10 :1,
|
|
bit11 :1,
|
|
bit12 :1,
|
|
bit13 :1,
|
|
bit14 :1,
|
|
bit15 :1,
|
|
bit16 :1,
|
|
bit17 :1,
|
|
bit18 :1,
|
|
bit19 :1,
|
|
bit20 :1,
|
|
bit21 :1,
|
|
bit22 :1,
|
|
bit23 :1;
|
|
};
|
|
} ioport_bus_t;
|
|
|
|
typedef struct {
|
|
ioport_bus_t invert_in;
|
|
ioport_bus_t pullup_disable_in;
|
|
ioport_bus_t invert_out;
|
|
ioport_bus_t od_enable_out;
|
|
} ioport_signals_t;
|
|
|
|
typedef enum {
|
|
ToolChange_Disabled = 0,
|
|
ToolChange_Manual,
|
|
ToolChange_Manual_G59_3,
|
|
ToolChange_SemiAutomatic,
|
|
ToolChange_Ignore
|
|
} toolchange_mode_t;
|
|
|
|
typedef struct {
|
|
uint8_t length0;
|
|
uint8_t length1;
|
|
} rgb_strip_settings_t;
|
|
|
|
typedef struct {
|
|
toolchange_mode_t mode;
|
|
float feed_rate;
|
|
float seek_rate;
|
|
float pulloff_rate;
|
|
float probing_distance;
|
|
} tool_change_settings_t;
|
|
|
|
typedef union {
|
|
uint8_t value;
|
|
struct {
|
|
uint8_t execute_m6t0 :1,
|
|
error_on_no_macro :1,
|
|
random_toolchanger :1,
|
|
unassigned :5;
|
|
};
|
|
} macro_atc_flags_t;
|
|
|
|
typedef struct {
|
|
uint8_t baud_rate;
|
|
uint8_t stream_format;
|
|
uint8_t rx_timeout;
|
|
} modbus_rtu_settings_t;
|
|
|
|
typedef union {
|
|
uint32_t value;
|
|
struct {
|
|
uint32_t id :8; // = SETTINGS_VERSION, incremented on structure changes.
|
|
uint32_t build :24; // Build date, format YYMMDD.
|
|
};
|
|
} settings_version_t;
|
|
|
|
// Global persistent settings (Stored from byte NVS_ADDR_GLOBAL onwards)
|
|
typedef struct {
|
|
// Settings struct version
|
|
settings_version_t version;
|
|
float junction_deviation;
|
|
float arc_tolerance;
|
|
float g73_retract;
|
|
float timezone;
|
|
uint16_t report_interval;
|
|
uint16_t planner_buffer_blocks;
|
|
machine_mode_t mode;
|
|
tool_change_settings_t tool_change;
|
|
axis_settings_t axis[N_AXIS];
|
|
control_signals_t control_invert;
|
|
control_signals_t control_disable_pullup;
|
|
axes_signals_t home_invert;
|
|
coolant_settings_t coolant;
|
|
uint8_t modbus_baud; // TODO: replace with modbus_rtu_settings_t modbus; in next version
|
|
uint8_t canbus_baud;
|
|
spindle_settings_t spindle;
|
|
spindle_pwm_settings_t pwm_spindle;
|
|
stepper_settings_t steppers;
|
|
reportmask_t status_report; // Mask to indicate desired report data.
|
|
settingflags_t flags; // Contains default boolean settings
|
|
probeflags_t probe;
|
|
rgb_strip_settings_t rgb_strip;
|
|
offset_lock_t offset_lock;
|
|
fs_options_t fs_options;
|
|
limit_settings_t limits;
|
|
parking_settings_t parking;
|
|
safety_door_settings_t safety_door;
|
|
position_pid_t position; // Used for synchronized motion
|
|
ioport_signals_t ioport;
|
|
homing_settings_t homing;
|
|
axes_signals_t motor_warning_enable;
|
|
axes_signals_t motor_warning_invert;
|
|
axes_signals_t motor_fault_enable;
|
|
axes_signals_t motor_fault_invert;
|
|
macro_atc_flags_t macro_atc_flags;
|
|
stepper_spindle_settings_flags_t stepper_spindle_flags;
|
|
uint16_t stepper_enable_delay; // Move to stepper_settings_t
|
|
tool_id_t tool_id;
|
|
serial_format_t modbus_stream_format; // TODO: remove in next version
|
|
char reserved[9]; // Reserved For future expansion
|
|
} settings_t;
|
|
|
|
typedef enum {
|
|
Group_Root = 0, //!< 0
|
|
Group_General, //!< 1
|
|
Group_ControlSignals, //!< 2
|
|
Group_Limits, //!< 3
|
|
Group_Limits_DualAxis, //!< 4
|
|
Group_Coolant, //!< 5
|
|
Group_Spindle, //!< 6
|
|
Group_Spindle_Sync, //!< 7
|
|
Group_Spindle_ClosedLoop, //!< 8
|
|
Group_Toolchange, //!< 9
|
|
Group_Plasma, //!< 10
|
|
Group_Homing, //!< 11
|
|
Group_Probing, //!< 12
|
|
Group_SafetyDoor, //!< 13
|
|
Group_Jogging, //!< 14
|
|
Group_Networking, //!< 15
|
|
Group_Networking_Wifi, //!< 16
|
|
Group_Bluetooth, //!< 17
|
|
Group_AuxPorts, //!< 18
|
|
Group_ModBus, //!< 19
|
|
Group_ModBusUnit0, //!< 20
|
|
Group_ModBusUnit1, //!< 21
|
|
Group_ModBusUnit2, //!< 22
|
|
Group_ModBusUnit3, //!< 23
|
|
Group_ModBusUnit4, //!< 24
|
|
Group_ModBusUnit5, //!< 25
|
|
Group_ModBusUnit6, //!< 26
|
|
Group_ModBusUnit7, //!< 27
|
|
Group_Encoders, //!< 28
|
|
Group_Encoder0, //!< 29
|
|
Group_Encoder1, //!< 30
|
|
Group_Encoder2, //!< 31
|
|
Group_Encoder3, //!< 32
|
|
Group_Encoder4, //!< 33
|
|
Group_UserSettings, //!< 34
|
|
Group_Stepper, //!< 35
|
|
Group_MotorDriver, //!< 36
|
|
Group_VFD, //!< 37
|
|
Group_CANbus, //!< 38
|
|
Group_Embroidery, //!< 39
|
|
Group_Panel, //!< 40
|
|
Group_Kinematics, //!< 41
|
|
Group_Axis, //!< 42
|
|
// NOTE: axis groups MUST be sequential AND last
|
|
Group_Axis0, //!< 43
|
|
Group_XAxis = Group_Axis0, //!< 44
|
|
Group_YAxis, //!< 45
|
|
Group_ZAxis, //!< 46
|
|
#ifdef A_AXIS
|
|
Group_AAxis, //!< 47
|
|
#endif
|
|
#ifdef B_AXIS
|
|
Group_BAxis, //!< 48
|
|
#endif
|
|
#ifdef C_AXIS
|
|
Group_CAxis, //!< 49
|
|
#endif
|
|
#ifdef U_AXIS
|
|
Group_UAxis, //!< 50
|
|
#endif
|
|
#ifdef V_AXIS
|
|
Group_VAxis, //!< 51
|
|
#endif
|
|
Group_Unknown = 99, //!< 99
|
|
Group_All = Group_Root //!< 0
|
|
} setting_group_t;
|
|
|
|
typedef enum {
|
|
Format_Bool = 0,
|
|
Format_Bitfield,
|
|
Format_XBitfield,
|
|
Format_RadioButtons,
|
|
Format_AxisMask,
|
|
Format_Integer, // 32 bit
|
|
Format_Decimal,
|
|
Format_String,
|
|
Format_Password,
|
|
Format_IPv4,
|
|
// For internal use only
|
|
Format_Int8,
|
|
Format_Int16,
|
|
} setting_datatype_t;
|
|
|
|
typedef struct setting_group_detail {
|
|
setting_group_t parent;
|
|
setting_group_t id;
|
|
const char *name;
|
|
bool (*is_available)(const struct setting_group_detail *group);
|
|
} setting_group_detail_t;
|
|
|
|
typedef enum {
|
|
Setting_NonCore = 0,
|
|
Setting_NonCoreFn,
|
|
Setting_IsExtended,
|
|
Setting_IsExtendedFn,
|
|
Setting_IsLegacy,
|
|
Setting_IsLegacyFn,
|
|
Setting_IsExpanded,
|
|
Setting_IsExpandedFn
|
|
} setting_type_t;
|
|
|
|
typedef union {
|
|
uint32_t ivalue;
|
|
float fvalue;
|
|
} setting_limit_t;
|
|
|
|
typedef union {
|
|
uint8_t value;
|
|
struct {
|
|
uint8_t reboot_required :1,
|
|
allow_null :1,
|
|
subgroups :1,
|
|
increment :4,
|
|
hidden :1; //!< Hide from reporting, allow setting
|
|
};
|
|
} setting_detail_flags_t;
|
|
|
|
typedef struct setting_detail {
|
|
setting_id_t id;
|
|
setting_group_t group;
|
|
const char *name;
|
|
const char *unit;
|
|
setting_datatype_t datatype;
|
|
const char *format;
|
|
const char *min_value;
|
|
const char *max_value;
|
|
setting_type_t type;
|
|
void *value;
|
|
void *get_value;
|
|
bool (*is_available)(const struct setting_detail *setting, uint_fast16_t offset);
|
|
setting_detail_flags_t flags;
|
|
} setting_detail_t;
|
|
|
|
typedef struct {
|
|
setting_id_t id;
|
|
const char *description;
|
|
} setting_descr_t;
|
|
|
|
typedef union {
|
|
uint8_t value;
|
|
struct {
|
|
uint8_t spindle :1,
|
|
unassigned :7;
|
|
};
|
|
} settings_changed_flags_t;
|
|
|
|
typedef status_code_t (*setting_set_int_ptr)(setting_id_t id, uint_fast16_t value);
|
|
typedef status_code_t (*setting_set_float_ptr)(setting_id_t id, float value);
|
|
typedef status_code_t (*setting_set_string_ptr)(setting_id_t id, char *value);
|
|
typedef uint32_t (*setting_get_int_ptr)(setting_id_t id);
|
|
typedef float (*setting_get_float_ptr)(setting_id_t id);
|
|
typedef char *(*setting_get_string_ptr)(setting_id_t id);
|
|
typedef bool (*setting_output_ptr)(const setting_detail_t *setting, uint_fast16_t offset, void *data);
|
|
|
|
typedef void (*setting_changed_ptr)(setting_id_t id);
|
|
|
|
/*! \brief Pointer to callback function to be called when settings are loaded or changed.
|
|
\param settings pointer to \a settings_t struct containing the settings.
|
|
\param changed a \a settings_changed_flags_t union containing the changed setting groups.
|
|
*/
|
|
typedef void (*settings_changed_ptr)(settings_t *settings, settings_changed_flags_t changed);
|
|
|
|
typedef void (*driver_settings_load_ptr)(void);
|
|
typedef void (*driver_settings_save_ptr)(void);
|
|
typedef void (*driver_settings_restore_ptr)(void);
|
|
typedef bool (*driver_settings_iterator_ptr)(const setting_detail_t *setting, setting_output_ptr callback, void *data);
|
|
typedef setting_id_t (*driver_settings_normalize_ptr)(setting_id_t id);
|
|
|
|
typedef struct setting_details {
|
|
const bool is_core;
|
|
const uint8_t n_groups;
|
|
const setting_group_detail_t *groups;
|
|
const uint16_t n_settings;
|
|
const setting_detail_t *settings;
|
|
const uint16_t n_descriptions;
|
|
const setting_descr_t *descriptions;
|
|
// struct setting_details *(*on_get_settings)(void);
|
|
struct setting_details *next;
|
|
settings_changed_ptr on_changed;
|
|
driver_settings_save_ptr save;
|
|
driver_settings_load_ptr load;
|
|
driver_settings_restore_ptr restore;
|
|
driver_settings_iterator_ptr iterator;
|
|
driver_settings_normalize_ptr normalize;
|
|
} setting_details_t;
|
|
|
|
// NOTE: this must match the signature of on_get_settings in the setting_details_t structure above!
|
|
typedef setting_details_t *(*on_get_settings_ptr)(void);
|
|
|
|
extern settings_t settings;
|
|
|
|
// Clear settings chain (unlinks plugin/driver settings from core settings)
|
|
void settings_clear (void);
|
|
|
|
// Initialize the configuration subsystem (load settings from persistent storage)
|
|
void settings_init();
|
|
|
|
// Write grblHAL global settings and version number to persistent storage
|
|
void settings_write_global(void);
|
|
|
|
// Helper function to clear and restore persistent storage defaults
|
|
void settings_restore(settings_restore_t restore_flags);
|
|
|
|
// A helper method to set new settings from command line
|
|
status_code_t settings_store_setting(setting_id_t setting, char *svalue);
|
|
|
|
// Writes the protocol line variable as a startup line in persistent storage
|
|
void settings_write_startup_line(uint8_t idx, char *line);
|
|
|
|
// Reads an persistent storage startup line to the protocol line variable
|
|
bool settings_read_startup_line(uint8_t idx, char *line);
|
|
|
|
// Writes build info user-defined string
|
|
void settings_write_build_info(char *line);
|
|
|
|
// Reads build info user-defined string
|
|
bool settings_read_build_info(char *line);
|
|
|
|
// Writes selected coordinate data to persistent storage
|
|
void settings_write_coord_data(coord_system_id_t id, const float (*coord_data)[N_AXIS]);
|
|
|
|
// Reads selected coordinate data from persistent storage
|
|
bool settings_read_coord_data(coord_system_id_t id, const float (*coord_data)[N_AXIS]);
|
|
|
|
// Temporarily override acceleration, if 0 restore to configured setting value
|
|
bool settings_override_acceleration (uint8_t axis, float acceleration);
|
|
|
|
#if ENABLE_JERK_ACCELERATION
|
|
// Temporarily override jerk, if 0 restore to configured setting value.
|
|
bool settings_override_jerk (uint8_t axis, float jerk);
|
|
#endif
|
|
|
|
void settings_register (setting_details_t *details);
|
|
setting_details_t *settings_get_details (void);
|
|
bool settings_is_group_available (setting_group_t group);
|
|
bool settings_iterator (const setting_detail_t *setting, setting_output_ptr callback, void *data);
|
|
const setting_detail_t *setting_get_details (setting_id_t id, setting_details_t **set);
|
|
const char *setting_get_description (setting_id_t id);
|
|
setting_datatype_t setting_datatype_to_external (setting_datatype_t datatype);
|
|
setting_group_t settings_normalize_group (setting_group_t group);
|
|
const setting_group_detail_t *setting_get_group_details (setting_group_t id);
|
|
char *setting_get_value (const setting_detail_t *setting, uint_fast16_t offset);
|
|
uint32_t setting_get_int_value (const setting_detail_t *setting, uint_fast16_t offset);
|
|
float setting_get_float_value (const setting_detail_t *setting, uint_fast16_t offset);
|
|
setting_id_t settings_get_axis_base (setting_id_t id, uint_fast8_t *idx);
|
|
bool setting_is_list (const setting_detail_t *setting);
|
|
bool setting_is_integer (const setting_detail_t *setting);
|
|
void setting_remove_elements (setting_id_t id, uint32_t mask);
|
|
bool settings_add_spindle_type (const char *type);
|
|
limit_signals_t settings_get_homing_source (void);
|
|
|
|
#endif
|