_DISPLAY_func.h 57 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732
  1. //_DISPLAY_func.h
  2. /* #if defined(HAS_TFT_ILI9163C)
  3. delay(LCDtim);
  4. DISPLAY_DEV.setCursor(0,60);
  5. DISPLAY_DEV.print(LCDarray1); DISPLAY_DEV.print(" "); DISPLAY_DEV.print(LCDarray2);
  6. #endif
  7. */
  8. //void _DISPLAY_print
  9. void DISPLAY__print_ANY(DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A ,
  10. DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A,
  11. DISPLAY_pos_seq_T DISPLAY_pos_seq_A,
  12. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  13. DISPLAY_string_T DISPLAY_string_A
  14. #else
  15. DISPLAY_array16_T DISPLAY_array16_A
  16. #endif
  17. ){
  18. #if defined(DEBUG)
  19. if(DEBUG > 6) {
  20. Serial.print("#20 DsplY:[ "); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_CURSOR_Y_CHARS_A); //[ARDUINO_ATTR_ARRAY_S_INDEX]
  21. Serial.print("] # MaxY:["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_CHARS_A); //[ARDUINO_ATTR_ARRAY_S_INDEX]
  22. Serial.println("] ");
  23. }
  24. Serial.print("#26 Dspl ATTR CURRENT[ "); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A);
  25. Serial.print("] LAST["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A);
  26. Serial.print("] COUNT["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A);
  27. Serial.print("] LIMIT["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A);
  28. Serial.print("] NEXT:["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A);
  29. Serial.println("] ");
  30. #endif
  31. #if defined(HAS_TFT_ILI9163C)
  32. #endif
  33. #if defined(DEBUG)
  34. if(DEBUG > 6) {
  35. Serial.print(" [HAS_TFT_ILI9163C] ");
  36. Serial.print(" 27[DEBUG] ");
  37. }
  38. #endif
  39. Serial.println("] ");
  40. //todo position current
  41. //todo positions max
  42. #if defined(HAS_TFT_ILI9163C)
  43. DISPLAY_DEV_CTRL__println(DISPLAY_PHYSICAL_CHAR_A,
  44. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  45. DISPLAY_string_A,
  46. #else
  47. DISPLAY_array16_A,
  48. #endif
  49. DISPLAY_pos_seq_A) ;
  50. #else
  51. // Serial.println(DISPLAY_array16_A);
  52. #endif
  53. #if defined(DEBUG)
  54. //Serial.end();
  55. //delay(100);
  56. //Serial.write(" 72[DEBUG] ");
  57. #endif
  58. }
  59. void DISPLAY__print_IMMEDIATE(
  60. DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A,
  61. DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A,
  62. DISPLAY_pos_seq_T DISPLAY_pos_seq_A,
  63. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  64. DISPLAY_string_T DISPLAY_string_A,
  65. #else
  66. DISPLAY_array16_T DISPLAY_array16_A,
  67. #endif
  68. DISPLAY_TARGET_T DISPLAY_TARGET_A) {
  69. if(DISPLAY_TARGET_A & DISPLAY_TARGET_DISPLAY128){ //BIN TEST
  70. #if defined(HAS_TFT_ILI9163C)
  71. #if defined(DEBUG)
  72. if(DEBUG > 6) {
  73. // String message(DISPLAY_array16_A);
  74. Serial.print("#69A DISPLAY__print_IMMEDIATE [DEBUG] to HAS_TFT_ILI9163C Len["); //Serial.print( message.length());
  75. Serial.print("] XM["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_X_CHARS_A);
  76. Serial.print("] YM["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_CHARS_A);
  77. Serial.print("] YC["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_CURSOR_Y_CHARS_A);
  78. Serial.print("] YF["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A);
  79. Serial.println("] ");
  80. }
  81. #endif
  82. DISPLAY_DEV_CTRL__println(DISPLAY_PHYSICAL_CHAR_A,
  83. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  84. DISPLAY_string_A,
  85. #else
  86. DISPLAY_array16_A,
  87. #endif
  88. DISPLAY_pos_seq_A) ;
  89. #else
  90. #endif
  91. // DISPLAY__print_ANY(DISPLAY_T_ARDUINO_ATTR_ARRAY_A, DISPLAY_PHYSICAL_CHAR_A, DISPLAY_pos_seq_A, DISPLAY_array16_A);
  92. } else if(DISPLAY_TARGET_A & DISPLAY_TARGET_ANY){ //BIN TEST
  93. #if defined(DEBUG)
  94. if(DEBUG > 6) {
  95. Serial.print("#69B DISPLAY__print_IMMEDIATE [DEBUG] to DISPLAY__print_ANY Seq["); Serial.print(DISPLAY_pos_seq_A , BIN);
  96. Serial.print("] Target["); Serial.print(DISPLAY_TARGET_A , BIN);
  97. Serial.println("] ");
  98. }
  99. #endif
  100. DISPLAY__print_ANY(DISPLAY_T_ARDUINO_ATTR_ARRAY_A, DISPLAY_PHYSICAL_CHAR_A, DISPLAY_pos_seq_A,
  101. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  102. DISPLAY_string_A
  103. #else
  104. DISPLAY_array16_A
  105. #endif
  106. );
  107. } else {
  108. #if defined(DEBUG)
  109. if(DEBUG > 6) {
  110. Serial.print("#68 DISPLAY__print_IMMEDIATE [DEBUG] else Seq["); Serial.print(DISPLAY_pos_seq_A , BIN);
  111. Serial.print("] Target["); Serial.print(DISPLAY_TARGET_A , BIN);
  112. Serial.println("] ");
  113. }
  114. #endif
  115. }
  116. }
  117. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  118. #else
  119. void DISPLAY__print_loop(DISPLAY_CURSOR_X_CHARS_T DISPLAY_CURSOR_X_CHARS_A,
  120. DISPLAY_CURSOR_Y_CHARS_T DISPLAY_CURSOR_Y_CHARS_A ,
  121. String message,
  122. int message_len,
  123. DISPLAY__print_loop_ACTION_T DISPLAY__print_loop_ACTION_A
  124. ) { //to print while in loop
  125. const int DISPLAY__print_loop_INDEX_LIMIT_A = 5;
  126. static int DISPLAY__print_loop_INDEX_CURRENT_A = 0 ;
  127. static int DISPLAY__print_loop_QUEUE_PEEK_A = 0 ;
  128. static DISPLAY__print_loop_T DISPLAY__print_loop_A[5]={} ;
  129. if(DISPLAY__print_loop_ACTION_A == DISPLAY__print_loop_ACTION_ADD) {
  130. if((DISPLAY__print_loop_INDEX_CURRENT_A + 1) <= DISPLAY__print_loop_INDEX_LIMIT_A) {
  131. DISPLAY__print_loop_INDEX_CURRENT_A ++ ;
  132. if(DISPLAY__print_loop_QUEUE_PEEK_A == 0 ) {
  133. DISPLAY__print_loop_QUEUE_PEEK_A = DISPLAY__print_loop_INDEX_CURRENT_A ;
  134. }
  135. DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].DISPLAY_CURSOR_X_CHARS_A = DISPLAY_CURSOR_X_CHARS_A ;
  136. DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].DISPLAY_CURSOR_Y_CHARS_A = DISPLAY_CURSOR_Y_CHARS_A ;
  137. DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].message_len = message_len ;
  138. //strcpy(DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].message, message );
  139. DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].message = message ;
  140. }
  141. Serial.print("#137[DISPLAY__print_loop][ADD] [i][");Serial.print(DISPLAY__print_loop_INDEX_CURRENT_A); Serial.println("] ");
  142. } else if(DISPLAY__print_loop_ACTION_A == DISPLAY__print_loop_ACTION_POP) {
  143. Serial.print("#137[DISPLAY__print_loop][POP] [i][");Serial.print(DISPLAY__print_loop_INDEX_CURRENT_A); Serial.print("] p[");Serial.print(DISPLAY__print_loop_QUEUE_PEEK_A); Serial.print("] ");
  144. if(DISPLAY__print_loop_QUEUE_PEEK_A > 0 ) {
  145. DISPLAY_DEV.setCursor(DISPLAY__print_loop_A[DISPLAY__print_loop_QUEUE_PEEK_A].DISPLAY_CURSOR_X_CHARS_A * DISPLAY_textsize_x_A,
  146. DISPLAY__print_loop_A[DISPLAY__print_loop_QUEUE_PEEK_A].DISPLAY_CURSOR_Y_CHARS_A * DISPLAY_textsize_y_A);
  147. #if defined(ENABLE_DISPLAY_MENU)
  148. #else
  149. DISPLAY_DEV.print(DISPLAY__print_loop_A[DISPLAY__print_loop_QUEUE_PEEK_A].message);
  150. Serial.print(" msg["); Serial.print(DISPLAY__print_loop_A[DISPLAY__print_loop_QUEUE_PEEK_A].message); Serial.print("] ");
  151. #endif
  152. } else {
  153. Serial.print(" [PEEK][EMPTY] ");
  154. }
  155. Serial.println("] ");
  156. }
  157. }
  158. #endif
  159. void DISPLAY__print(
  160. DISPLAY_T* DISPLAY_A ,
  161. DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A ,
  162. DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A,
  163. DISPLAY_pos_seq_T DISPLAY_pos_seq_A,
  164. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  165. DISPLAY_string_T DISPLAY_string_A,
  166. #else
  167. DISPLAY_array16_T DISPLAY_array16_A,
  168. #endif
  169. DISPLAY_TARGET_T DISPLAY_TARGET_A,
  170. time_seq_id_T time_seq_id_A,
  171. time_min_run_T time_min_run_A
  172. //queue
  173. ,Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QUEUE_A,
  174. Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,
  175. TASK_TYPE_T TASK_TYPE_A,
  176. TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A
  177. )
  178. {
  179. #ifdef DEBUG_DISPLAY
  180. Serial.print("127 DISPLAY__print DISPLAY_pos_seq_A["); Serial.print(BIN8_to_STRING(DISPLAY_pos_seq_A ));
  181. Serial.print("] DISPLAY_TARGET_A["); Serial.print(BIN8_to_STRING(DISPLAY_TARGET_A )); Serial.print("] [");
  182. Serial.print("#26 Dspl ATTR CURRENT[ "); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A);
  183. Serial.print("] LAST["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A);
  184. Serial.print("] COUNT["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A);
  185. Serial.print("] LIMIT["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A);
  186. Serial.print("] NEXT:["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A);
  187. Serial.println("] ");
  188. #endif
  189. if(DISPLAY_pos_seq_A & DISPLAY_pos_seq_A_IMMEDIATE){ ////BIN TEST
  190. #if defined(DEBUG_DISPLAY)
  191. //if(DEBUG > 6) {
  192. Serial.print("#84 DISPLAY__print to DISPLAY__print_IMMEDIATE [DEBUG] else Seq["); Serial.print(DISPLAY_pos_seq_A , BIN);
  193. Serial.print("] Target["); Serial.print(DISPLAY_TARGET_A , BIN);
  194. Serial.println("] ");
  195. // }
  196. #endif
  197. DISPLAY__print_IMMEDIATE(DISPLAY_T_ARDUINO_ATTR_ARRAY_A, DISPLAY_PHYSICAL_CHAR_A, DISPLAY_pos_seq_A,
  198. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  199. DISPLAY_string_A,
  200. #else
  201. DISPLAY_array16_A,
  202. #endif
  203. DISPLAY_TARGET_A);
  204. // Serial.print("#28 running _Slave_Ports_ttl_decrement = ");
  205. } else {
  206. #if defined(DEBUG)
  207. Serial.print("#88 DISPLAY__print [DEBUG] else "); Serial.print(DISPLAY_pos_seq_A , BIN);
  208. Serial.println("] ");
  209. #endif
  210. #if defined(DISABLE_TASK_TYPE_T_DISPLAY_queue_pop________)
  211. Serial.print("#167 DISABLE_TASK_TYPE_T_DISPLAY_queue_pop________");
  212. #else
  213. Serial.print("#253 TODO WHY ? BIN DISPLAY_pos_seq_A["); Serial.print(DISPLAY_pos_seq_A, BIN);
  214. Serial.print("]& IMM ["); Serial.print(DISPLAY_pos_seq_A_IMMEDIATE, BIN); Serial.print("] res[") ; Serial.print((DISPLAY_pos_seq_A & DISPLAY_pos_seq_A_IMMEDIATE) , BIN ) ;
  215. Serial.print(" ] String [") ; Serial.print(DISPLAY_string_A); Serial.print("] ");
  216. /* DISPLAY__add_record( DISPLAY_A ,
  217. DISPLAY_T_ARDUINO_ATTR_ARRAY_A ,
  218. DISPLAY_PHYSICAL_CHAR_A,
  219. DISPLAY_pos_seq_A,
  220. #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
  221. DISPLAY_string_A,
  222. #else
  223. DISPLAY_array16_A,
  224. #endif
  225. DISPLAY_TARGET_A,
  226. time_seq_id_A,
  227. time_min_run_A
  228. //queue
  229. , Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
  230. TASK_TYPE_A,
  231. TASK_PORT_ASSOC_A
  232. ) ;
  233. */
  234. #endif
  235. }
  236. }
  237. void DISPLAY__CURSOR_Y_CHARS__SET(DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A,
  238. DISPLAY_CURSOR_Y_CHARS_T DISPLAY_CURSOR_Y_CHARS_A
  239. ) {
  240. #if defined(HAS_TFT_ILI9163C)
  241. DISPLAY_DEV__CURSOR_Y_CHARS__SET(
  242. DISPLAY_PHYSICAL_CHAR_A,
  243. DISPLAY_CURSOR_Y_CHARS_A
  244. );
  245. #endif
  246. }
  247. #if defined(HAS_TFT_ILI9163C)
  248. DISPLAY_LATENCY_PASS__POP(
  249. time_seq_id_T time_seq_id_A,
  250. time_min_run_T time_min_run_A
  251. ) {
  252. static time_seq_id_T last_time_seq_id_A = time_seq_id_A;
  253. static time_min_run_T last_time_min_run_A = time_min_run_A;
  254. if(time_seq_id_A <= 1 or time_min_run_A <= 1) {
  255. Serial.print("[DISPLAY_LATENCY_PASS__POP][ERR]["); Serial.print(time_seq_id_A);Serial.print("]["); Serial.print(time_min_run_A); Serial.print("]");
  256. delay(2000);
  257. }
  258. if(time_seq_id_A >= last_time_min_run_A) {
  259. last_time_min_run_A = time_min_run_A;
  260. return true;
  261. } else {
  262. return false;
  263. }
  264. }
  265. void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
  266. DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A ,
  267. DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A,
  268. DISPLAY_MENU_ITEM_INDEX_T DISPLAY_MENU_ITEM_INDEX_A ,
  269. time_seq_id_T time_seq_id_A ,
  270. time_min_run_T time_min_run_A
  271. ) {
  272. int i;
  273. int maxX ;
  274. int maxY ;
  275. int maxXi ;
  276. int maxYi ;
  277. int minYi ;
  278. int minXi ;
  279. int minXselector_context ;
  280. int menuYoffset = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_Y_CHARS_MIN_A ;
  281. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A | DISPLAY_MENU_SELECTOR_MENU_FLAG) {
  282. minXselector_context = 1 ;
  283. // Serial.print(" [minXselector_context] [MENU SEL] ");
  284. } else { minXselector_context = 0 ; }
  285. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_X_CHARS_MAX_A == 0) maxX = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_X_PX_A ;
  286. else maxX = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_X_CHARS_MAX_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_x_A ;
  287. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_Y_CHARS_MAX_A == 0) maxY = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_PX_A ;
  288. else maxY = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_Y_CHARS_MAX_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A ;
  289. // DISPLAY_DEV.setCursor((DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_X_CHARS_MIN_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_x_A),
  290. // (DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_Y_CHARS_MIN_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A)); //[ARDUINO_ATTR_ARRAY_S_INDEX]
  291. /* Serial.print("[#314 - XMIN["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_X_CHARS_MIN_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_x_A); Serial.print("] ");
  292. Serial.print(" YMIN["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_Y_CHARS_MIN_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A); Serial.print("] ");
  293. Serial.print(" XMAX["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_X_CHARS_MAX_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_x_A); Serial.print("] ");
  294. Serial.print(" YMAX["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_Y_CHARS_MAX_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A); Serial.print("] ");
  295. Serial.print(" TESTX["); Serial.print(20 * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_x_A); Serial.print("] ");
  296. Serial.print(" TESTY["); Serial.print(8 * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A); Serial.print("] ");
  297. Serial.print(" maxX["); Serial.print(maxX); Serial.print("] ");
  298. Serial.print(" maxY["); Serial.print(maxY); Serial.print("] ");
  299. Serial.print(" color["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_COLOR_A); Serial.print("] ");
  300. Serial.print(" setMX["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_X_CHARS_MAX_A); Serial.print("] ");
  301. Serial.println(" ");*/
  302. #if defined(DISPLAY__print_menu_DELAY)
  303. Serial.print("D");
  304. delay(DISPLAY__print_menu_DELAY);
  305. #endif
  306. if(DISPLAY_LATENCY_PASS__POP(time_seq_id_A, time_min_run_A )) {
  307. for(i=ARDUINO_ARRAY_INDEX_FIRST ; i<=ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU_ITEM_A; i++) {
  308. //DISPLAY_PHYSICAL_CHAR_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i]
  309. // DISPLAY_DEV.setCursor(20 , (20 + (i * 5)));
  310. // DISPLAY_DEV.print("test88");
  311. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_ITEM_FLAG_A == DISPLAY_MENU_ITEM_FLAG_INITIALIZED ) {
  312. //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].time_seq_id_A + ARDUINO_LOOP_LATENCY_DISPLAY_MENU > time_seq_id_A ) {
  313. // Serial.print(" 366[LAT[ "); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].time_seq_id_A); Serial.print("] ");
  314. {
  315. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].time_seq_id_A = time_seq_id_A ;
  316. maxXi = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_X_PX_A ;
  317. // Serial.print(" [Maxi[ "); Serial.print(maxXi); Serial.print("] ");
  318. minXi = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_CURSOR_X_CHARS_A ;
  319. // Serial.print(" [minXi[ "); Serial.print(minXi); Serial.print("] ");
  320. maxYi = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_CURSOR_Y_CHARS_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A ;
  321. //if(maxYi > DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_PX_A) maxYi = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_PX_A ;
  322. // Serial.print(" [maxYi[ "); Serial.print(maxYi); Serial.print("] ");
  323. minYi = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A ;
  324. // Serial.print(" [minYi[ "); Serial.print(minYi); Serial.print("] ");
  325. //Serial.print(" WPRINT ["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_Y_CHARS_MIN_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A); Serial.print("] ");
  326. /* DISPLAY_DEV.fillRect(
  327. (0 + minXselector_context),
  328. ((DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_CURSOR_Y_CHARS_A + 1) * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A),
  329. 100, DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A, BROWN );
  330. */
  331. DISPLAY_DEV.fillRect(minXselector_context, maxYi ,
  332. (maxXi - minXselector_context), minYi , DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_COLOR_A );
  333. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG) {
  334. DISPLAY_DEV.fillRect(
  335. ( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].Exp_state_level_A / 3)
  336. , maxYi , (( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].Exp_state_level_A / 3) + 10) //maxXi
  337. , minYi, YELLOW );
  338. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG) {
  339. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG) {
  340. //DISPLAY_DEV.setTextColor(WHITE, BLACK);
  341. // DISPLAY_DEV.setCursor(minXi , maxYi );
  342. // DISPLAY_DEV.print("[ -- ] / [ + ]");DISPLAY_DEV.setTextColor(WHITE);
  343. DISPLAY_DEV.fillRect( 0, maxYi , maxXi, minYi, YELLOW );
  344. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG) {
  345. DISPLAY_DEV.fillRect( 0, maxYi ,( maxXi /3 ), minYi, WHITE );
  346. DISPLAY_DEV.fillRect( (maxXi /3), maxYi ,( maxXi /3 * 2 ), minYi, BLACK );
  347. DISPLAY_DEV.fillRect( (maxXi /3 * 2), maxYi , maxXi, minYi, WHITE );
  348. //DISPLAY_DEV.setCursor(minXi , maxYi ); DISPLAY_DEV.setTextColor(WHITE, BLACK);
  349. //DISPLAY_DEV.print("[ ON ] / [ OFF ] ");DISPLAY_DEV.setTextColor(WHITE);
  350. } else {
  351. DISPLAY_DEV.fillRect( 0, maxYi , maxXi, minYi, RED );
  352. //DISPLAY_DEV.setCursor(minXi , maxYi ); DISPLAY_DEV.setTextColor(WHITE, BLACK);
  353. //DISPLAY_DEV.print("[ ? ] / [ ? ] ");DISPLAY_DEV.setTextColor(WHITE);
  354. }
  355. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_FLAG) {
  356. DISPLAY_DEV.fillRect( 0, maxYi , maxXi, minYi, 0x0210 );
  357. } else if(minXselector_context > 0) {//menu context
  358. DISPLAY_DEV.fillRect(
  359. 0, maxYi ,
  360. 5, minYi, RED );
  361. }
  362. /*if(maxYi == 0 ) {
  363. Serial.print(" 404[maxYi]==0 for i[");Serial.print(i);Serial.print(" ] ");
  364. Serial.print("FLAG");Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_ITEM_FLAG_A, BIN);Serial.print(" ] ");
  365. Serial.print("messg[");Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_string_A);Serial.print("] ");
  366. Serial.print("menuYoffset[");Serial.print(menuYoffset);Serial.print("] ");
  367. }
  368. */
  369. DISPLAY_DEV.setCursor(minXi , maxYi ); //[ARDUINO_ATTR_ARRAY_S_INDEX]
  370. // Serial.print(" SetCursorY["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_CURSOR_Y_CHARS_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A); Serial.print("] ");
  371. //Serial.print("462:CA:"); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_char_A);
  372. //DISPLAY_DEV.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_string_A);
  373. //DISPLAY_DEV.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_char_A);
  374. //DISPLAY_DEV.print("test 123");
  375. //DISPLAY_DEV.print("test 123");
  376. for (int iA = 0; iA < 24; iA++) {
  377. DISPLAY_DEV.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_char24_A[iA]);
  378. }
  379. }
  380. }
  381. }
  382. }//if((DISPLAY_LATENCY_PASS__POP(time_seq_id_A, time_min_run_A ))
  383. }
  384. #endif
  385. #include "_Slave_Ports_action_func.h"
  386. #if defined(HAS_TFT_ILI9163C)
  387. void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
  388. DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A ,
  389. DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A,
  390. Slave_Ports_Status_T* Slave_Ports_Status_A ,
  391. Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
  392. // DISPLAY_MENU_ITEM_INDEX_T DISPLAY_MENU_ITEM_INDEX_A ,
  393. time_seq_id_T time_seq_id_A ,
  394. time_min_run_T time_min_run_A ,
  395. //DISPLAY_MENU_SELECTOR_STATUS_T DISPLAY_MENU_SELECTOR_STATUS_A , //; //which mode
  396. DISPLAY_MENU_SELECTOR_SWITCH_T DISPLAY_MENU_SELECTOR_SWITCH_A,
  397. DISPLAY_MENU_SELECTOR_oldEncPos_T DISPLAY_MENU_SELECTOR_oldEncPos_A , //; //values
  398. DISPLAY_MENU_SELECTOR_encoderPos_T DISPLAY_MENU_SELECTOR_encoderPos_A,
  399. DISPLAY_MENU_SELECTOR_triggerCountOld_T DISPLAY_MENU_SELECTOR_triggerCountOld_A,
  400. DISPLAY_MENU_SELECTOR_triggerCount_T DISPLAY_MENU_SELECTOR_triggerCount_A
  401. ) {
  402. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A == 0 ) {
  403. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  404. Serial.print(" [SEL_INIT] ");
  405. #endif
  406. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A = ARDUINO_ARRAY_INDEX_FIRST ;
  407. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_MENU_FLAG ;
  408. }
  409. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  410. Serial.print(" [SEL_STATUS["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN); Serial.print("] ");
  411. Serial.print(" [MENU_INDEX["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A); Serial.print("] ");
  412. Serial.print(" [ITEM_INDEX["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A); Serial.print("] ");
  413. #endif
  414. if(DISPLAY_MENU_SELECTOR_oldEncPos_A != DISPLAY_MENU_SELECTOR_encoderPos_A ) {
  415. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  416. Serial.print(" #383[ENC][CHG][ROOT] ");
  417. #endif
  418. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_MENU_FLAG) {
  419. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  420. Serial.print(" #385[DISPLAY_MENU_SELECTOR_MENU_FLAG] ");
  421. #endif
  422. if(DISPLAY_MENU_SELECTOR_oldEncPos_A > DISPLAY_MENU_SELECTOR_encoderPos_A) {
  423. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  424. Serial.print(" #386[ENCODER][CHANGED]> ");
  425. #endif
  426. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A --;
  427. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A <= ARDUINO_ARRAY_INDEX_FIRST ) {
  428. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A = ARDUINO_ARRAY_INDEX_FIRST ;
  429. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  430. Serial.print("#387[NOT][PREV][MENU]");
  431. #endif
  432. }
  433. } else {
  434. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  435. Serial.print("#386[ENCODER][CHANGED]< ");
  436. #endif
  437. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A - 1].DISPLAY_MENU_ITEM_A[1].DISPLAY_MENU_ITEM_FLAG_A == DISPLAY_MENU_ITEM_FLAG_EMPTY) {
  438. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  439. Serial.print("#388[NOT][NEXT][MENU]");
  440. #endif
  441. } else {
  442. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  443. Serial.print("#388[NEXT][MENU]++");
  444. #endif
  445. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A ++;
  446. }
  447. } //encoderpos
  448. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_MENU_FLAG ;
  449. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  450. Serial.print("[ WILL MARK MENU CONETXT ]");
  451. #endif
  452. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_FLAG) { //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_MENU_FLAG) {
  453. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  454. Serial.print("[ITEM][CONTEXT]");
  455. #endif
  456. if(DISPLAY_MENU_SELECTOR_oldEncPos_A > DISPLAY_MENU_SELECTOR_encoderPos_A) {
  457. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  458. Serial.print(" #482[ENCODER][CHANGED]< ");
  459. #endif
  460. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A == ARDUINO_ARRAY_INDEX_FIRST) {
  461. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  462. Serial.print(" #485[ENCODER][NO MORE LEFT] ");
  463. #endif
  464. } else {
  465. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  466. Serial.print(" #485[ENCODER][MOVED] ");
  467. #endif
  468. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_EMPTY_FLAG ;
  469. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A --;
  470. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG ;
  471. }
  472. } else if(DISPLAY_MENU_SELECTOR_oldEncPos_A < DISPLAY_MENU_SELECTOR_encoderPos_A) { // if(DISPLAY_MENU_SELECTOR_oldEncPos_A > DISPLAY_MENU_SELECTOR_encoderPos_A) {
  473. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  474. Serial.print(" #482[ENCODER][CHANGED]> ");
  475. #endif
  476. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A + 1)].DISPLAY_MENU_ITEM_FLAG_A == DISPLAY_MENU_ITEM_FLAG_INITIALIZED) {
  477. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  478. Serial.print(" #482[ENCODER][MARKED]> ");
  479. #endif
  480. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_EMPTY_FLAG ;
  481. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A ++;
  482. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG ;
  483. }
  484. } //else if(DISPLAY_MENU_SELECTOR_oldEncPos_A < DISPLAY_MENU_SELECTOR_encoderPos_A)
  485. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG) { // else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_FLAG)
  486. //rotate selectors
  487. Serial.print(" #560[ENCODER][_ITEM_OPTIONS_FLAG]> ");Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN); Serial.print("]");
  488. if(DISPLAY_MENU_SELECTOR_oldEncPos_A != DISPLAY_MENU_SELECTOR_encoderPos_A) {
  489. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG) {
  490. Serial.print(" >[LEV] ");
  491. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A - DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG ;
  492. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A | DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG ;
  493. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A ;
  494. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG) {
  495. Serial.print(" >[TOG] ");
  496. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A - DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG ;
  497. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A | DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG ;
  498. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A ;
  499. } else {
  500. Serial.print(" >[ELS][LEV] ");
  501. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A | DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG ;
  502. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A ;
  503. }
  504. }
  505. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG) { //else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_FLAG)
  506. if(DISPLAY_MENU_SELECTOR_oldEncPos_A > DISPLAY_MENU_SELECTOR_encoderPos_A) {
  507. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A > 0) {
  508. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A -=5 ; //--;
  509. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A < 0 ) DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A = 0 ;
  510. TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={0,0,DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A};
  511. Slave_Ports_action_func(Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_A ,
  512. Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A , TASK_TYPE_T_request_set_new_Exp_state ,
  513. TASK_PORT_ASSOC_A,
  514. time_seq_id_A, time_min_run_A, ARDUINO_ARRAY_INDEX_NOT_SET ,
  515. Exp_state_ON_USE_LEVEL ,
  516. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A
  517. );
  518. } //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A > 0) {
  519. } else if(DISPLAY_MENU_SELECTOR_oldEncPos_A < DISPLAY_MENU_SELECTOR_encoderPos_A) {
  520. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A < 254) {
  521. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A +=5 ; //+;
  522. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A >254) DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A = 254;
  523. TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={0,0,DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A};
  524. Slave_Ports_action_func(Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_A ,
  525. Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A , TASK_TYPE_T_request_set_new_Exp_state ,
  526. TASK_PORT_ASSOC_A,
  527. time_seq_id_A, time_min_run_A, ARDUINO_ARRAY_INDEX_NOT_SET ,
  528. Exp_state_ON_USE_LEVEL ,
  529. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A
  530. );
  531. } //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A < 254) {
  532. } // if(DISPLAY_MENU_SELECTOR_oldEncPos_A < DISPLAY_MENU_SELECTOR_encoderPos_A) {
  533. } //else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG)
  534. } else if(DISPLAY_MENU_SELECTOR_triggerCountOld_A != DISPLAY_MENU_SELECTOR_triggerCount_A) {
  535. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  536. Serial.print("[TRIG++]?");
  537. #endif
  538. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_MENU_FLAG) {
  539. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  540. Serial.print("[TOGGLE][Fr][SELECTOR_MENU_FLAG]>ITEM");
  541. #endif
  542. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG ;
  543. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  544. Serial.print("[ITEM]>1");
  545. #endif
  546. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A = ARDUINO_ARRAY_INDEX_FIRST ;
  547. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  548. Serial.print("[ITEM]>MARK1");
  549. #endif
  550. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A ;
  551. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_FLAG) { //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_MENU_FLAG) {
  552. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  553. Serial.print("[TOGGLE][Fr][SELECTOR_MENU_FLAG]>ITEM>OPTIONS");
  554. #endif
  555. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG ;
  556. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  557. Serial.print("[ITEM]>1");
  558. #endif
  559. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG ;
  560. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  561. Serial.print("[ITEM]>MARK1");
  562. #endif
  563. //} else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG) {
  564. } else if((DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG) or (
  565. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG )) { //== DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG) { //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG
  566. if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A > 0 ) {
  567. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG ;
  568. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG;
  569. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A = Slave_Ports_Status_A[ DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A ].Exp_state_level_A ;
  570. } else {//if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A > 0 ) {
  571. //exit parent
  572. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_MENU_FLAG ;
  573. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_MENU_FLAG;
  574. } //else
  575. } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG) { //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG)
  576. //back to elements
  577. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG;
  578. DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG ;
  579. } else { //else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG)
  580. Serial.print("ELSE777["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN);
  581. }
  582. } // if(DISPLAY_MENU_SELECTOR_oldEncPos_A != DISPLAY_MENU_SELECTOR_encoderPos_A ) {
  583. #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
  584. Serial.print("DEBUG["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN);
  585. #endif
  586. Serial.println(" ");
  587. }
  588. #endif