Repetier-Firmware  0.80
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 %Sx : Steps per mm x direction
00085 %Sy : Steps per mm y direction
00086 %Sz : Steps per mm z direction
00087 %Se : Steps per mm current extruder
00088 %is : Stepper inactive time in seconds
00089 %ip : Max. inactive time in seconds
00090 %X0..9 : Extruder selected marker
00091 %Xi : PID I gain
00092 %Xp : PID P gain
00093 %Xd : PID D gain
00094 %Xm : PID drive min
00095 %XM : PID drive max
00096 %XD : PID max
00097 %Xw : Extruder watch period in seconds
00098 %Xh : Extruder heat manager (BangBang/PID)
00099 %Xa : Advance K value
00100 %Xx : x offset in steps
00101 %Xy : y offset in steps
00102 %Xf : Extruder max. start feedrate
00103 %XF : Extruder max. feedrate
00104 %XA : Extruder max. acceleration
00105 */
00106 
00107 
00108 // Define precision for temperatures. With small displays only integer values fit.
00109 #ifndef UI_TEMP_PRECISION
00110 #if UI_COLS>16
00111 #define UI_TEMP_PRECISION 1
00112 #else
00113 #define UI_TEMP_PRECISION 0
00114 #endif
00115 #endif
00116 
00117 /* ============= PAGES DEFINITION =============
00118 
00119 If you are not iside a menu, the firmware displays pages with information.
00120 Especially if you have only a small display it is convenient to have
00121 more then one information page.
00122 */
00123 
00124 /* Define your pages using dynamic strings. To define a page use
00125 UI_PAGE4(name,row1,row2,row3,row4);
00126 for 4 row displays and
00127 UI_PAGE2(name,row1,row2);
00128 for 2 row displays. You can add additional pages or change the default pages like you want.
00129 */
00130 #if UI_ROWS>=4
00131  #if HAVE_HEATED_BED==true
00132    UI_PAGE4(ui_page1,"\005%ec/%Ec\002B%eB/%Eb\002","Z:%x2","Mul:%om Buf:%oB","%os");
00133    //UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED,UI_TEXT_PAGE_BUFFER,"%os");
00134  #else
00135    UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,"Z:%x2 mm",UI_TEXT_PAGE_BUFFER,"%os");
00136  #endif
00137   UI_PAGE4(ui_page2,"X:%x0 mm","Y:%x1 mm","Z:%x2 mm","%os");
00138 //UI_PAGE4(ui_page2,"dX:%y0 mm %sX","dY:%y1 mm %sY","dZ:%y2 mm %sZ","%os");
00139  UI_PAGE4(ui_page3,UI_TEXT_PAGE_EXTRUDER1,
00140 #if NUM_EXTRUDER>1
00141 UI_TEXT_PAGE_EXTRUDER2
00142 #else
00143  ""
00144 #endif
00145  ,UI_TEXT_PAGE_BED,"%os");
00146 
00147 /*
00148 Merge pages together. Use the following pattern:
00149 #define UI_PAGES {&name1,&name2,&name3}
00150 */
00151 #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3}
00152 // How many pages do you want to have. Minimum is 1.
00153 #define UI_NUM_PAGES 3
00154 #else
00155 #if HAVE_HEATED_BED==true
00156 UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED);
00157 #else
00158 UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,"%os");
00159 #endif
00160 UI_PAGE2(ui_page2,"X:%x0 Y:%x1","%os");
00161 UI_PAGE2(ui_page3,"Z:%x2 mm","%os");
00162 /*
00163 Merge pages together. Use the following pattern:
00164 #define UI_PAGES {&name1,&name2,&name3}
00165 */
00166 #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3}
00167 // How many pages do you want to have. Minimum is 1.
00168 #define UI_NUM_PAGES 3
00169 #endif
00170 /* ============ MENU definition ================
00171 
00172 The menu works the same as pages. In addion you need to define what the lines do
00173 or where to jump to. For that reason, the menu structure needs to be entered in
00174 reverse order. Starting from the leaves, the menu structure is defined.
00175 */
00176 
00177 /*
00178 At first define all actions available in the menu. The actions define, what the
00179 next/previous button will do. All menu actions work the same:
00180 next/previous changes the value
00181 ok sets the value if not already done and goes back to previous menu.
00182 */
00183 
00184 // Error menu
00185 
00186 UI_MENU_ACTION2(ui_menu_error,UI_ACTION_DUMMY,UI_TEXT_ERROR,"%oe");
00187 
00188 // **** Positions submenus
00189 
00190 #if UI_ROWS>=4
00191 UI_MENU_ACTION4C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION4);
00192 UI_MENU_ACTION4C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION4);
00193 UI_MENU_ACTION4C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION4);
00194 UI_MENU_ACTION4C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST4);
00195 UI_MENU_ACTION4C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST4);
00196 UI_MENU_ACTION4C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST4);
00197 #else
00198 UI_MENU_ACTION2C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION2);
00199 UI_MENU_ACTION2C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION2);
00200 UI_MENU_ACTION2C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION2);
00201 UI_MENU_ACTION2C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST2);
00202 UI_MENU_ACTION2C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST2);
00203 UI_MENU_ACTION2C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST2);
00204 #endif
00205 UI_MENU_ACTION2C(ui_menu_epos,UI_ACTION_EPOSITION,UI_TEXT_ACTION_EPOSITION_FAST2);
00206 
00207 /*
00208 Next step is to define submenus leading to the action.
00209 */
00210 
00211 // **** Positionening menu
00212 UI_MENU_ACTIONCOMMAND(ui_menu_back,UI_TEXT_BACK,UI_ACTION_BACK);
00213 #if UI_HAS_BACK_KEY==0
00214 #define UI_MENU_ADDCONDBACK &ui_menu_back,
00215 #define UI_MENU_BACKCNT 1
00216 #else
00217 #define UI_MENU_ADDCONDBACK
00218 #define UI_MENU_BACKCNT 0
00219 #endif
00220 UI_MENU_ACTIONCOMMAND(ui_menu_home_all,UI_TEXT_HOME_ALL,UI_ACTION_HOME_ALL);
00221 UI_MENU_ACTIONCOMMAND(ui_menu_home_x,UI_TEXT_HOME_X,UI_ACTION_HOME_X);
00222 UI_MENU_ACTIONCOMMAND(ui_menu_home_y,UI_TEXT_HOME_Y,UI_ACTION_HOME_Y);
00223 UI_MENU_ACTIONCOMMAND(ui_menu_home_z,UI_TEXT_HOME_Z,UI_ACTION_HOME_Z);
00224 UI_MENU_ACTIONSELECTOR(ui_menu_go_xpos,UI_TEXT_X_POSITION,ui_menu_xpos);
00225 UI_MENU_ACTIONSELECTOR(ui_menu_go_ypos,UI_TEXT_Y_POSITION,ui_menu_ypos);
00226 UI_MENU_ACTIONSELECTOR(ui_menu_go_zpos,UI_TEXT_Z_POSITION,ui_menu_zpos);
00227 UI_MENU_ACTIONSELECTOR(ui_menu_go_epos,UI_TEXT_E_POSITION,ui_menu_epos);
00228 UI_MENU_ACTIONSELECTOR(ui_menu_go_xfast,UI_TEXT_X_POS_FAST,ui_menu_xpos_fast);
00229 UI_MENU_ACTIONSELECTOR(ui_menu_go_yfast,UI_TEXT_Y_POS_FAST,ui_menu_ypos_fast);
00230 UI_MENU_ACTIONSELECTOR(ui_menu_go_zfast,UI_TEXT_Z_POS_FAST,ui_menu_zpos_fast);
00231 
00232 #define UI_MENU_POSITIONS {UI_MENU_ADDCONDBACK &ui_menu_home_all,&ui_menu_home_x,&ui_menu_home_y,&ui_menu_home_z,&ui_menu_go_xfast,&ui_menu_go_xpos,&ui_menu_go_yfast,&ui_menu_go_ypos,&ui_menu_go_zfast,&ui_menu_go_zpos,&ui_menu_go_epos}
00233 UI_MENU(ui_menu_positions,UI_MENU_POSITIONS,11+UI_MENU_BACKCNT);
00234 
00235 // **** Delta calibration menu
00236 #ifdef STEP_COUNTER
00237 UI_MENU_ACTIONCOMMAND(ui_menu_show_measurement,UI_TEXT_SHOW_MEASUREMENT,UI_ACTION_SHOW_MEASUREMENT);
00238 UI_MENU_ACTIONCOMMAND(ui_menu_reset_measurement,UI_TEXT_RESET_MEASUREMENT,UI_ACTION_RESET_MEASUREMENT);
00239 UI_MENU_ACTIONCOMMAND(ui_menu_set_measured_origin,UI_TEXT_SET_MEASURED_ORIGIN,UI_ACTION_SET_MEASURED_ORIGIN);
00240 #define UI_MENU_DELTA {UI_MENU_ADDCONDBACK &ui_menu_show_measurement,&ui_menu_reset_measurement,&ui_menu_set_measured_origin,&ui_menu_home_all,&ui_menu_go_zpos,&ui_menu_go_zfast}
00241 UI_MENU(ui_menu_delta,UI_MENU_DELTA,6+UI_MENU_BACKCNT);
00242 #endif
00243 
00244 // **** Bed leveling menu
00245 #ifdef SOFTWARE_LEVELING
00246 UI_MENU_ACTIONCOMMAND(ui_menu_set_p1,UI_TEXT_SET_P1,UI_ACTION_SET_P1);
00247 UI_MENU_ACTIONCOMMAND(ui_menu_set_p2,UI_TEXT_SET_P2,UI_ACTION_SET_P2);
00248 UI_MENU_ACTIONCOMMAND(ui_menu_set_p3,UI_TEXT_SET_P3,UI_ACTION_SET_P3);
00249 UI_MENU_ACTIONCOMMAND(ui_menu_calculate_leveling,UI_TEXT_CALCULATE_LEVELING,UI_ACTION_CALC_LEVEL);
00250 #define UI_MENU_LEVEL {UI_MENU_ADDCONDBACK &ui_menu_set_p1,&ui_menu_set_p2,&ui_menu_set_p3,&ui_menu_calculate_leveling,&ui_menu_go_xpos,&ui_menu_go_xfast,&ui_menu_go_ypos,&ui_menu_go_yfast,&ui_menu_go_zpos,&ui_menu_go_zfast}
00251 UI_MENU(ui_menu_level,UI_MENU_LEVEL,10+UI_MENU_BACKCNT);
00252 #endif
00253 
00254 // **** Extruder menu
00255 
00256 UI_MENU_CHANGEACTION(ui_menu_ext_temp0,UI_TEXT_EXTR0_TEMP,UI_ACTION_EXTRUDER0_TEMP);
00257 UI_MENU_CHANGEACTION(ui_menu_ext_temp1,UI_TEXT_EXTR1_TEMP,UI_ACTION_EXTRUDER1_TEMP);
00258 UI_MENU_CHANGEACTION(ui_menu_bed_temp, UI_TEXT_BED_TEMP,UI_ACTION_HEATED_BED_TEMP);
00259 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel0,UI_TEXT_EXTR0_SELECT,UI_ACTION_SELECT_EXTRUDER0);
00260 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel1,UI_TEXT_EXTR1_SELECT,UI_ACTION_SELECT_EXTRUDER1);
00261 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off0,UI_TEXT_EXTR0_OFF,UI_ACTION_EXTRUDER0_OFF);
00262 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off1,UI_TEXT_EXTR1_OFF,UI_ACTION_EXTRUDER1_OFF);
00263 UI_MENU_ACTIONCOMMAND(ui_menu_ext_origin,UI_TEXT_EXTR_ORIGIN,UI_ACTION_RESET_EXTRUDER);
00264 
00265 #if NUM_EXTRUDER>1
00266 #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,
00267 #define UI_MENU_EXTCNT 6
00268 #else
00269 #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_off0,
00270 #define UI_MENU_EXTCNT 2
00271 #endif
00272 #if HAVE_HEATED_BED==true
00273 #define UI_MENU_BEDCOND &ui_menu_bed_temp,
00274 #define UI_MENU_BEDCNT 1
00275 #else
00276 #define UI_MENU_BEDCOND
00277 #define UI_MENU_BEDCNT 0
00278 #endif
00279 
00280 #define UI_MENU_EXTRUDER {UI_MENU_ADDCONDBACK UI_MENU_BEDCOND UI_MENU_EXTCOND &ui_menu_go_epos,&ui_menu_ext_origin}
00281 UI_MENU(ui_menu_extruder,UI_MENU_EXTRUDER,UI_MENU_BACKCNT+UI_MENU_BEDCNT+UI_MENU_EXTCNT+2);
00282 
00283 // **** SD card menu
00284 
00285 // **** Quick menu
00286 UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_pla,UI_TEXT_PREHEAT_PLA,UI_ACTION_PREHEAT_PLA);
00287 UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_abs,UI_TEXT_PREHEAT_ABS,UI_ACTION_PREHEAT_ABS);
00288 UI_MENU_ACTIONCOMMAND(ui_menu_quick_cooldown,UI_TEXT_COOLDOWN,UI_ACTION_COOLDOWN);
00289 UI_MENU_ACTIONCOMMAND(ui_menu_quick_origin,UI_TEXT_SET_TO_ORIGIN,UI_ACTION_SET_ORIGIN);
00290 UI_MENU_ACTIONCOMMAND(ui_menu_quick_stopstepper,UI_TEXT_DISABLE_STEPPER,UI_ACTION_DISABLE_STEPPER);
00291 UI_MENU_CHANGEACTION(ui_menu_quick_speedmultiply,UI_TEXT_SPEED_MULTIPLY,UI_ACTION_FEEDRATE_MULTIPLY);
00292 UI_MENU_CHANGEACTION(ui_menu_quick_flowmultiply,UI_TEXT_FLOW_MULTIPLY,UI_ACTION_FLOWRATE_MULTIPLY);
00293 #define UI_MENU_QUICK {UI_MENU_ADDCONDBACK &ui_menu_home_all,&ui_menu_quick_preheat_pla,&ui_menu_quick_preheat_abs,&ui_menu_quick_speedmultiply,&ui_menu_quick_flowmultiply,&ui_menu_quick_cooldown,&ui_menu_quick_origin,&ui_menu_quick_stopstepper}
00294 UI_MENU(ui_menu_quick,UI_MENU_QUICK,8+UI_MENU_BACKCNT);
00295 
00296 // **** Fan menu
00297 
00298 #if FAN_PIN>-1
00299 UI_MENU_ACTIONCOMMAND(ui_menu_fan_off,UI_TEXT_FAN_OFF,UI_ACTION_FAN_OFF);
00300 UI_MENU_ACTIONCOMMAND(ui_menu_fan_25,UI_TEXT_FAN_25,UI_ACTION_FAN_25);
00301 UI_MENU_ACTIONCOMMAND(ui_menu_fan_50,UI_TEXT_FAN_50,UI_ACTION_FAN_50);
00302 UI_MENU_ACTIONCOMMAND(ui_menu_fan_75,UI_TEXT_FAN_75,UI_ACTION_FAN_75);
00303 UI_MENU_ACTIONCOMMAND(ui_menu_fan_full,UI_TEXT_FAN_FULL,UI_ACTION_FAN_FULL);
00304 #define UI_MENU_FAN {UI_MENU_ADDCONDBACK &ui_menu_fan_off,&ui_menu_fan_25,&ui_menu_fan_50,&ui_menu_fan_75,&ui_menu_fan_full}
00305 UI_MENU(ui_menu_fan,UI_MENU_FAN,5+UI_MENU_BACKCNT);
00306 UI_MENU_SUBMENU(ui_menu_fan_sub,UI_TEXT_FANSPEED,ui_menu_fan);
00307 #define UI_MENU_FAN_COND &ui_menu_fan_sub,
00308 #define UI_MENU_FAN_CNT 1
00309 #else
00310 #define UI_MENU_FAN_COND 
00311 #define UI_MENU_FAN_CNT 0
00312 #endif
00313 
00314 // **** SD card menu
00315 
00316 #ifdef SDSUPPORT
00317 #define UI_MENU_SD_FILESELECTOR {&ui_menu_back}
00318 UI_MENU_FILESELECT(ui_menu_sd_fileselector,UI_MENU_SD_FILESELECTOR,1);
00319 UI_MENU_ACTIONCOMMAND(ui_menu_sd_printfile,UI_TEXT_PRINT_FILE,UI_ACTION_SD_PRINT);
00320 UI_MENU_ACTIONCOMMAND(ui_menu_sd_pause,UI_TEXT_PAUSE_PRINT,UI_ACTION_SD_PAUSE);
00321 UI_MENU_ACTIONCOMMAND(ui_menu_sd_continue,UI_TEXT_CONTINUE_PRINT,UI_ACTION_SD_CONTINUE);
00322 UI_MENU_ACTIONCOMMAND(ui_menu_sd_unmount,UI_TEXT_UNMOUNT_CARD,UI_ACTION_SD_UNMOUNT);
00323 UI_MENU_ACTIONCOMMAND(ui_menu_sd_mount,UI_TEXT_MOUNT_CARD,UI_ACTION_SD_MOUNT);
00324 UI_MENU_ACTIONCOMMAND(ui_menu_sd_delete,UI_TEXT_DELETE_FILE,UI_ACTION_SD_DELETE);
00325 #define UI_MENU_SD {UI_MENU_ADDCONDBACK &ui_menu_sd_printfile,&ui_menu_sd_pause,&ui_menu_sd_continue,&ui_menu_sd_unmount,&ui_menu_sd_mount,&ui_menu_sd_delete}
00326 UI_MENU(ui_menu_sd,UI_MENU_SD,UI_MENU_BACKCNT+6);
00327 UI_MENU_SUBMENU(ui_menu_sd_sub,UI_TEXT_SD_CARD,ui_menu_sd);
00328 
00329 #define UI_MENU_SD_COND &ui_menu_sd_sub,
00330 #define UI_MENU_SD_CNT 1
00331 #else
00332 #define UI_MENU_SD_COND
00333 #define UI_MENU_SD_CNT 0
00334 #endif
00335 
00336 
00337 // **** Debugging menu
00338 UI_MENU_ACTIONCOMMAND(ui_menu_debug_echo,UI_TEXT_DBG_ECHO,UI_ACTION_DEBUG_ECHO);
00339 UI_MENU_ACTIONCOMMAND(ui_menu_debug_info,UI_TEXT_DBG_INFO,UI_ACTION_DEBUG_INFO);
00340 UI_MENU_ACTIONCOMMAND(ui_menu_debug_error,UI_TEXT_DBG_ERROR,UI_ACTION_DEBUG_ERROR);
00341 UI_MENU_ACTIONCOMMAND(ui_menu_debug_dryrun,UI_TEXT_DBG_DRYRUN,UI_ACTION_DEBUG_DRYRUN);
00342 
00343 #define UI_MENU_DEBUGGING {UI_MENU_ADDCONDBACK &ui_menu_debug_echo,&ui_menu_debug_info,&ui_menu_debug_error,&ui_menu_debug_dryrun}
00344 UI_MENU(ui_menu_debugging,UI_MENU_DEBUGGING,4+UI_MENU_BACKCNT);
00345 
00346 // **** OPS configuration
00347 #if USE_OPS==1
00348 UI_MENU_ACTIONCOMMAND(ui_menu_ops_off,UI_TEXT_OPS_OFF,UI_ACTION_OPS_OFF);
00349 UI_MENU_ACTIONCOMMAND(ui_menu_ops_classic,UI_TEXT_OPS_CLASSIC,UI_ACTION_OPS_CLASSIC);
00350 UI_MENU_ACTIONCOMMAND(ui_menu_ops_fast,UI_TEXT_OPS_FAST,UI_ACTION_OPS_FAST);
00351 UI_MENU_CHANGEACTION(ui_menu_ops_retract,UI_TEXT_OPS_RETRACT,UI_ACTION_OPS_RETRACTDISTANCE);
00352 UI_MENU_CHANGEACTION(ui_menu_ops_backslash,UI_TEXT_OPS_BACKSLASH,UI_ACTION_OPS_BACKLASH);
00353 UI_MENU_CHANGEACTION(ui_menu_ops_mindist,UI_TEXT_OPS_MINDIST,UI_ACTION_OPS_MINDISTANCE);
00354 UI_MENU_CHANGEACTION(ui_menu_ops_moveafter,UI_TEXT_OPS_MOVE_AFTER,UI_ACTION_OPS_MOVE_AFTER);
00355 #define UI_MENU_OPS {UI_MENU_ADDCONDBACK &ui_menu_ops_off,&ui_menu_ops_classic,&ui_menu_ops_fast,&ui_menu_ops_retract,&ui_menu_ops_backslash,&ui_menu_ops_mindist,&ui_menu_ops_moveafter}
00356 UI_MENU(ui_menu_ops,UI_MENU_OPS,7+UI_MENU_BACKCNT);
00357 UI_MENU_SUBMENU(ui_menu_ops_sub,UI_TEXT_ANTI_OOZE,ui_menu_ops);
00358 #define UI_MENU_ADDCONDOPS &ui_menu_ops_sub,
00359 #else
00360 #define UI_MENU_ADDCONDOPS
00361 #endif
00362 
00363 // **** Acceleration settings
00364 UI_MENU_CHANGEACTION(ui_menu_accel_printx,UI_TEXT_PRINT_X,UI_ACTION_PRINT_ACCEL_X);
00365 UI_MENU_CHANGEACTION(ui_menu_accel_printy,UI_TEXT_PRINT_Y,UI_ACTION_PRINT_ACCEL_Y);
00366 UI_MENU_CHANGEACTION(ui_menu_accel_printz,UI_TEXT_PRINT_Z,UI_ACTION_PRINT_ACCEL_Z);
00367 UI_MENU_CHANGEACTION(ui_menu_accel_travelx,UI_TEXT_MOVE_X,UI_ACTION_MOVE_ACCEL_X);
00368 UI_MENU_CHANGEACTION(ui_menu_accel_travely,UI_TEXT_MOVE_Y,UI_ACTION_MOVE_ACCEL_Y);
00369 UI_MENU_CHANGEACTION(ui_menu_accel_travelz,UI_TEXT_MOVE_Z,UI_ACTION_MOVE_ACCEL_Z);
00370 UI_MENU_CHANGEACTION(ui_menu_accel_jerk,UI_TEXT_JERK,UI_ACTION_MAX_JERK);
00371 UI_MENU_CHANGEACTION(ui_menu_accel_zjerk,UI_TEXT_ZJERK,UI_ACTION_MAX_ZJERK);
00372 #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}
00373 UI_MENU(ui_menu_accel,UI_MENU_ACCEL,8+UI_MENU_BACKCNT);
00374 
00375 // **** Feedrates
00376 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxx,UI_TEXT_FEED_MAX_X,UI_ACTION_MAX_FEEDRATE_X);
00377 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxy,UI_TEXT_FEED_MAX_Y,UI_ACTION_MAX_FEEDRATE_Y);
00378 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxz,UI_TEXT_FEED_MAX_Z,UI_ACTION_MAX_FEEDRATE_Z);
00379 UI_MENU_CHANGEACTION(ui_menu_feedrate_homex,UI_TEXT_FEED_HOME_X,UI_ACTION_HOMING_FEEDRATE_X);
00380 UI_MENU_CHANGEACTION(ui_menu_feedrate_homey,UI_TEXT_FEED_HOME_Y,UI_ACTION_HOMING_FEEDRATE_Y);
00381 UI_MENU_CHANGEACTION(ui_menu_feedrate_homez,UI_TEXT_FEED_HOME_Z,UI_ACTION_HOMING_FEEDRATE_Z);
00382 #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}
00383 UI_MENU(ui_menu_feedrate,UI_MENU_ACCEL,6+UI_MENU_BACKCNT);
00384 
00385 // **** General configuration settings
00386 
00387 UI_MENU_ACTION2C(ui_menu_stepper2,UI_ACTION_STEPPER_INACTIVE,UI_TEXT_STEPPER_INACTIVE2);
00388 UI_MENU_ACTION2C(ui_menu_maxinactive2,UI_ACTION_MAX_INACTIVE,UI_TEXT_POWER_INACTIVE2);
00389 UI_MENU_CHANGEACTION(ui_menu_general_baud,UI_TEXT_BAUDRATE,UI_ACTION_BAUDRATE);
00390 UI_MENU_ACTIONSELECTOR(ui_menu_general_stepper_inactive,UI_TEXT_STEPPER_INACTIVE,ui_menu_stepper2);
00391 UI_MENU_ACTIONSELECTOR(ui_menu_general_max_inactive,UI_TEXT_POWER_INACTIVE,ui_menu_maxinactive2);
00392 #define UI_MENU_GENERAL {UI_MENU_ADDCONDBACK &ui_menu_general_baud,&ui_menu_general_stepper_inactive,&ui_menu_general_max_inactive}
00393 UI_MENU(ui_menu_general,UI_MENU_GENERAL,3+UI_MENU_BACKCNT);
00394 
00395 // **** Extruder configuration
00396 
00397 UI_MENU_CHANGEACTION(ui_menu_cext_steps,UI_TEXT_EXTR_STEPS,UI_ACTION_EXTR_STEPS);
00398 UI_MENU_CHANGEACTION(ui_menu_cext_start_feedrate,UI_TEXT_EXTR_START_FEED,UI_ACTION_EXTR_START_FEEDRATE);
00399 UI_MENU_CHANGEACTION(ui_menu_cext_max_feedrate,UI_TEXT_EXTR_MAX_FEED,UI_ACTION_EXTR_MAX_FEEDRATE);
00400 UI_MENU_CHANGEACTION(ui_menu_cext_acceleration,UI_TEXT_EXTR_ACCEL,UI_ACTION_EXTR_ACCELERATION);
00401 UI_MENU_CHANGEACTION(ui_menu_cext_watch_period,UI_TEXT_EXTR_WATCH,UI_ACTION_EXTR_WATCH_PERIOD);
00402 UI_MENU_CHANGEACTION(ui_menu_ext_wait_temp,UI_TEXT_EXTR_WAIT_RETRACT_TEMP,UI_ACTION_EXTR_WAIT_RETRACT_TEMP);
00403 UI_MENU_CHANGEACTION(ui_menu_ext_wait_units,UI_TEXT_EXTR_WAIT_RETRACT_UNITS,UI_ACTION_EXTR_WAIT_RETRACT_UNITS);
00404 #define UI_MENU_ADV_CNT 0
00405 #define UI_MENU_ADVANCE
00406 #ifdef USE_ADVANCE
00407 #define UI_MENU_ADV_CNT 1
00408 #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel
00409 #ifdef ENABLE_QUADRATIC_ADVANCE
00410 #define UI_MENU_ADV_CNT 2
00411 #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel,&ui_menu_cext_advancek
00412 UI_MENU_CHANGEACTION(ui_menu_cext_advancek,UI_TEXT_EXTR_ADVANCE_K,UI_ACTION_ADVANCE_K);
00413 #endif
00414 UI_MENU_CHANGEACTION(ui_menu_cext_advancel,UI_TEXT_EXTR_ADVANCE_L,UI_ACTION_ADVANCE_L);
00415 #endif
00416 #ifdef TEMP_PID
00417 UI_MENU_CHANGEACTION(ui_menu_cext_manager,UI_TEXT_EXTR_MANAGER,UI_ACTION_EXTR_HEATMANAGER);
00418 UI_MENU_CHANGEACTION(ui_menu_cext_pgain,UI_TEXT_EXTR_PGAIN,UI_ACTION_PID_PGAIN);
00419 UI_MENU_CHANGEACTION(ui_menu_cext_igain,UI_TEXT_EXTR_IGAIN,UI_ACTION_PID_IGAIN);
00420 UI_MENU_CHANGEACTION(ui_menu_cext_dgain,UI_TEXT_EXTR_DGAIN,UI_ACTION_PID_DGAIN);
00421 UI_MENU_CHANGEACTION(ui_menu_cext_dmin,UI_TEXT_EXTR_DMIN,UI_ACTION_DRIVE_MIN);
00422 UI_MENU_CHANGEACTION(ui_menu_cext_dmax,UI_TEXT_EXTR_DMAX,UI_ACTION_DRIVE_MAX);
00423 UI_MENU_CHANGEACTION(ui_menu_cext_pmax,UI_TEXT_EXTR_PMAX,UI_ACTION_PID_MAX);
00424 #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
00425 #define UI_MENU_PIDCNT 7
00426 #else
00427 #define UI_MENU_PIDCOND
00428 #define UI_MENU_PIDCNT 0
00429 #endif
00430 #if NUM_EXTRUDER>1
00431 UI_MENU_CHANGEACTION(ui_menu_cext_xoffset,UI_TEXT_EXTR_XOFF,UI_ACTION_X_OFFSET);
00432 UI_MENU_CHANGEACTION(ui_menu_cext_yoffset,UI_TEXT_EXTR_YOFF,UI_ACTION_Y_OFFSET);
00433 #define UI_MENU_CONFEXTCOND &ui_menu_ext_sel0,&ui_menu_ext_sel1,&ui_menu_cext_xoffset,&ui_menu_cext_yoffset,
00434 #define UI_MENU_CONFEXTCNT 4
00435 #else
00436 #define UI_MENU_CONFEXTCOND 
00437 #define UI_MENU_CONFEXTCNT 0
00438 #endif
00439 #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}
00440 UI_MENU(ui_menu_cextr,UI_MENU_CEXTR,7+UI_MENU_BACKCNT+UI_MENU_PIDCNT+UI_MENU_CONFEXTCNT+UI_MENU_ADV_CNT);
00441 
00442 // **** Configuration menu
00443 UI_MENU_SUBMENU(ui_menu_conf_general,UI_TEXT_GENERAL,ui_menu_general);
00444 UI_MENU_SUBMENU(ui_menu_conf_accel,UI_TEXT_ACCELERATION,ui_menu_accel);
00445 UI_MENU_SUBMENU(ui_menu_conf_feed,UI_TEXT_FEEDRATE,ui_menu_feedrate);
00446 UI_MENU_SUBMENU(ui_menu_conf_extr,UI_TEXT_EXTRUDER,ui_menu_cextr);
00447 #if EEPROM_MODE!=0
00448 UI_MENU_ACTIONCOMMAND(ui_menu_conf_to_eeprom,UI_TEXT_STORE_TO_EEPROM,UI_ACTION_STORE_EEPROM);
00449 UI_MENU_ACTIONCOMMAND(ui_menu_conf_from_eeprom,UI_TEXT_LOAD_EEPROM,UI_ACTION_LOAD_EEPROM);
00450 #define UI_MENU_EEPROM_COND ,&ui_menu_conf_to_eeprom,&ui_menu_conf_from_eeprom
00451 #define UI_MENU_EEPROM_CNT 2
00452 UI_MENU_ACTION2C(ui_menu_eeprom_saved,UI_ACTION_DUMMY,UI_TEXT_EEPROM_STORED);
00453 UI_MENU_ACTION2C(ui_menu_eeprom_loaded,UI_ACTION_DUMMY,UI_TEXT_EEPROM_LOADED);
00454 #else
00455 #define UI_MENU_EEPROM_COND
00456 #define UI_MENU_EEPROM_CNT 0
00457 #endif
00458 #ifdef SOFTWARE_LEVELING
00459 #define UI_MENU_SL_COND ,&ui_menu_conf_level
00460 #define UI_MENU_SL_CNT 1
00461 UI_MENU_SUBMENU(ui_menu_conf_level, UI_TEXT_LEVEL, ui_menu_level);
00462 #else
00463 #define UI_MENU_SL_COND
00464 #define UI_MENU_SL_CNT 0
00465 #endif
00466 #ifdef STEP_COUNTER
00467 #define UI_MENU_DELTA_COND ,&ui_menu_conf_delta
00468 #define UI_MENU_DELTA_CNT 1
00469 UI_MENU_SUBMENU(ui_menu_conf_delta, UI_TEXT_DELTA, ui_menu_delta);
00470 #else
00471 #define UI_MENU_DELTA_COND
00472 #define UI_MENU_DELTA_CNT 0
00473 #endif 
00474 #define UI_MENU_CONFIGURATION {UI_MENU_ADDCONDBACK &ui_menu_conf_general,UI_MENU_ADDCONDOPS &ui_menu_conf_accel,&ui_menu_conf_feed,&ui_menu_conf_extr UI_MENU_EEPROM_COND UI_MENU_DELTA_COND UI_MENU_SL_COND}
00475 UI_MENU(ui_menu_configuration,UI_MENU_CONFIGURATION,UI_MENU_BACKCNT+USE_OPS+UI_MENU_EEPROM_CNT+UI_MENU_DELTA_CNT+UI_MENU_SL_CNT+4);
00476 // Main menu
00477 UI_MENU_SUBMENU(ui_menu_main1,UI_TEXT_QUICK_SETTINGS,ui_menu_quick);
00478 UI_MENU_SUBMENU(ui_menu_main2, UI_TEXT_POSITION,ui_menu_positions);
00479 UI_MENU_SUBMENU(ui_menu_main3,UI_TEXT_EXTRUDER,ui_menu_extruder);
00480 UI_MENU_SUBMENU(ui_menu_main4,UI_TEXT_DEBUGGING,ui_menu_debugging);
00481 UI_MENU_SUBMENU(ui_menu_main5,UI_TEXT_CONFIGURATION,ui_menu_configuration);
00482 #define UI_MENU_MAIN {UI_MENU_ADDCONDBACK  &ui_menu_main1,&ui_menu_main2,&ui_menu_main3,UI_MENU_FAN_COND UI_MENU_SD_COND &ui_menu_main4,&ui_menu_main5}
00483 UI_MENU(ui_menu_main,UI_MENU_MAIN,5+UI_MENU_BACKCNT+UI_MENU_SD_CNT+UI_MENU_FAN_CNT);
00484 
00485 /* Define menus accessible by action commands
00486 
00487 You can create up to 10 user menus which are accessible by the action commands UI_ACTION_SHOW_USERMENU1 until UI_ACTION_SHOW_USERMENU10
00488 You this the same way as with the menus above or you use one of the above menus. Then add a define like
00489 
00490 #define UI_USERMENU1 ui_menu_conf_feed
00491 
00492 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.
00493 
00494 When do you need this? You might want a fast button to change the temperature. In the default menu you have no menu
00495 to change the temperature and view it the same time. So you need to make an action menu for this like:
00496 UI_MENU_ACTION4C(ui_menu_extrtemp,UI_ACTION_EXTRUDER0_TEMP,"Temp. 0  :%E0\002C","","","");
00497 Then you assign this menu to a usermenu:
00498 #define UI_USERMENU2 ui_menu_extrtemp
00499 
00500 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
00501 the change of temperature with the next/previous buttons.
00502 
00503 */
00504 
00505 #endif // __UI_MENU_H
 All Data Structures Namespaces Files Functions Variables Typedefs Friends Defines