Skip to content

Commit

Permalink
Improve Cancel Gcode setting (#575)
Browse files Browse the repository at this point in the history
Improve Cancel Gcode setting
Users can now enable/disable Cancel Gcode through the Feature menu. Disabled by default.
  • Loading branch information
thisiskeithb authored and guruathwal committed Apr 28, 2020
1 parent 7338d02 commit 8aa2368
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 64 deletions.
45 changes: 29 additions & 16 deletions TFT/src/User/API/flashStore.c
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
#include "flashStore.h"
#include "STM32_Flash.h"

#define PARA_SIZE 512 //bytes
#define TSC_SIGN 0x20190827 // DO NOT MODIFY
#define PARA_SIGN 0x20200403 // (YYYMMDD) If a new setting parameter is added, modify here and initialize the initial value in the "infoSettingsReset()" function
#define PARA_SIGN 0x20200405 // (YYYMMDD) If a new setting parameter is added, modify here and initialize the initial value in the "infoSettingsReset()" function

extern u32 TSC_Para[7]; //
extern SETTINGS infoSettings; //
Expand Down Expand Up @@ -60,12 +59,18 @@ bool readStoredPara(void)
infoSettings.baudrate = byteToWord(data + (index += 4), 4);
infoSettings.language = byteToWord(data + (index += 4), 4);
infoSettings.mode = byteToWord(data + (index += 4), 4);
infoSettings.unified_menu = byteToWord(data + (index += 4), 4);
infoSettings.rotate_ui = byteToWord(data + (index += 4), 4);

infoSettings.bg_color = byteToWord(data + (index += 4), 4);
infoSettings.font_color = byteToWord(data + (index += 4), 4);
infoSettings.title_bg_color = byteToWord(data + (index += 4), 4);
infoSettings.reminder_color = byteToWord(data + (index += 4), 4);
infoSettings.sd_reminder_color = byteToWord(data + (index += 4), 4);
infoSettings.status_xyz_bg_color = byteToWord(data + (index += 4), 4);
infoSettings.list_border_color = byteToWord(data + (index += 4), 4);
infoSettings.list_button_color = byteToWord(data + (index += 4), 4);

infoSettings.silent = byteToWord(data + (index += 4), 4);
infoSettings.terminalACK = byteToWord(data + (index += 4), 4);
infoSettings.move_speed = byteToWord(data + (index += 4), 4);
Expand All @@ -84,6 +89,7 @@ bool readStoredPara(void)

infoSettings.send_start_gcode = byteToWord(data + (index += 4), 4);
infoSettings.send_end_gcode = byteToWord(data + (index += 4), 4);
infoSettings.send_cancel_gcode = byteToWord(data + (index += 4), 4);
infoSettings.auto_off = byteToWord(data + (index += 4), 4);
infoSettings.ps_active_high = byteToWord(data + (index += 4), 4);
infoSettings.auto_off_temp = byteToWord(data + (index += 4), 4);
Expand All @@ -108,7 +114,7 @@ bool readStoredPara(void)
infoSettings.m27_refresh_time = byteToWord(data + (index += 4), 4);
infoSettings.m27_active = byteToWord(data + (index += 4), 4);

for(int i = 0; i < HEATER_NUM; i++)
for(int i = 0; i < HEAT_NUM; i++)
{
infoSettings.max_temp[i] = byteToWord(data + (index += 4), 4);
}
Expand Down Expand Up @@ -178,12 +184,18 @@ void storePara(void)
wordToByte(infoSettings.baudrate, data + (index += 4));
wordToByte(infoSettings.language, data + (index += 4));
wordToByte(infoSettings.mode, data + (index += 4));
wordToByte(infoSettings.unified_menu, data + (index += 4));
wordToByte(infoSettings.rotate_ui, data + (index += 4));

wordToByte(infoSettings.bg_color, data + (index += 4));
wordToByte(infoSettings.font_color, data + (index += 4));
wordToByte(infoSettings.title_bg_color, data + (index += 4));
wordToByte(infoSettings.reminder_color, data + (index += 4));
wordToByte(infoSettings.sd_reminder_color, data + (index += 4));
wordToByte(infoSettings.status_xyz_bg_color, data + (index += 4));
wordToByte(infoSettings.list_border_color, data + (index += 4));
wordToByte(infoSettings.list_button_color, data + (index += 4));

wordToByte(infoSettings.silent, data + (index += 4));
wordToByte(infoSettings.terminalACK, data + (index += 4));
wordToByte(infoSettings.move_speed, data + (index += 4));
Expand All @@ -202,6 +214,7 @@ void storePara(void)

wordToByte(infoSettings.send_start_gcode, data + (index += 4));
wordToByte(infoSettings.send_end_gcode, data + (index += 4));
wordToByte(infoSettings.send_cancel_gcode, data + (index += 4));
wordToByte(infoSettings.auto_off, data + (index += 4));
wordToByte(infoSettings.ps_active_high, data + (index += 4));
wordToByte(infoSettings.auto_off_temp, data + (index += 4));
Expand All @@ -226,32 +239,32 @@ void storePara(void)
wordToByte(infoSettings.m27_refresh_time, data + (index += 4));
wordToByte(infoSettings.m27_active, data + (index += 4));

for(int i = 0; i < HEATER_NUM; i++)
for(int i = 0; i < HEAT_NUM; i++)
{
wordToByte(infoSettings.max_temp[i], data + (index += 4));
wordToByte(infoSettings.max_temp[i], data + (index += 4));
}

wordToByte(infoSettings.min_ext_temp, data + (index += 4));

for(int i = 0; i < MAX_TOOL_COUNT ;i++)
{
wordToByte(infoSettings.fan_max[i], data + (index += 4));
wordToByte(infoSettings.fan_max[i], data + (index += 4));
}

wordToByte(infoSettings.fan_percentage, data + (index += 4));
wordToByte(infoSettings.fan_percentage, data + (index += 4));

for(int i = 0; i < AXIS_NUM ;i++) //x, y, z
{
wordToByte(infoSettings.invert_axis[i], data + (index += 4));
wordToByte(infoSettings.machine_size_min[i], data + (index += 4));
wordToByte(infoSettings.machine_size_max[i], data + (index += 4));
wordToByte(infoSettings.level_feedrate[i], data + (index += 4));
wordToByte(infoSettings.invert_axis[i], data + (index += 4));
wordToByte(infoSettings.machine_size_min[i], data + (index += 4));
wordToByte(infoSettings.machine_size_max[i], data + (index += 4));
wordToByte(infoSettings.level_feedrate[i], data + (index += 4));
}

for(int i = 0; i < SPEED_COUNT ;i++)
{
wordToByte(infoSettings.axis_speed[i], data + (index += 4));
wordToByte(infoSettings.ext_speed[i], data + (index += 4));
wordToByte(infoSettings.axis_speed[i], data + (index += 4));
wordToByte(infoSettings.ext_speed[i], data + (index += 4));
}

wordToByte(infoSettings.pause_retract_len, data + (index += 4));
Expand All @@ -264,7 +277,7 @@ void storePara(void)

for(int i = 0; i < TOTAL_AXIS ;i++)
{
wordToByte(infoSettings.pause_feedrate[i], data + (index += 4)); // X, Y, Z, E
wordToByte(infoSettings.pause_feedrate[i], data + (index += 4)); // X, Y, Z, E
}

wordToByte(infoSettings.level_edge, data + (index += 4));
Expand All @@ -273,8 +286,8 @@ void storePara(void)

for (int i = 0; i < PREHEAT_COUNT; i++)
{
wordToByte(infoSettings.preheat_temp[i], data + (index += 4));
wordToByte(infoSettings.preheat_bed[i], data + (index += 4));
wordToByte(infoSettings.preheat_temp[i], data + (index += 4));
wordToByte(infoSettings.preheat_bed[i], data + (index += 4));
}


Expand Down
78 changes: 45 additions & 33 deletions TFT/src/User/Menu/FeatureSettings.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,12 @@ const LABEL itemMoveSpeed[ITEM_SPEED_NUM] = {
LABEL_FAST_SPEED
};


//
//add key number index of the items
//
typedef enum
{
SKEY_HIDEACK = 0,
SKEY_ACK = 0,
SKEY_INVERT_X,
SKEY_INVERT_Y,
SKEY_INVERT_Z,
Expand Down Expand Up @@ -106,9 +105,9 @@ LISTITEM settingPage[SKEY_COUNT] = {
{ICONCHAR_BLANK, LIST_CUSTOMVALUE, LABEL_KNOB_LED, LABEL_OFF },
#endif
#ifdef LCD_LED_PWM_CHANNEL
{ICONCHAR_BLANK, LIST_CUSTOMVALUE, LABEL_LCD_BRIGHTNESS, LABEL_100_PERCENT },
{ICONCHAR_BLANK, LIST_CUSTOMVALUE, LABEL_LCD_BRIGHTNESS_DIM, LABEL_100_PERCENT },
{ICONCHAR_BLANK, LIST_CUSTOMVALUE, LABEL_LCD_DIM_IDLE_TIMER, LABEL_60_SECONDS },
{ICONCHAR_BLANK, LIST_CUSTOMVALUE, LABEL_LCD_BRIGHTNESS, LABEL_DYNAMIC },
{ICONCHAR_BLANK, LIST_CUSTOMVALUE, LABEL_LCD_BRIGHTNESS_DIM, LABEL_DYNAMIC },
{ICONCHAR_BLANK, LIST_CUSTOMVALUE, LABEL_LCD_DIM_IDLE_TIMER, LABEL_DYNAMIC },
#endif
#ifdef ST7920_SPI
{ICONCHAR_BLANK, LIST_TOGGLE, LABEL_ST7920_FULLSCREEN, LABEL_OFF },
Expand Down Expand Up @@ -148,7 +147,7 @@ void updateFeatureSettings(uint8_t key_val)
uint8_t item_index = fe_cur_page*LISTITEM_PER_PAGE+ key_val;
switch (item_index)
{
case SKEY_HIDEACK:
case SKEY_ACK:
infoSettings.terminalACK = (infoSettings.terminalACK + 1) % TOGGLE_NUM;
settingPage[item_index].icon = toggleitem[infoSettings.terminalACK];
featureSettingsItems.items[key_val] = settingPage[item_index];
Expand Down Expand Up @@ -266,22 +265,27 @@ void updateFeatureSettings(uint8_t key_val)
break;

#ifdef LCD_LED_PWM_CHANNEL
case SKEY_LCD_BRIGHTNESS:
infoSettings.lcd_brightness = (infoSettings.lcd_brightness + 1) % ITEM_BRIGHTNESS_NUM;
settingPage[item_index].valueLabel = itemBrightness[infoSettings.lcd_brightness];
featureSettingsItems.items[key_val] = settingPage[item_index];
Set_LCD_Brightness(LCD_BRIGHTNESS[infoSettings.lcd_brightness]);
case SKEY_LCD_BRIGHTNESS:
{
infoSettings.lcd_brightness = (infoSettings.lcd_brightness + 1) % ITEM_BRIGHTNESS_NUM;
char tempstr[8];
my_sprintf(tempstr,(char *)textSelect(LABEL_PERCENT_VALUE),infoSettings.lcd_idle_brightness);
setDynamicTextValue(key_val,tempstr);
Set_LCD_Brightness(LCD_BRIGHTNESS[infoSettings.lcd_brightness]);
menuDrawListItem(&featureSettingsItems.items[key_val], key_val);
}
break;

menuDrawListItem(&featureSettingsItems.items[key_val], key_val);
break;
case SKEY_LCD_BRIGTHNESS_DIM:
{
infoSettings.lcd_idle_brightness = (infoSettings.lcd_idle_brightness + 1) % ITEM_BRIGHTNESS_NUM;
char tempstr[8];
my_sprintf(tempstr,(char *)textSelect(LABEL_PERCENT_VALUE),infoSettings.lcd_idle_brightness);
setDynamicTextValue(key_val,tempstr);

case SKEY_LCD_BRIGTHNESS_DIM:
infoSettings.lcd_idle_brightness = (infoSettings.lcd_idle_brightness + 1) % ITEM_BRIGHTNESS_NUM;
settingPage[item_index].valueLabel = itemBrightness[infoSettings.lcd_idle_brightness];
featureSettingsItems.items[key_val] = settingPage[item_index];

menuDrawListItem(&featureSettingsItems.items[key_val], key_val);
break;
menuDrawListItem(&featureSettingsItems.items[key_val], key_val);
}
break;

case SKEY_LCD_DIM_IDLE_TIMER:
infoSettings.lcd_idle_timer = (infoSettings.lcd_idle_timer + 1) % ITEM_SECONDS_NUM;
Expand Down Expand Up @@ -315,7 +319,7 @@ void loadFeatureSettings(){
uint8_t item_index = fe_cur_page*LISTITEM_PER_PAGE + i;
switch (item_index)
{
case SKEY_HIDEACK:
case SKEY_ACK:
settingPage[item_index].icon = toggleitem[infoSettings.terminalACK];
featureSettingsItems.items[i] = settingPage[item_index];
break;
Expand Down Expand Up @@ -388,19 +392,27 @@ void loadFeatureSettings(){
break;
#endif
#ifdef LCD_LED_PWM_CHANNEL
case SKEY_LCD_BRIGHTNESS:
settingPage[item_index].valueLabel = itemBrightness[infoSettings.lcd_brightness];
featureSettingsItems.items[i] = settingPage[item_index];
break;
case SKEY_LCD_BRIGHTNESS:
{
char tempstr[8];
my_sprintf(tempstr,(char *)textSelect(LABEL_PERCENT_VALUE),infoSettings.lcd_idle_brightness);
setDynamicTextValue(i,tempstr);
featureSettingsItems.items[i] = settingPage[item_index];
}
break;

case SKEY_LCD_BRIGTHNESS_DIM:
settingPage[item_index].valueLabel = itemBrightness[infoSettings.lcd_idle_brightness];
featureSettingsItems.items[i] = settingPage[item_index];
break;
case SKEY_LCD_DIM_IDLE_TIMER:
settingPage[item_index].valueLabel = itemDimTime[infoSettings.lcd_idle_timer];
featureSettingsItems.items[i] = settingPage[item_index];
break;
case SKEY_LCD_BRIGTHNESS_DIM:
{
char tempstr[8];
my_sprintf(tempstr,(char *)textSelect(LABEL_PERCENT_VALUE),infoSettings.lcd_idle_brightness);
setDynamicTextValue(i,tempstr);
featureSettingsItems.items[i] = settingPage[item_index];
break;
}
case SKEY_LCD_DIM_IDLE_TIMER:
settingPage[item_index].valueLabel = itemDimTime[infoSettings.lcd_idle_timer];
featureSettingsItems.items[i] = settingPage[item_index];
break;
#endif //LCD_LED_PWM_CHANNEL

#ifdef ST7920_SPI
Expand Down
16 changes: 7 additions & 9 deletions TFT/src/User/Menu/Printing.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,11 +145,11 @@ void printSetUpdateWaiting(bool isWaiting)
void printerGotoIdle(void)
{
// disable all heater
for(TOOL i = BED; i < HEATER_NUM; i++) {
for(TOOL i = BED; i < (infoSettings.tool_count+1); i++) {
mustStoreCmd("%s S0\n", heatCmd[i]);
}
// disable all fan
for(u8 i = 0; i < FAN_NUM; i++) {
for(u8 i = 0; i < (infoSettings.fan_count+1); i++) {
mustStoreCmd("%s S0\n", fanCmd[i]);
}
// disable all stepper
Expand Down Expand Up @@ -475,9 +475,9 @@ void toggleinfo(void)
{
if (OS_GetTimeMs() > nextTime)
{
if (EXTRUDER_NUM > 1)
if (infoSettings.tool_count > 1)
{
c_Ext = (TOOL)((c_Ext + 1) % HEATER_NUM);
c_Ext = (TOOL)((c_Ext + 1) % (infoSettings.tool_count+1));
if (c_Ext == 0)
{
c_Ext += 1;
Expand All @@ -486,7 +486,7 @@ void toggleinfo(void)
reValueNozzle(EXT_ICON_POS);
}

if (FAN_NUM > 1)
if (infoSettings.fan_count > 1)
{
c_fan = (c_fan + 1) % FAN_NUM;
rapid_serial_loop(); //perform backend printing loop before drawing to avoid printer idling
Expand Down Expand Up @@ -711,10 +711,8 @@ void abortPrinting(void)
}

heatClearIsWaiting();

if(infoSettings.send_cancel_gcode == 1){
mustStoreCmd(PRINT_CANCEL_GCODE);
}
if(infoSettings.send_cancel_gcode == 1)
mustStoreCmd(printcodes->cancel_gcode);

endPrinting();
exitPrinting();
Expand Down
12 changes: 9 additions & 3 deletions TFT/src/User/Menu/Settings.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include "Settings.h"
#include "includes.h"
#include "config_default.h"


SETTINGS infoSettings;
Expand All @@ -24,12 +23,18 @@ void infoSettingsReset(void)
infoSettings.baudrate = BAUDRATE;
infoSettings.language = DEFAULT_LANGUAGE;
infoSettings.mode = DEFAULT_LCD_MODE;
infoSettings.unified_menu = UNIFIED_MENU;
infoSettings.rotate_ui = 0;

infoSettings.bg_color = BACKGROUND_COLOR;
infoSettings.font_color = FONT_COLOR;
infoSettings.title_bg_color = TITLE_BACKGROUND_COLOR;
infoSettings.reminder_color = REMINDER_FONT_COLOR;
infoSettings.sd_reminder_color = VOLUME_REMINDER_FONT_COLOR;
infoSettings.status_xyz_bg_color = STATUS_XYZ_BG_COLOR;
infoSettings.list_border_color = LISTVIEW_BORDER_COLOR;
infoSettings.list_button_color = LISTVIEW_ICON_COLOR;

infoSettings.silent = 0;
infoSettings.terminalACK = 0;
infoSettings.move_speed = 1;
Expand All @@ -51,6 +56,7 @@ void infoSettingsReset(void)

infoSettings.send_start_gcode = 0;
infoSettings.send_end_gcode = 0;
infoSettings.send_cancel_gcode = 1;
infoSettings.auto_off = 0;
infoSettings.ps_active_high = PS_ON_ACTIVE_HIGH;
infoSettings.auto_off_temp = AUTO_SHUT_DOWN_MAXTEMP;
Expand Down Expand Up @@ -84,7 +90,7 @@ void infoSettingsReset(void)

for(int i = 0; i < MAX_TOOL_COUNT ;i++)
{
infoSettings.fan_max[i] = default_max_temp[i];
infoSettings.fan_max[i] = default_max_fanPWM[i];
}

infoSettings.fan_percentage = 1;
Expand Down Expand Up @@ -116,7 +122,7 @@ void infoSettingsReset(void)
infoSettings.pause_feedrate[i] = default_pause_speed[i]; // X, Y, Z, E
}

infoSettings.level_edge = 20;
infoSettings.level_edge = LEVELING_EDGE_DISTANCE;
infoSettings.level_z_pos = LEVELING_POINT_Z;
infoSettings.level_z_raise = LEVELING_POINT_MOVE_Z;

Expand Down
Loading

0 comments on commit 8aa2368

Please sign in to comment.