瀏覽代碼

test displaty menu

a.binder 5 年之前
父節點
當前提交
f6e6d258eb

+ 2 - 0
SE/stuff/P5_Automation_can-dev-res/P5_Automation_can-dev-res.ino

@@ -97,6 +97,8 @@
 //#define DEBUG_QUEUE_ASSERT todo not working
 #define DISABLE_DISPLAY__add_record 
 #define DISPLAY_array16_T_is_DISPLAY_string_T 
+#define ENABLE_DISPLAY_MENU
+
 
 #define HAS__jm_Scheduler //to allow planned actions blink etc
 

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res/_CAN/_CAN_func.h

@@ -99,7 +99,7 @@ void CAN_READ(
                                          0
                                         };
                                        Slave_Ports_action_func(Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_A , Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
-                                         TASK_TYPE_T_request_set_new_Exp_state , TASK_PORT_ASSOC_A,  0, 0, ARDUINO_ARRAY_INDEX_NOT_SET ,  
+                                         TASK_TYPE_T_request_set_new_Exp_state , TASK_PORT_ASSOC_A,  time, time, ARDUINO_ARRAY_INDEX_NOT_SET ,  
                                          CAN_MSG8_BIT_5_A , CAN_MSG8_BIT_7_A);
                                     
                                 

+ 72 - 0
SE/stuff/P5_Automation_can-dev-res/_DISPLAY_func.h

@@ -292,4 +292,76 @@ void DISPLAY__CURSOR_Y_CHARS__SET(DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR
 
 
 
+void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
+        DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
+        DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A, 
+        DISPLAY_MENU_ITEM_INDEX_T DISPLAY_MENU_ITEM_INDEX_A ,
+        time_seq_id_T time_seq_id_A ,
+        time_min_run_T time_min_run_A 
+       ) {
+        int i;
+        int maxX ;
+        int maxY ;
+        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 ;
+        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 ;
+        
+        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 ;
+        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 ;
+        
+                // 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),
+                  //         (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]
+           
+              
+           /* 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("] "); 
+                   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("] ");
+                   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("] ");
+                   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("] ");
+                   
+                   Serial.print(" TESTX["); Serial.print(20 * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_x_A); Serial.print("] ");
+                   Serial.print(" TESTY["); Serial.print(8 * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A); Serial.print("] ");
+                   Serial.print(" maxX["); Serial.print(maxX); Serial.print("] ");
+                   Serial.print(" maxY["); Serial.print(maxY); Serial.print("] ");
+                   Serial.print(" color["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_COLOR_A); Serial.print("] ");
+                   
+                   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("] "); 
+                   
+                   
+                   
+                   
+                Serial.println(" ");*/
+            for(i=ARDUINO_ARRAY_INDEX_FIRST ; i<=ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU_ITEM_A; i++) {
+                //DISPLAY_PHYSICAL_CHAR_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i] 
+                
+                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_INIT ) {
+                
+                      if(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 - ARDUINO_LOOP_LATENCY_DISPLAY_MENU) ) {
+                      
+                      
+                      } else {
+                      
+                        //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("] ");
+                          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  ;
+                          DISPLAY_DEV.fillRect(
+                               (DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_CURSOR_X_CHARS_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_x_A), 
+                                (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), 
+                                maxX, DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A, DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_COLOR_A  );
+                   
+                           DISPLAY_DEV.setCursor(
+                                 (DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_CURSOR_X_CHARS_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_x_A),
+                                 (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)); //[ARDUINO_ATTR_ARRAY_S_INDEX]
+                          
+                           
+                            DISPLAY_DEV.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_string_A);
+                            //DISPLAY_DEV.print("test 123");
+                          
+                      }
+                }
+                 
+               
+
+            
+            }
+        
+    }
+
 

+ 49 - 1
SE/stuff/P5_Automation_can-dev-res/_DISPLAY_struct.h

@@ -24,7 +24,7 @@ typedef ARDUINO_SIZE_T DISPLAY_string_len_T ;
   typedef DISPLAY_textsize_T DISPLAY_textsize_y_T ;
 
 
-
+typedef long DISPLAY_COLOR_T ;
 
 
 typedef  int DISPLAY_pos_seq_T ; //reqiested position in LCD
@@ -62,7 +62,54 @@ typedef byte DISPLAY_TARGET_T ; //TODO BIN
     
 typedef struct DISPLAY_S DISPLAY_T ;
 
+typedef byte DISPLAY_MENU_ITEM_FLAG_T ;
+const DISPLAY_MENU_ITEM_FLAG_T DISPLAY_MENU_ITEM_FLAG_EMPTY = B00000000;
+const DISPLAY_MENU_ITEM_FLAG_T DISPLAY_MENU_ITEM_FLAG_INIT  = B00000001;
+
+struct DISPLAY_MENU_ITEM_S { //elementy menu
+     DISPLAY_MENU_ITEM_FLAG_T DISPLAY_MENU_ITEM_FLAG_A = DISPLAY_MENU_ITEM_FLAG_EMPTY ;
+     DISPLAY_CURSOR_X_CHARS_T DISPLAY_CURSOR_X_CHARS_A; //gdzie sie wyswietla
+     DISPLAY_CURSOR_Y_CHARS_T DISPLAY_CURSOR_Y_CHARS_A ;//gdzie sie wyswietla
+     DISPLAY_string_T DISPLAY_string_A;
+     DISPLAY_COLOR_T DISPLAY_COLOR_A ;
+     
+     time_seq_id_T time_seq_id_A ;  //to controll latency
+     time_min_run_T time_min_run_A ;  //to controll latency
+} ;
+
+typedef struct DISPLAY_MENU_ITEM_S DISPLAY_MENU_ITEM_T ;
+
+
+//typedef byte  DISPLAY_MENU_ITEM_CONTEXT_OPTIONS_T ;
 
+//struct DISPLAY_MENU_ITEM_OPTIONS_S {   
+//}
+
+typedef ARDUINO_ARRAY_ATTR_T DISPLAY_MENU_ITEM_INDEX_T ;//which index
+
+//ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU
+  struct DISPLAY_MENU_S {
+           DISPLAY_CURSOR_X_CHARS_T DISPLAY_MENU_SIZE_X_CHARS_MIN_A; //SIZE
+           DISPLAY_CURSOR_Y_CHARS_T DISPLAY_MENU_SIZE_Y_CHARS_MIN_A; //SIZE
+           DISPLAY_CURSOR_X_CHARS_T DISPLAY_MENU_SIZE_X_CHARS_MAX_A; //SIZE
+           DISPLAY_CURSOR_Y_CHARS_T DISPLAY_MENU_SIZE_Y_CHARS_MAX_A; //SIZE
+           DISPLAY_COLOR_T DISPLAY_COLOR_A = BLACK ;
+           time_seq_id_T time_seq_id_A ;  //to controll latency
+           time_min_run_T time_min_run_A ;  //to controll latency
+           /*
+           DISPLAY_CURSOR_X_CHARS_T DISPLAY_CURSOR_X_CHARS_MIN_A; //zaznaczenie
+           DISPLAY_CURSOR_Y_CHARS_T DISPLAY_CURSOR_Y_CHARS_MIN_A; //zaznaczenie
+           DISPLAY_CURSOR_X_CHARS_T DISPLAY_CURSOR_X_CHARS_MAX_A; //zaznaczenie
+           DISPLAY_CURSOR_Y_CHARS_T DISPLAY_CURSOR_Y_CHARS_MAX_A; //zaznaczenie
+           */
+           DISPLAY_MENU_ITEM_T DISPLAY_MENU_ITEM_A[ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU_ITEM_A] ; //elementy menu
+           ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_CURRENT_A ; //ktory jest aktywny element
+  }
+;
+ 
+ 
+ typedef struct DISPLAY_MENU_S DISPLAY_MENU_T ;
+ 
  
  struct DISPLAY_PHYSICAL_CHAR_S {
  
@@ -74,6 +121,7 @@ typedef struct DISPLAY_S DISPLAY_T ;
            DISPLAY_CURSOR_Y_CHARS_T DISPLAY_CURSOR_Y_CHARS_A ;
            DISPLAY_textsize_x_T DISPLAY_textsize_x_A;
            DISPLAY_textsize_y_T DISPLAY_textsize_y_A;
+           DISPLAY_MENU_T DISPLAY_MENU_A[2] ;
  } ;
  
  

+ 117 - 1
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_func.h

@@ -152,7 +152,15 @@
                        message_init = message_init +  Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A ;
                         message_init.concat("   ");
            #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
-                    
+                     #if defined(ENABLE_DISPLAY_MENU)
+                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[1].DISPLAY_CURSOR_X_CHARS_A =  0 ;
+                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[1].DISPLAY_CURSOR_Y_CHARS_A = 0 ;
+                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[1].DISPLAY_string_A = message_init ;
+                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[1].DISPLAY_COLOR_A =  0x0004 ;
+                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[1].DISPLAY_MENU_ITEM_FLAG_A = DISPLAY_MENU_ITEM_FLAG_INIT  ;
+                     
+
+                     #else 
                          DISPLAY__print(
                                                     DISPLAY_A ,
                                                     DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
@@ -168,6 +176,7 @@
                                                    TASK_PORT_ASSOC_A
                                                   
                                                     ); 
+                     #endif
             #else
                
                
@@ -202,10 +211,104 @@
              #endif
      
         int i;
+        
+        
+         #if defined(ENABLE_DISPLAY_MENU)
+         
+          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].ARDUINO_ARRAY_INDEX_CURRENT_A = 1 ;
+          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_SIZE_X_CHARS_MIN_A = 0 ;
+          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_SIZE_Y_CHARS_MIN_A = 0 ;
+          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_SIZE_X_CHARS_MAX_A = 0  ;
+          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_SIZE_Y_CHARS_MAX_A = 8 ;// DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_CHARS_A  ;
+            
+         #endif
+        
         for(i=ARDUINO_ARRAY_INDEX_FIRST ; i<=5 ; i++) {//i <= Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A
            DISPLAY_array16_T  DISPLAY_array16_AA="" ;
            DISPLAY_array16_T  DISPLAY_array16_AB="" ;
         
+            #if defined(ENABLE_DISPLAY_MENU)
+            
+            
+             if(Slave_Ports_Status_A[i].Port_ID > 0 ) {
+            
+                   
+                   
+                      String message = "";
+                       String message2 ;
+                   
+                     
+                       
+                      message.concat(i);
+                      message.concat(".");
+                      message.concat(Slave_Ports_Status_A[i].Port_ID )  ; 
+                      message.concat(" ");
+                      
+                         if(Slave_Ports_Status_A[i].IS_gone_A == IS_gone_TRUE) {
+                             message2 = message ; message2.concat(" [---] ");
+                         } else {
+                              message2 = message  ; message2.concat(" ");//E:
+                      
+                              message2.concat(" ");// B:
+                               
+                                   message2.concat(Slave_Ports_Status_A[i].Exp_state_ttl/10 )  ;
+                      
+                                              message2.concat(" ");// B:
+                                               message2.concat(Slave_Ports_Status_A[i].Broadcast_state/10 )  ;
+                                           if(Slave_Ports_Status_A[i].IS_Local_A == IS_Local_TRUE) {
+                                               message2.concat(" L");// B:
+                                          } else if(Slave_Ports_Status_A[i].IS_Local_A == IS_Local_FALSE) {
+                                               message2.concat(" R");// B:
+                                          } 
+                                        if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON_USE_LEVEL ) {
+                                         message2.concat(" ["); message2.concat(Slave_Ports_Status_A[i].Exp_state_level_A); message2.concat("] ");
+                                           /*if(Slave_Ports_Status_A[i].Exp_state_level_A < 10 ) message2.concat(" [___] ");//E:
+                                           else if(Slave_Ports_Status_A[i].Exp_state_level_A < 100 )  message2.concat("  [#___] ");//E:
+                                           else if(Slave_Ports_Status_A[i].Exp_state_level_A < 1000 ) message2.concat("  [##__] ");//E:
+                                           else if(Slave_Ports_Status_A[i].Exp_state_level_A < 2000 ) message2.concat("  [###_] ");//E:
+                                           else if(Slave_Ports_Status_A[i].Exp_state_level_A >= 2000 ) message2.concat(" [####] ");//E:
+                                           */
+                                         }
+                                         
+                                         
+                                       if(Slave_Ports_Status_A[i].Exp_state & Exp_state_SET_REQ_SEND ) {
+                                        message2.concat(">*");//E:
+                                       } else if(Slave_Ports_Status_A[i].Exp_state & Exp_state_SET ) {
+                                        message2.concat("*");//E:
+                                         
+                                          } else  if (!( ( Slave_Ports_Status_A[i].Exp_state & Exp_state_SET ) ^ Exp_state_SET ))  {
+                                          message2.concat(" ** ");//E:
+                                          } else {
+                                           message2.concat(" ?");//E: 
+                                 
+                                 
+                                 
+                                      
+                                 
+                                 
+                                 }
+                               
+                                 
+                          
+                 
+                        
+             // String message = "P ";  message.concat(Slave_Ports_Status_A[i].Port_ID)  ;  message.concat(" ");
+             
+                DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].DISPLAY_CURSOR_X_CHARS_A =  0 ;
+                DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].DISPLAY_CURSOR_Y_CHARS_A = i ;
+                DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].DISPLAY_string_A = message ;
+                DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].DISPLAY_COLOR_A = BLACK  ;
+                DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].DISPLAY_MENU_ITEM_FLAG_A = DISPLAY_MENU_ITEM_FLAG_INIT  ;
+                
+               }
+             }
+            
+            
+            
+            
+            
+            #else
+            
             if(Slave_Ports_Status_A[i].Port_ID > 0 ) {
             
                     #if  defined(DEBUG)
@@ -371,6 +474,19 @@
                 
               // delay(100);
             }
+            
+            #endif
+            
+              #if defined(ENABLE_DISPLAY_MENU)
+               DISPLAY__print_menu( DISPLAY_A ,DISPLAY_T_ARDUINO_ATTR_ARRAY_A , DISPLAY_PHYSICAL_CHAR_A, 
+                         1,  //DISPLAY_MENU_ITEM_INDEX_T DISPLAY_MENU_ITEM_INDEX_A
+                         time_seq_id_A, (time_seq_id_A + 5000) 
+                          );  
+                
+              
+              #endif
+        
+            
         }
    
    }  

+ 4 - 2
SE/stuff/P5_Automation_can-dev-res/_TFT_ILI9163C_func.h

@@ -156,9 +156,11 @@ void  DISPLAY_DEV_CTRL__println(DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A
                                                 
                                                    
                                                    String message(DISPLAY_array16_A);
+                                                 #if defined(ENABLE_DISPLAY_MENU)
+                                                 #else
+                                                    if(DISPLAY_pos_seq_A & DISPLAY_pos_seq_A_CLEARSCREEN) DISPLAY_DEV__CURSOR__clearScreen(DISPLAY_PHYSICAL_CHAR_A) ;
+                                                 #endif
                                                  
-                                                 if(DISPLAY_pos_seq_A & DISPLAY_pos_seq_A_CLEARSCREEN) DISPLAY_DEV__CURSOR__clearScreen(DISPLAY_PHYSICAL_CHAR_A) ;
-                                                
                                                  int parts =  floor(message.length()/ DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_X_CHARS_A ) ; //( message.length() + 100)
                                                  if(message.length() >= DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_X_CHARS_A and parts == 1) parts ++; 
                                                  else if(parts == 0) parts = 1;

+ 10 - 3
SE/stuff/P5_Automation_can-dev-res/___main/__main_struct_limits.h

@@ -3,11 +3,16 @@ const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ATTR_ARRAY_S_LIMIT = 1 ;
 const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_T_TO_DELETE_S_LIMIT = 5 ;
 
 
-const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_PORTS = 50 ;
+const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_PORTS = 25 ;
 
 const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_PORTS_I2C = 5 ;
 
-const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY = 10 ;
+const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY = 5 ;
+
+const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU = 3 ;
+const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU_ITEM_A = 5 ;
+
+
 
 const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_QUEUE = 10 ; // 20 ;
 
@@ -22,4 +27,6 @@ ARDUINO_ARRAY_time_min_run_MIN_T TASK_TYPE_T_Slave_Ports_broadcast____time_min_r
 ARDUINO_ARRAY_time_min_run_MIN_T TASK_TYPE_T_Slave_Ports_set_I2C______time_min_run_MIN_A_INCREMENT_A = 20000 ;
 
 
-const ARDUINO_LOOP_LATENCY_TASK_T ARDUINO_LOOP_LATENCY_TASK_ROTTARY_SW_loop_A = 500 ; //how to implement?
+const ARDUINO_LOOP_LATENCY_TASK_T ARDUINO_LOOP_LATENCY_TASK_ROTTARY_SW_loop_A = 500 ; //how to implement?
+
+const ARDUINO_LOOP_LATENCY_TASK_T ARDUINO_LOOP_LATENCY_DISPLAY_MENU = 250 ; //how to implement?