Repetier-Firmware  0.91
src/ArduinoAVR/Repetier/uimenu.h
Go to the documentation of this file.
00001 /*
00002     This file is part of Repetier-Firmware.
00003 
00004     Repetier-Firmware is free software: you can redistribute it and/or modify
00005     it under the terms of the GNU General Public License as published by
00006     the Free Software Foundation, either version 3 of the License, or
00007     (at your option) any later version.
00008 
00009     Repetier-Firmware is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012     GNU General Public License for more details.
00013 
00014     You should have received a copy of the GNU General Public License
00015     along with Repetier-Firmware.  If not, see <http://www.gnu.org/licenses/>.
00016 
00017 */
00018 #if !defined(_UI_MENU_H) && defined(UI_MAIN)
00019 #define _UI_MENU_H
00020 
00021 /*
00022 The menu configuration uses dynamic strings. These dynamic strings can contain
00023 a placeholder for special values. During print these placeholder are exchanged
00024 by their current value. Everything else is printed exactly as written.
00025 
00026 A placeholder always has 3 chars. It starts with a % followed by 2 characters
00027 defining the value. You can use any placeholder in any position, also it doesn't
00028 always make sense.
00029 
00030 List of placeholder:
00031 %ec : Current extruder temperature
00032 %eb : Current heated bed temperature
00033 %e0..9 : Temp. of extruder 0..9
00034 %er : Extruder relative mode
00035 %Ec : Target temperature of current extruder
00036 %Eb : Target temperature of heated bed
00037 %E0-9 : Target temperature of extruder 0..9
00038 %os : Status message
00039 %oe : Error message
00040 %oB : Buffer length
00041 %om : Speed multiplier
00042 %of : flow multiplier
00043 %oc : Connection baudrate
00044 %o0..9 : Output level extruder 0..9 is % including %sign.
00045 %oC : Output level current extruder
00046 %ob : Output level heated bed
00047 %%% : The % char
00048 %x0 : X position
00049 %x1 : Y position
00050 %x2 : Z position
00051 %x3 : Current extruder position
00052 %sx : State of x min endstop.
00053 %sX : State of x max endstop.
00054 %sy : State of y min endstop.
00055 %sY : State of y max endstop.
00056 %sz : State of z min endstop.
00057 %sZ : State of z max endstop.
00058 %do : Debug echo state.
00059 %di : Debug info state.
00060 %de : Debug error state.
00061 %dd : Debug dry run state.
00062 %O0 : OPS mode = 0
00063 %O1 : OPS mode = 1
00064 %O2 : OPS mode = 2
00065 %Or : OPS retract distance
00066 %Ob : OPS backslash distance
00067 %Od : OPS min distance
00068 %Oa : OPS move after
00069 %ax : X acceleration during print moves
00070 %ay : Y acceleration during print moves
00071 %az : Z acceleration during print moves
00072 %aX : X acceleration during travel moves
00073 %aY : Y acceleration during travel moves
00074 %aZ : Z acceleration during travel moves
00075 %aj : Max. jerk
00076 %aJ : Max. Z-jerk
00077 %fx : Max. feedrate x direction
00078 %fy : Max. feedrate y direction
00079 %fz : Max. feedrate z direction
00080 %fe : Max. feedrate current extruder
00081 %fX : Homing feedrate x direction
00082 %fY : Homing feedrate y direction
00083 %fZ : Homing feedrate z direction
00084 %Fs : Fan speed
00085 %PN : Printer name
00086 %Sx : Steps per mm x direction
00087 %Sy : Steps per mm y direction
00088 %Sz : Steps per mm z direction
00089 %Se : Steps per mm current extruder
00090 %Ut : Shows printing time
00091 %Uf : Shows total filament usage
00092 %is : Stepper inactive time in seconds
00093 %ip : Max. inactive time in seconds
00094 %X0..9 : Extruder selected marker
00095 %Xi : PID I gain
00096 %Xp : PID P gain
00097 %Xd : PID D gain
00098 %Xm : PID drive min
00099 %XM : PID drive max
00100 %XD : PID max
00101 %Xw : Extruder watch period in seconds
00102 %Xh : Extruder heat manager (BangBang/PID)
00103 %Xa : Advance K value
00104 %Xl : Advance L value
00105 %Xx : x offset in steps
00106 %Xy : y offset in steps
00107 %Xf : Extruder max. start feedrate
00108 %XF : Extruder max. feedrate
00109 %XA : Extruder max. acceleration
00110 */
00111 
00112 
00113 // Define precision for temperatures. With small displays only integer values fit.
00114 #ifndef UI_TEMP_PRECISION
00115 #if UI_COLS>16
00116 #define UI_TEMP_PRECISION 1
00117 #else
00118 #define UI_TEMP_PRECISION 0
00119 #endif
00120 #endif
00121 
00122 /* ============= PAGES DEFINITION =============
00123 
00124 If you are not iside a menu, the firmware displays pages with information.
00125 Especially if you have only a small display it is convenient to have
00126 more then one information page.
00127 */
00128 
00129 /* Define your pages using dynamic strings. To define a page use
00130 UI_PAGE4(name,row1,row2,row3,row4);
00131 for 4 row displays and
00132 UI_PAGE2(name,row1,row2);
00133 for 2 row displays. You can add additional pages or change the default pages like you want.
00134 */
00135 
00136 #if UI_ROWS>=6 && UI_DISPLAY_TYPE==5
00137 
00138  //graphic main status
00139 
00140    UI_PAGE6(ui_page1,"\xa %e0/%E0\xb0 X:%x0",
00141    #if NUM_EXTRUDER>1
00142      "\xa %e1/%E1\xb0 Y:%x1",
00143   #else
00144      "\xa -----/---\xb0 Y:%x1",
00145    #endif
00146    #if HAVE_HEATED_BED==true
00147      "\xe %eb/%Eb\xb0 Z:%x2",
00148    #else
00149      "\xb -----/---\xb0 Z:%x2",
00150    #endif
00151    "Mul:%om", "Buf:%oB", "%os");
00152 
00153   #if EEPROM_MODE!=0
00154     UI_PAGE4(ui_page2,UI_TEXT_PRINT_TIME,"%Ut",UI_TEXT_PRINT_FILAMENT,"%Uf m");
00155     #define UI_PRINTTIME_PAGES ,&ui_page2
00156     #define UI_PRINTTIME_COUNT 1
00157   #else
00158     #define UI_PRINTTIME_PAGES
00159     #define UI_PRINTTIME_COUNT 0
00160   #endif
00161   /*
00162   Merge pages together. Use the following pattern:
00163   #define UI_PAGES {&name1,&name2,&name3}
00164   */
00165   #define UI_PAGES {&ui_page1 UI_PRINTTIME_PAGES}
00166   // How many pages do you want to have. Minimum is 1.
00167   #define UI_NUM_PAGES 1+UI_PRINTTIME_COUNT
00168 
00169 #elif UI_ROWS>=4
00170  #if HAVE_HEATED_BED==true
00171    UI_PAGE4(ui_page1,"\005%ec/%Ec\002B%eB/%Eb\002","Z:%x2","Mul:%om Buf:%oB","%os");
00172    //UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED,UI_TEXT_PAGE_BUFFER,"%os");
00173  #else
00174    UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,"Z:%x2 mm",UI_TEXT_PAGE_BUFFER,"%os");
00175  #endif
00176   UI_PAGE4(ui_page2,"X:%x0 mm","Y:%x1 mm","Z:%x2 mm","%os");
00177 //UI_PAGE4(ui_page2,"dX:%y0 mm %sX","dY:%y1 mm %sY","dZ:%y2 mm %sZ","%os");
00178    UI_PAGE4(ui_page3,UI_TEXT_PAGE_EXTRUDER1,
00179  #if NUM_EXTRUDER>1
00180    UI_TEXT_PAGE_EXTRUDER2
00181  #else
00182    ""
00183  #endif
00184  #if HAVE_HEATED_BED==true
00185   ,UI_TEXT_PAGE_BED
00186  #else
00187   ,""
00188  #endif
00189  ,"%os");
00190  #if EEPROM_MODE!=0
00191   UI_PAGE4(ui_page4,UI_TEXT_PRINT_TIME,"%Ut",UI_TEXT_PRINT_FILAMENT,"%Uf m");
00192   #define UI_PRINTTIME_PAGES ,&ui_page4
00193   #define UI_PRINTTIME_COUNT 1
00194  #else
00195   #define UI_PRINTTIME_PAGES
00196   #define UI_PRINTTIME_COUNT 0
00197  #endif
00198 /*
00199 Merge pages together. Use the following pattern:
00200 #define UI_PAGES {&name1,&name2,&name3}
00201 */
00202  #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3 UI_PRINTTIME_PAGES}
00203 // How many pages do you want to have. Minimum is 1.
00204  #define UI_NUM_PAGES 3+UI_PRINTTIME_COUNT
00205 #else
00206 #if HAVE_HEATED_BED==true
00207 UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED);
00208 #else
00209 UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,"%os");
00210 #endif
00211 UI_PAGE2(ui_page2,"X:%x0 Y:%x1","%os");
00212 UI_PAGE2(ui_page3,"Z:%x2 mm","%os");
00213 /*
00214 Merge pages together. Use the following pattern:
00215 #define UI_PAGES {&name1,&name2,&name3}
00216 */
00217 #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3}
00218 // How many pages do you want to have. Minimum is 1.
00219 #define UI_NUM_PAGES 3
00220 #endif
00221 /* ============ MENU definition ================
00222 
00223 The menu works the same as pages. In addion you need to define what the lines do
00224 or where to jump to. For that reason, the menu structure needs to be entered in
00225 reverse order. Starting from the leaves, the menu structure is defined.
00226 */
00227 
00228 /*
00229 At first define all actions available in the menu. The actions define, what the
00230 next/previous button will do. All menu actions work the same:
00231 next/previous changes the value
00232 ok sets the value if not already done and goes back to previous menu.
00233 */
00234 
00235 // Error menu
00236 
00237 UI_MENU_ACTION2(ui_menu_error,UI_ACTION_DUMMY,UI_TEXT_ERROR,"%oe");
00238 
00239 // **** Positions submenus
00240 
00241 #if UI_ROWS>=4
00242 UI_MENU_ACTION4C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION4);
00243 UI_MENU_ACTION4C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION4);
00244 UI_MENU_ACTION4C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION4);
00245 UI_MENU_ACTION4C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST4);
00246 UI_MENU_ACTION4C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST4);
00247 UI_MENU_ACTION4C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST4);
00248 #else
00249 UI_MENU_ACTION2C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION2);
00250 UI_MENU_ACTION2C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION2);
00251 UI_MENU_ACTION2C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION2);
00252 UI_MENU_ACTION2C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST2);
00253 UI_MENU_ACTION2C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST2);
00254 UI_MENU_ACTION2C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST2);
00255 #endif
00256 UI_MENU_ACTION2C(ui_menu_epos,UI_ACTION_EPOSITION,UI_TEXT_ACTION_EPOSITION_FAST2);
00257 
00258 /*
00259 Next step is to define submenus leading to the action.
00260 */
00261 
00262 // **** Positionening menu
00263 UI_MENU_ACTIONCOMMAND(ui_menu_back,UI_TEXT_BACK,UI_ACTION_BACK);
00264 #if UI_HAS_BACK_KEY==0
00265 #define UI_MENU_ADDCONDBACK &ui_menu_back,
00266 #define UI_MENU_BACKCNT 1
00267 #else
00268 #define UI_MENU_ADDCONDBACK
00269 #define UI_MENU_BACKCNT 0
00270 #endif
00271 UI_MENU_ACTIONCOMMAND(ui_menu_home_all,UI_TEXT_HOME_ALL,UI_ACTION_HOME_ALL);
00272 UI_MENU_ACTIONCOMMAND(ui_menu_home_x,UI_TEXT_HOME_X,UI_ACTION_HOME_X);
00273 UI_MENU_ACTIONCOMMAND(ui_menu_home_y,UI_TEXT_HOME_Y,UI_ACTION_HOME_Y);
00274 UI_MENU_ACTIONCOMMAND(ui_menu_home_z,UI_TEXT_HOME_Z,UI_ACTION_HOME_Z);
00275 UI_MENU_ACTIONSELECTOR(ui_menu_go_xpos,UI_TEXT_X_POSITION,ui_menu_xpos);
00276 UI_MENU_ACTIONSELECTOR(ui_menu_go_ypos,UI_TEXT_Y_POSITION,ui_menu_ypos);
00277 UI_MENU_ACTIONSELECTOR(ui_menu_go_zpos,UI_TEXT_Z_POSITION,ui_menu_zpos);
00278 UI_MENU_ACTIONSELECTOR(ui_menu_go_epos,UI_TEXT_E_POSITION,ui_menu_epos);
00279 #if !UI_SPEEDDEPENDENT_POSITIONING
00280 UI_MENU_ACTIONSELECTOR(ui_menu_go_xfast,UI_TEXT_X_POS_FAST,ui_menu_xpos_fast);
00281 UI_MENU_ACTIONSELECTOR(ui_menu_go_yfast,UI_TEXT_Y_POS_FAST,ui_menu_ypos_fast);
00282 UI_MENU_ACTIONSELECTOR(ui_menu_go_zfast,UI_TEXT_Z_POS_FAST,ui_menu_zpos_fast);
00283 #define UI_SPEED 2
00284 #define UI_SPEED_X ,&ui_menu_go_xfast,&ui_menu_go_xpos
00285 #define UI_SPEED_Y ,&ui_menu_go_yfast,&ui_menu_go_ypos
00286 #define UI_SPEED_Z ,&ui_menu_go_zfast,&ui_menu_go_zpos
00287 #else
00288 #define UI_SPEED 1
00289 #define UI_SPEED_X ,&ui_menu_go_xpos
00290 #define UI_SPEED_Y ,&ui_menu_go_ypos
00291 #define UI_SPEED_Z ,&ui_menu_go_zpos
00292 #endif
00293 
00294 #if DRIVE_SYSTEM!=3     //Positioning menu for non-delta
00295 #define UI_MENU_POSITIONS {UI_MENU_ADDCONDBACK &ui_menu_home_all,&ui_menu_home_x,&ui_menu_home_y,&ui_menu_home_z UI_SPEED_X UI_SPEED_Y UI_SPEED_Z ,&ui_menu_go_epos}
00296 UI_MENU(ui_menu_positions,UI_MENU_POSITIONS,5+3*UI_SPEED+UI_MENU_BACKCNT);
00297 #else                   //Positioning menu for delta (removes individual x,y,z homing)
00298 #define UI_MENU_POSITIONS {UI_MENU_ADDCONDBACK &ui_menu_home_all  UI_SPEED_X UI_SPEED_Y UI_SPEED_Z ,&ui_menu_go_epos}
00299 UI_MENU(ui_menu_positions,UI_MENU_POSITIONS,2+3*UI_SPEED+UI_MENU_BACKCNT);
00300 #endif
00301 
00302 // **** Delta calibration menu
00303 #ifdef Z_HOME_DIR < 0
00304 UI_MENU_ACTIONCOMMAND(ui_menu_set_measured_origin,UI_TEXT_SET_MEASURED_ORIGIN,UI_ACTION_SET_MEASURED_ORIGIN);
00305 #define UI_MENU_DELTA {UI_MENU_ADDCONDBACK &ui_menu_home_all UI_SPEED_Z,&ui_menu_set_measured_origin}
00306 UI_MENU(ui_menu_delta,UI_MENU_DELTA,2+UI_SPEED+UI_MENU_BACKCNT);
00307 #endif
00308 
00309 // **** Bed leveling menu
00310 #ifdef SOFTWARE_LEVELING
00311 UI_MENU_ACTIONCOMMAND(ui_menu_set_p1,UI_TEXT_SET_P1,UI_ACTION_SET_P1);
00312 UI_MENU_ACTIONCOMMAND(ui_menu_set_p2,UI_TEXT_SET_P2,UI_ACTION_SET_P2);
00313 UI_MENU_ACTIONCOMMAND(ui_menu_set_p3,UI_TEXT_SET_P3,UI_ACTION_SET_P3);
00314 UI_MENU_ACTIONCOMMAND(ui_menu_calculate_leveling,UI_TEXT_CALCULATE_LEVELING,UI_ACTION_CALC_LEVEL);
00315 #define UI_MENU_LEVEL {UI_MENU_ADDCONDBACK &ui_menu_set_p1,&ui_menu_set_p2,&ui_menu_set_p3,&ui_menu_calculate_leveling UI_SPEED_X UI_SPEED_Y UI_SPEED_Z}
00316 UI_MENU(ui_menu_level,UI_MENU_LEVEL,4+3*UI_SPEED+UI_MENU_BACKCNT);
00317 #endif
00318 
00319 // **** Extruder menu
00320 
00321 UI_MENU_CHANGEACTION(ui_menu_ext_temp0,UI_TEXT_EXTR0_TEMP,UI_ACTION_EXTRUDER0_TEMP);
00322 UI_MENU_CHANGEACTION(ui_menu_ext_temp1,UI_TEXT_EXTR1_TEMP,UI_ACTION_EXTRUDER1_TEMP);
00323 UI_MENU_CHANGEACTION(ui_menu_bed_temp, UI_TEXT_BED_TEMP,UI_ACTION_HEATED_BED_TEMP);
00324 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel0,UI_TEXT_EXTR0_SELECT,UI_ACTION_SELECT_EXTRUDER0);
00325 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel1,UI_TEXT_EXTR1_SELECT,UI_ACTION_SELECT_EXTRUDER1);
00326 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off0,UI_TEXT_EXTR0_OFF,UI_ACTION_EXTRUDER0_OFF);
00327 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off1,UI_TEXT_EXTR1_OFF,UI_ACTION_EXTRUDER1_OFF);
00328 UI_MENU_ACTIONCOMMAND(ui_menu_ext_origin,UI_TEXT_EXTR_ORIGIN,UI_ACTION_RESET_EXTRUDER);
00329 
00330 #if NUM_EXTRUDER==2
00331 #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_temp1,&ui_menu_ext_off0,&ui_menu_ext_off1,&ui_menu_ext_sel0,&ui_menu_ext_sel1,
00332 #define UI_MENU_EXTCNT 6
00333 #elif NUM_EXTRUDER>2
00334 UI_MENU_CHANGEACTION(ui_menu_ext_temp2,UI_TEXT_EXTR2_TEMP,UI_ACTION_EXTRUDER2_TEMP);
00335 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel2,UI_TEXT_EXTR2_SELECT,UI_ACTION_SELECT_EXTRUDER2);
00336 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off2,UI_TEXT_EXTR2_OFF,UI_ACTION_EXTRUDER2_OFF);
00337 #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_temp1,&ui_menu_ext_temp2,&ui_menu_ext_off0,&ui_menu_ext_off1,&ui_menu_ext_off2,&ui_menu_ext_sel0,&ui_menu_ext_sel1,&ui_menu_ext_sel1,
00338 #define UI_MENU_EXTCNT 9
00339 #else
00340 #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_off0,
00341 #define UI_MENU_EXTCNT 2
00342 #endif
00343 #if HAVE_HEATED_BED==true
00344 #define UI_MENU_BEDCOND &ui_menu_bed_temp,
00345 #define UI_MENU_BEDCNT 1
00346 #else
00347 #define UI_MENU_BEDCOND
00348 #define UI_MENU_BEDCNT 0
00349 #endif
00350 
00351 #define UI_MENU_EXTRUDER {UI_MENU_ADDCONDBACK UI_MENU_BEDCOND UI_MENU_EXTCOND &ui_menu_go_epos,&ui_menu_ext_origin}
00352 UI_MENU(ui_menu_extruder,UI_MENU_EXTRUDER,UI_MENU_BACKCNT+UI_MENU_BEDCNT+UI_MENU_EXTCNT+2);
00353 
00354 // **** SD card menu
00355 
00356 // **** Quick menu
00357 #if PS_ON_PIN>=0
00358 UI_MENU_ACTIONCOMMAND(ui_menu_quick_power,UI_TEXT_POWER,UI_ACTION_POWER);
00359 #define MENU_PSON_COUNT 1
00360 #define MENU_PSON_ENTRY ,&ui_menu_quick_power
00361 #else
00362 #define MENU_PSON_COUNT 0
00363 #define MENU_PSON_ENTRY
00364 #endif
00365 #if CASE_LIGHTS_PIN > 0
00366 UI_MENU_ACTIONCOMMAND(ui_menu_toggle_light,UI_TEXT_LIGHTS_ONOFF,UI_ACTION_LIGHTS_ONOFF);
00367 #define UI_TOOGLE_LIGHT_ENTRY ,&ui_menu_toggle_light
00368 #define UI_TOGGLE_LIGHT_COUNT 1
00369 #else
00370 #define UI_TOOGLE_LIGHT_ENTRY
00371 #define UI_TOGGLE_LIGHT_COUNT 0
00372 #endif
00373 UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_pla,UI_TEXT_PREHEAT_PLA,UI_ACTION_PREHEAT_PLA);
00374 UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_abs,UI_TEXT_PREHEAT_ABS,UI_ACTION_PREHEAT_ABS);
00375 UI_MENU_ACTIONCOMMAND(ui_menu_quick_cooldown,UI_TEXT_COOLDOWN,UI_ACTION_COOLDOWN);
00376 UI_MENU_ACTIONCOMMAND(ui_menu_quick_origin,UI_TEXT_SET_TO_ORIGIN,UI_ACTION_SET_ORIGIN);
00377 UI_MENU_ACTIONCOMMAND(ui_menu_quick_stopstepper,UI_TEXT_DISABLE_STEPPER,UI_ACTION_DISABLE_STEPPER);
00378 UI_MENU_CHANGEACTION(ui_menu_quick_speedmultiply,UI_TEXT_SPEED_MULTIPLY,UI_ACTION_FEEDRATE_MULTIPLY);
00379 UI_MENU_CHANGEACTION(ui_menu_quick_flowmultiply,UI_TEXT_FLOW_MULTIPLY,UI_ACTION_FLOWRATE_MULTIPLY);
00380 #ifdef DEBUG_PRINT
00381 UI_MENU_ACTIONCOMMAND(ui_menu_quick_debug,"Write Debug",UI_ACTION_WRITE_DEBUG);
00382 #define DEBUG_PRINT_COUNT 1
00383 #define DEBUG_PRINT_EXTRA ,&ui_menu_quick_debug
00384 #else
00385 #define DEBUG_PRINT_COUNT 0
00386 #define DEBUG_PRINT_EXTRA
00387 #endif
00388 #define UI_MENU_QUICK {UI_MENU_ADDCONDBACK &ui_menu_home_all,&ui_menu_quick_speedmultiply,&ui_menu_quick_flowmultiply UI_TOOGLE_LIGHT_ENTRY ,&ui_menu_quick_preheat_pla,&ui_menu_quick_preheat_abs,&ui_menu_quick_cooldown,&ui_menu_quick_origin,&ui_menu_quick_stopstepper MENU_PSON_ENTRY DEBUG_PRINT_EXTRA}
00389 UI_MENU(ui_menu_quick,UI_MENU_QUICK,8+UI_MENU_BACKCNT+MENU_PSON_COUNT+DEBUG_PRINT_COUNT+UI_TOGGLE_LIGHT_COUNT);
00390 
00391 // **** Fan menu
00392 
00393 #if FAN_PIN>-1
00394 UI_MENU_CHANGEACTION(ui_menu_fan_fanspeed, UI_TEXT_ACTION_FANSPEED,UI_ACTION_FANSPEED);
00395 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_fan_off,UI_TEXT_FAN_OFF,UI_ACTION_FAN_OFF,MENU_MODE_FAN_RUNNING,0);
00396 UI_MENU_ACTIONCOMMAND(ui_menu_fan_25,UI_TEXT_FAN_25,UI_ACTION_FAN_25);
00397 UI_MENU_ACTIONCOMMAND(ui_menu_fan_50,UI_TEXT_FAN_50,UI_ACTION_FAN_50);
00398 UI_MENU_ACTIONCOMMAND(ui_menu_fan_75,UI_TEXT_FAN_75,UI_ACTION_FAN_75);
00399 UI_MENU_ACTIONCOMMAND(ui_menu_fan_full,UI_TEXT_FAN_FULL,UI_ACTION_FAN_FULL);
00400 #define UI_MENU_FAN {UI_MENU_ADDCONDBACK &ui_menu_fan_fanspeed,&ui_menu_fan_off,&ui_menu_fan_25,&ui_menu_fan_50,&ui_menu_fan_75,&ui_menu_fan_full}
00401 UI_MENU(ui_menu_fan,UI_MENU_FAN,6+UI_MENU_BACKCNT);
00402 UI_MENU_SUBMENU(ui_menu_fan_sub,UI_TEXT_FANSPEED,ui_menu_fan);
00403 #define UI_MENU_FAN_COND &ui_menu_fan_sub,
00404 #define UI_MENU_FAN_CNT 1
00405 #else
00406 #define UI_MENU_FAN_COND
00407 #define UI_MENU_FAN_CNT 0
00408 #endif
00409 
00410 // **** SD card menu
00411 
00412 #ifdef SDSUPPORT
00413 #define UI_MENU_SD_FILESELECTOR {&ui_menu_back}
00414 UI_MENU_FILESELECT(ui_menu_sd_fileselector,UI_MENU_SD_FILESELECTOR,1);
00415 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_printfile,UI_TEXT_PRINT_FILE,UI_ACTION_SD_PRINT,MENU_MODE_SD_MOUNTED,MENU_MODE_SD_PRINTING);
00416 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_pause,UI_TEXT_PAUSE_PRINT,UI_ACTION_SD_PAUSE,MENU_MODE_SD_PRINTING,MENU_MODE_SD_PAUSED);
00417 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_continue,UI_TEXT_CONTINUE_PRINT,UI_ACTION_SD_CONTINUE,MENU_MODE_SD_PAUSED,0);
00418 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_stop,UI_TEXT_STOP_PRINT,UI_ACTION_SD_STOP,MENU_MODE_SD_PRINTING,0);
00419 #if defined(SDCARDDETECT) && SDCARDDETECT>-1
00420 #define UI_MOUNT_CNT 0
00421 #define UI_MOUNT_CMD
00422 #else
00423 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_unmount,UI_TEXT_UNMOUNT_CARD,UI_ACTION_SD_UNMOUNT,MENU_MODE_SD_MOUNTED,0);
00424 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_mount,UI_TEXT_MOUNT_CARD,UI_ACTION_SD_MOUNT,0,MENU_MODE_SD_MOUNTED);
00425 #define UI_MOUNT_CNT 2
00426 #define UI_MOUNT_CMD ,&ui_menu_sd_unmount,&ui_menu_sd_mount
00427 #endif
00428 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_delete,UI_TEXT_DELETE_FILE,UI_ACTION_SD_DELETE,MENU_MODE_SD_MOUNTED,MENU_MODE_SD_PRINTING);
00429 #define UI_MENU_SD {UI_MENU_ADDCONDBACK &ui_menu_sd_printfile,&ui_menu_sd_pause,&ui_menu_sd_stop,&ui_menu_sd_continue UI_MOUNT_CMD ,&ui_menu_sd_delete}
00430 UI_MENU(ui_menu_sd,UI_MENU_SD,UI_MENU_BACKCNT+5+UI_MOUNT_CNT);
00431 UI_MENU_SUBMENU(ui_menu_sd_sub,UI_TEXT_SD_CARD,ui_menu_sd);
00432 
00433 #define UI_MENU_SD_COND &ui_menu_sd_sub,
00434 #define UI_MENU_SD_CNT 1
00435 #else
00436 #define UI_MENU_SD_COND
00437 #define UI_MENU_SD_CNT 0
00438 #endif
00439 
00440 
00441 // **** Debugging menu
00442 UI_MENU_ACTIONCOMMAND(ui_menu_debug_echo,UI_TEXT_DBG_ECHO,UI_ACTION_DEBUG_ECHO);
00443 UI_MENU_ACTIONCOMMAND(ui_menu_debug_info,UI_TEXT_DBG_INFO,UI_ACTION_DEBUG_INFO);
00444 UI_MENU_ACTIONCOMMAND(ui_menu_debug_error,UI_TEXT_DBG_ERROR,UI_ACTION_DEBUG_ERROR);
00445 UI_MENU_ACTIONCOMMAND(ui_menu_debug_dryrun,UI_TEXT_DBG_DRYRUN,UI_ACTION_DEBUG_DRYRUN);
00446 
00447 #define UI_MENU_DEBUGGING {UI_MENU_ADDCONDBACK &ui_menu_debug_echo,&ui_menu_debug_info,&ui_menu_debug_error,&ui_menu_debug_dryrun}
00448 UI_MENU(ui_menu_debugging,UI_MENU_DEBUGGING,4+UI_MENU_BACKCNT);
00449 
00450 // **** Acceleration settings
00451 #if DRIVE_SYSTEM!=3
00452 UI_MENU_CHANGEACTION(ui_menu_accel_printx,UI_TEXT_PRINT_X,UI_ACTION_PRINT_ACCEL_X);
00453 UI_MENU_CHANGEACTION(ui_menu_accel_printy,UI_TEXT_PRINT_Y,UI_ACTION_PRINT_ACCEL_Y);
00454 UI_MENU_CHANGEACTION(ui_menu_accel_printz,UI_TEXT_PRINT_Z,UI_ACTION_PRINT_ACCEL_Z);
00455 UI_MENU_CHANGEACTION(ui_menu_accel_travelx,UI_TEXT_MOVE_X,UI_ACTION_MOVE_ACCEL_X);
00456 UI_MENU_CHANGEACTION(ui_menu_accel_travely,UI_TEXT_MOVE_Y,UI_ACTION_MOVE_ACCEL_Y);
00457 UI_MENU_CHANGEACTION(ui_menu_accel_travelz,UI_TEXT_MOVE_Z,UI_ACTION_MOVE_ACCEL_Z);
00458 UI_MENU_CHANGEACTION(ui_menu_accel_jerk,UI_TEXT_JERK,UI_ACTION_MAX_JERK);
00459 UI_MENU_CHANGEACTION(ui_menu_accel_zjerk,UI_TEXT_ZJERK,UI_ACTION_MAX_ZJERK);
00460 #define UI_MENU_ACCEL {UI_MENU_ADDCONDBACK &ui_menu_accel_printx,&ui_menu_accel_printy,&ui_menu_accel_printz,&ui_menu_accel_travelx,&ui_menu_accel_travely,&ui_menu_accel_travelz,&ui_menu_accel_jerk,&ui_menu_accel_zjerk}
00461 UI_MENU(ui_menu_accel,UI_MENU_ACCEL,8+UI_MENU_BACKCNT);
00462 
00463 // **** Feedrates
00464 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxx,UI_TEXT_FEED_MAX_X,UI_ACTION_MAX_FEEDRATE_X);
00465 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxy,UI_TEXT_FEED_MAX_Y,UI_ACTION_MAX_FEEDRATE_Y);
00466 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxz,UI_TEXT_FEED_MAX_Z,UI_ACTION_MAX_FEEDRATE_Z);
00467 UI_MENU_CHANGEACTION(ui_menu_feedrate_homex,UI_TEXT_FEED_HOME_X,UI_ACTION_HOMING_FEEDRATE_X);
00468 UI_MENU_CHANGEACTION(ui_menu_feedrate_homey,UI_TEXT_FEED_HOME_Y,UI_ACTION_HOMING_FEEDRATE_Y);
00469 UI_MENU_CHANGEACTION(ui_menu_feedrate_homez,UI_TEXT_FEED_HOME_Z,UI_ACTION_HOMING_FEEDRATE_Z);
00470 #define UI_MENU_FEEDRATE {UI_MENU_ADDCONDBACK &ui_menu_feedrate_maxx,&ui_menu_feedrate_maxy,&ui_menu_feedrate_maxz,&ui_menu_feedrate_homex,&ui_menu_feedrate_homey,&ui_menu_feedrate_homez}
00471 UI_MENU(ui_menu_feedrate,UI_MENU_FEEDRATE,6+UI_MENU_BACKCNT);
00472 #else
00473 UI_MENU_CHANGEACTION(ui_menu_accel_printz,UI_TEXT_PRINT_Z_DELTA,UI_ACTION_PRINT_ACCEL_Z);
00474 UI_MENU_CHANGEACTION(ui_menu_accel_travelz,UI_TEXT_MOVE_Z_DELTA,UI_ACTION_MOVE_ACCEL_Z);
00475 UI_MENU_CHANGEACTION(ui_menu_accel_jerk,UI_TEXT_JERK,UI_ACTION_MAX_JERK);
00476 #define UI_MENU_ACCEL {UI_MENU_ADDCONDBACK &ui_menu_accel_printz,&ui_menu_accel_travelz,&ui_menu_accel_jerk}
00477 UI_MENU(ui_menu_accel,UI_MENU_ACCEL,3+UI_MENU_BACKCNT);
00478 
00479 // **** Feedrates
00480 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxz,UI_TEXT_FEED_MAX_Z_DELTA,UI_ACTION_MAX_FEEDRATE_Z);
00481 UI_MENU_CHANGEACTION(ui_menu_feedrate_homez,UI_TEXT_FEED_HOME_Z_DELTA,UI_ACTION_HOMING_FEEDRATE_Z);
00482 #define UI_MENU_FEEDRATE {UI_MENU_ADDCONDBACK &ui_menu_feedrate_maxz,&ui_menu_feedrate_homez}
00483 UI_MENU(ui_menu_feedrate,UI_MENU_FEEDRATE,2+UI_MENU_BACKCNT);
00484 #endif
00485 
00486 // **** General configuration settings
00487 
00488 UI_MENU_ACTION2C(ui_menu_stepper2,UI_ACTION_STEPPER_INACTIVE,UI_TEXT_STEPPER_INACTIVE2);
00489 UI_MENU_ACTION2C(ui_menu_maxinactive2,UI_ACTION_MAX_INACTIVE,UI_TEXT_POWER_INACTIVE2);
00490 UI_MENU_CHANGEACTION(ui_menu_general_baud,UI_TEXT_BAUDRATE,UI_ACTION_BAUDRATE);
00491 UI_MENU_ACTIONSELECTOR(ui_menu_general_stepper_inactive,UI_TEXT_STEPPER_INACTIVE,ui_menu_stepper2);
00492 UI_MENU_ACTIONSELECTOR(ui_menu_general_max_inactive,UI_TEXT_POWER_INACTIVE,ui_menu_maxinactive2);
00493 #define UI_MENU_GENERAL {UI_MENU_ADDCONDBACK &ui_menu_general_baud,&ui_menu_general_stepper_inactive,&ui_menu_general_max_inactive}
00494 UI_MENU(ui_menu_general,UI_MENU_GENERAL,3+UI_MENU_BACKCNT);
00495 
00496 // **** Extruder configuration
00497 
00498 UI_MENU_CHANGEACTION(ui_menu_cext_steps,UI_TEXT_EXTR_STEPS,UI_ACTION_EXTR_STEPS);
00499 UI_MENU_CHANGEACTION(ui_menu_cext_start_feedrate,UI_TEXT_EXTR_START_FEED,UI_ACTION_EXTR_START_FEEDRATE);
00500 UI_MENU_CHANGEACTION(ui_menu_cext_max_feedrate,UI_TEXT_EXTR_MAX_FEED,UI_ACTION_EXTR_MAX_FEEDRATE);
00501 UI_MENU_CHANGEACTION(ui_menu_cext_acceleration,UI_TEXT_EXTR_ACCEL,UI_ACTION_EXTR_ACCELERATION);
00502 UI_MENU_CHANGEACTION(ui_menu_cext_watch_period,UI_TEXT_EXTR_WATCH,UI_ACTION_EXTR_WATCH_PERIOD);
00503 UI_MENU_CHANGEACTION(ui_menu_ext_wait_temp,UI_TEXT_EXTR_WAIT_RETRACT_TEMP,UI_ACTION_EXTR_WAIT_RETRACT_TEMP);
00504 UI_MENU_CHANGEACTION(ui_menu_ext_wait_units,UI_TEXT_EXTR_WAIT_RETRACT_UNITS,UI_ACTION_EXTR_WAIT_RETRACT_UNITS);
00505 #define UI_MENU_ADV_CNT 0
00506 #define UI_MENU_ADVANCE
00507 #ifdef USE_ADVANCE
00508 #define UI_MENU_ADV_CNT 1
00509 #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel
00510 #ifdef ENABLE_QUADRATIC_ADVANCE
00511 #define UI_MENU_ADV_CNT 2
00512 #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel,&ui_menu_cext_advancek
00513 UI_MENU_CHANGEACTION(ui_menu_cext_advancek,UI_TEXT_EXTR_ADVANCE_K,UI_ACTION_ADVANCE_K);
00514 #endif
00515 UI_MENU_CHANGEACTION(ui_menu_cext_advancel,UI_TEXT_EXTR_ADVANCE_L,UI_ACTION_ADVANCE_L);
00516 #endif
00517 #ifdef TEMP_PID
00518 UI_MENU_CHANGEACTION(ui_menu_cext_manager,UI_TEXT_EXTR_MANAGER,UI_ACTION_EXTR_HEATMANAGER);
00519 UI_MENU_CHANGEACTION(ui_menu_cext_pgain,UI_TEXT_EXTR_PGAIN,UI_ACTION_PID_PGAIN);
00520 UI_MENU_CHANGEACTION(ui_menu_cext_igain,UI_TEXT_EXTR_IGAIN,UI_ACTION_PID_IGAIN);
00521 UI_MENU_CHANGEACTION(ui_menu_cext_dgain,UI_TEXT_EXTR_DGAIN,UI_ACTION_PID_DGAIN);
00522 UI_MENU_CHANGEACTION(ui_menu_cext_dmin,UI_TEXT_EXTR_DMIN,UI_ACTION_DRIVE_MIN);
00523 UI_MENU_CHANGEACTION(ui_menu_cext_dmax,UI_TEXT_EXTR_DMAX,UI_ACTION_DRIVE_MAX);
00524 UI_MENU_CHANGEACTION(ui_menu_cext_pmax,UI_TEXT_EXTR_PMAX,UI_ACTION_PID_MAX);
00525 #define UI_MENU_PIDCOND ,&ui_menu_cext_manager,&ui_menu_cext_pgain,&ui_menu_cext_igain,&ui_menu_cext_dgain,&ui_menu_cext_dmin,&ui_menu_cext_dmax,&ui_menu_cext_pmax
00526 #define UI_MENU_PIDCNT 7
00527 #else
00528 #define UI_MENU_PIDCOND
00529 #define UI_MENU_PIDCNT 0
00530 #endif
00531 #if NUM_EXTRUDER>1
00532 UI_MENU_CHANGEACTION(ui_menu_cext_xoffset,UI_TEXT_EXTR_XOFF,UI_ACTION_X_OFFSET);
00533 UI_MENU_CHANGEACTION(ui_menu_cext_yoffset,UI_TEXT_EXTR_YOFF,UI_ACTION_Y_OFFSET);
00534 #define UI_MENU_CONFEXTCOND &ui_menu_ext_sel0,&ui_menu_ext_sel1,&ui_menu_cext_xoffset,&ui_menu_cext_yoffset,
00535 #define UI_MENU_CONFEXTCNT 4
00536 #else
00537 #define UI_MENU_CONFEXTCOND
00538 #define UI_MENU_CONFEXTCNT 0
00539 #endif
00540 #define UI_MENU_CEXTR {UI_MENU_ADDCONDBACK UI_MENU_CONFEXTCOND &ui_menu_cext_steps,&ui_menu_cext_start_feedrate,&ui_menu_cext_max_feedrate,&ui_menu_cext_acceleration,&ui_menu_cext_watch_period,&ui_menu_ext_wait_units,&ui_menu_ext_wait_temp UI_MENU_ADVANCE UI_MENU_PIDCOND}
00541 UI_MENU(ui_menu_cextr,UI_MENU_CEXTR,7+UI_MENU_BACKCNT+UI_MENU_PIDCNT+UI_MENU_CONFEXTCNT+UI_MENU_ADV_CNT);
00542 
00543 // **** Configuration menu
00544 UI_MENU_SUBMENU(ui_menu_conf_general,UI_TEXT_GENERAL,ui_menu_general);
00545 UI_MENU_SUBMENU(ui_menu_conf_accel,UI_TEXT_ACCELERATION,ui_menu_accel);
00546 UI_MENU_SUBMENU(ui_menu_conf_feed,UI_TEXT_FEEDRATE,ui_menu_feedrate);
00547 UI_MENU_SUBMENU(ui_menu_conf_extr,UI_TEXT_EXTRUDER,ui_menu_cextr);
00548 #if EEPROM_MODE!=0
00549 UI_MENU_ACTIONCOMMAND(ui_menu_conf_to_eeprom,UI_TEXT_STORE_TO_EEPROM,UI_ACTION_STORE_EEPROM);
00550 UI_MENU_ACTIONCOMMAND(ui_menu_conf_from_eeprom,UI_TEXT_LOAD_EEPROM,UI_ACTION_LOAD_EEPROM);
00551 #define UI_MENU_EEPROM_COND ,&ui_menu_conf_to_eeprom,&ui_menu_conf_from_eeprom
00552 #define UI_MENU_EEPROM_CNT 2
00553 UI_MENU_ACTION2C(ui_menu_eeprom_saved,UI_ACTION_DUMMY,UI_TEXT_EEPROM_STORED);
00554 UI_MENU_ACTION2C(ui_menu_eeprom_loaded,UI_ACTION_DUMMY,UI_TEXT_EEPROM_LOADED);
00555 #else
00556 #define UI_MENU_EEPROM_COND
00557 #define UI_MENU_EEPROM_CNT 0
00558 #endif
00559 #ifdef SOFTWARE_LEVELING
00560 #define UI_MENU_SL_COND ,&ui_menu_conf_level
00561 #define UI_MENU_SL_CNT 1
00562 UI_MENU_SUBMENU(ui_menu_conf_level, UI_TEXT_LEVEL, ui_menu_level);
00563 #else
00564 #define UI_MENU_SL_COND
00565 #define UI_MENU_SL_CNT 0
00566 #endif
00567 #ifdef Z_HOME_DIR<0
00568 #define UI_MENU_DELTA_COND ,&ui_menu_conf_delta
00569 #define UI_MENU_DELTA_CNT 1
00570 UI_MENU_SUBMENU(ui_menu_conf_delta, UI_TEXT_ZCALIB, ui_menu_delta);
00571 #else
00572 #define UI_MENU_DELTA_COND
00573 #define UI_MENU_DELTA_CNT 0
00574 #endif
00575 #define UI_MENU_CONFIGURATION {UI_MENU_ADDCONDBACK &ui_menu_conf_general,&ui_menu_conf_accel,&ui_menu_conf_feed,&ui_menu_conf_extr UI_MENU_EEPROM_COND UI_MENU_DELTA_COND UI_MENU_SL_COND}
00576 UI_MENU(ui_menu_configuration,UI_MENU_CONFIGURATION,UI_MENU_BACKCNT+UI_MENU_EEPROM_CNT+UI_MENU_DELTA_CNT+UI_MENU_SL_CNT+4);
00577 // Main menu
00578 UI_MENU_SUBMENU(ui_menu_main1,UI_TEXT_QUICK_SETTINGS,ui_menu_quick);
00579 UI_MENU_SUBMENU(ui_menu_main2, UI_TEXT_POSITION,ui_menu_positions);
00580 UI_MENU_SUBMENU(ui_menu_main3,UI_TEXT_EXTRUDER,ui_menu_extruder);
00581 UI_MENU_SUBMENU(ui_menu_main4,UI_TEXT_DEBUGGING,ui_menu_debugging);
00582 UI_MENU_SUBMENU(ui_menu_main5,UI_TEXT_CONFIGURATION,ui_menu_configuration);
00583 #define UI_MENU_MAIN {UI_MENU_ADDCONDBACK  &ui_menu_main1,&ui_menu_sd_printfile,&ui_menu_main2,&ui_menu_main3,UI_MENU_FAN_COND UI_MENU_SD_COND &ui_menu_main4,&ui_menu_main5}
00584 UI_MENU(ui_menu_main,UI_MENU_MAIN,6+UI_MENU_BACKCNT+UI_MENU_SD_CNT+UI_MENU_FAN_CNT);
00585 
00586 /* Define menus accessible by action commands
00587 
00588 You can create up to 10 user menus which are accessible by the action commands UI_ACTION_SHOW_USERMENU1 until UI_ACTION_SHOW_USERMENU10
00589 You this the same way as with the menus above or you use one of the above menus. Then add a define like
00590 
00591 #define UI_USERMENU1 ui_menu_conf_feed
00592 
00593 which assigns the menu stored in ui_menu_conf_feed to the action UI_ACTION_SHOW_USERMENU1. Make sure only to change the numbers and not the name of the define.
00594 
00595 When do you need this? You might want a fast button to change the temperature. In the default menu you have no menu
00596 to change the temperature and view it the same time. So you need to make an action menu for this like:
00597 UI_MENU_ACTION4C(ui_menu_extrtemp,UI_ACTION_EXTRUDER0_TEMP,"Temp. 0  :%E0\002C","","","");
00598 Then you assign this menu to a usermenu:
00599 #define UI_USERMENU2 ui_menu_extrtemp
00600 
00601 Now you can assign the action  UI_ACTION_SHOW_USERMENU2+UI_ACTION_TOPMENU to a key and that will now show the temperture screen and allows
00602 the change of temperature with the next/previous buttons.
00603 
00604 */
00605 
00606 #endif // __UI_MENU_H
 All Data Structures Namespaces Files Functions Variables Typedefs Friends Defines