|
|
@ -279,7 +279,6 @@ MainMenu::MainMenu()
|
|
|
|
linechanging=false;
|
|
|
|
linechanging=false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void MainMenu::showStatus()
|
|
|
|
void MainMenu::showStatus()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#if LCD_HEIGHT==4
|
|
|
|
#if LCD_HEIGHT==4
|
|
|
@ -426,131 +425,46 @@ void MainMenu::showStatus()
|
|
|
|
|
|
|
|
|
|
|
|
enum {ItemP_exit, ItemP_home, ItemP_origin, ItemP_preheat, ItemP_extrude, ItemP_disstep};
|
|
|
|
enum {ItemP_exit, ItemP_home, ItemP_origin, ItemP_preheat, ItemP_extrude, ItemP_disstep};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//any action must not contain a ',' character anywhere, or this breaks:
|
|
|
|
|
|
|
|
#define MENUITEM(repaint_action, click_action) \
|
|
|
|
|
|
|
|
{\
|
|
|
|
|
|
|
|
if(force_lcd_update) { lcd.setCursor(0,line); repaint_action; } \
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED) {click_action} \
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void MainMenu::showPrepare()
|
|
|
|
void MainMenu::showPrepare()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
uint8_t line=0;
|
|
|
|
uint8_t line=0;
|
|
|
|
if(lastlineoffset!=lineoffset)
|
|
|
|
clearIfNecessary();
|
|
|
|
{
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
for(int8_t i=lineoffset;i<lineoffset+LCD_HEIGHT;i++)
|
|
|
|
for(int8_t i=lineoffset;i<lineoffset+LCD_HEIGHT;i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//Serial.println((int)(line-lineoffset));
|
|
|
|
//Serial.println((int)(line-lineoffset));
|
|
|
|
switch(i)
|
|
|
|
switch(i)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case ItemP_exit:
|
|
|
|
case ItemP_exit:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Prepare") , BLOCK;status=Main_Menu;beepshort(); ) ;
|
|
|
|
if(force_lcd_update)
|
|
|
|
break;
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,line);lcdprintPGM(" Prepare");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK
|
|
|
|
|
|
|
|
status=Main_Menu;
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
case ItemP_home:
|
|
|
|
case ItemP_home:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Auto Home") , BLOCK;enquecommand("G28 X-105 Y-105 Z0");beepshort(); ) ;
|
|
|
|
if(force_lcd_update)
|
|
|
|
break;
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,line);lcdprintPGM(" Auto Home");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK
|
|
|
|
|
|
|
|
enquecommand("G28 X-105 Y-105 Z0");
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
case ItemP_origin:
|
|
|
|
case ItemP_origin:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Set Origin") , BLOCK;enquecommand("G92 X0 Y0 Z0");beepshort(); ) ;
|
|
|
|
if(force_lcd_update)
|
|
|
|
break;
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,line);lcdprintPGM(" Set Origin");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK
|
|
|
|
|
|
|
|
enquecommand("G92 X0 Y0 Z0");
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
case ItemP_preheat:
|
|
|
|
case ItemP_preheat:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Preheat") , BLOCK;setTargetHotend0(170);beepshort(); ) ;
|
|
|
|
if(force_lcd_update)
|
|
|
|
break;
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,line);lcdprintPGM(" Preheat");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK
|
|
|
|
|
|
|
|
setTargetHotend0(170);
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
case ItemP_extrude:
|
|
|
|
case ItemP_extrude:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Extrude") , BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E50");beepshort(); ) ;
|
|
|
|
if(force_lcd_update)
|
|
|
|
break;
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,line);lcdprintPGM(" Extrude");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK
|
|
|
|
|
|
|
|
enquecommand("G92 E0");
|
|
|
|
|
|
|
|
enquecommand("G1 F700 E50");
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
case ItemP_disstep:
|
|
|
|
case ItemP_disstep:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Disable Steppers") , BLOCK;enquecommand("M84");beepshort(); ) ;
|
|
|
|
if(force_lcd_update)
|
|
|
|
break;
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,line);lcdprintPGM(" Disable Steppers");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK
|
|
|
|
|
|
|
|
enquecommand("M84");
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
line++;
|
|
|
|
line++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
lastlineoffset=lineoffset;
|
|
|
|
updateActiveLines(ItemP_disstep,encoderpos);
|
|
|
|
if((encoderpos/lcdslow!=lastencoderpos/lcdslow)||force_lcd_update)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lcd.setCursor(0,activeline);lcd.print((activeline+lineoffset)?' ':' ');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(encoderpos<0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lineoffset--;
|
|
|
|
|
|
|
|
if(lineoffset<0)
|
|
|
|
|
|
|
|
lineoffset=0;
|
|
|
|
|
|
|
|
encoderpos=0;
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(encoderpos/lcdslow>3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lineoffset++;
|
|
|
|
|
|
|
|
encoderpos=3*lcdslow;
|
|
|
|
|
|
|
|
if(lineoffset>(ItemP_disstep+1-LCD_HEIGHT))
|
|
|
|
|
|
|
|
lineoffset=ItemP_disstep+1-LCD_HEIGHT;
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//encoderpos=encoderpos%LCD_HEIGHT;
|
|
|
|
|
|
|
|
lastencoderpos=encoderpos;
|
|
|
|
|
|
|
|
activeline=encoderpos/lcdslow;
|
|
|
|
|
|
|
|
lcd.setCursor(0,activeline);lcd.print((activeline+lineoffset)?'>':'\003');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
enum {
|
|
|
|
enum {
|
|
|
|
ItemC_exit, ItemC_nozzle,
|
|
|
|
ItemC_exit, ItemC_nozzle,
|
|
|
@ -563,31 +477,35 @@ enum {
|
|
|
|
ItemC_aret,ItemC_esteps, ItemC_store, ItemC_load,ItemC_failsafe
|
|
|
|
ItemC_aret,ItemC_esteps, ItemC_store, ItemC_load,ItemC_failsafe
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//does not work
|
|
|
|
|
|
|
|
// #define MENUCHANGEITEM(repaint_action, enter_action, accept_action, change_action) \
|
|
|
|
|
|
|
|
// {\
|
|
|
|
|
|
|
|
// if(force_lcd_update) { lcd.setCursor(0,line); repaint_action; } \
|
|
|
|
|
|
|
|
// if(activeline==line) \
|
|
|
|
|
|
|
|
// { \
|
|
|
|
|
|
|
|
// if(CLICKED) \
|
|
|
|
|
|
|
|
// { \
|
|
|
|
|
|
|
|
// linechanging=!linechanging; \
|
|
|
|
|
|
|
|
// if(linechanging) {enter_action;} \
|
|
|
|
|
|
|
|
// else {accept_action;} \
|
|
|
|
|
|
|
|
// } \
|
|
|
|
|
|
|
|
// else \
|
|
|
|
|
|
|
|
// if(linechanging) {change_action};}\
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void MainMenu::showControl()
|
|
|
|
void MainMenu::showControl()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
uint8_t line=0;
|
|
|
|
uint8_t line=0;
|
|
|
|
if((lastlineoffset!=lineoffset)||force_lcd_update)
|
|
|
|
clearIfNecessary();
|
|
|
|
{
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
for(int8_t i=lineoffset;i<lineoffset+LCD_HEIGHT;i++)
|
|
|
|
for(int8_t i=lineoffset;i<lineoffset+LCD_HEIGHT;i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
switch(i)
|
|
|
|
switch(i)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case ItemC_exit:
|
|
|
|
case ItemC_exit:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Control") , BLOCK;status=Main_Menu;beepshort(); ) ;
|
|
|
|
if(force_lcd_update)
|
|
|
|
break;
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,line);lcdprintPGM(" Control");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK
|
|
|
|
|
|
|
|
status=Main_Menu;
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
case ItemC_nozzle:
|
|
|
|
case ItemC_nozzle:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(force_lcd_update)
|
|
|
|
if(force_lcd_update)
|
|
|
@ -1134,35 +1052,7 @@ void MainMenu::showControl()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
line++;
|
|
|
|
line++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
lastlineoffset=lineoffset;
|
|
|
|
updateActiveLines(ItemC_failsafe,encoderpos);
|
|
|
|
|
|
|
|
|
|
|
|
if(!linechanging && ((encoderpos/lcdslow!=lastencoderpos/lcdslow)||force_lcd_update))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lcd.setCursor(0,activeline);lcd.print((activeline+lineoffset)?' ':' ');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(encoderpos<0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lineoffset--;
|
|
|
|
|
|
|
|
if(lineoffset<0)
|
|
|
|
|
|
|
|
lineoffset=0;
|
|
|
|
|
|
|
|
encoderpos=0;
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(encoderpos/lcdslow>3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lineoffset++;
|
|
|
|
|
|
|
|
encoderpos=3*lcdslow;
|
|
|
|
|
|
|
|
if(lineoffset>(ItemC_failsafe+1-LCD_HEIGHT))
|
|
|
|
|
|
|
|
lineoffset=ItemC_failsafe+1-LCD_HEIGHT;
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//encoderpos=encoderpos%LCD_HEIGHT;
|
|
|
|
|
|
|
|
lastencoderpos=encoderpos;
|
|
|
|
|
|
|
|
activeline=encoderpos/lcdslow;
|
|
|
|
|
|
|
|
if(activeline>3) activeline=3;
|
|
|
|
|
|
|
|
lcd.setCursor(0,activeline);lcd.print((activeline+lineoffset)?'>':'\003');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1175,14 +1065,11 @@ void MainMenu::showSD()
|
|
|
|
#ifdef SDSUPPORT
|
|
|
|
#ifdef SDSUPPORT
|
|
|
|
uint8_t line=0;
|
|
|
|
uint8_t line=0;
|
|
|
|
|
|
|
|
|
|
|
|
if(lastlineoffset!=lineoffset)
|
|
|
|
clearIfNecessary();
|
|
|
|
{
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static uint8_t nrfiles=0;
|
|
|
|
static uint8_t nrfiles=0;
|
|
|
|
if(force_lcd_update)
|
|
|
|
if(force_lcd_update)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
clear();
|
|
|
|
clear();
|
|
|
|
if(card.cardOK)
|
|
|
|
if(card.cardOK)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
nrfiles=card.getnrfilenames();
|
|
|
|
nrfiles=card.getnrfilenames();
|
|
|
@ -1192,7 +1079,6 @@ void MainMenu::showSD()
|
|
|
|
nrfiles=0;
|
|
|
|
nrfiles=0;
|
|
|
|
lineoffset=0;
|
|
|
|
lineoffset=0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//Serial.print("Nr files:"); Serial.println((int)nrfiles);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for(int8_t i=lineoffset;i<lineoffset+LCD_HEIGHT;i++)
|
|
|
|
for(int8_t i=lineoffset;i<lineoffset+LCD_HEIGHT;i++)
|
|
|
@ -1200,18 +1086,8 @@ void MainMenu::showSD()
|
|
|
|
switch(i)
|
|
|
|
switch(i)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
case 0:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" File") , BLOCK;status=Main_Menu;beepshort(); ) ;
|
|
|
|
if(force_lcd_update)
|
|
|
|
break;
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,line);lcdprintPGM(" File");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if((activeline==line) && CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK
|
|
|
|
|
|
|
|
status=Main_Menu;
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
case 1:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(force_lcd_update)
|
|
|
|
if(force_lcd_update)
|
|
|
@ -1272,93 +1148,33 @@ void MainMenu::showSD()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
line++;
|
|
|
|
line++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
lastlineoffset=lineoffset;
|
|
|
|
updateActiveLines(1+nrfiles,encoderpos);
|
|
|
|
if((encoderpos!=lastencoderpos)||force_lcd_update)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lcd.setCursor(0,activeline);lcd.print((activeline+lineoffset)?' ':' ');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(encoderpos<0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lineoffset--;
|
|
|
|
|
|
|
|
if(lineoffset<0)
|
|
|
|
|
|
|
|
lineoffset=0;
|
|
|
|
|
|
|
|
encoderpos=0;
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(encoderpos/lcdslow>3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lineoffset++;
|
|
|
|
|
|
|
|
encoderpos=3*lcdslow;
|
|
|
|
|
|
|
|
if(lineoffset>(1+nrfiles+1-LCD_HEIGHT))
|
|
|
|
|
|
|
|
lineoffset=1+nrfiles+1-LCD_HEIGHT;
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
lastencoderpos=encoderpos;
|
|
|
|
|
|
|
|
activeline=encoderpos;
|
|
|
|
|
|
|
|
if(activeline>3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
activeline=3;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(activeline<0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
activeline=0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(activeline>1+nrfiles) activeline=1+nrfiles;
|
|
|
|
|
|
|
|
if(lineoffset>1+nrfiles) lineoffset=1+nrfiles;
|
|
|
|
|
|
|
|
lcd.setCursor(0,activeline);lcd.print((activeline+lineoffset)?'>':'\003');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
enum {ItemM_watch, ItemM_prepare, ItemM_control, ItemM_file };
|
|
|
|
enum {ItemM_watch, ItemM_prepare, ItemM_control, ItemM_file };
|
|
|
|
void MainMenu::showMainMenu()
|
|
|
|
void MainMenu::showMainMenu()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//if(int(encoderpos/lcdslow)!=int(lastencoderpos/lcdslow))
|
|
|
|
|
|
|
|
// force_lcd_update=true;
|
|
|
|
|
|
|
|
#ifndef ULTIPANEL
|
|
|
|
#ifndef ULTIPANEL
|
|
|
|
force_lcd_update=false;
|
|
|
|
force_lcd_update=false;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
//Serial.println((int)activeline);
|
|
|
|
|
|
|
|
if(force_lcd_update)
|
|
|
|
clearIfNecessary();
|
|
|
|
clear();
|
|
|
|
|
|
|
|
for(int8_t line=0;line<LCD_HEIGHT;line++)
|
|
|
|
for(int8_t line=0;line<LCD_HEIGHT;line++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
switch(line)
|
|
|
|
switch(line)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case ItemM_watch:
|
|
|
|
case ItemM_watch:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Watch") , BLOCK;status=Main_Status;beepshort(); ) ;
|
|
|
|
if(force_lcd_update) {lcd.setCursor(0,line);lcdprintPGM(" Watch \x7E");}
|
|
|
|
break;
|
|
|
|
if((activeline==line)&&CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK;
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
status=Main_Status;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
case ItemM_prepare:
|
|
|
|
case ItemM_prepare:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Prepare \x7E") , BLOCK;status=Main_Prepare;beepshort(); ) ;
|
|
|
|
if(force_lcd_update) {lcd.setCursor(0,line);lcdprintPGM(" Prepare \x7E");}
|
|
|
|
break;
|
|
|
|
if((activeline==line)&&CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK;
|
|
|
|
|
|
|
|
status=Main_Prepare;
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case ItemM_control:
|
|
|
|
case ItemM_control:
|
|
|
|
{
|
|
|
|
MENUITEM( lcdprintPGM(" Control \x7E") , BLOCK;status=Main_Control;beepshort(); ) ;
|
|
|
|
if(force_lcd_update) {lcd.setCursor(0,line);lcdprintPGM(" Control \x7E");}
|
|
|
|
break;
|
|
|
|
if((activeline==line)&&CLICKED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
BLOCK;
|
|
|
|
|
|
|
|
status=Main_Control;
|
|
|
|
|
|
|
|
beepshort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}break;
|
|
|
|
|
|
|
|
#ifdef SDSUPPORT
|
|
|
|
#ifdef SDSUPPORT
|
|
|
|
case ItemM_file:
|
|
|
|
case ItemM_file:
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1392,6 +1208,9 @@ void MainMenu::showMainMenu()
|
|
|
|
beepshort();
|
|
|
|
beepshort();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}break;
|
|
|
|
}break;
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
case ItemM_file:
|
|
|
|
|
|
|
|
break;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
SERIAL_ERROR_START;
|
|
|
|
SERIAL_ERROR_START;
|
|
|
@ -1399,24 +1218,7 @@ void MainMenu::showMainMenu()
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(activeline<0)
|
|
|
|
updateActiveLines(3,encoderpos);
|
|
|
|
activeline=0;
|
|
|
|
|
|
|
|
if(activeline>=LCD_HEIGHT)
|
|
|
|
|
|
|
|
activeline=LCD_HEIGHT-1;
|
|
|
|
|
|
|
|
if((encoderpos!=lastencoderpos)||force_lcd_update)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lcd.setCursor(0,activeline);lcd.print(activeline?' ':' ');
|
|
|
|
|
|
|
|
if(encoderpos<0) encoderpos=0;
|
|
|
|
|
|
|
|
if(encoderpos>3*lcdslow)
|
|
|
|
|
|
|
|
encoderpos=3*lcdslow;
|
|
|
|
|
|
|
|
activeline=abs(encoderpos/lcdslow)%LCD_HEIGHT;
|
|
|
|
|
|
|
|
if(activeline<0)
|
|
|
|
|
|
|
|
activeline=0;
|
|
|
|
|
|
|
|
if(activeline>=LCD_HEIGHT)
|
|
|
|
|
|
|
|
activeline=LCD_HEIGHT-1;
|
|
|
|
|
|
|
|
lastencoderpos=encoderpos;
|
|
|
|
|
|
|
|
lcd.setCursor(0,activeline);lcd.print(activeline?'>':'\003');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void MainMenu::update()
|
|
|
|
void MainMenu::update()
|
|
|
@ -1433,20 +1235,18 @@ void MainMenu::update()
|
|
|
|
if(CARDINSERTED)
|
|
|
|
if(CARDINSERTED)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
card.initsd();
|
|
|
|
card.initsd();
|
|
|
|
lcd_status("Card inserted");
|
|
|
|
LCD_MESSAGEPGM("Card inserted");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
card.release();
|
|
|
|
card.release();
|
|
|
|
lcd_status("Card removed");
|
|
|
|
LCD_MESSAGEPGM("Card removed");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
if(status!=oldstatus)
|
|
|
|
if(status!=oldstatus)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//Serial.println(status);
|
|
|
|
|
|
|
|
//clear();
|
|
|
|
|
|
|
|
force_lcd_update=true;
|
|
|
|
force_lcd_update=true;
|
|
|
|
encoderpos=0;
|
|
|
|
encoderpos=0;
|
|
|
|
lineoffset=0;
|
|
|
|
lineoffset=0;
|
|
|
|