Advertisement
Helmi

Untitled

Sep 1st, 2013
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 25.54 KB | None | 0 0
  1. /*
  2.     This file is part of Repetier-Firmware.
  3.  
  4.     Repetier-Firmware is free software: you can redistribute it and/or modify
  5.     it under the terms of the GNU General Public License as published by
  6.     the Free Software Foundation, either version 3 of the License, or
  7.     (at your option) any later version.
  8.  
  9.     Repetier-Firmware is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.     GNU General Public License for more details.
  13.  
  14.     You should have received a copy of the GNU General Public License
  15.     along with Repetier-Firmware.  If not, see <http://www.gnu.org/licenses/>.
  16.  
  17. */
  18. #if !defined(_UI_MENU_H) && defined(UI_MAIN)
  19. #define _UI_MENU_H
  20.  
  21. /*
  22. The menu configuration uses dynamic strings. These dynamic strings can contain
  23. a placeholder for special values. During print these placeholder are exchanged
  24. by their current value. Everything else is printed exactly as written.
  25.  
  26. A placeholder always has 3 chars. It starts with a % followed by 2 characters
  27. defining the value. You can use any placeholder in any position, also it doesn't
  28. always make sense.
  29.  
  30. List of placeholder:
  31. %ec : Current extruder temperature
  32. %eb : Current heated bed temperature
  33. %e0..9 : Temp. of extruder 0..9
  34. %er : Extruder relative mode
  35. %Ec : Target temperature of current extruder
  36. %Eb : Target temperature of heated bed
  37. %E0-9 : Target temperature of extruder 0..9
  38. %os : Status message
  39. %oe : Error message
  40. %oB : Buffer length
  41. %om : Speed multiplier
  42. %of : flow multiplier
  43. %oc : Connection baudrate
  44. %o0..9 : Output level extruder 0..9 is % including %sign.
  45. %oC : Output level current extruder
  46. %ob : Output level heated bed
  47. %%% : The % char
  48. %x0 : X position
  49. %x1 : Y position
  50. %x2 : Z position
  51. %x3 : Current extruder position
  52. %sx : State of x min endstop.
  53. %sX : State of x max endstop.
  54. %sy : State of y min endstop.
  55. %sY : State of y max endstop.
  56. %sz : State of z min endstop.
  57. %sZ : State of z max endstop.
  58. %do : Debug echo state.
  59. %di : Debug info state.
  60. %de : Debug error state.
  61. %dd : Debug dry run state.
  62. %O0 : OPS mode = 0
  63. %O1 : OPS mode = 1
  64. %O2 : OPS mode = 2
  65. %Or : OPS retract distance
  66. %Ob : OPS backslash distance
  67. %Od : OPS min distance
  68. %Oa : OPS move after
  69. %ax : X acceleration during print moves
  70. %ay : Y acceleration during print moves
  71. %az : Z acceleration during print moves
  72. %aX : X acceleration during travel moves
  73. %aY : Y acceleration during travel moves
  74. %aZ : Z acceleration during travel moves
  75. %aj : Max. jerk
  76. %aJ : Max. Z-jerk
  77. %fx : Max. feedrate x direction
  78. %fy : Max. feedrate y direction
  79. %fz : Max. feedrate z direction
  80. %fe : Max. feedrate current extruder
  81. %fX : Homing feedrate x direction
  82. %fY : Homing feedrate y direction
  83. %fZ : Homing feedrate z direction
  84. %Sx : Steps per mm x direction
  85. %Sy : Steps per mm y direction
  86. %Sz : Steps per mm z direction
  87. %Se : Steps per mm current extruder
  88. %Ut : Shows printing time
  89. %Uf : Shows total filament usage
  90. %is : Stepper inactive time in seconds
  91. %ip : Max. inactive time in seconds
  92. %X0..9 : Extruder selected marker
  93. %Xi : PID I gain
  94. %Xp : PID P gain
  95. %Xd : PID D gain
  96. %Xm : PID drive min
  97. %XM : PID drive max
  98. %XD : PID max
  99. %Xw : Extruder watch period in seconds
  100. %Xh : Extruder heat manager (BangBang/PID)
  101. %Xa : Advance K value
  102. %Xl : Advance L value
  103. %Xx : x offset in steps
  104. %Xy : y offset in steps
  105. %Xf : Extruder max. start feedrate
  106. %XF : Extruder max. feedrate
  107. %XA : Extruder max. acceleration
  108. */
  109.  
  110.  
  111. // Define precision for temperatures. With small displays only integer values fit.
  112. #ifndef UI_TEMP_PRECISION
  113. #if UI_COLS>16
  114. #define UI_TEMP_PRECISION 1
  115. #else
  116. #define UI_TEMP_PRECISION 0
  117. #endif
  118. #endif
  119.  
  120. /* ============= PAGES DEFINITION =============
  121.  
  122. If you are not iside a menu, the firmware displays pages with information.
  123. Especially if you have only a small display it is convenient to have
  124. more then one information page.
  125. */
  126.  
  127. /* Define your pages using dynamic strings. To define a page use
  128. UI_PAGE4(name,row1,row2,row3,row4);
  129. for 4 row displays and
  130. UI_PAGE2(name,row1,row2);
  131. for 2 row displays. You can add additional pages or change the default pages like you want.
  132. */
  133. #if UI_ROWS>=4
  134.  #if HAVE_HEATED_BED==true
  135.    UI_PAGE4(ui_page1,"\005%ec/%Ec\002B%eB/%Eb\002","Z:%x2","Mul:%om Buf:%oB","%os");
  136.    //UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED,UI_TEXT_PAGE_BUFFER,"%os");
  137.  #else
  138.    UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,"Z:%x2 mm",UI_TEXT_PAGE_BUFFER,"%os");
  139.  #endif
  140.   UI_PAGE4(ui_page2,"X:%x0 mm","Y:%x1 mm","Z:%x2 mm","%os");
  141. //UI_PAGE4(ui_page2,"dX:%y0 mm %sX","dY:%y1 mm %sY","dZ:%y2 mm %sZ","%os");
  142.  UI_PAGE4(ui_page3,UI_TEXT_PAGE_EXTRUDER1,
  143. #if NUM_EXTRUDER>1
  144. UI_TEXT_PAGE_EXTRUDER2
  145. #else
  146.  ""
  147. #endif
  148.  #if HAVE_HEATED_BED==true
  149.  ,UI_TEXT_PAGE_BED
  150.  #else
  151.  ,""
  152. #endif
  153.  ,"%os");
  154. #if EEPROM_MODE!=0
  155.   UI_PAGE4(ui_page4,UI_TEXT_PRINT_TIME,"%Ut",UI_TEXT_PRINT_FILAMENT,"%Uf m");
  156.   #define UI_PRINTTIME_PAGES ,&ui_page4
  157.   #define UI_PRINTTIME_COUNT 1
  158. #else
  159.   #define UI_PRINTTIME_PAGES
  160.   #define UI_PRINTTIME_COUNT 0
  161. #endif
  162.  
  163. #if EEPROM_MODE!=0
  164.   UI_PAGE5(ui_page5,"End stop state min|max","X: %sx|%sX","Y: %sy|%sY", "Z: %sz|%sZ");
  165.   #define UI_ENDSTOP_PAGES ,&ui_page5
  166.   #define UI_ENDSTOP_COUNT 1
  167. #else
  168.   #define UI_ENDSTOP_PAGES
  169.   #define UI_ENDSTOP_COUNT 0
  170. #endif
  171.  
  172. /*
  173. Merge pages together. Use the following pattern:
  174. #define UI_PAGES {&name1,&name2,&name3}
  175. */
  176. #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3 UI_PRINTTIME_PAGES UI_ENDSTOP_PAGES}
  177. // How many pages do you want to have. Minimum is 1.
  178. #define UI_NUM_PAGES 3+UI_PRINTTIME_COUNT+UI_ENDSTOP_COUNT
  179. #else
  180. #if HAVE_HEATED_BED==true
  181. UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED);
  182. #else
  183. UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,"%os");
  184. #endif
  185. UI_PAGE2(ui_page2,"X:%x0 Y:%x1","%os");
  186. UI_PAGE2(ui_page3,"Z:%x2 mm","%os");
  187. /*
  188. Merge pages together. Use the following pattern:
  189. #define UI_PAGES {&name1,&name2,&name3}
  190. */
  191. #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3}
  192. // How many pages do you want to have. Minimum is 1.
  193. #define UI_NUM_PAGES 3
  194. #endif
  195. /* ============ MENU definition ================
  196.  
  197. The menu works the same as pages. In addion you need to define what the lines do
  198. or where to jump to. For that reason, the menu structure needs to be entered in
  199. reverse order. Starting from the leaves, the menu structure is defined.
  200. */
  201.  
  202. /*
  203. At first define all actions available in the menu. The actions define, what the
  204. next/previous button will do. All menu actions work the same:
  205. next/previous changes the value
  206. ok sets the value if not already done and goes back to previous menu.
  207. */
  208.  
  209. // Error menu
  210.  
  211. UI_MENU_ACTION2(ui_menu_error,UI_ACTION_DUMMY,UI_TEXT_ERROR,"%oe");
  212.  
  213. // **** Positions submenus
  214.  
  215. #if UI_ROWS>=4
  216. UI_MENU_ACTION4C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION4);
  217. UI_MENU_ACTION4C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION4);
  218. UI_MENU_ACTION4C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION4);
  219. UI_MENU_ACTION4C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST4);
  220. UI_MENU_ACTION4C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST4);
  221. UI_MENU_ACTION4C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST4);
  222. #else
  223. UI_MENU_ACTION2C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION2);
  224. UI_MENU_ACTION2C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION2);
  225. UI_MENU_ACTION2C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION2);
  226. UI_MENU_ACTION2C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST2);
  227. UI_MENU_ACTION2C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST2);
  228. UI_MENU_ACTION2C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST2);
  229. #endif
  230. UI_MENU_ACTION2C(ui_menu_epos,UI_ACTION_EPOSITION,UI_TEXT_ACTION_EPOSITION_FAST2);
  231.  
  232. /*
  233. Next step is to define submenus leading to the action.
  234. */
  235.  
  236. // **** Positionening menu
  237. UI_MENU_ACTIONCOMMAND(ui_menu_back,UI_TEXT_BACK,UI_ACTION_BACK);
  238. #if UI_HAS_BACK_KEY==0
  239. #define UI_MENU_ADDCONDBACK &ui_menu_back,
  240. #define UI_MENU_BACKCNT 1
  241. #else
  242. #define UI_MENU_ADDCONDBACK
  243. #define UI_MENU_BACKCNT 0
  244. #endif
  245. UI_MENU_ACTIONCOMMAND(ui_menu_home_all,UI_TEXT_HOME_ALL,UI_ACTION_HOME_ALL);
  246. UI_MENU_ACTIONCOMMAND(ui_menu_home_x,UI_TEXT_HOME_X,UI_ACTION_HOME_X);
  247. UI_MENU_ACTIONCOMMAND(ui_menu_home_y,UI_TEXT_HOME_Y,UI_ACTION_HOME_Y);
  248. UI_MENU_ACTIONCOMMAND(ui_menu_home_z,UI_TEXT_HOME_Z,UI_ACTION_HOME_Z);
  249. UI_MENU_ACTIONSELECTOR(ui_menu_go_xpos,UI_TEXT_X_POSITION,ui_menu_xpos);
  250. UI_MENU_ACTIONSELECTOR(ui_menu_go_ypos,UI_TEXT_Y_POSITION,ui_menu_ypos);
  251. UI_MENU_ACTIONSELECTOR(ui_menu_go_zpos,UI_TEXT_Z_POSITION,ui_menu_zpos);
  252. UI_MENU_ACTIONSELECTOR(ui_menu_go_epos,UI_TEXT_E_POSITION,ui_menu_epos);
  253. UI_MENU_ACTIONSELECTOR(ui_menu_go_xfast,UI_TEXT_X_POS_FAST,ui_menu_xpos_fast);
  254. UI_MENU_ACTIONSELECTOR(ui_menu_go_yfast,UI_TEXT_Y_POS_FAST,ui_menu_ypos_fast);
  255. UI_MENU_ACTIONSELECTOR(ui_menu_go_zfast,UI_TEXT_Z_POS_FAST,ui_menu_zpos_fast);
  256.  
  257. #if DRIVE_SYSTEM!=3     //Positioning menu for non-delta
  258. #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}
  259. UI_MENU(ui_menu_positions,UI_MENU_POSITIONS,11+UI_MENU_BACKCNT);
  260. #else                   //Positioning menu for delta (removes individual x,y,z homing)
  261. #define UI_MENU_POSITIONS {UI_MENU_ADDCONDBACK &ui_menu_home_all,&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}
  262. UI_MENU(ui_menu_positions,UI_MENU_POSITIONS,8+UI_MENU_BACKCNT);
  263. #endif
  264.  
  265. // **** Delta calibration menu
  266. #ifdef STEP_COUNTER
  267. UI_MENU_ACTIONCOMMAND(ui_menu_show_measurement,UI_TEXT_SHOW_MEASUREMENT,UI_ACTION_SHOW_MEASUREMENT);
  268. UI_MENU_ACTIONCOMMAND(ui_menu_reset_measurement,UI_TEXT_RESET_MEASUREMENT,UI_ACTION_RESET_MEASUREMENT);
  269. UI_MENU_ACTIONCOMMAND(ui_menu_set_measured_origin,UI_TEXT_SET_MEASURED_ORIGIN,UI_ACTION_SET_MEASURED_ORIGIN);
  270. #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}
  271. UI_MENU(ui_menu_delta,UI_MENU_DELTA,6+UI_MENU_BACKCNT);
  272. #endif
  273.  
  274. // **** Bed leveling menu
  275. #ifdef SOFTWARE_LEVELING
  276. UI_MENU_ACTIONCOMMAND(ui_menu_set_p1,UI_TEXT_SET_P1,UI_ACTION_SET_P1);
  277. UI_MENU_ACTIONCOMMAND(ui_menu_set_p2,UI_TEXT_SET_P2,UI_ACTION_SET_P2);
  278. UI_MENU_ACTIONCOMMAND(ui_menu_set_p3,UI_TEXT_SET_P3,UI_ACTION_SET_P3);
  279. UI_MENU_ACTIONCOMMAND(ui_menu_calculate_leveling,UI_TEXT_CALCULATE_LEVELING,UI_ACTION_CALC_LEVEL);
  280. #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}
  281. UI_MENU(ui_menu_level,UI_MENU_LEVEL,10+UI_MENU_BACKCNT);
  282. #endif
  283.  
  284. // **** Extruder menu
  285.  
  286. UI_MENU_CHANGEACTION(ui_menu_ext_temp0,UI_TEXT_EXTR0_TEMP,UI_ACTION_EXTRUDER0_TEMP);
  287. UI_MENU_CHANGEACTION(ui_menu_ext_temp1,UI_TEXT_EXTR1_TEMP,UI_ACTION_EXTRUDER1_TEMP);
  288. UI_MENU_CHANGEACTION(ui_menu_bed_temp, UI_TEXT_BED_TEMP,UI_ACTION_HEATED_BED_TEMP);
  289. UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel0,UI_TEXT_EXTR0_SELECT,UI_ACTION_SELECT_EXTRUDER0);
  290. UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel1,UI_TEXT_EXTR1_SELECT,UI_ACTION_SELECT_EXTRUDER1);
  291. UI_MENU_ACTIONCOMMAND(ui_menu_ext_off0,UI_TEXT_EXTR0_OFF,UI_ACTION_EXTRUDER0_OFF);
  292. UI_MENU_ACTIONCOMMAND(ui_menu_ext_off1,UI_TEXT_EXTR1_OFF,UI_ACTION_EXTRUDER1_OFF);
  293. UI_MENU_ACTIONCOMMAND(ui_menu_ext_origin,UI_TEXT_EXTR_ORIGIN,UI_ACTION_RESET_EXTRUDER);
  294.  
  295. #if NUM_EXTRUDER==2
  296. #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,
  297. #define UI_MENU_EXTCNT 6
  298. #elif NUM_EXTRUDER>2
  299. UI_MENU_CHANGEACTION(ui_menu_ext_temp2,UI_TEXT_EXTR2_TEMP,UI_ACTION_EXTRUDER2_TEMP);
  300. UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel2,UI_TEXT_EXTR2_SELECT,UI_ACTION_SELECT_EXTRUDER2);
  301. UI_MENU_ACTIONCOMMAND(ui_menu_ext_off2,UI_TEXT_EXTR2_OFF,UI_ACTION_EXTRUDER2_OFF);
  302. #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,
  303. #define UI_MENU_EXTCNT 9
  304. #else
  305. #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_off0,
  306. #define UI_MENU_EXTCNT 2
  307. #endif
  308. #if HAVE_HEATED_BED==true
  309. #define UI_MENU_BEDCOND &ui_menu_bed_temp,
  310. #define UI_MENU_BEDCNT 1
  311. #else
  312. #define UI_MENU_BEDCOND
  313. #define UI_MENU_BEDCNT 0
  314. #endif
  315.  
  316. #define UI_MENU_EXTRUDER {UI_MENU_ADDCONDBACK UI_MENU_BEDCOND UI_MENU_EXTCOND &ui_menu_go_epos,&ui_menu_ext_origin}
  317. UI_MENU(ui_menu_extruder,UI_MENU_EXTRUDER,UI_MENU_BACKCNT+UI_MENU_BEDCNT+UI_MENU_EXTCNT+2);
  318.  
  319. // **** SD card menu
  320.  
  321. // **** Quick menu
  322. UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_pla,UI_TEXT_PREHEAT_PLA,UI_ACTION_PREHEAT_PLA);
  323. UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_abs,UI_TEXT_PREHEAT_ABS,UI_ACTION_PREHEAT_ABS);
  324. UI_MENU_ACTIONCOMMAND(ui_menu_quick_cooldown,UI_TEXT_COOLDOWN,UI_ACTION_COOLDOWN);
  325. UI_MENU_ACTIONCOMMAND(ui_menu_quick_origin,UI_TEXT_SET_TO_ORIGIN,UI_ACTION_SET_ORIGIN);
  326. UI_MENU_ACTIONCOMMAND(ui_menu_quick_stopstepper,UI_TEXT_DISABLE_STEPPER,UI_ACTION_DISABLE_STEPPER);
  327. UI_MENU_CHANGEACTION(ui_menu_quick_speedmultiply,UI_TEXT_SPEED_MULTIPLY,UI_ACTION_FEEDRATE_MULTIPLY);
  328. UI_MENU_CHANGEACTION(ui_menu_quick_flowmultiply,UI_TEXT_FLOW_MULTIPLY,UI_ACTION_FLOWRATE_MULTIPLY);
  329. UI_MENU_ACTIONCOMMAND(ui_menu_quick_debug,"Write Debug",UI_ACTION_WRITE_DEBUG);
  330. #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,&ui_menu_quick_debug}
  331. UI_MENU(ui_menu_quick,UI_MENU_QUICK,9+UI_MENU_BACKCNT);
  332.  
  333. // **** Fan menu
  334.  
  335. #if FAN_PIN>-1
  336. UI_MENU_ACTIONCOMMAND(ui_menu_fan_off,UI_TEXT_FAN_OFF,UI_ACTION_FAN_OFF);
  337. UI_MENU_ACTIONCOMMAND(ui_menu_fan_25,UI_TEXT_FAN_25,UI_ACTION_FAN_25);
  338. UI_MENU_ACTIONCOMMAND(ui_menu_fan_50,UI_TEXT_FAN_50,UI_ACTION_FAN_50);
  339. UI_MENU_ACTIONCOMMAND(ui_menu_fan_75,UI_TEXT_FAN_75,UI_ACTION_FAN_75);
  340. UI_MENU_ACTIONCOMMAND(ui_menu_fan_full,UI_TEXT_FAN_FULL,UI_ACTION_FAN_FULL);
  341. #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}
  342. UI_MENU(ui_menu_fan,UI_MENU_FAN,5+UI_MENU_BACKCNT);
  343. UI_MENU_SUBMENU(ui_menu_fan_sub,UI_TEXT_FANSPEED,ui_menu_fan);
  344. #define UI_MENU_FAN_COND &ui_menu_fan_sub,
  345. #define UI_MENU_FAN_CNT 1
  346. #else
  347. #define UI_MENU_FAN_COND
  348. #define UI_MENU_FAN_CNT 0
  349. #endif
  350.  
  351. // **** SD card menu
  352.  
  353. #ifdef SDSUPPORT
  354. #define UI_MENU_SD_FILESELECTOR {&ui_menu_back}
  355. UI_MENU_FILESELECT(ui_menu_sd_fileselector,UI_MENU_SD_FILESELECTOR,1);
  356. UI_MENU_ACTIONCOMMAND(ui_menu_sd_printfile,UI_TEXT_PRINT_FILE,UI_ACTION_SD_PRINT);
  357. UI_MENU_ACTIONCOMMAND(ui_menu_sd_pause,UI_TEXT_PAUSE_PRINT,UI_ACTION_SD_PAUSE);
  358. UI_MENU_ACTIONCOMMAND(ui_menu_sd_continue,UI_TEXT_CONTINUE_PRINT,UI_ACTION_SD_CONTINUE);
  359. UI_MENU_ACTIONCOMMAND(ui_menu_sd_unmount,UI_TEXT_UNMOUNT_CARD,UI_ACTION_SD_UNMOUNT);
  360. UI_MENU_ACTIONCOMMAND(ui_menu_sd_mount,UI_TEXT_MOUNT_CARD,UI_ACTION_SD_MOUNT);
  361. UI_MENU_ACTIONCOMMAND(ui_menu_sd_delete,UI_TEXT_DELETE_FILE,UI_ACTION_SD_DELETE);
  362. #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}
  363. UI_MENU(ui_menu_sd,UI_MENU_SD,UI_MENU_BACKCNT+6);
  364. UI_MENU_SUBMENU(ui_menu_sd_sub,UI_TEXT_SD_CARD,ui_menu_sd);
  365.  
  366. #define UI_MENU_SD_COND &ui_menu_sd_sub,
  367. #define UI_MENU_SD_CNT 1
  368. #else
  369. #define UI_MENU_SD_COND
  370. #define UI_MENU_SD_CNT 0
  371. #endif
  372.  
  373.  
  374. // **** Debugging menu
  375. UI_MENU_ACTIONCOMMAND(ui_menu_debug_echo,UI_TEXT_DBG_ECHO,UI_ACTION_DEBUG_ECHO);
  376. UI_MENU_ACTIONCOMMAND(ui_menu_debug_info,UI_TEXT_DBG_INFO,UI_ACTION_DEBUG_INFO);
  377. UI_MENU_ACTIONCOMMAND(ui_menu_debug_error,UI_TEXT_DBG_ERROR,UI_ACTION_DEBUG_ERROR);
  378. UI_MENU_ACTIONCOMMAND(ui_menu_debug_dryrun,UI_TEXT_DBG_DRYRUN,UI_ACTION_DEBUG_DRYRUN);
  379.  
  380. #define UI_MENU_DEBUGGING {UI_MENU_ADDCONDBACK &ui_menu_debug_echo,&ui_menu_debug_info,&ui_menu_debug_error,&ui_menu_debug_dryrun}
  381. UI_MENU(ui_menu_debugging,UI_MENU_DEBUGGING,4+UI_MENU_BACKCNT);
  382.  
  383. // **** Acceleration settings
  384. #if DRIVE_SYSTEM!=3
  385. UI_MENU_CHANGEACTION(ui_menu_accel_printx,UI_TEXT_PRINT_X,UI_ACTION_PRINT_ACCEL_X);
  386. UI_MENU_CHANGEACTION(ui_menu_accel_printy,UI_TEXT_PRINT_Y,UI_ACTION_PRINT_ACCEL_Y);
  387. UI_MENU_CHANGEACTION(ui_menu_accel_printz,UI_TEXT_PRINT_Z,UI_ACTION_PRINT_ACCEL_Z);
  388. UI_MENU_CHANGEACTION(ui_menu_accel_travelx,UI_TEXT_MOVE_X,UI_ACTION_MOVE_ACCEL_X);
  389. UI_MENU_CHANGEACTION(ui_menu_accel_travely,UI_TEXT_MOVE_Y,UI_ACTION_MOVE_ACCEL_Y);
  390. UI_MENU_CHANGEACTION(ui_menu_accel_travelz,UI_TEXT_MOVE_Z,UI_ACTION_MOVE_ACCEL_Z);
  391. UI_MENU_CHANGEACTION(ui_menu_accel_jerk,UI_TEXT_JERK,UI_ACTION_MAX_JERK);
  392. UI_MENU_CHANGEACTION(ui_menu_accel_zjerk,UI_TEXT_ZJERK,UI_ACTION_MAX_ZJERK);
  393. #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}
  394. UI_MENU(ui_menu_accel,UI_MENU_ACCEL,8+UI_MENU_BACKCNT);
  395.  
  396. // **** Feedrates
  397. UI_MENU_CHANGEACTION(ui_menu_feedrate_maxx,UI_TEXT_FEED_MAX_X,UI_ACTION_MAX_FEEDRATE_X);
  398. UI_MENU_CHANGEACTION(ui_menu_feedrate_maxy,UI_TEXT_FEED_MAX_Y,UI_ACTION_MAX_FEEDRATE_Y);
  399. UI_MENU_CHANGEACTION(ui_menu_feedrate_maxz,UI_TEXT_FEED_MAX_Z,UI_ACTION_MAX_FEEDRATE_Z);
  400. UI_MENU_CHANGEACTION(ui_menu_feedrate_homex,UI_TEXT_FEED_HOME_X,UI_ACTION_HOMING_FEEDRATE_X);
  401. UI_MENU_CHANGEACTION(ui_menu_feedrate_homey,UI_TEXT_FEED_HOME_Y,UI_ACTION_HOMING_FEEDRATE_Y);
  402. UI_MENU_CHANGEACTION(ui_menu_feedrate_homez,UI_TEXT_FEED_HOME_Z,UI_ACTION_HOMING_FEEDRATE_Z);
  403. #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}
  404. UI_MENU(ui_menu_feedrate,UI_MENU_FEEDRATE,6+UI_MENU_BACKCNT);
  405. #else
  406. UI_MENU_CHANGEACTION(ui_menu_accel_printz,UI_TEXT_PRINT_Z_DELTA,UI_ACTION_PRINT_ACCEL_Z);
  407. UI_MENU_CHANGEACTION(ui_menu_accel_travelz,UI_TEXT_MOVE_Z_DELTA,UI_ACTION_MOVE_ACCEL_Z);
  408. UI_MENU_CHANGEACTION(ui_menu_accel_jerk,UI_TEXT_JERK,UI_ACTION_MAX_JERK);
  409. #define UI_MENU_ACCEL {UI_MENU_ADDCONDBACK &ui_menu_accel_printz,&ui_menu_accel_travelz,&ui_menu_accel_jerk}
  410. UI_MENU(ui_menu_accel,UI_MENU_ACCEL,3+UI_MENU_BACKCNT);
  411.  
  412. // **** Feedrates
  413. UI_MENU_CHANGEACTION(ui_menu_feedrate_maxz,UI_TEXT_FEED_MAX_Z_DELTA,UI_ACTION_MAX_FEEDRATE_Z);
  414. UI_MENU_CHANGEACTION(ui_menu_feedrate_homez,UI_TEXT_FEED_HOME_Z_DELTA,UI_ACTION_HOMING_FEEDRATE_Z);
  415. #define UI_MENU_FEEDRATE {UI_MENU_ADDCONDBACK &ui_menu_feedrate_maxz,&ui_menu_feedrate_homez}
  416. UI_MENU(ui_menu_feedrate,UI_MENU_FEEDRATE,2+UI_MENU_BACKCNT);
  417. #endif
  418.  
  419. // **** General configuration settings
  420.  
  421. UI_MENU_ACTION2C(ui_menu_stepper2,UI_ACTION_STEPPER_INACTIVE,UI_TEXT_STEPPER_INACTIVE2);
  422. UI_MENU_ACTION2C(ui_menu_maxinactive2,UI_ACTION_MAX_INACTIVE,UI_TEXT_POWER_INACTIVE2);
  423. UI_MENU_CHANGEACTION(ui_menu_general_baud,UI_TEXT_BAUDRATE,UI_ACTION_BAUDRATE);
  424. UI_MENU_ACTIONSELECTOR(ui_menu_general_stepper_inactive,UI_TEXT_STEPPER_INACTIVE,ui_menu_stepper2);
  425. UI_MENU_ACTIONSELECTOR(ui_menu_general_max_inactive,UI_TEXT_POWER_INACTIVE,ui_menu_maxinactive2);
  426. #define UI_MENU_GENERAL {UI_MENU_ADDCONDBACK &ui_menu_general_baud,&ui_menu_general_stepper_inactive,&ui_menu_general_max_inactive}
  427. UI_MENU(ui_menu_general,UI_MENU_GENERAL,3+UI_MENU_BACKCNT);
  428.  
  429. // **** Extruder configuration
  430.  
  431. UI_MENU_CHANGEACTION(ui_menu_cext_steps,UI_TEXT_EXTR_STEPS,UI_ACTION_EXTR_STEPS);
  432. UI_MENU_CHANGEACTION(ui_menu_cext_start_feedrate,UI_TEXT_EXTR_START_FEED,UI_ACTION_EXTR_START_FEEDRATE);
  433. UI_MENU_CHANGEACTION(ui_menu_cext_max_feedrate,UI_TEXT_EXTR_MAX_FEED,UI_ACTION_EXTR_MAX_FEEDRATE);
  434. UI_MENU_CHANGEACTION(ui_menu_cext_acceleration,UI_TEXT_EXTR_ACCEL,UI_ACTION_EXTR_ACCELERATION);
  435. UI_MENU_CHANGEACTION(ui_menu_cext_watch_period,UI_TEXT_EXTR_WATCH,UI_ACTION_EXTR_WATCH_PERIOD);
  436. UI_MENU_CHANGEACTION(ui_menu_ext_wait_temp,UI_TEXT_EXTR_WAIT_RETRACT_TEMP,UI_ACTION_EXTR_WAIT_RETRACT_TEMP);
  437. UI_MENU_CHANGEACTION(ui_menu_ext_wait_units,UI_TEXT_EXTR_WAIT_RETRACT_UNITS,UI_ACTION_EXTR_WAIT_RETRACT_UNITS);
  438. #define UI_MENU_ADV_CNT 0
  439. #define UI_MENU_ADVANCE
  440. #ifdef USE_ADVANCE
  441. #define UI_MENU_ADV_CNT 1
  442. #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel
  443. #ifdef ENABLE_QUADRATIC_ADVANCE
  444. #define UI_MENU_ADV_CNT 2
  445. #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel,&ui_menu_cext_advancek
  446. UI_MENU_CHANGEACTION(ui_menu_cext_advancek,UI_TEXT_EXTR_ADVANCE_K,UI_ACTION_ADVANCE_K);
  447. #endif
  448. UI_MENU_CHANGEACTION(ui_menu_cext_advancel,UI_TEXT_EXTR_ADVANCE_L,UI_ACTION_ADVANCE_L);
  449. #endif
  450. #ifdef TEMP_PID
  451. UI_MENU_CHANGEACTION(ui_menu_cext_manager,UI_TEXT_EXTR_MANAGER,UI_ACTION_EXTR_HEATMANAGER);
  452. UI_MENU_CHANGEACTION(ui_menu_cext_pgain,UI_TEXT_EXTR_PGAIN,UI_ACTION_PID_PGAIN);
  453. UI_MENU_CHANGEACTION(ui_menu_cext_igain,UI_TEXT_EXTR_IGAIN,UI_ACTION_PID_IGAIN);
  454. UI_MENU_CHANGEACTION(ui_menu_cext_dgain,UI_TEXT_EXTR_DGAIN,UI_ACTION_PID_DGAIN);
  455. UI_MENU_CHANGEACTION(ui_menu_cext_dmin,UI_TEXT_EXTR_DMIN,UI_ACTION_DRIVE_MIN);
  456. UI_MENU_CHANGEACTION(ui_menu_cext_dmax,UI_TEXT_EXTR_DMAX,UI_ACTION_DRIVE_MAX);
  457. UI_MENU_CHANGEACTION(ui_menu_cext_pmax,UI_TEXT_EXTR_PMAX,UI_ACTION_PID_MAX);
  458. #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
  459. #define UI_MENU_PIDCNT 7
  460. #else
  461. #define UI_MENU_PIDCOND
  462. #define UI_MENU_PIDCNT 0
  463. #endif
  464. #if NUM_EXTRUDER>1
  465. UI_MENU_CHANGEACTION(ui_menu_cext_xoffset,UI_TEXT_EXTR_XOFF,UI_ACTION_X_OFFSET);
  466. UI_MENU_CHANGEACTION(ui_menu_cext_yoffset,UI_TEXT_EXTR_YOFF,UI_ACTION_Y_OFFSET);
  467. #define UI_MENU_CONFEXTCOND &ui_menu_ext_sel0,&ui_menu_ext_sel1,&ui_menu_cext_xoffset,&ui_menu_cext_yoffset,
  468. #define UI_MENU_CONFEXTCNT 4
  469. #else
  470. #define UI_MENU_CONFEXTCOND
  471. #define UI_MENU_CONFEXTCNT 0
  472. #endif
  473. #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}
  474. UI_MENU(ui_menu_cextr,UI_MENU_CEXTR,7+UI_MENU_BACKCNT+UI_MENU_PIDCNT+UI_MENU_CONFEXTCNT+UI_MENU_ADV_CNT);
  475.  
  476. // **** Configuration menu
  477. UI_MENU_SUBMENU(ui_menu_conf_general,UI_TEXT_GENERAL,ui_menu_general);
  478. UI_MENU_SUBMENU(ui_menu_conf_accel,UI_TEXT_ACCELERATION,ui_menu_accel);
  479. UI_MENU_SUBMENU(ui_menu_conf_feed,UI_TEXT_FEEDRATE,ui_menu_feedrate);
  480. UI_MENU_SUBMENU(ui_menu_conf_extr,UI_TEXT_EXTRUDER,ui_menu_cextr);
  481. #if EEPROM_MODE!=0
  482. UI_MENU_ACTIONCOMMAND(ui_menu_conf_to_eeprom,UI_TEXT_STORE_TO_EEPROM,UI_ACTION_STORE_EEPROM);
  483. UI_MENU_ACTIONCOMMAND(ui_menu_conf_from_eeprom,UI_TEXT_LOAD_EEPROM,UI_ACTION_LOAD_EEPROM);
  484. #define UI_MENU_EEPROM_COND ,&ui_menu_conf_to_eeprom,&ui_menu_conf_from_eeprom
  485. #define UI_MENU_EEPROM_CNT 2
  486. UI_MENU_ACTION2C(ui_menu_eeprom_saved,UI_ACTION_DUMMY,UI_TEXT_EEPROM_STORED);
  487. UI_MENU_ACTION2C(ui_menu_eeprom_loaded,UI_ACTION_DUMMY,UI_TEXT_EEPROM_LOADED);
  488. #else
  489. #define UI_MENU_EEPROM_COND
  490. #define UI_MENU_EEPROM_CNT 0
  491. #endif
  492. #ifdef SOFTWARE_LEVELING
  493. #define UI_MENU_SL_COND ,&ui_menu_conf_level
  494. #define UI_MENU_SL_CNT 1
  495. UI_MENU_SUBMENU(ui_menu_conf_level, UI_TEXT_LEVEL, ui_menu_level);
  496. #else
  497. #define UI_MENU_SL_COND
  498. #define UI_MENU_SL_CNT 0
  499. #endif
  500. #ifdef STEP_COUNTER
  501. #define UI_MENU_DELTA_COND ,&ui_menu_conf_delta
  502. #define UI_MENU_DELTA_CNT 1
  503. UI_MENU_SUBMENU(ui_menu_conf_delta, UI_TEXT_DELTA, ui_menu_delta);
  504. #else
  505. #define UI_MENU_DELTA_COND
  506. #define UI_MENU_DELTA_CNT 0
  507. #endif
  508. #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}
  509. UI_MENU(ui_menu_configuration,UI_MENU_CONFIGURATION,UI_MENU_BACKCNT+UI_MENU_EEPROM_CNT+UI_MENU_DELTA_CNT+UI_MENU_SL_CNT+4);
  510. // Main menu
  511. UI_MENU_SUBMENU(ui_menu_main1,UI_TEXT_QUICK_SETTINGS,ui_menu_quick);
  512. UI_MENU_SUBMENU(ui_menu_main2, UI_TEXT_POSITION,ui_menu_positions);
  513. UI_MENU_SUBMENU(ui_menu_main3,UI_TEXT_EXTRUDER,ui_menu_extruder);
  514. UI_MENU_SUBMENU(ui_menu_main4,UI_TEXT_DEBUGGING,ui_menu_debugging);
  515. UI_MENU_SUBMENU(ui_menu_main5,UI_TEXT_CONFIGURATION,ui_menu_configuration);
  516. #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}
  517. UI_MENU(ui_menu_main,UI_MENU_MAIN,5+UI_MENU_BACKCNT+UI_MENU_SD_CNT+UI_MENU_FAN_CNT);
  518.  
  519. /* Define menus accessible by action commands
  520.  
  521. You can create up to 10 user menus which are accessible by the action commands UI_ACTION_SHOW_USERMENU1 until UI_ACTION_SHOW_USERMENU10
  522. You this the same way as with the menus above or you use one of the above menus. Then add a define like
  523.  
  524. #define UI_USERMENU1 ui_menu_conf_feed
  525.  
  526. 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.
  527.  
  528. When do you need this? You might want a fast button to change the temperature. In the default menu you have no menu
  529. to change the temperature and view it the same time. So you need to make an action menu for this like:
  530. UI_MENU_ACTION4C(ui_menu_extrtemp,UI_ACTION_EXTRUDER0_TEMP,"Temp. 0  :%E0\002C","","","");
  531. Then you assign this menu to a usermenu:
  532. #define UI_USERMENU2 ui_menu_extrtemp
  533.  
  534. 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
  535. the change of temperature with the next/previous buttons.
  536.  
  537. */
  538.  
  539. #endif // __UI_MENU_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement