Sheet types init

Fix rebase issues
This commit is contained in:
3d-gussner 2025-01-08 14:00:27 +01:00
parent 26ed278d02
commit e725e1a646
18 changed files with 442 additions and 57 deletions

View File

@ -5839,6 +5839,14 @@ void process_commands()
extended_capabilities_report();
#endif //EXTENDED_CAPABILITIES_REPORT
}
#ifdef STEEL_SHEET_TYPES
if (eeprom_read_byte((uint8_t*)EEPROM_CHECK_SHEET_TYPE) == (uint8_t)ClCheckMode::_Always) {
uint8_t result = lcd_show_multiscreen_message_yes_no_and_wait_P(_T(MSG_SHEET_TYPE_CONTINUE), false, LCD_MIDDLE_BUTTON_CHOICE);
if (result == LCD_MIDDLE_BUTTON_CHOICE) {
print_stop(false, true);
}
}
#endif //STEEL_SHEET_TYPES
break;
/*!
@ -7174,22 +7182,27 @@ void process_commands()
Get and Set Sheet parameters
#### Usage
M850 [ S | Z | L | B | P | A ]
M850 [ S | Z | L | T | A ]
#### Parameters
- `S` - Sheet id [0-7]
- `Z` - Z offset
- `L` - Label [aA-zZ, 0-9 max 7 chars]
- `B` - Bed temp
- `P` - PINDA temp
- `T` - Type
- `0` - Smooth
- `1` - Textured
- `2` - Satin
- `3` - PA Nylon
- `4` - PP
- `A` - Active [0|1]
*/
uint8_t iSel = 0;
uint8_t iSel = 0;
int16_t zraw = 0;
float z_val = 0;
char strLabel[8];
uint8_t iBedC = 0;
uint8_t iPindaC = 0;
#ifdef STEEL_SHEET_TYPES
uint8_t iType = 0;
#endif //STEEL_SHEET_TYPES
bool bIsActive=false;
strLabel[7] = '\0'; // null terminate.
size_t max_sheets = sizeof(EEPROM_Sheets_base->s)/sizeof(EEPROM_Sheets_base->s[0]);
@ -7238,25 +7251,19 @@ void process_commands()
eeprom_read_block(strLabel, EEPROM_Sheets_base->s[iSel].name, sizeof(Sheet::name));
}
if (code_seen('B'))
#ifdef STEEL_SHEET_TYPES
if (code_seen('T'))
{
iBedC = code_value_uint8();
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[iSel].bed_temp, iBedC);
iType = code_value_uint8();
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[iSel].type, iType);
}
else
{
iBedC = eeprom_read_byte(&EEPROM_Sheets_base->s[iSel].bed_temp);
}
if (code_seen('P'))
{
iPindaC = code_value_uint8();
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[iSel].pinda_temp, iPindaC);
}
else
{
iPindaC = eeprom_read_byte(&EEPROM_Sheets_base->s[iSel].pinda_temp);
iType = eeprom_read_byte(&EEPROM_Sheets_base->s[iSel].type);
}
// Reset Sheet type if out of range
if (iType > STEEL_SHEET_TYPES -1) eeprom_update_byte_notify(&EEPROM_Sheets_base->s[iSel].type, 0);
#endif //STEEL_SHEET_TYPES
if (code_seen('A'))
{
@ -7284,10 +7291,10 @@ void process_commands()
SERIAL_PROTOCOL((int)zraw);
SERIAL_PROTOCOLPGM(" L");
SERIAL_PROTOCOL(strLabel);
SERIAL_PROTOCOLPGM(" B");
SERIAL_PROTOCOL((int)iBedC);
SERIAL_PROTOCOLPGM(" P");
SERIAL_PROTOCOL((int)iPindaC);
#ifdef STEEL_SHEET_TYPES
SERIAL_PROTOCOLPGM(" T");
SERIAL_PROTOCOL((int)iType);
#endif //STEEL_SHEET_TYPES
SERIAL_PROTOCOLPGM(" A");
SERIAL_PROTOCOLLN((int)bIsActive);
break;
@ -7417,6 +7424,7 @@ void process_commands()
- M862.4 { P<fw_version> | Q }
- M862.5 { P<gcode_level> | Q }
- M862.6 Not used but reserved by 32-bit
- M862.7 { P<sheet type> | Q }
When run with P<> argument, the check is performed against the input value.
When run with Q argument, the current value is shown.
@ -7501,6 +7509,18 @@ void process_commands()
break;
case ClPrintChecking::_Features: // ~ .6 used by 32-bit
break;
#ifdef STEEL_SHEET_TYPES
case ClPrintChecking::_SheetType: // ~ .7
if(code_seen('P'))
{
uint16_t nSheetType;
nSheetType=(uint16_t)code_value_long();
sheet_type_check(nSheetType);
}
else if(code_seen('Q'))
SERIAL_PROTOCOLLN((int)eeprom_read_byte(&EEPROM_Sheets_base->s[eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))].type));
break;
#endif //STEEL_SHEET_TYPES
default:
break;
}

View File

@ -4,6 +4,9 @@
#include "eeprom.h"
#include "Marlin.h"
#ifdef STEEL_SHEET_TYPES
#include "messages.h"
#endif //STEEL_SHEET_TYPES
#include <avr/eeprom.h>
#include <stdint.h>
@ -46,6 +49,10 @@ void eeprom_init()
}
check_babystep();
#ifdef STEEL_SHEET_TYPES
eeprom_default_sheet_type();
#endif //STEEL_SHEET_TPYES
// initialize custom mendel name in eeprom
if (eeprom_read_byte((uint8_t*)EEPROM_CUSTOM_MENDEL_NAME) == EEPROM_EMPTY_VALUE) {
//SERIAL_ECHOLN("Init Custom Mendel Name");
@ -83,8 +90,8 @@ void eeprom_adjust_bed_reset() {
//! | 3 | Textur2 |
//! | 4 | Satin |
//! | 5 | NylonPA |
//! | 6 | Custom1 |
//! | 7 | Custom2 |
//! | 6 | PolyPro |
//! | 7 | Custom |
//!
//! @param[in] index
//! @param[out] sheetName
@ -94,25 +101,53 @@ void eeprom_default_sheet_name(uint8_t index, SheetName &sheetName)
if (index < 2)
{
#ifdef STEEL_SHEET_TYPES
strcpy_P(sheetName.c, MSG_SHEET_TYPE_SMOOTH);
#else
strcpy_P(sheetName.c, PSTR("Smooth"));
#endif //STEEL_SHEET_TYPES
}
else if (index < 4)
{
#ifdef STEEL_SHEET_TYPES
strcpy_P(sheetName.c, MSG_SHEET_TYPE_TEXTURED);
#else
strcpy_P(sheetName.c, PSTR("Textur"));
#endif //STEEL_SHEET_TYPES
}
else if (index < 5)
{
#ifdef STEEL_SHEET_TYPES
strcpy_P(sheetName.c, MSG_SHEET_TYPE_SATIN);
#else
strcpy_P(sheetName.c, PSTR("Satin "));
#endif //STEEL_SHEET_TYPES
}
else if (index < 6)
{
#ifdef STEEL_SHEET_TYPES
strcpy_P(sheetName.c, MSG_SHEET_TYPE_NYLON_PA);
#else
strcpy_P(sheetName.c, PSTR("NylonPA"));
#endif //STEEL_SHEET_TYPES
}
#ifdef STEEL_SHEET_TYPES
else if (index < 7)
{
strcpy_P(sheetName.c, MSG_SHEET_TYPE_PP);
}
else
{
strcpy_P(sheetName.c, MSG_SHEET_TYPE_CUSTOM);
}
if (index <4)
#else
else
{
strcpy_P(sheetName.c, PSTR("Custom"));
}
if (index <4 || index >5)
#endif //STEEL_SHEET_TYPES
{
sheetName.c[6] = '0' + ((index % 2)+1);
sheetName.c[7] = '\0';
@ -137,6 +172,20 @@ int8_t eeprom_next_initialized_sheet(int8_t sheet)
return -1;
}
#ifdef STEEL_SHEET_TYPES
void eeprom_default_sheet_type()
{
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[0].type, 1); //Smooth
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[1].type, 1); //Smooth
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[2].type, 2); //Textur
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[3].type, 2); //Textur
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[4].type, 4); //Satin
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[5].type, 8); //NylonPA
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[6].type, 16); //PolyPro
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_SHEET_TYPE,1);
}
#endif //STEEL_SHEET_TYPES
#ifdef DEBUG_EEPROM_CHANGES
static void eeprom_byte_notify(uint8_t *dst, uint8_t previous_value, uint8_t value, bool write) {
printf_P(PSTR("EEPROMChng b %s %u %d -> %d\n"), write ? "write":"", dst , previous_value, value);

View File

@ -31,8 +31,8 @@ typedef struct
{
unsigned char name[MAX_SHEET_NAME_LENGTH]; //!< Can be null terminated, doesn't need to be null terminated
int16_t z_offset; //!< Z_BABYSTEP_MIN .. Z_BABYSTEP_MAX = Z_BABYSTEP_MIN*2/1000 [mm] .. Z_BABYSTEP_MAX*2/1000 [mm]
uint8_t bed_temp; //!< 0 .. 254 [°C] NOTE: currently only written-to and never used
uint8_t pinda_temp; //!< 0 .. 254 [°C] NOTE: currently only written-to and never used
uint8_t type; //!< 0 .. 7
uint8_t reserved; //! currently only reserved
} Sheet;
typedef struct
@ -279,36 +279,36 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
| 0x0D49 3401 | uint16 | EEPROM_SHEETS_BASE | ??? | ffh 255 | ??? | LCD menu | D3 Ax0d49 C89
| 0x0D49 3401 | char | _1st Sheet block_ |536d6f6f746831| ffffffffffffff | 1st sheet - Name: _Smooth1_ | ^ | D3 Ax0d49 C7
| 0x0D50 3408 | uint16 | ^ | 00 00h 0 | ff ffh 65535 | 1st sheet - Z offset | ^ | D3 Ax0d50 C2
| 0x0D52 3410 | uint8 | ^ | 00h 0 | ffh 255 | 1st sheet - bed temp | ^ | D3 Ax0d52 C1
| 0x0D53 3411 | uint8 | ^ | 00h 0 | ffh 255 | 1st sheet - PINDA temp | ^ | D3 Ax0d53 C1
| 0x0D52 3410 | uint8 | ^ | 00h 0 | ffh 255 | 1st sheet - Type | ^ | D3 Ax0d52 C1
| 0x0D53 3411 | uint8 | ^ | 00h 0 | ffh 255 | 1st sheet - Reserved | ^ | D3 Ax0d53 C1
| 0x0D54 3412 | char | _2nd Sheet block_ |536d6f6f746832| ffffffffffffff | 2nd sheet - Name: _Smooth2_ | ^ | D3 Ax0d54 C7
| 0x0D5B 3419 | uint16 | ^ | 00 00h 0 | ff ffh 65535 | 2nd sheet - Z offset | ^ | D3 Ax0d5b C2
| 0x0D5D 3421 | uint8 | ^ | 00h 0 | ffh 255 | 2nd sheet - bed temp | ^ | D3 Ax0d5d C1
| 0x0D5E 3422 | uint8 | ^ | 00h 0 | ffh 255 | 2nd sheet - PINDA temp | ^ | D3 Ax0d5e C1
| 0x0D5D 3421 | uint8 | ^ | 00h 0 | ffh 255 | 2nd sheet - Type | ^ | D3 Ax0d5d C1
| 0x0D5E 3422 | uint8 | ^ | 00h 0 | ffh 255 | 2nd sheet - Reserved | ^ | D3 Ax0d5e C1
| 0x0D5F 3423 | char | _3rd Sheet block_ |54657874757231| ffffffffffffff | 3rd sheet - Name: _Textur1_ | ^ | D3 Ax0d5f C7
| 0x0D66 3430 | uint16 | ^ | 00 00h 0 | ff ffh 65535 | 3rd sheet - Z offset | ^ | D3 Ax0d66 C2
| 0x0D68 3432 | uint8 | ^ | 00h 0 | ffh 255 | 3rd sheet - bed temp | ^ | D3 Ax0d68 C1
| 0x0D69 3433 | uint8 | ^ | 00h 0 | ffh 255 | 3rd sheet - PINDA temp | ^ | D3 Ax0d69 C1
| 0x0D68 3432 | uint8 | ^ | 00h 0 | ffh 255 | 3rd sheet - Type | ^ | D3 Ax0d68 C1
| 0x0D69 3433 | uint8 | ^ | 00h 0 | ffh 255 | 3rd sheet - Reserved | ^ | D3 Ax0d69 C1
| 0x0D6A 3434 | char | _4th Sheet block_ |54657874757232| ffffffffffffff | 4th sheet - Name: _Textur2_ | ^ | D3 Ax0d6a C7
| 0x0D71 3441 | uint16 | ^ | 00 00h 0 | ff ffh 65535 | 4th sheet - Z offset | ^ | D3 Ax0d71 C2
| 0x0D73 3443 | uint8 | ^ | 00h 0 | ffh 255 | 4th sheet - bed temp | ^ | D3 Ax0d73 C1
| 0x0D74 3444 | uint8 | ^ | 00h 0 | ffh 255 | 4th sheet - PINDA temp | ^ | D3 Ax0d74 C1
| 0x0D75 3445 | char | _5th Sheet block_ |536174696e2020| ffffffffffffff | 5th sheet - Name: _Satin _ | ^ | D3 Ax0d75 C7
| 0x0D73 3443 | uint8 | ^ | 00h 0 | ffh 255 | 4th sheet - Type | ^ | D3 Ax0d73 C1
| 0x0D74 3444 | uint8 | ^ | 00h 0 | ffh 255 | 4th sheet - Reserved | ^ | D3 Ax0d74 C1
| 0x0D75 3445 | char | _5th Sheet block_ |536174696e2020| ffffffffffffff | 5th sheet - Name: _Satin_ | ^ | D3 Ax0d75 C7
| 0x0D7C 3452 | uint16 | ^ | 00 00h 0 | ff ffh 65535 | 5th sheet - Z offset | ^ | D3 Ax0d7c C2
| 0x0D7E 3454 | uint8 | ^ | 00h 0 | ffh 255 | 5th sheet - bed temp | ^ | D3 Ax0d7e C1
| 0x0D7F 3455 | uint8 | ^ | 00h 0 | ffh 255 | 5th sheet - PINDA temp | ^ | D3 Ax0d7f C1
| 0x0D7E 3454 | uint8 | ^ | 00h 0 | ffh 255 | 5th sheet - Type | ^ | D3 Ax0d7e C1
| 0x0D7F 3455 | uint8 | ^ | 00h 0 | ffh 255 | 5th sheet - Reserved | ^ | D3 Ax0d7f C1
| 0x0D80 3456 | char | _6th Sheet block_ |4e796c6f6e5041| ffffffffffffff | 6th sheet - Name: _NylonPA_ | ^ | D3 Ax0d80 C7
| 0x0D87 3463 | uint16 | ^ | 00 00h 0 | ff ffh 65535 | 6th sheet - Z offset | ^ | D3 Ax0d87 C2
| 0x0D89 3465 | uint8 | ^ | 00h 0 | ffh 255 | 6th sheet - bed temp | ^ | D3 Ax0d89 C1
| 0x0D8A 3466 | uint8 | ^ | 00h 0 | ffh 255 | 6th sheet - PINDA temp | ^ | D3 Ax0d8a C1
| 0x0D8B 3467 | char | _7th Sheet block_ |437573746f6d31| ffffffffffffff | 7th sheet - Name: _Custom1_ | ^ | D3 Ax0d8b C7
| 0x0D89 3465 | uint8 | ^ | 00h 0 | ffh 255 | 6th sheet - Type | ^ | D3 Ax0d89 C1
| 0x0D8A 3466 | uint8 | ^ | 00h 0 | ffh 255 | 6th sheet - Reserved | ^ | D3 Ax0d8a C1
| 0x0D8B 3467 | char | _7th Sheet block_ |437573746f6d31| ffffffffffffff | 7th sheet - Name: _PP_ | ^ | D3 Ax0d8b C7
| 0x0D92 3474 | uint16 | ^ | 00 00h 0 | ff ffh 65535 | 7th sheet - Z offset | ^ | D3 Ax0d92 C2
| 0x0D94 3476 | uint8 | ^ | 00h 0 | ffh 255 | 7th sheet - bed temp | ^ | D3 Ax0d94 C1
| 0x0D95 3477 | uint8 | ^ | 00h 0 | ffh 255 | 7th sheet - PINDA temp | ^ | D3 Ax0d95 C1
| 0x0D96 3478 | char | _8th Sheet block_ |437573746f6d32| ffffffffffffff | 8th sheet - Name: _Custom2_ | ^ | D3 Ax0d96 C7
| 0x0D94 3476 | uint8 | ^ | 00h 0 | ffh 255 | 7th sheet - Type | ^ | D3 Ax0d94 C1
| 0x0D95 3477 | uint8 | ^ | 00h 0 | ffh 255 | 7th sheet - Reserved | ^ | D3 Ax0d95 C1
| 0x0D96 3478 | char | _8th Sheet block_ |437573746f6d32| ffffffffffffff | 8th sheet - Name: _Custom_ | ^ | D3 Ax0d96 C7
| 0x0D9D 3485 | uint16 | ^ | 00 00h 0 | ff ffh 65535 | 8th sheet - Z offset | ^ | D3 Ax0d9d C2
| 0x0D9F 3487 | uint8 | ^ | 00h 0 | ffh 255 | 8th sheet - bed temp | ^ | D3 Ax0d9f C1
| 0x0DA0 3488 | uint8 | ^ | 00h 0 | ffh 255 | 8th sheet - PINDA temp | ^ | D3 Ax0da0 C1
| 0x0D9F 3487 | uint8 | ^ | 00h 0 | ffh 255 | 8th sheet - Type | ^ | D3 Ax0d9f C1
| 0x0DA0 3488 | uint8 | ^ | 00h 0 | ffh 255 | 8th sheet - Reserved | ^ | D3 Ax0da0 C1
| 0x0DA1 3489 | uint8 | active_sheet | 00h 0 | ffh 255 | Active sheet index | ^ | D3 Ax0da1 C1
| 0x0D48 3400 | uint8 | EEPROM_FSENSOR_PCB | ffh 255 | ffh 255 | Filament Sensor type IR unknown | LCD Support | D3 Ax0d48 C1
| ^ | ^ | ^ | 00h 0 | ^ | Filament Sensor type IR 0.3 or older | ^ | ^
@ -414,9 +414,13 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
| ^ | ^ | ^ | ??? | ^ | Z-axis | ^ | D3 Ax0d29 C4
| ^ | ^ | ^ | ??? | ^ | Y-axis | ^ | D3 Ax0d25 C4
| ^ | ^ | ^ | ??? | ^ | X-axis | ^ | D3 Ax0c21 C4
| 0x0C11 3089 | uint8 | EEPROM_CHECK_FILAMENT | 01h 1 | ffh 255 | Check mode for filament is: __warn__ | LCD menu | D3 Ax0c11 C1
| 0x0C20 3104 | uint8 | EEPROM_CHECK_FILAMENT | 01h 1 | ffh 255 | Check mode for filament is: __warn__ | LCD menu | D3 Ax0c20 C1
| ^ | ^ | ^ | 02h 2 | ^ | Check mode for filament is: __strict__ | ^ | ^
| ^ | ^ | ^ | 00h 0 | ^ | Check mode for filament is: __none__ | ^ | ^
| 0x0C1f 3103 | uint8 | EEPROM_CHECK_SHEET_TYPE | 01h 1 | ffh 255 | Check mode for sheet type is: __warn__ | LCD menu | D3 Ax0c1f C1
| ^ | ^ | ^ | 00h 0 | ^ | Check mode for sheet type is: __none__ | ^ | ^
| ^ | ^ | ^ | 02h 2 | ^ | Check mode for sheet type is: __strict__ | ^ | ^
| ^ | ^ | ^ | 03h 3 | ^ | Check mode for sheet type is: __always__ | ^ | ^
|Address begin|Bit/Type | Name | Valid values | Default/FactoryReset | Description |Gcode/Function| Debug code
@ -668,8 +672,9 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
#define EEPROM_UVLO_MIN_SEGMENT_TIME_US (EEPROM_UVLO_MIN_TRAVEL_FEEDRATE-4) //uint32_t
#define EEPROM_UVLO_MAX_JERK (EEPROM_UVLO_MIN_SEGMENT_TIME_US-4*4) // 4 x float
#define EEPROM_CHECK_FILAMENT (EEPROM_UVLO_MAX_JERK-1) // uint8_t
#define EEPROM_CHECK_SHEET_TYPE (EEPROM_CHECK_FILAMENT-1) // uint8_t
//This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
#define EEPROM_LAST_ITEM EEPROM_CHECK_FILAMENT
#define EEPROM_LAST_ITEM EEPROM_CHECK_SHEET_TYPE
// !!!!!
// !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
// !!!!!
@ -708,6 +713,9 @@ struct SheetName
char c[sizeof(Sheet::name) + 1];
};
void eeprom_default_sheet_name(uint8_t index, SheetName &sheetName);
#ifdef STEEL_SHEET_TYPES
void eeprom_default_sheet_type();
#endif //STEEL_SHEET_TYPES
int8_t eeprom_next_initialized_sheet(int8_t sheet);
void eeprom_switch_to_next_sheet();
bool eeprom_is_sheet_initialized(uint8_t sheet_num);

View File

@ -159,6 +159,10 @@ const char MSG_MISSING_FILAMENT[] PROGMEM_I1 = ISTR("There is no filament loaded
const char MSG_NOZZLE_DIFFERS_CONTINUE[] PROGMEM_I1 = ISTR("Nozzle diameter differs from the G-code."); ////MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=3
const char MSG_NOZZLE_DIFFERS_CANCELLED[] PROGMEM_I1 = ISTR("Nozzle diameter differs from the G-code. Please check the value in settings."); ////MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=8
const char MSG_NOZZLE_DIAMETER[] PROGMEM_I1 = ISTR("Nozzle d."); ////MSG_NOZZLE_DIAMETER c=10
#ifdef STEEL_SHEET_TYPES
const char MSG_SHEET_TYPE_CONTINUE[] PROGMEM_I1 = ISTR("Check selected sheet. Continue?"); ////MSG_SHEET_TYPE_CONTINUE c=20 r=3
const char MSG_SHEET_TYPE_CANCELLED[] PROGMEM_I1 = ISTR("Check selected sheet. Print cancelled."); ////MSG_SHEET_TYPE_CANCELLED c=20 r=4
#endif //STEEL_SHEET_TYPES
const char MSG_MMU_MODE[] PROGMEM_I1 = ISTR("MMU Mode"); ////MSG_MMU_MODE c=8
const char MSG_SD_CARD[] PROGMEM_I1 = ISTR("SD card"); ////MSG_SD_CARD c=8
const char MSG_SORT[] PROGMEM_I1 = ISTR("Sort"); ////MSG_SORT c=7
@ -425,6 +429,15 @@ const char MSG_POWERPANIC_DETECTED[] PROGMEM_N1 = "POWER PANIC DETECTED"; ////c=
const char MSG_LCD_STATUS_CHANGED[] PROGMEM_N1 = "LCD status changed";
const char MSG_UNKNOWN_CODE[] PROGMEM_N1 = "Unknown %c code: %s\n";
const char MSG_FILAMENT_RUNOUT_DETECTED[] PROGMEM_N1 = "Filament runout detected!"; ////c=20 r=2
#ifdef STEEL_SHEET_TYPES
const char MSG_SHEET_TYPE[] PROGMEM_N1 = "Type"; ////c=8
const char MSG_SHEET_TYPE_SMOOTH[] PROGMEM_N1 = "Smooth"; ////c=6
const char MSG_SHEET_TYPE_TEXTURED[] PROGMEM_N1 = "Textur"; ////c=6
const char MSG_SHEET_TYPE_SATIN[] PROGMEM_N1 = "Satin "; ////c=7
const char MSG_SHEET_TYPE_NYLON_PA[] PROGMEM_N1 = "NylonPA"; ////c=7
const char MSG_SHEET_TYPE_PP[] PROGMEM_N1 = "PolyPro"; ////c=7
const char MSG_SHEET_TYPE_CUSTOM[] PROGMEM_N1 = "Custom "; ////c=7
#endif //STEEL_SHEET_TYPES
// Common G-gcodes
const char G1_E_F2700[] PROGMEM_N1 = "G1 E%-.3f F2700";

View File

@ -161,6 +161,10 @@ extern const char MSG_MISSING_FILAMENT[];
extern const char MSG_NOZZLE_DIFFERS_CONTINUE[];
extern const char MSG_NOZZLE_DIFFERS_CANCELLED[];
extern const char MSG_NOZZLE_DIAMETER[];
#ifdef STEEL_SHEET_TYPES
extern const char MSG_SHEET_TYPE_CONTINUE[];
extern const char MSG_SHEET_TYPE_CANCELLED[];
#endif //STEEL_SHEET_TYPES
extern const char MSG_MMU_MODE[];
extern const char MSG_SD_CARD[];
extern const char MSG_SORT[];
@ -427,6 +431,15 @@ extern const char MSG_POWERPANIC_DETECTED[];
extern const char MSG_LCD_STATUS_CHANGED[];
extern const char MSG_UNKNOWN_CODE[];
extern const char MSG_FILAMENT_RUNOUT_DETECTED[];
#ifdef STEEL_SHEET_TYPES
extern const char MSG_SHEET_TYPE[];
extern const char MSG_SHEET_TYPE_SMOOTH[];
extern const char MSG_SHEET_TYPE_TEXTURED[];
extern const char MSG_SHEET_TYPE_SATIN[];
extern const char MSG_SHEET_TYPE_NYLON_PA[];
extern const char MSG_SHEET_TYPE_PP[];
extern const char MSG_SHEET_TYPE_CUSTOM[];
#endif //STEEL_SHEET_TYPES
// Common G-gcodes
extern const char G1_E_F2700[];

View File

@ -2669,12 +2669,6 @@ static void lcd_babystep_z()
// Only update the EEPROM when leaving the menu.
uint8_t active_sheet=eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet));
eeprom_update_word_notify(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[active_sheet].z_offset)),_md->babystepMemZ);
// NOTE: bed_temp and pinda_temp are not currently read/used anywhere.
eeprom_update_byte_notify(&(EEPROM_Sheets_base->s[active_sheet].bed_temp),target_temperature_bed);
#ifdef PINDA_THERMISTOR
eeprom_update_byte_notify(&(EEPROM_Sheets_base->s[active_sheet].pinda_temp),current_temperature_pinda);
#endif //PINDA_THERMISTOR
calibration_status_set(CALIBRATION_STATUS_LIVE_ADJUST);
}
menu_back_if_clicked();
@ -4291,6 +4285,63 @@ do\
}\
while (0)
#ifdef STEEL_SHEET_TYPES
static void lcd_sheet_type_cycle(void) {
uint8_t nSheetType;
switch(oCheckSheetType){
case ClCheckSheetType::_Smooth:
oCheckSheetType=ClCheckSheetType::_Textured;
nSheetType=2;
break;
case ClCheckSheetType::_Textured:
oCheckSheetType=ClCheckSheetType::_Satin;
nSheetType=4;
break;
case ClCheckSheetType::_Satin:
oCheckSheetType=ClCheckSheetType::_NylonPA;
nSheetType=8;
break;
case ClCheckSheetType::_NylonPA:
oCheckSheetType=ClCheckSheetType::_PP;
nSheetType=16;
break;
case ClCheckSheetType::_PP:
oCheckSheetType=ClCheckSheetType::_Custom;
nSheetType=32;
break;
case ClCheckSheetType::_Custom:
oCheckSheetType=ClCheckSheetType::_Smooth;
nSheetType=1;
break;
case ClCheckSheetType::_Undef:
oCheckSheetType=ClCheckSheetType::_Smooth;
nSheetType=1;
break;
default:
oCheckSheetType=ClCheckSheetType::_Smooth;
nSheetType=1;
}
eeprom_update_byte_notify(&EEPROM_Sheets_base->s[selected_sheet].type, nSheetType);
}
#define SETTINGS_SHEET_TYPE \
do\
{\
switch (oCheckSheetType)\
{\
case ClCheckSheetType::_Smooth: MENU_ITEM_TOGGLE_P(MSG_SHEET_TYPE, MSG_SHEET_TYPE_SMOOTH, lcd_sheet_type_cycle); break;\
case ClCheckSheetType::_Textured: MENU_ITEM_TOGGLE_P(MSG_SHEET_TYPE, MSG_SHEET_TYPE_TEXTURED, lcd_sheet_type_cycle); break;\
case ClCheckSheetType::_Satin: MENU_ITEM_TOGGLE_P(MSG_SHEET_TYPE, MSG_SHEET_TYPE_SATIN, lcd_sheet_type_cycle); break;\
case ClCheckSheetType::_NylonPA: MENU_ITEM_TOGGLE_P(MSG_SHEET_TYPE, MSG_SHEET_TYPE_NYLON_PA, lcd_sheet_type_cycle); break;\
case ClCheckSheetType::_PP: MENU_ITEM_TOGGLE_P(MSG_SHEET_TYPE, MSG_SHEET_TYPE_PP, lcd_sheet_type_cycle); break;\
case ClCheckSheetType::_Custom: MENU_ITEM_TOGGLE_P(MSG_SHEET_TYPE, MSG_SHEET_TYPE_CUSTOM, lcd_sheet_type_cycle); break;\
case ClCheckSheetType::_Undef: MENU_ITEM_TOGGLE_P(MSG_SHEET_TYPE, _O(MSG_UNKNOWN), lcd_sheet_type_cycle); break;\
}\
}\
while (0)
#endif//STEEL_SHEET_TYPES
static void lcd_check_update_RAM(ClCheckMode * oCheckSetting) {
switch(*oCheckSetting) {
case ClCheckMode::_None:
@ -4300,6 +4351,11 @@ static void lcd_check_update_RAM(ClCheckMode * oCheckSetting) {
*oCheckSetting = ClCheckMode::_Strict;
break;
case ClCheckMode::_Strict:
#ifdef STEEL_SHEET_TYPES
*oCheckSetting = ClCheckMode::_Always;
break;
case ClCheckMode::_Always:
#endif //STEEL_SHEET_TYPES
*oCheckSetting = ClCheckMode::_None;
break;
default:
@ -4327,6 +4383,13 @@ static void lcd_check_filament_set() {
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_FILAMENT,(uint8_t)oCheckFilament);
}
#ifdef STEEL_SHEET_TYPES
static void lcd_check_sheet_type_set() {
lcd_check_update_RAM(&oCheckSheets);
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_SHEET_TYPE,(uint8_t)oCheckSheets);
}
#endif //STEEL_SHEET_TYPES
static void settings_check_toggle(ClCheckMode * oCheckSetting, const char* msg, void (*func)(void)) {
switch(*oCheckSetting) {
case ClCheckMode::_None:
@ -4338,6 +4401,11 @@ static void settings_check_toggle(ClCheckMode * oCheckSetting, const char* msg,
case ClCheckMode::_Strict:
MENU_ITEM_TOGGLE_P(msg, _T(MSG_STRICT), func);
break;
#ifdef STEEL_SHEET_TYPES
case ClCheckMode::_Always:
MENU_ITEM_TOGGLE_P(msg, _T(MSG_ALWAYS), func);
break;
#endif //STEEL_SHEET_TYPES
default:
MENU_ITEM_TOGGLE_P(msg, _T(MSG_NONE), func);
}
@ -4351,6 +4419,9 @@ static void lcd_checking_menu(void)
settings_check_toggle(&oCheckModel, _T(MSG_MODEL), lcd_check_model_set);
settings_check_toggle(&oCheckVersion, MSG_FIRMWARE, lcd_check_version_set);
settings_check_toggle(&oCheckFilament, MSG_FILAMENT, lcd_check_filament_set);
#ifdef STEEL_SHEET_TYPES
settings_check_toggle(&oCheckSheets, _T(MSG_SHEET), lcd_check_sheet_type_set);
#endif //STEEL_SHEET_TYPES
MENU_END();
}
@ -4358,6 +4429,9 @@ template <uint8_t number>
static void select_sheet_menu()
{
selected_sheet = number;
#ifdef STEEL_SHEET_TYPES
oCheckSheetType = (ClCheckSheetType)eeprom_read_byte((uint8_t *)&EEPROM_Sheets_base->s[selected_sheet].type);
#endif //STEEL_SHEET_TYPES
lcd_sheet_menu();
}
@ -5092,6 +5166,9 @@ static void lcd_reset_sheet()
{
SheetName sheetName;
eeprom_default_sheet_name(selected_sheet, sheetName);
#ifdef STEEL_SHEET_TYPES
eeprom_default_sheet_type();
#endif // STEEL_SHEET_TYPES
eeprom_update_word_notify(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[selected_sheet].z_offset)),EEPROM_EMPTY_VALUE16);
eeprom_update_block_notify(sheetName.c,EEPROM_Sheets_base->s[selected_sheet].name,sizeof(Sheet::name));
if (selected_sheet == eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))
@ -5125,6 +5202,9 @@ static void lcd_sheet_menu()
MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), activate_calibrate_sheet);
}
MENU_ITEM_SUBMENU_P(_T(MSG_RENAME), lcd_rename_sheet_menu);
#ifdef STEEL_SHEET_TYPES
SETTINGS_SHEET_TYPE;
#endif //STEEL_SHEET_TYPES
MENU_ITEM_FUNCTION_P(_T(MSG_RESET), lcd_reset_sheet);
MENU_END();

View File

@ -247,6 +247,10 @@ ClCheckMode oCheckModel;
ClCheckMode oCheckVersion;
ClCheckMode oCheckGcode;
ClCheckMode oCheckFilament;
#ifdef STEEL_SHEET_TYPES
ClCheckSheetType oCheckSheetType;
ClCheckMode oCheckSheets;
#endif //STEEL_SHEET_TYPES
void fCheckModeInit() {
oCheckMode = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_MODE, (uint8_t)ClCheckMode::_Warn);
@ -263,6 +267,10 @@ void fCheckModeInit() {
oCheckVersion = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_VERSION, (uint8_t)ClCheckMode::_Warn);
oCheckGcode = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_GCODE, (uint8_t)ClCheckMode::_Warn);
oCheckFilament = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_FILAMENT, (uint8_t)ClCheckMode::_Warn);
#ifdef STEEL_SHEET_TYPES
oCheckSheets = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_SHEET_TYPE, (uint8_t)ClCheckMode::_Warn);
oCheckSheetType = (ClCheckSheetType)eeprom_init_default_byte((uint8_t *)&EEPROM_Sheets_base->s[eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))].type, (uint8_t)ClCheckSheetType::_Smooth);
#endif //STEEL_SHEET_TYPES
}
static void render_M862_warnings(const char* warning, const char* strict, uint8_t check)
@ -274,6 +282,12 @@ static void render_M862_warnings(const char* warning, const char* strict, uint8_
} else if (check == 2) { // Strict, always stop print
lcd_show_fullscreen_message_and_wait_P(strict);
lcd_print_stop();
#ifdef STEEL_SHEET_TYPES
} else if (check == 3 ) { // Always warn, stop print if user selects 'No' This doesn't time out
if (lcd_show_multiscreen_message_yes_no_and_wait_P(warning, false, LCD_LEFT_BUTTON_CHOICE) == LCD_MIDDLE_BUTTON_CHOICE) {
lcd_print_stop();
}
#endif //STEEL_SHEET_TYPES
}
}
@ -420,6 +434,31 @@ void gcode_level_check(uint16_t nGcodeLevel) {
);
}
#ifdef STEEL_SHEET_TYPES
void sheet_type_check(uint16_t nSheetType) {
uint16_t actualSheetType;
if (oCheckSheets == ClCheckMode::_None)
return;
actualSheetType = eeprom_read_byte(&EEPROM_Sheets_base->s[eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))].type);
if (nSheetType == actualSheetType)
return;
/*
SERIAL_PROTOCOLPGM("Active sheet number: ");
SERIAL_PROTOCOL((int)eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)));
SERIAL_PROTOCOLPGM(" Sheet type differs from actual : ");
SERIAL_PROTOCOL((int)eeprom_read_byte(&EEPROM_Sheets_base->s[eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet))].type));
SERIAL_PROTOCOLPGM(" expected: ");
SERIAL_PROTOCOL((int)nSheetType);
SERIAL_PROTOCOLPGM(" oCheckSheets: ");
SERIAL_PROTOCOLLN((int)oCheckSheets);
*/
render_M862_warnings(
_T(MSG_SHEET_TYPE_CONTINUE)
,_T(MSG_SHEET_TYPE_CANCELLED)
,(uint8_t)oCheckSheets
);
}
#endif //STEEL_SHEET_TYPES
void printer_smodel_check(const char *pStrPos, const char *actualPrinterSModel) {
unquoted_string smodel = unquoted_string(pStrPos);

View File

@ -35,7 +35,7 @@ enum class ClPrintChecking:uint_least8_t
_Version=4,
_Gcode=5,
_Features=6,
_PrinterState=7
_SheetType=7
};
enum class ClNozzleDiameter:uint_least8_t
@ -47,11 +47,27 @@ enum class ClNozzleDiameter:uint_least8_t
_Diameter_Undef=EEPROM_EMPTY_VALUE
};
#ifdef STEEL_SHEET_TYPES
enum class ClCheckSheetType:uint_least8_t
{
_Smooth =0b00000001,
_Textured =0b00000010,
_Satin =0b00000100,
_NylonPA =0b00001000,
_PP =0b00010000,
_Custom =0b00100000,
_Undef =0b00000000,
};
#endif //STEEL_SHEET_TYPES
enum class ClCheckMode:uint_least8_t
{
_None,
_Warn,
_Strict,
#ifdef STEEL_SHEET_TYPES
_Always,
#endif //STEEL_SHEET_TYPES
_Undef=EEPROM_EMPTY_VALUE
};
@ -109,6 +125,10 @@ extern ClCheckMode oCheckModel;
extern ClCheckMode oCheckVersion;
extern ClCheckMode oCheckGcode;
extern ClCheckMode oCheckFilament;
#ifdef STEEL_SHEET_TYPES
extern ClCheckMode oCheckSheets;
extern ClCheckSheetType oCheckSheetType;
#endif //STEEL_SHEET_TYPES
void fCheckModeInit();
void nozzle_diameter_check(uint16_t nDiameter);
@ -116,6 +136,9 @@ void printer_model_check(uint16_t nPrinterModel, uint16_t actualPrinterModel);
void printer_smodel_check(const char *pStrPos, const char *actualPrinterSModel);
void fw_version_check(const char *pVersion);
void gcode_level_check(uint16_t nGcodeLevel);
#ifdef STEEL_SHEET_TYPES
void sheet_type_check(uint16_t nSheetType);
#endif //STEEL_SHEET_TYPES
/// Check if the filament is present before starting a print job.
/// Depending on the check level set in the menus the printer will:

View File

@ -25,6 +25,20 @@
#define HEATBED_V2
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define TACH0PULLUP
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)

View File

@ -25,6 +25,20 @@
#define HEATBED_V2
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define TACH0PULLUP
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)

View File

@ -25,6 +25,20 @@
#define HEATBED_V2
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define TACH0PULLUP
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)

View File

@ -25,6 +25,20 @@
#define HEATBED_V2
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define TACH0PULLUP
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)

View File

@ -24,6 +24,20 @@
#define MOTHERBOARD BOARD_EINSY_1_0a
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define HAS_SECOND_SERIAL_PORT

View File

@ -24,6 +24,20 @@
#define MOTHERBOARD BOARD_EINSY_1_0a
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define HAS_SECOND_SERIAL_PORT

View File

@ -24,6 +24,20 @@
#define MOTHERBOARD BOARD_EINSY_1_0a
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define HAS_SECOND_SERIAL_PORT

View File

@ -23,6 +23,20 @@
#define MOTHERBOARD BOARD_EINSY_1_0a
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define HAS_SECOND_SERIAL_PORT
// PSU

View File

@ -23,6 +23,20 @@
#define MOTHERBOARD BOARD_EINSY_1_0a
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define HAS_SECOND_SERIAL_PORT
// PSU

View File

@ -23,6 +23,20 @@
#define MOTHERBOARD BOARD_EINSY_1_0a
#define STEEL_SHEET
//#define NEW_FIRST_LAYER_CAL //from front to back
/* Sheet types
bit based
- 0 = Smooth
- 1 = Textured
- 2 = Satin
- 3 = NylonPA
- 4 = PolyPro
- 5 = Custom
- 6 = free
- 7 = free
*/
#define STEEL_SHEET_TYPES 6
#define HAS_SECOND_SERIAL_PORT
// PSU
@ -172,7 +186,7 @@
//#define DEBUG_PULLUP_CRASH //Test Pullup crash
//#define DEBUG_PRINTER_STATES
//#define DEBUG_EEPROM_CHANGES //Uses +1188 bytes Flash +6 bytes SRAM
#define DEBUG_EEPROM_CHANGES //Uses +1188 bytes Flash +6 bytes SRAM
//#define DEBUG_BUILD
//#define DEBUG_SEC_LANG //secondary language debug output at startup
//#define DEBUG_XFLASH //debug external spi flash