a.binder 5 năm trước cách đây
mục cha
commit
1fd5435438

+ 99 - 14
SE/stuff/P5_Automation_can-dev-res-working-1930/_DISPLAY_func.h

@@ -492,7 +492,34 @@ 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) {
+                                                                  //ic_sw_mY = wysokosc, nie wspolrzedne
+                                                                  int ic_sw_mX = maxXi - 1.4 * abs(minYi - maxYi)  ; 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_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 ;
+                                                                    
+                                                                    
+                                                                    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 < 1) {
+                                                                            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 {
+                                                                           ic_sw_circl_X  = ic_sw_MX - abs(ic_sw_mX - ic_sw_MX)/4 ;
+                                                                           DISPLAY_DEV.fillCircle(ic_sw_circl_X, ic_sw_circl_Y , ic_sw_circl_radius,  BLACK ); //
+                                                                       }
+                                                                 // DISPLAY_DEV.fillRect(  0, maxYi ,( maxXi /3 ),  minYi, WHITE );
+                                                                 // DISPLAY_DEV.fillRect(  (maxXi /3), maxYi ,( maxXi /3 * 2 ),  minYi, BLACK );
+                                                                 // DISPLAY_DEV.fillRect(  (maxXi /3 * 2), maxYi , maxXi,  minYi, WHITE );
+                                                                  
+                                                                  
+                                                                  //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
@@ -713,7 +740,7 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                      Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN); Serial.print("]");
                      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) {
-                                    SPFT(level);
+                                    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 ;
                                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A | DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG ;
                                         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 ;
@@ -721,7 +748,7 @@ 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_TOGGLE_FLAG) {
-                                        SPFT(toggle);
+                                        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_TOGGLE_FLAG ;
                                         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 ;
                                          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 ;
@@ -729,11 +756,12 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                                          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
                                 } else {
                                         
-                                        SPFT(else);SPFT(level);SPFT(class);
+                                        
                                         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) );
                                         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(menu_class); SPFT(ignored);
+                                          SPFT(previous);SPFTFTFTFT(menu,item,class,title);
                                         } 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 ;
                                          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;
@@ -743,6 +771,31 @@ 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);
+                 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 ;
+                         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 < 1) {
+                             SPFTFT(toggle,enable);
+                             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 = 255 ;
+                         } else {
+                         SPFTFT(toggle,disable);
+                         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 ;
+                         }
+            
+                            TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={0,0,DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A};
+                                                    
+                                                    Slave_Ports_action_func(Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_A ,
+                                                                    Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A , TASK_TYPE_T_request_set_new_Exp_state ,
+                                                                    TASK_PORT_ASSOC_A,
+                                                                    time_seq_id_A, time_min_run_A,  ARDUINO_ARRAY_INDEX_NOT_SET ,  
+                                                                    Exp_state_ON_USE_LEVEL ,
+                                                                    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   
+                                                                   );
+                    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 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)
              
@@ -757,7 +810,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 = -2;
+                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);
                  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) {
@@ -817,7 +870,7 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_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) {
                 } else if(DISPLAY_MENU_SELECTOR_oldEncPos_A < DISPLAY_MENU_SELECTOR_encoderPos_A) {
-                            TASK_PORT_ASSOC_SMOOTH_A.Exp_state_level_NEW_DELTA_A = 2;
+                            TASK_PORT_ASSOC_SMOOTH_A.Exp_state_level_NEW_DELTA_A = 5;
                              if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A < 254) {
                                         
                                     SPL();SPFTFT2(millis,debug,748); PROGMEM_CONSOLE_WRITE_CHAR("#748",TASK_TYPE_T_Set_Port_Smooth_forward__);
@@ -882,9 +935,11 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
             #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) 
-                    Serial.print("[TOGGLE][Fr][SELECTOR_MENU_FLAG]>ITEM");
+                    //Serial.print("[TOGGLE][Fr][SELECTOR_MENU_FLAG]>ITEM");
+                    SPFTFTFTFT(previous,selector,menu,flag);//
                     #endif
                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG ;
+                    SPFTFTFT(selector,item,flag);
                     #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
                     Serial.print("[ITEM]>1");
                     #endif
@@ -897,7 +952,8 @@ 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_FLAG) { //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>OPTIONS");
+                    //Serial.print("[TOGGLE][Fr][SELECTOR_MENU_FLAG]>ITEM>OPTIONS");
+                    SPFTFTFTFT(previous,selector,item,flag) ;   SPFTFTFTFT(selector,item,options,flag) ; 
                     #endif
                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG ;
                     #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
@@ -910,24 +966,53 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                     Serial.print("[ITEM]>MARK1");
                     #endif
                  //} else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG) { 
+                 } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG ) {
+                         SPFT(previous); SPFTFTFTFT(selector,item,options,toggle) ; SPFT(new); SPFTFTFTFT(item,options,toggle,use) ;
+                            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_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_ELEMENT_TO_REFRESH_A = true;   
+                            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_LEVEL_FLAG) or (
-                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG  )) { //== DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG)  { //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG
-                    
+                 } 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;
+                                        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 if((DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG)) {  //or (DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG  )) { //== DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG)  { //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG
+                         SPFTFTFTFT(previous,options,level,flag) ;// SPFT(or); SPFTFTFT(item,options,flag) ;
                               if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A > 0 ) {
                                     DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_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_OPTIONS_USE_LEVEL_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].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 ;
+                                        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;
+                                        SPFTFTFTFT(selector,use,level,flag);
                               } else {//if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A > 0 ) {
                                     //exit parent
                                     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;
+                                        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);
                               } //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
                         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_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_ELEMENT_TO_REFRESH_A = true;   
+                                        DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
+                        SPFTFTFTFT(previous,use,level,flag); SPFTFTFTFT(menu,selector,item,flag);
+                 
+                 
+                 } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG) {
+                        SPFT(previous); SPFTFTFTFT(selector,item,options,flag) ; 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 ;
+                                                    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 { //else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG) 
                    SPFT2(else,777); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A,  BIN);
                  } 
@@ -936,7 +1021,7 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
         
         
         #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
-        SPFT(debug);Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A,  BIN);
+        SPFTFT2(debug,trigger,String(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A,  BIN));//Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A,  BIN);
         #endif
         Serial.println("   ");
         

+ 1 - 2
SE/stuff/P5_Automation_can-dev-res-working-1930/_ROTTARY_SW/_ROTTARY_SW_func.h

@@ -13,8 +13,7 @@
  // You can assign any number of functions to different pins. How cool is that?
 void ROTTARY_SW_sw_INT() {
     triggerCount++;
-   Serial.print("ROTTARY_SW_sw_INT TRIG[");Serial.print(triggerCount); Serial.println("] ");
-   
+   SPFTFTFT2(rottary,interrupt,trigger,triggerCount);
 }
 
 /*

+ 24 - 18
SE/stuff/P5_Automation_can-dev-res-working-1930/_ROTTARY_SW/_ROTTARY_SW_loop.h

@@ -1,25 +1,31 @@
  
  
  if(triggerCount != triggerCountOld) {
- 
-    Serial.print(" ROT_TRIG[");  Serial.print(triggerCount);  Serial.print("] ");  
-   
-   
-   DISPLAY_MENU_SELECTOR(DISPLAY_A ,
-            DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
-            DISPLAY_PHYSICAL_CHAR_A, 
-            Slave_Ports_Status_A , Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
-           // DISPLAY_MENU_ITEM_INDEX_A ,
-             time ,
-            0 , 
-        //DISPLAY_MENU_SELECTOR_STATUS_A , //; //which mode - provide func
-        DISPLAY_MENU_SELECTOR_SWITCH_UNKNOWN,  //DISPLAY_MENU_SELECTOR_SWITCH_NOT_PUSHED //DISPLAY_MENU_SELECTOR_SWITCH_PUSHED //DISPLAY_MENU_SELECTOR_SWITCH_UNKNOWN
-        oldEncPos , //DISPLAY_MENU_SELECTOR_oldEncPos_A , //; //values
-         encoderPos, // DISPLAY_MENU_SELECTOR_encoderPos_A
-         triggerCountOld , triggerCount 
-       ) ;
-   triggerCountOld =  triggerCount ;
+    SPL();
+    SPFTFT2(rottary,trigger,triggerCount);
    
+    
+    if(triggerCountOld_t < millis()) {
+        triggerCountOld_t = millis() + 500 ;
+        DISPLAY_MENU_SELECTOR(DISPLAY_A ,
+                 DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
+                 DISPLAY_PHYSICAL_CHAR_A, 
+                 Slave_Ports_Status_A , Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
+                // DISPLAY_MENU_ITEM_INDEX_A ,
+                  time ,
+                 0 , 
+             //DISPLAY_MENU_SELECTOR_STATUS_A , //; //which mode - provide func
+             DISPLAY_MENU_SELECTOR_SWITCH_UNKNOWN,  //DISPLAY_MENU_SELECTOR_SWITCH_NOT_PUSHED //DISPLAY_MENU_SELECTOR_SWITCH_PUSHED //DISPLAY_MENU_SELECTOR_SWITCH_UNKNOWN
+             oldEncPos , //DISPLAY_MENU_SELECTOR_oldEncPos_A , //; //values
+              encoderPos, // DISPLAY_MENU_SELECTOR_encoderPos_A
+              triggerCountOld , triggerCount 
+            ) ;
+        triggerCountOld =  triggerCount ;
+    } else {
+        SPFTFTFTFT(rottary,trigger,time,bypassed);
+         triggerCountOld =  triggerCount ;
+        // triggerCountOld =  triggerCount ;
+    }      
  
  }
  

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

@@ -182,6 +182,7 @@
           DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[1].DISPLAY_COLOR_A =  0x0004 ;
           if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[1].DISPLAY_MENU_ITEM_FLAG_A & DISPLAY_MENU_ITEM_FLAG_INITIALIZED) {
           } else {
+            DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[1].DISPLAY_ELEMENT_TO_REFRESH_A = true ;
             DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_ELEMENT_TO_REFRESH_A = true;
             DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
           } 

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

@@ -36,4 +36,6 @@ const ARDUINO_LOOP_LATENCY_TASK_T ARDUINO_LOOP_LATENCY_DISPLAY_MENU = 1200 ; //3
 
 unsigned long encoderPos_t = 0; //todo turbo mode set values
 unsigned long encoderPos_t1 = 0; //todo turbo mode set values
-unsigned long encoderPos_t2 = 0; //todo turbo mode set values
+unsigned long encoderPos_t2 = 0; //todo turbo mode set values
+
+ unsigned long triggerCountOld_t = 0;