a.binder 5 tahun lalu
induk
melakukan
e1dcb497fa

+ 1 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/P5_Automation_can-dev-res-working-1930.ino

@@ -369,6 +369,7 @@ const int DISPLAY_MENU_A__PROGMEM_CONSOLE_PRINT = 3 ;
 #include "_Slave_Ports_Status_QUEUE_func.h"
 
 #include "_Slave_Ports_Protocol_CAN_func.h"
+#include "TASK_TYPE_T_Get_Ports_Status_INPUT_A___.h"
 #include "_Slave_Ports_Status_func.h"
 #include "TASK_TYPE_T_Set_Ports_Status_LIMITS_A__.h"
 

+ 44 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/TASK_TYPE_T_Get_Ports_Status_INPUT_A___.h

@@ -0,0 +1,44 @@
+
+#if defined(TASK_TYPE_T_Get_Ports_Status_INPUT_A___h)
+#else
+    #define TASK_TYPE_T_Get_Ports_Status_INPUT_A___h
+    
+    
+    void TASK_TYPE_T_Get_Ports_Status_INPUT_A___SET(int  Slave_Ports_Status_A__i ) {
+        TASK_TYPE_T_Get_Ports_Status_INPUT_A___INIT = true ;
+               if( Slave_Ports_Status_A[Slave_Ports_Status_A__i].I2C_driver == I2C_driver_PHYSICAL_INPUT_PORT_ANALOG) {
+                     pinMode(Slave_Ports_Status_A[Slave_Ports_Status_A__i].LocalPort, INPUT_PULLUP);
+        } else if( Slave_Ports_Status_A[Slave_Ports_Status_A__i].I2C_driver == I2C_driver_PHYSICAL_INPUT_PORT_DIGITAL) {
+                     pinMode(Slave_Ports_Status_A[Slave_Ports_Status_A__i].LocalPort, INPUT_PULLUP);
+        }
+            SPFTFTFT2(get,input,init,Slave_Ports_Status_A__i);
+    }
+    
+    
+     void TASK_TYPE_T_Get_Ports_Status_INPUT_A___LOOP() {
+        //TASK_TYPE_T_Get_Ports_Status_INPUT_A___INIT = true ;
+         for(int 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].I2C_driver == I2C_driver_PHYSICAL_INPUT_PORT_ANALOG) {
+                int analogRead_A = round(analogRead(Slave_Ports_Status_A[i].LocalPort) / 4) ;
+                
+                if(Slave_Ports_Status_A[i].Exp_state_level_A == analogRead_A ) {
+                } else if(abs(Slave_Ports_Status_A[i].Exp_state_level_A - analogRead_A ) <= 5) {
+                } else {
+                    Slave_Ports_Status_A[i].Exp_state_level_A = analogRead_A ;
+                    Slave_Ports_Status_A[i].DISPLAY_ELEMENT_TO_REFRESH_A = true;
+                    SPFTFT2(port,index,i); SPFTFTFT2(get,input,level,Slave_Ports_Status_A[i].Exp_state_level_A);
+                }
+                 
+            } else  if( Slave_Ports_Status_A[i].I2C_driver == I2C_driver_PHYSICAL_INPUT_PORT_DIGITAL) {
+                 if(Slave_Ports_Status_A[i].Exp_state_level_A == digitalRead(Slave_Ports_Status_A[i].LocalPort)) {
+                } else {
+                    Slave_Ports_Status_A[i].Exp_state_level_A = digitalRead(Slave_Ports_Status_A[i].LocalPort) ;
+                    Slave_Ports_Status_A[i].DISPLAY_ELEMENT_TO_REFRESH_A = true;
+                    SPFTFT2(port,index,i); SPFTFTFT2(get,input,level,Slave_Ports_Status_A[i].Exp_state_level_A);
+                }
+            }
+         }
+    }
+
+
+#endif

+ 45 - 30
SE/stuff/P5_Automation_can-dev-res-working-1930/_DISPLAY_func.h

@@ -466,7 +466,7 @@ void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
                                                       (maxXi - minXselector_context), minYi , DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_COLOR_A );
                                                 
                                                 
-                                                          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) {
+                                                  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) {
                                                             DISPLAY_DEV.fillRect(  
                                                             ( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].Exp_state_level_A / 3)
                                                             , 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
@@ -492,21 +492,32 @@ void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
                                                                   //DISPLAY_DEV.print("[ ?  ] / [  ?  ] ");DISPLAY_DEV.setTextColor(WHITE);
                                                                }
                                                                
-                                                }  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_USE_TOGGLE_FLAG) {
+                                                } 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) {
+                                                  DISPLAY_DEV.fillRect(  0, maxYi , maxXi,  minYi, 0x0210 );
+                                                } else  if(minXselector_context > 0) {//menu context
+                                                      DISPLAY_DEV.fillRect(
+                                                            0, maxYi , 
+                                                            5,  minYi, RED );                                
+                                                } 
+                                                
+                                                  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_TOGGLE_FLAG
+                                                        or Slave_Ports_Status_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].ARDUINO_ARRAY_INDEX_A].I2C_driver == I2C_driver_PCF8574
+                                                        or  Slave_Ports_Status_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].ARDUINO_ARRAY_INDEX_A].I2C_driver == I2C_driver_PHYSICAL_INPUT_PORT_DIGITAL
+                                                       ) {
                                                                   //ic_sw_mY = wysokosc, nie wspolrzedne
-                                                                  int ic_sw_mX = maxXi - 1.4 * abs(minYi - maxYi)  ; int ic_sw_MX = maxXi ;
+                                                                  int ic_sw_mX = maxXi - 1.4 * abs(minYi)  ; int ic_sw_MX = maxXi ;
                                                                   int ic_sw_mY = minYi  ; int ic_sw_MY = maxYi ;
                                                                     int ic_sw_circl_X  = ic_sw_mX + abs(ic_sw_mX - ic_sw_MX)/4 ;
                                                                     int ic_sw_circl_Y = ic_sw_MY + ic_sw_mY/2 ;//- (abs(ic_sw_mY - ic_sw_MY) /2) ; //MY+ = NA DOLE, mY+ = gora
-                                                                    int ic_sw_circl_radius =  abs(ic_sw_mY - ic_sw_MY) /6 ;
+                                                                    int ic_sw_circl_radius =  abs(ic_sw_mY) /6 ; // - ic_sw_MY
                                                                     
                                                                     int ic_sw_rect_w = abs(ic_sw_mX - ic_sw_MX)  ;
-                                                                    int ic_sw_rect_h = abs(ic_sw_mY - ic_sw_MY)   ;
-                                                                    int ic_sw_rect_radius = abs(ic_sw_mY - ic_sw_MY) /5 ;
+                                                                    int ic_sw_rect_h = abs(ic_sw_mY)   ; // - ic_sw_MY
+                                                                    int ic_sw_rect_radius = abs(ic_sw_mY) /5 ;//ic_sw_MY
                                                                     
                                                                     
                                                                     DISPLAY_DEV.fillRect(ic_sw_mX, ic_sw_MY , ic_sw_MX , ic_sw_mY , WHITE);
-                                                                        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) {
+                                                                        if(Slave_Ports_Status_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].ARDUINO_ARRAY_INDEX_A].Exp_state_level_A > 0) {
                                                                             DISPLAY_DEV.fillCircle(ic_sw_circl_X, ic_sw_circl_Y , ic_sw_circl_radius+1, BLACK);
                                                                            DISPLAY_DEV.fillCircle(ic_sw_circl_X, ic_sw_circl_Y , ic_sw_circl_radius, RED);
                                                                         } else {
@@ -520,12 +531,6 @@ void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
                                                                   
                                                                   //DISPLAY_DEV.setCursor(minXi , maxYi );   DISPLAY_DEV.setTextColor(WHITE, BLACK); 
                                                                   //DISPLAY_DEV.print("[ ON ] / [ OFF ] ");DISPLAY_DEV.setTextColor(WHITE);
-                                                } 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) {
-                                                  DISPLAY_DEV.fillRect(  0, maxYi , maxXi,  minYi, 0x0210 );
-                                                } else  if(minXselector_context > 0) {//menu context
-                                                      DISPLAY_DEV.fillRect(
-                                                            0, maxYi , 
-                                                            5,  minYi, RED );                                
                                                 } 
                                                     //draw level
                                                      
@@ -651,7 +656,8 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
         
         if(DISPLAY_MENU_SELECTOR_oldEncPos_A != DISPLAY_MENU_SELECTOR_encoderPos_A ) {
             #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
-            Serial.print(" #383[ENC][CHG][ROOT] ");
+            //Serial.print(" #383[ENC][CHG][ROOT] ");
+            SPFTFTFT2(encoder,changed,root,-650);
             #endif
             if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_MENU_FLAG) {
                      #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
@@ -735,9 +741,8 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                  
             } 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)
                     //rotate selectors
-                     
-                     SPFTFTFT(encoder,item,option);SPFT2(flag,560);
-                     Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN); Serial.print("]");
+                     SPL();
+                     SPFTFTFT2(encoder,item,option,-745);SPFT2(flag,(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN));
                      if(DISPLAY_MENU_SELECTOR_oldEncPos_A != DISPLAY_MENU_SELECTOR_encoderPos_A)  {
                                 if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG) {
                                     SPFTFTFTFT(selector,item,options,level);
@@ -754,12 +759,18 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_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].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_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].DISPLAY_ELEMENT_TO_REFRESH_A = true;
                                          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
-                                } else {
-                                        
-                                        
-                                        Serial.print(String(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_ITEM_CLASS_A  , BIN) );
+                                } 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].DISPLAY_MENU_ITEM_CLASS_A &  DISPLAY_MENU_ITEM_CLASS_MENU_TITLE) {
-                                          SPFT(previous);SPFTFTFTFT(menu,item,class,title);
+                                          SPFT(previous);SPFTFTFTFT2(menu,item,class,title,(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_ITEM_CLASS_A  , BIN));  
+                                        } else if(
+                                            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].I2C_driver == I2C_driver_PCF8574
+                                             // or todo else digital
+                                            ) {
+                                              SPFTFT(set,digital); SPFTFTFTFT(selector,item,options,toggle);
+                                              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_USE_TOGGLE_FLAG ;
+                                              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 ;
+                                              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_ELEMENT_TO_REFRESH_A = true;
+                                              DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
                                         } else {
                                          SPFT(else);SPFTFTFTFT(selector,item,options,level);
                                          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 ;
@@ -772,7 +783,7 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
             
             
             } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_TOGGLE_FLAG) {
-                 SPFT(previous);SPFTFTFTFT(selector,item,use,toggle);  SPFTFT(new,todo);
+                 SPFT(previous);SPFTFTFTFT(selector,item,use,toggle);  SPFTFT2(new,todo,-785);
                  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_ELEMENT_TO_REFRESH_A = true;
                                          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
                 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 ;
@@ -798,7 +809,7 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
             
             
             } 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)
-             
+              SPL(); SPFTFT2(use,level,-812);
 
                 TASK_PORT_ASSOC_T TASK_PORT_ASSOC_SMOOTH_A ;
                     TASK_PORT_ASSOC_SMOOTH_A.Slave_Ports_Status_T_INDEX = 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 ;
@@ -811,7 +822,7 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
              
                 if(DISPLAY_MENU_SELECTOR_oldEncPos_A > DISPLAY_MENU_SELECTOR_encoderPos_A) {
                 TASK_PORT_ASSOC_SMOOTH_A.Exp_state_level_NEW_DELTA_A = -5;
-                 SPFT(level);SPFT(minus);SPFT2(encoder,DISPLAY_MENU_SELECTOR_encoderPos_A);SPFT2(old,DISPLAY_MENU_SELECTOR_oldEncPos_A);
+                SPFT(minus);SPFT2(encoder,DISPLAY_MENU_SELECTOR_encoderPos_A);SPFT2(old,DISPLAY_MENU_SELECTOR_oldEncPos_A);
                  Serial.print(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);
                              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) {
                             
@@ -936,7 +947,7 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                  if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_MENU_FLAG) {
                     #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
                     //Serial.print("[TOGGLE][Fr][SELECTOR_MENU_FLAG]>ITEM");
-                    SPFTFTFTFT(previous,selector,menu,flag);//
+                    SPFTFTFTFT2(previous,selector,menu,flag,-949);//
                     #endif
                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG ;
                     SPFTFTFT(selector,item,flag);
@@ -974,9 +985,9 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                             DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
                     
                  } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_TOGGLE_FLAG) {
-                     SPFT(previous); SPFTFTFTFT(item,options,toggle,use) ; SPFT(new); SPFTFTFTFT(menu,selector,menu,flag);
-                      DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_MENU_FLAG ;
-                                    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;
+                     SPFT(previous); SPFTFTFTFT(item,options,toggle,use) ; SPFT(new); SPFTFTFTFT2(menu,selector,item,flag,-987);
+                                DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG ;
+                                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;
                                         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_ELEMENT_TO_REFRESH_A = true;   
                                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
                      
@@ -995,7 +1006,7 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_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].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_MENU_FLAG;
                                         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_ELEMENT_TO_REFRESH_A = true;   
                                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
-                                        SPFTFTFT(selector,menu,flag);
+                                        SPFTFTFT2(selector,menu,flag,-1008);
                               } //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) { //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG)
                     //back to elements
@@ -1028,6 +1039,10 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
     }
         
 
+
+
+
+
 #endif
 
 

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

@@ -126,7 +126,7 @@ struct DISPLAY_MENU_SELECTOR_S {
 
 typedef struct DISPLAY_MENU_SELECTOR_S DISPLAY_MENU_SELECTOR_T ;
 
-typedef byte DISPLAY_MENU_ITEM_Exp_state_level_T ;
+typedef int DISPLAY_MENU_ITEM_Exp_state_level_T ;
 const byte DISPLAY_char24_T_SIZE = 24 ;
 
 typedef char DISPLAY_char_T ;

+ 6 - 3
SE/stuff/P5_Automation_can-dev-res-working-1930/_I2C_driver_Adafruit_PWMServoDriver/_I2C_driver_Adafruit_PWMServoDriver_func.h

@@ -85,7 +85,8 @@ int Adafruit_PWMServoDriver_setPWM(Adafruit_PWMServoDriver_T* Adafruit_PWMServoD
     for(i=1;i<=ARDUINO_ARRAY_INDEX_LIMIT_PORTS_I2C ; i++) {
         if(Adafruit_PWMServoDriver_A[i].I2C_ADDRESS_A == I2C_ADDRESS_A ) {
             Adafruit_PWMServoDriver_A[i].Adafruit_PWMServoDriver_V.setPWM(LocalPort, PWM_MIN, PWM_MAX);
-            Serial.print("#577 setPWM i["); Serial.print(i);  Serial.println("]"); 
+            //Serial.print("#577 setPWM i["); Serial.print(i);  Serial.println("]"); 
+            SPFTFTFT2(set,pwm,index,i);
             break;
         }
     }
@@ -102,9 +103,11 @@ Adafruit_PWMServoDriver_ATTR_ARRAY_T  &Adafruit_PWMServoDriver_ATTR_ARRAY_A,
     for(i=ARDUINO_ARRAY_INDEX_FIRST;i<=Adafruit_PWMServoDriver_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ; i++) {
         if(Adafruit_PWMServoDriver_A[i].I2C_ADDRESS_A == I2C_ADDRESS_A ) {
             if(Adafruit_PWMServoDriver_A[i].ARDUINO_ARRAY_INDEX_DRIVER_STATUS_A  == ARDUINO_ARRAY_INDEX_DRIVER_STATUS_ERROR ) {
-             Serial.print("#83E I2C PWMServoDriver    ID["); Serial.print(i);  Serial.print(" ] STATUS ERR["); Serial.print(Adafruit_PWMServoDriver_A[i].ARDUINO_ARRAY_INDEX_DRIVER_STATUS_A, BIN);  Serial.println("] ");
+             //Serial.print("#83E I2C PWMServoDriver    ID["); Serial.print(i);  Serial.print(" ] STATUS ERR["); Serial.print(Adafruit_PWMServoDriver_A[i].ARDUINO_ARRAY_INDEX_DRIVER_STATUS_A, BIN);  Serial.println("] ");
+             SPFTFTFT2(i2c,pwm,driver,83); SPFTFT2(index,error,i); SPFT2(address, (Adafruit_PWMServoDriver_A[i].ARDUINO_ARRAY_INDEX_DRIVER_STATUS_A, BIN));
             } else {
-            Serial.print("#83E I2C PWMServoDriver    ID["); Serial.print(i);  Serial.print(" ] STATUS ["); Serial.print(Adafruit_PWMServoDriver_A[i].ARDUINO_ARRAY_INDEX_DRIVER_STATUS_A, BIN);  Serial.println("] ");
+            //Serial.print("#83E I2C PWMServoDriver    ID["); Serial.print(i);  Serial.print(" ] STATUS ["); Serial.print(Adafruit_PWMServoDriver_A[i].ARDUINO_ARRAY_INDEX_DRIVER_STATUS_A, BIN);  Serial.println("] ");
+             SPFTFTFT2(i2c,pwm,driver,83); SPFT2(index,i); SPFT2(address, (Adafruit_PWMServoDriver_A[i].ARDUINO_ARRAY_INDEX_DRIVER_STATUS_A, BIN));
            return i;
             break;
             }

+ 2 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/_PortTypes_struct.h

@@ -9,11 +9,13 @@ typedef  byte PortTypes_T ;
  const  PortTypes_T PortTypes_SERVO_360     =  B00010000 ; // 0x03
 
  const  PortTypes_T PortTypes_INPUT         =  B00100000 ; // 
+ const  PortTypes_T PortTypes_ANALOG        =  B01000000 ; // 
 
 
  const  PortTypes_T PortTypes_P2M_EXP_I2C =   PortTypes_PWM | PortTypes_I2C | PortTypes_EXP  ; //0x07 ; //TODO BITTEST
  const  PortTypes_T PortTypes_PWM_EXP_I2C =   PortTypes_PWM | PortTypes_I2C | PortTypes_EXP  ; //0x07 ; //TODO BITTEST
  const  PortTypes_T PortTypes_PWM_I2C_SERVO = PortTypes_PWM | PortTypes_I2C | PortTypes_SERVO  ; //0x07 ; //TODO BITTEST
+ const  PortTypes_T PortTypes_INPUT_ANALOG  = PortTypes_INPUT | PortTypes_ANALOG  ; 
 
 
 

+ 3 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/_Port_I2C_driver_struct.h

@@ -3,6 +3,8 @@ typedef int I2C_driver_T ;
 
 const I2C_driver_T  EI2C_driver_NOT_USED_ = 0x00 ;
 const I2C_driver_T  I2C_driver_Adafruit_PWMServoDriver = 0x01 ;
-const I2C_driver_T  I2C_driver_PCF8574 = 0x02 ;
+const I2C_driver_T  I2C_driver_PCF8574 = 0x02 ; //CAN BE INPUT ALSO TODO
 const I2C_driver_T  I2C_driver_PHYSICAL_PORT_SERVO = 0x03 ; //USES SERVO.H AT LOCAL PORT servo.attach(3); 
+const I2C_driver_T  I2C_driver_PHYSICAL_INPUT_PORT_DIGITAL = 0x05 ; 
+const I2C_driver_T  I2C_driver_PHYSICAL_INPUT_PORT_ANALOG = 0x06 ;
 

+ 13 - 2
SE/stuff/P5_Automation_can-dev-res-working-1930/_Slave_Ports_Status_func.h

@@ -1,6 +1,7 @@
 #include <limits.h>
  
- 
+//#include "TASK_TYPE_T_Set_Ports_Status_LIMITS_A__.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,
@@ -110,6 +111,15 @@
                         memcpy(Slave_Ports_Status_DESCR_A[i].Port_ID_DESCR_A, Port_ID_DESCR_A,String(Port_ID_DESCR_A).length() );
                     }
                     
+                    if( PortTypes & PortTypes_INPUT) {
+                        TASK_TYPE_T_Get_Ports_Status_INPUT_A___SET(i) ;
+                    }
+                    
+                    if( I2C_driver & I2C_driver_PCF8574) {
+                        TASK_TYPE_T_Set_Ports_Status_LIMITS_A__SET(Port_ID,0,1);
+                    }
+                    
+                    
                   //  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 , 
@@ -235,7 +245,8 @@
              // String message = "P ";  message.concat(Slave_Ports_Status_A[i].Port_ID)  ;  message.concat(" ");
              
                 if(i >= (ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU_ITEM_A - 1)) {
-                    Serial.print( "[DISPL][LIMIT][HIT]" ) ;
+                   // Serial.print( "[DISPL][LIMIT][HIT]" ) ;
+                    SPFTFTFT(display,limit,error);
                 } else {
              
                 //char *p; 

+ 3 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/_Slave_Ports_Status_struct.h

@@ -45,8 +45,11 @@ struct TASK_TYPE_T_Set_Ports_Status_LIMITS_S {
      Exp_state_level_T Exp_state_level_MAX_A = 255;
 } ;
 typedef TASK_TYPE_T_Set_Ports_Status_LIMITS_S TASK_TYPE_T_Set_Ports_Status_LIMITS_T ;
+
 TASK_TYPE_T_Set_Ports_Status_LIMITS_T TASK_TYPE_T_Set_Ports_Status_LIMITS_A[ARDUINO_ARRAY_INDEX_LIMIT_PORTS];
 
+bool TASK_TYPE_T_Get_Ports_Status_INPUT_A___INIT = false ;
+
 
 
  struct Slave_Ports_Status_S {

+ 3 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/_TASK_TYPES_struct.h

@@ -27,6 +27,9 @@ const TASK_TYPE_T TASK_TYPE_T_Set_Port_Smooth_forward__ = 0x13 ; //todo to repor
 //const TASK_TYPE_T TASK_TYPE_T_PROGMEM_CONSOLE_PRINT____ = 0x14 ;
 const TASK_TYPE_T TASK_TYPE_T_Set_Ports_Status_DESCR_A___ = 0x15 ; //todo set port names
 const TASK_TYPE_T TASK_TYPE_T_Set_Ports_Status_LIMITS_A__ = 0x16 ; //todo set port names
+const TASK_TYPE_T TASK_TYPE_T_Get_Ports_Status_INPUT_A___ = 0x17 ; //if are input ports - retr vals
+
+
 
 
 //const TASK_TYPE_T TASK_TYPE_T_Debug_Queue_Functions____ = 0x09 ;

+ 66 - 6
SE/stuff/P5_Automation_can-dev-res-working-1930/___CONFIG/0x35/config_Slave_Ports_LOCAL_0x35_init.h

@@ -178,14 +178,14 @@ ARDUINO_FUNCT_INIT_RESULT_T _Slave_Ports_LOCAL_init(
                                     Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
                                 3,  // int  Port_ID,
                                 Active_ControllerID_HEX ,  //int  _Slave_ID,
-                                PortTypes_PWM_I2C_SERVO ,// | PortTypes_SERVO  ,// | PortTypes_SERVO //int  PortTypes,
-                                Address_NOT_DEFINED_A ,  //int  Address,
+                                PortTypes_PWM_EXP_I2C ,// | PortTypes_SERVO  ,// | PortTypes_SERVO //int  PortTypes,
+                                0x20 ,  //int  Address,
                                     3 , //int  LocalPort,
                                 Exp_state_OFF, //int  Exp_state,
                                 Exp_state_ttl_TO_REFRESH , //Exp_state_ttl_TO_REFRESH, //int  Exp_state_ttl,
                                 Broadcast_state_FULL_FRESH, //Broadcast_state_TO_REFRESH, //int  Broadcast_state,
-                                I2C_port_NOT_I2C_A, //int I2C_port,
-                                I2C_driver_PHYSICAL_PORT_SERVO ,//int I2C_driver
+                                I2C_port_DEFAULT, //int I2C_port,
+                                I2C_driver_PCF8574 ,//int I2C_driver
                                 IS_Local_TRUE, Exp_state_level_INIT,
                                 "Halog3",
                                 0,0// time_seq_id, time_min_run
@@ -234,9 +234,69 @@ ARDUINO_FUNCT_INIT_RESULT_T _Slave_Ports_LOCAL_init(
                                 );   
                                 TASK_TYPE_T_Set_Ports_Status_LIMITS_A__SET(5,0,180);
 
+                                Slave_Ports_Status_add_port(
+                                Slave_Ports_Status_A ,
+                                Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
+                                6,  // int  Port_ID,
+                                Active_ControllerID_HEX ,  //int  _Slave_ID,
+                                PortTypes_INPUT ,// | PortTypes_SERVO  ,// | PortTypes_SERVO //int  PortTypes,
+                                Address_NOT_DEFINED_A ,  //int  Address,
+                                    A13 , //int  LocalPort,
+                                Exp_state_OFF, //int  Exp_state,
+                                Exp_state_ttl_TO_REFRESH , //Exp_state_ttl_TO_REFRESH, //int  Exp_state_ttl,
+                                Broadcast_state_FULL_FRESH, //Broadcast_state_TO_REFRESH, //int  Broadcast_state,
+                                I2C_port_NOT_I2C_A, //int I2C_port,
+                                I2C_driver_PHYSICAL_INPUT_PORT_DIGITAL ,//int I2C_driver
+                                IS_Local_TRUE, Exp_state_level_INIT,
+                                "IN A13",
+                                0,0// time_seq_id, time_min_run
+                                );   
                                 
-                            Serial.println("#151ADD");
-                            Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A);        
+                                Slave_Ports_Status_add_port(
+                                Slave_Ports_Status_A ,
+                                Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
+                                7,  // int  Port_ID,
+                                Active_ControllerID_HEX ,  //int  _Slave_ID,
+                                PortTypes_INPUT_ANALOG ,// | PortTypes_SERVO  ,// | PortTypes_SERVO //int  PortTypes,
+                                Address_NOT_DEFINED_A ,  //int  Address,
+                                    A14 , //int  LocalPort,
+                                Exp_state_OFF, //int  Exp_state,
+                                Exp_state_ttl_TO_REFRESH , //Exp_state_ttl_TO_REFRESH, //int  Exp_state_ttl,
+                                Broadcast_state_FULL_FRESH, //Broadcast_state_TO_REFRESH, //int  Broadcast_state,
+                                I2C_port_NOT_I2C_A, //int I2C_port,
+                                I2C_driver_PHYSICAL_INPUT_PORT_ANALOG ,//int I2C_driver
+                                IS_Local_TRUE, Exp_state_level_INIT,
+                                "IN A14",
+                                0,0// time_seq_id, time_min_run
+                                );
+
+                                Slave_Ports_Status_add_port(
+                                Slave_Ports_Status_A ,
+                                Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
+                                8,  // int  Port_ID,
+                                Active_ControllerID_HEX ,  //int  _Slave_ID,
+                                PortTypes_INPUT_ANALOG ,// | PortTypes_SERVO  ,// | PortTypes_SERVO //int  PortTypes,
+                                Address_NOT_DEFINED_A ,  //int  Address,
+                                    A15 , //int  LocalPort,
+                                Exp_state_OFF, //int  Exp_state,
+                                Exp_state_ttl_TO_REFRESH , //Exp_state_ttl_TO_REFRESH, //int  Exp_state_ttl,
+                                Broadcast_state_FULL_FRESH, //Broadcast_state_TO_REFRESH, //int  Broadcast_state,
+                                I2C_port_NOT_I2C_A, //int I2C_port,
+                                I2C_driver_PHYSICAL_INPUT_PORT_ANALOG ,//int I2C_driver
+                                IS_Local_TRUE, Exp_state_level_INIT,
+                                "IN A15",
+                                0,0// time_seq_id, time_min_run
+                                );          
+                            SPFTFTFT2(add,port,index,Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A)   ; 
                                 
                     /*    DISPLAY__print_ANY(
                     DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 

+ 5 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___loop/__main_loop_end.h

@@ -1,5 +1,10 @@
 
 //static ARDUINO_LOOP_LATENCY_T     ARDUINO_LOOP_LATENCY__MAIN_END_A = 10000 ; //EVERY 10 LOOPS INIT THIS LATENCY
+
+if(TASK_TYPE_T_Get_Ports_Status_INPUT_A___INIT == true){
+    TASK_TYPE_T_Get_Ports_Status_INPUT_A___LOOP();
+}
+
  _Slave_Ports_queue__POP(
                      Slave_Ports_Status_QUEUE_A, 
                      Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/___main/__main_struct_limits.h

@@ -10,7 +10,7 @@ const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_PORTS_I2C = 10 ;
 const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY = 8 ;
 
 const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU = 2 ;
-const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU_ITEM_A = 9 ;
+const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU_ITEM_A = 10;//9 ;