arkadiusz binder 5 년 전
부모
커밋
5e5d54946f
2개의 변경된 파일862개의 추가작업 그리고 0개의 파일을 삭제
  1. 367 0
      SE/stuff/P5_Automation_can-dev-res/_DISPLAY_func - Copy.h
  2. 495 0
      SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_func - Copy.h

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

@@ -0,0 +1,367 @@
+//_DISPLAY_func.h
+
+/* #if defined(HAS_TFT_ILI9163C)
+                                    delay(LCDtim);  
+                                    DISPLAY_DEV.setCursor(0,60); 
+                                    DISPLAY_DEV.print(LCDarray1); DISPLAY_DEV.print(" "); DISPLAY_DEV.print(LCDarray2);
+                              #endif
+                              */
+                              
+                              
+//void _DISPLAY_print
+
+
+void DISPLAY__print_ANY(DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
+                         DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A,
+                        DISPLAY_pos_seq_T DISPLAY_pos_seq_A,
+                         #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                            DISPLAY_string_T DISPLAY_string_A
+                           #else
+                            DISPLAY_array16_T DISPLAY_array16_A
+                           #endif
+                        
+                        
+                        ){
+              
+                        #if defined(DEBUG)
+                                if(DEBUG > 6) {
+                                    Serial.print("#20 DsplY:[ "); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_CURSOR_Y_CHARS_A); //[ARDUINO_ATTR_ARRAY_S_INDEX]
+                                    Serial.print("] # MaxY:["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_CHARS_A); //[ARDUINO_ATTR_ARRAY_S_INDEX]
+                                     Serial.println("] ");
+                                   }
+                                   
+                                     Serial.print("#26 Dspl ATTR CURRENT[ "); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A);
+                                     Serial.print("] LAST["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A); 
+                                     Serial.print("] COUNT["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A); 
+                                     Serial.print("] LIMIT["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A); 
+                                     Serial.print("]  NEXT:["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A); 
+                                     Serial.println("] ");
+                            #endif 
+                
+                 #if defined(HAS_TFT_ILI9163C)
+                       
+                 #endif
+                     #if defined(DEBUG)
+                        if(DEBUG > 6) {
+                             Serial.print(" [HAS_TFT_ILI9163C] ");
+                               Serial.print(" 27[DEBUG] ");
+                           }
+                    #endif 
+                Serial.println("] "); 
+              
+                //todo position current   
+                //todo positions max
+                    #if defined(HAS_TFT_ILI9163C)
+                            DISPLAY_DEV_CTRL__println(DISPLAY_PHYSICAL_CHAR_A,
+                             #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                                 DISPLAY_string_A,
+                                #else
+                                    DISPLAY_array16_A,
+                            #endif
+                             DISPLAY_pos_seq_A) ;
+                    #else 
+                
+                        Serial.println(DISPLAY_array16_A);
+                  
+                    #endif
+                  
+                    #if defined(DEBUG)
+                            //Serial.end(); 
+                            //delay(100);
+                            //Serial.write(" 72[DEBUG] ");
+                    #endif    
+                
+        }
+
+
+
+void DISPLAY__print_IMMEDIATE(
+    DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A, 
+    DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A, 
+     DISPLAY_pos_seq_T DISPLAY_pos_seq_A,
+      #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+        DISPLAY_string_T DISPLAY_string_A,
+       #else
+        DISPLAY_array16_T DISPLAY_array16_A,
+       #endif
+      DISPLAY_TARGET_T DISPLAY_TARGET_A) {
+        
+        if(DISPLAY_TARGET_A & DISPLAY_TARGET_DISPLAY128){ //BIN TEST
+        
+                    #if defined(HAS_TFT_ILI9163C)
+                                #if defined(DEBUG)
+                                            if(DEBUG > 6) {
+                                                    String message(DISPLAY_array16_A);
+                                                   Serial.print("#69A DISPLAY__print_IMMEDIATE [DEBUG] to HAS_TFT_ILI9163C  Len["); Serial.print( message.length());
+                                                     Serial.print("] XM["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_X_CHARS_A);
+                                                     Serial.print("] YM["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_CHARS_A);
+                                                     Serial.print("] YC["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_CURSOR_Y_CHARS_A);
+                                                    Serial.print("] YF["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A);
+                                                   Serial.println("]  ");
+                                                }
+                                           #endif
+                            DISPLAY_DEV_CTRL__println(DISPLAY_PHYSICAL_CHAR_A, 
+                            #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                                DISPLAY_string_A,
+                               #else
+                                DISPLAY_array16_A,
+                           #endif
+                            
+                            DISPLAY_pos_seq_A) ;
+                    #else 
+                
+                        Serial.println(DISPLAY_array16_A);
+                  
+                    #endif
+                             //   DISPLAY__print_ANY(DISPLAY_T_ARDUINO_ATTR_ARRAY_A, DISPLAY_PHYSICAL_CHAR_A, DISPLAY_pos_seq_A, DISPLAY_array16_A);     
+          } else if(DISPLAY_TARGET_A & DISPLAY_TARGET_ANY){ //BIN TEST
+                                        #if defined(DEBUG)
+                                                if(DEBUG > 6) {
+                                                   Serial.print("#69B DISPLAY__print_IMMEDIATE [DEBUG] to DISPLAY__print_ANY  Seq["); Serial.print(DISPLAY_pos_seq_A , BIN);
+                                                    Serial.print("] Target["); Serial.print(DISPLAY_TARGET_A , BIN);
+                                                   Serial.println("]  ");
+                                                  }
+                                           #endif
+                                DISPLAY__print_ANY(DISPLAY_T_ARDUINO_ATTR_ARRAY_A, DISPLAY_PHYSICAL_CHAR_A, DISPLAY_pos_seq_A,
+                                  #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                                     DISPLAY_string_A
+                                    #else
+                                    DISPLAY_array16_A
+                                    #endif
+                                 );     
+          } else {
+                              #if defined(DEBUG)
+                                    if(DEBUG > 6) {
+                                        Serial.print("#68 DISPLAY__print_IMMEDIATE [DEBUG]  else  Seq["); Serial.print(DISPLAY_pos_seq_A , BIN);
+                                         Serial.print("] Target["); Serial.print(DISPLAY_TARGET_A , BIN);
+                                        Serial.println("]  ");
+                                    }
+                                #endif  
+          }
+
+}
+
+        
+#if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+    #else        
+        
+    void DISPLAY__print_loop(DISPLAY_CURSOR_X_CHARS_T DISPLAY_CURSOR_X_CHARS_A,
+               DISPLAY_CURSOR_Y_CHARS_T DISPLAY_CURSOR_Y_CHARS_A ,
+        String message,
+        int message_len, 
+        DISPLAY__print_loop_ACTION_T DISPLAY__print_loop_ACTION_A
+    ) { //to print while in loop
+        const int DISPLAY__print_loop_INDEX_LIMIT_A = 5;
+        static int DISPLAY__print_loop_INDEX_CURRENT_A = 0 ;
+        static int DISPLAY__print_loop_QUEUE_PEEK_A = 0 ;
+        static  DISPLAY__print_loop_T  DISPLAY__print_loop_A[5]={} ;
+       
+        if(DISPLAY__print_loop_ACTION_A == DISPLAY__print_loop_ACTION_ADD) {
+            if((DISPLAY__print_loop_INDEX_CURRENT_A  + 1) <= DISPLAY__print_loop_INDEX_LIMIT_A) {
+                
+                DISPLAY__print_loop_INDEX_CURRENT_A ++ ;
+                if(DISPLAY__print_loop_QUEUE_PEEK_A == 0 ) {
+                 DISPLAY__print_loop_QUEUE_PEEK_A = DISPLAY__print_loop_INDEX_CURRENT_A  ;
+                }
+                DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].DISPLAY_CURSOR_X_CHARS_A = DISPLAY_CURSOR_X_CHARS_A ;
+                DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].DISPLAY_CURSOR_Y_CHARS_A = DISPLAY_CURSOR_Y_CHARS_A ;
+                DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].message_len = message_len ;
+                //strcpy(DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].message, message );
+                DISPLAY__print_loop_A[DISPLAY__print_loop_INDEX_CURRENT_A].message = message ;
+            }
+              Serial.print("#137[DISPLAY__print_loop][ADD] [i][");Serial.print(DISPLAY__print_loop_INDEX_CURRENT_A); Serial.println("] ");
+        } else if(DISPLAY__print_loop_ACTION_A == DISPLAY__print_loop_ACTION_POP)  {
+            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("] ");
+              if(DISPLAY__print_loop_QUEUE_PEEK_A > 0 ) {
+                DISPLAY_DEV.setCursor(DISPLAY__print_loop_A[DISPLAY__print_loop_QUEUE_PEEK_A].DISPLAY_CURSOR_X_CHARS_A * DISPLAY_textsize_x_A,
+                   DISPLAY__print_loop_A[DISPLAY__print_loop_QUEUE_PEEK_A].DISPLAY_CURSOR_Y_CHARS_A * DISPLAY_textsize_y_A);
+                   DISPLAY_DEV.print(DISPLAY__print_loop_A[DISPLAY__print_loop_QUEUE_PEEK_A].message);
+                   Serial.print(" msg["); Serial.print(DISPLAY__print_loop_A[DISPLAY__print_loop_QUEUE_PEEK_A].message); Serial.print("] ");
+                   
+                   
+                   
+               } else {
+                Serial.print(" [PEEK][EMPTY] ");
+               }
+               Serial.println("] ");
+        }
+      
+    }
+#endif
+
+ void DISPLAY__print(
+        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_pos_seq_T DISPLAY_pos_seq_A,
+        
+        #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+            DISPLAY_string_T DISPLAY_string_A,
+          #else
+            DISPLAY_array16_T DISPLAY_array16_A,
+        #endif
+        DISPLAY_TARGET_T DISPLAY_TARGET_A,
+        time_seq_id_T time_seq_id_A,
+        time_min_run_T time_min_run_A
+        //queue
+        ,Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QUEUE_A,
+            Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,
+        TASK_TYPE_T TASK_TYPE_A,
+        TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A
+                )
+                {
+                
+                    #ifdef DEBUG_DISPLAY
+                    Serial.print("127 DISPLAY__print DISPLAY_pos_seq_A["); Serial.print(BIN8_to_STRING(DISPLAY_pos_seq_A ));
+                        Serial.print("]  DISPLAY_TARGET_A["); Serial.print(BIN8_to_STRING(DISPLAY_TARGET_A )); Serial.print("]      [");
+                            Serial.print("#26 Dspl ATTR CURRENT[ "); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A);
+                                     Serial.print("] LAST["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A); 
+                                     Serial.print("] COUNT["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A); 
+                                     Serial.print("] LIMIT["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A); 
+                                     Serial.print("]  NEXT:["); Serial.print(DISPLAY_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A); 
+                                     Serial.println("] ");
+                    #endif
+                    
+                    if(DISPLAY_pos_seq_A & DISPLAY_pos_seq_A_IMMEDIATE){ ////BIN TEST
+                            #if defined(DEBUG_DISPLAY)
+                                    //if(DEBUG > 6) {
+                                        Serial.print("#84 DISPLAY__print to DISPLAY__print_IMMEDIATE [DEBUG]  else  Seq["); Serial.print(DISPLAY_pos_seq_A , BIN);
+                                        Serial.print("] Target["); Serial.print(DISPLAY_TARGET_A , BIN); 
+                                        
+                                        Serial.println("]  ");
+                                    // }
+                                #endif  
+                           DISPLAY__print_IMMEDIATE(DISPLAY_T_ARDUINO_ATTR_ARRAY_A, DISPLAY_PHYSICAL_CHAR_A, DISPLAY_pos_seq_A,  
+                           #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                            DISPLAY_string_A,
+                            #else
+                             DISPLAY_array16_A,
+                            #endif
+                             DISPLAY_TARGET_A);
+                                     // Serial.print("#28 running _Slave_Ports_ttl_decrement = ");
+                
+                    } else {
+                         // #if defined(DEBUG)
+                                 Serial.print("#88 DISPLAY__print [DEBUG]  else  "); Serial.print(DISPLAY_pos_seq_A , BIN);
+                                 Serial.println("]  ");
+                        // #endif    
+                         
+                    #if defined(DISABLE_TASK_TYPE_T_DISPLAY_queue_pop________)
+                     Serial.print("#167 DISABLE_TASK_TYPE_T_DISPLAY_queue_pop________");
+                    #else     
+                      
+                       Serial.print("#253 TODO WHY ? BIN DISPLAY_pos_seq_A["); Serial.print(DISPLAY_pos_seq_A, BIN);
+                             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 ) ;
+                              Serial.print(" ] String [") ; Serial.print(DISPLAY_string_A); Serial.print("] "); 
+                    /*  DISPLAY__add_record(  DISPLAY_A ,
+                             DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
+                             DISPLAY_PHYSICAL_CHAR_A, 
+                             DISPLAY_pos_seq_A,
+                             #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                                  DISPLAY_string_A,
+                             #else
+                                 DISPLAY_array16_A,
+                            #endif
+                             DISPLAY_TARGET_A,
+                             time_seq_id_A,
+                             time_min_run_A
+                             //queue
+                             , Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+                             TASK_TYPE_A,
+                             TASK_PORT_ASSOC_A
+                         ) ;
+                         */
+                      #endif 
+                    }
+}
+
+
+void DISPLAY__CURSOR_Y_CHARS__SET(DISPLAY_PHYSICAL_CHAR_T &DISPLAY_PHYSICAL_CHAR_A, 
+                DISPLAY_CURSOR_Y_CHARS_T DISPLAY_CURSOR_Y_CHARS_A 
+                ) {
+                
+                
+                    #if defined(HAS_TFT_ILI9163C)
+                            DISPLAY_DEV__CURSOR_Y_CHARS__SET(
+                                DISPLAY_PHYSICAL_CHAR_A, 
+                                DISPLAY_CURSOR_Y_CHARS_A 
+                                );
+                    #endif
+                
+                }
+
+
+
+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");
+                          
+                      }
+                }
+                 
+               
+
+            
+            }
+        
+    }
+
+

+ 495 - 0
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_func - Copy.h

@@ -0,0 +1,495 @@
+#include <limits.h>
+ void Slave_Ports_Status_add_port(
+ Slave_Ports_Status_T* Slave_Ports_Status_A , 
+ Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
+  Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_T*            Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
+  Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_T*      Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
+  Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_T*  Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
+                int  Port_ID,
+                int  _Slave_ID,
+                PortTypes_T  PortTypes,
+                int  Address,
+                int  LocalPort,
+                Exp_state_T  Exp_state,
+                Exp_state_ttl_T  Exp_state_ttl,
+                Broadcast_state_T  Broadcast_state,
+                int I2C_port,
+                //int I2C_driver
+                I2C_driver_T I2C_driver, 
+                IS_Local_T IS_Local_A
+                )
+{
+
+                                       #if defined(DEBUG)
+                                                     Serial.print("#2444 Slave_Ports_Status_add_port[DEBUG] # BEFORE COUNT["); Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A);
+                                                      Serial.print("] INDEX_LAST["); Serial.print( Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A);
+                                                      Serial.print("] INDEX_CURRENT["); Serial.print( Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A);
+                                                      Serial.print("] NEXT_A["); Serial.print( Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A);
+                                                     Serial.println("]  ");
+                                      #endif   
+
+        //int i = Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A ;
+        int i = Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ;
+        //if(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A == 0) {
+          if(i == ARDUINO_ARRAY_INDEX_CORRUPT) {
+               
+                // Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A ++;
+                          Slave_Ports_Status_A[i].Port_ID=0;
+                          Slave_Ports_Status_A[i]._Slave_ID=0x00;
+                          Slave_Ports_Status_A[i].PortTypes=PortTypes_NOT_SET;
+                          Slave_Ports_Status_A[i].Address=0x00;
+                          Slave_Ports_Status_A[i].LocalPort=0;
+                          Slave_Ports_Status_A[i].Exp_state=Exp_state_ERROR;
+                          Slave_Ports_Status_A[i].Exp_state_ttl=0x00;
+                          Slave_Ports_Status_A[i].Broadcast_state=0x00;
+                          Slave_Ports_Status_A[i].I2C_port=0x00;
+                         // Slave_Ports_Status_A[i].I2C_driver=0x00;
+                          Slave_Ports_Status_A[i].IS_Local_A=IS_Local_FALSE;
+                
+                
+                ARDUINO_ATTR_ARRAY_S__commit_added_element(
+                          Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A , 
+                         i); //Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A
+                
+                //ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A
+                                
+                 //Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A ++;   
+            }
+    
+    
+            //valid if is uniq
+            boolean found  ;
+            found = false ; 
+            int found_id ; 
+            for(i = ARDUINO_ARRAY_INDEX_FIRST; i<= Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A  ; i++ ) {
+                if((Slave_Ports_Status_A[i].Port_ID == Port_ID) and (Slave_Ports_Status_A[i]._Slave_ID == _Slave_ID ))  {
+                    found = true ;
+                        Serial.print("+D");Serial.print(i);
+                        found_id = i;
+                   }
+            }
+               
+               
+               if(found == false ) {
+                    
+                      i = Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A ;
+                    
+                    Slave_Ports_Status_A[i].Port_ID = Port_ID ;
+                    Slave_Ports_Status_A[i]._Slave_ID = _Slave_ID ;
+                    Slave_Ports_Status_A[i].PortTypes = PortTypes ;
+                    Slave_Ports_Status_A[i].Address = Address ;
+                    Slave_Ports_Status_A[i].LocalPort = LocalPort ;
+                    Slave_Ports_Status_A[i].Exp_state = Exp_state ;
+                    Slave_Ports_Status_A[i].Exp_state_ttl = Exp_state_ttl ;
+                    Slave_Ports_Status_A[i].Broadcast_state = Broadcast_state ;
+                    Slave_Ports_Status_A[i].I2C_port = I2C_port ;
+                    Slave_Ports_Status_A[i].I2C_driver = I2C_driver ;
+                    Slave_Ports_Status_A[i].IS_Local_A = IS_Local_A;
+                  //  Slave_Ports_Status_A[Slave_Ports_Status_T_ARDUINO_ARRAY_COUNT_A + 1].I2C_driver = I2C_driver_F(I2C_driver) ;
+                            ARDUINO_ATTR_ARRAY_S__commit_added_element(
+                                          Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A , 
+                                          i);//Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A
+                   
+               } else {
+                    //duplicated
+                    //update
+                    Serial.print("[found][");Serial.print(found); Serial.print("] found_id[");Serial.print(found_id); Serial.print("] ");
+                     if(Broadcast_state>0) Slave_Ports_Status_A[found_id].Broadcast_state = Broadcast_state ;
+                     if(Exp_state>0) Slave_Ports_Status_A[found_id].Exp_state = Exp_state ;
+                     if(Exp_state_ttl>0) Slave_Ports_Status_A[found_id].Exp_state_ttl = Exp_state_ttl ;
+                     if(Slave_Ports_Status_A[found_id].IS_gone_A == IS_gone_TRUE) Slave_Ports_Status_A[found_id].IS_gone_A = IS_gone_FALSE;
+                 
+               }
+}
+
+
+ void Slave_Ports_Status__DISPLAY_TARGET(
+        Slave_Ports_Status_T* Slave_Ports_Status_A ,
+        Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
+        Port_ID_T  Port_ID ,
+        //display
+        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_pos_seq_T DISPLAY_pos_seq_A,
+            #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                DISPLAY_string_T DISPLAY_string_A,
+            #else
+                DISPLAY_array16_T DISPLAY_array16_A,
+             #endif
+            
+            DISPLAY_TARGET_T DISPLAY_TARGET_A,
+            time_seq_id_T time_seq_id_A,
+            time_min_run_T time_min_run_A
+        //queue
+        ,Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+        //tasks
+        TASK_TYPE_T TASK_TYPE_A,
+        TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A
+  )
+   {
+   
+   
+   
+                #if defined(DEBUG)
+                    if(DEBUG > 6) {
+                                   Serial.print("#72 Port_Dspl[DEBUG] #COUNT["); Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A);
+                                    Serial.print("] INDEX_LAST["); Serial.print( Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A);
+                                    Serial.print("] INDEX_CURRENT["); Serial.print( Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A);
+                                    Serial.print("] NEXT_A["); Serial.print( Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A);
+                                    
+                                    
+                                    
+                                    Serial.print("]   XM["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_X_CHARS_A);
+                                    Serial.print("] YM["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_PHYSICAL_Y_CHARS_A);
+                                    Serial.print("] YC["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_CURSOR_Y_CHARS_A);
+                                    Serial.print("] YF["); Serial.print( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A);
+                                   Serial.println("]  ");
+                                }
+                    #endif    
+                     String message_init = String(Active_ControllerID, HEX) ;
+                       message_init.concat("] #C: ");
+                       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 , 
+                                                    DISPLAY_PHYSICAL_CHAR_A, 
+                                                     DISPLAY_pos_seq_A | DISPLAY_pos_seq_A_CLEARSCREEN,
+                                                      message_init, // DISPLAY_array16_AAT,
+                                                      DISPLAY_TARGET_A,
+                                                     time_seq_id_A,
+                                                     time_min_run_A
+                                                    //queue
+                                                  , Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+                                                   TASK_TYPE_A,
+                                                   TASK_PORT_ASSOC_A
+                                                  
+                                                    ); 
+                     #endif
+            #else
+               
+               
+                 
+                       DISPLAY_array16_T  DISPLAY_array16_AAT ;
+                      // message_init.concat(DISPLAY_array16_A);
+                     
+                       message_init = DISPLAY_array16_A + message_init ;
+                       //message_init.concat(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A , INT );
+                       message_init.concat("     ");
+                       message_init.toCharArray(DISPLAY_array16_AAT, 16); //message_init.length()
+                       
+                       String message ;
+                       String message2 ;
+                            DISPLAY__print(
+                                         DISPLAY_A ,
+                                         DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
+                                         DISPLAY_PHYSICAL_CHAR_A, 
+                                          DISPLAY_pos_seq_A | DISPLAY_pos_seq_A_CLEARSCREEN,
+                                           DISPLAY_array16_AAT,
+                                           DISPLAY_TARGET_A,
+                                          time_seq_id_A,
+                                          time_min_run_A
+                                         //queue
+                                       , Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+                                        TASK_TYPE_A,
+                                        TASK_PORT_ASSOC_A
+                                       
+                                         ); 
+               
+               
+             #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 = message2 ;
+                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)
+                        if(DEBUG > 2) {
+                            Serial.print("#68 Port_Dspl[DEBUG]  i "); Serial.print(i);
+                            Serial.println("]  ");
+                            }
+                    #endif    
+                    
+                    
+                    #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                      String message = "";
+                       String message2 ;
+                    #else
+                    
+                      message = "";
+                    #endif
+                
+                 //message.concat(":")  ; 
+                 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:
+                         //String Exp_state_s  = BIN8_to_STRING(Slave_Ports_Status_A[i].Exp_state) ; // ="";    
+                          //message2.concat(Exp_state_s.substring(1,8));
+                         // message2.concat(Exp_state_s);
+      
+                         /*
+                         if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ERROR ) {
+                          message2 = message  ;  message2.concat(" ERR ");//E:
+                         
+                          } else {
+                         if(Slave_Ports_Status_A[i].Exp_state & Exp_state_ON ) message2 = message  ;     message2.concat(" ON  ");//E:
+                         if(Slave_Ports_Status_A[i].Exp_state & Exp_state_OFF ) message2 = message  ;    message2.concat(" OFF ");//E:
+                         }
+                         */
+                         message2.concat(" ");// B:
+                           //if(Slave_Ports_Status_A[i].Exp_state_ttl & Exp_state_ttl_TO_REFRESH ) {
+                           //    message2.concat("R");// B:
+                           // } else {
+                           //   message2.concat(""); //T:
+                              message2.concat(Slave_Ports_Status_A[i].Exp_state_ttl/10 )  ;
+                           //   message2.concat(""); //T:
+                         // }
+                   
+                    
+                            
+                                     
+                                    // if(Slave_Ports_Status_A[i].Broadcast_state > Broadcast_state_FRESH ) {
+                                          //message2.concat(" R ");// B:
+                                      //    message2.concat(" B");
+                                     //} else {
+                                         message2.concat(" ");// B:
+                                          message2.concat(Slave_Ports_Status_A[i].Broadcast_state/10 )  ;
+                                          //message2.concat(" ");// B:
+                                     //}
+                                     
+                                      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:
+                                     } 
+                                  //message2.concat(" ");
+                                  
+                                  
+                                   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: 
+                            
+                            
+                            
+                                 
+                            
+                            
+                            }
+                            #if defined(DEBUG) > 7
+                                Serial.print("#228 debug BIN  #i["); Serial.print(i);  Serial.print("] Exp_state_s["); Serial.print(Exp_state_s);  Serial.print("]    exp_state["); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.print("]    BIN[");  Serial.print(Slave_Ports_Status_A[i].Exp_state, BIN); Serial.print("]    [   ");
+                                
+                                                                if(Slave_Ports_Status_A[i].Exp_state &  Exp_state_SET )   Serial.print(" [ & SET ] "); //dziala opcjonalnie off
+                                                                if(Slave_Ports_Status_A[i].Exp_state ==  Exp_state_SET )   Serial.print(" [ = SET ] "); //dziala only off   
+                                                                if (!( ( Slave_Ports_Status_A[i].Exp_state & Exp_state_SET ) ^ Exp_state_SET ))  Serial.print(" [ ^ SET ] ");//opcjonalnie off
+                                                                if (!( ( Slave_Ports_Status_A[i].Exp_state & B00000000 ) ^ Exp_state_SET ))  Serial.print(" [ + SET ] "); //not working
+                                                                if (!( ( Slave_Ports_Status_A[i].Exp_state & B11111111 ) ^ Exp_state_SET ))  Serial.print(" [ # SET ] ");//only off
+                                                                
+                                       
+                                            Serial.print("#238 debug BIN  PortTypes["); Serial.print(Slave_Ports_Status_A[i].PortTypes);Serial.print("]    BIN[");  Serial.print(Slave_Ports_Status_A[i].PortTypes, BIN); Serial.print("]    [   ");                    
+                                                          if(Slave_Ports_Status_A[i].PortTypes &  PortTypes_PWM )   Serial.print(" [ & PWM ] "); //dziala opcjonalnie off
+                                                                if(Slave_Ports_Status_A[i].PortTypes ==  PortTypes_PWM )   Serial.print(" [ = PWM ] "); //dziala only off         
+                                                              if(Slave_Ports_Status_A[i].PortTypes &  PortTypes_PWM )   Serial.print(" [ & PWM ] "); //dziala opcjonalnie off
+                                                                if(Slave_Ports_Status_A[i].PortTypes ==  PortTypes_PWM )   Serial.print(" [ = PWM ] "); //dziala only off   
+                                                                if (!( ( Slave_Ports_Status_A[i].PortTypes & PortTypes_PWM ) ^ PortTypes_PWM ))  Serial.print(" [ ^ PWM ] ");//opcjonalnie off
+                                                                if (!( ( Slave_Ports_Status_A[i].PortTypes & B00000000 ) ^ PortTypes_PWM ))  Serial.print(" [ + PWM ] "); //not working
+                                                                if (!( ( Slave_Ports_Status_A[i].PortTypes & B11111111 ) ^ PortTypes_PWM ))  Serial.print(" [ # PWM ] ");//only off
+                                                                if (!( ( Slave_Ports_Status_A[i].PortTypes & B11111110 ) ^ B00000001 ))  Serial.print(" [ < PWM ] "); //not working
+                                                                if (!( ( Slave_Ports_Status_A[i].PortTypes & B00000001 ) ^ B11111110 ))  Serial.print(" [ > PWM ] "); //not working    
+                                                                 Serial.println(" ]");
+                                Serial.print(" ]  #248     OFF+ON["); Serial.print(BIN8_to_STRING( Exp_state_OFF + Exp_state_ON  )); 
+                                        Serial.print(" ]     OFF || ON[");  Serial.print(BIN8_to_STRING( Exp_state_OFF || Exp_state_ON  )); Serial.println(" ]   ");
+                                Serial.print(" ]  #248     OFF+SET["); Serial.print(BIN8_to_STRING( Exp_state_OFF + Exp_state_SET  )); 
+                                Serial.print(" ]  #251     OFF || SET["); Serial.print(BIN8_to_STRING( Exp_state_OFF | Exp_state_SET  ));    Serial.println(" ]   ");
+                            #else
+                           //   Serial.print("#255 will message2  Exp_state[");  Serial.print(Slave_Ports_Status_A[i].Exp_state, BIN); Serial.println("]  "); 
+                            #endif
+                            }
+                     
+                 
+                  #if defined(DISPLAY_array16_T_is_DISPLAY_string_T)
+                      DISPLAY__print(
+                          DISPLAY_A ,
+                          DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
+                          DISPLAY_PHYSICAL_CHAR_A, 
+                           DISPLAY_pos_seq_A,
+                            message2, //DISPLAY_array16_AB,
+                            DISPLAY_TARGET_A,
+                           time_seq_id_A,
+                           time_min_run_A
+                            //queue
+                                 , Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+                                   TASK_TYPE_A,
+                                   TASK_PORT_ASSOC_A
+                          );  
+                  #else
+                    message2.toCharArray(DISPLAY_array16_AB, message2.length());   
+                    
+                        DISPLAY__print(
+                          DISPLAY_A ,
+                          DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
+                          DISPLAY_PHYSICAL_CHAR_A, 
+                           DISPLAY_pos_seq_A,
+                            DISPLAY_array16_AB,
+                            DISPLAY_TARGET_A,
+                           time_seq_id_A,
+                           time_min_run_A
+                            //queue
+                                 , Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
+                                   TASK_TYPE_A,
+                                   TASK_PORT_ASSOC_A
+                          );  
+                  #endif
+                        
+                
+              // 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
+        
+            
+        }
+   
+   }  
+   
+   
+