a.binder 5 лет назад
Родитель
Сommit
985d8d5129

+ 2 - 1
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_QUEUE_add_func.h

@@ -46,7 +46,8 @@ ARDUINO_ARRAY_INDEX_T DISPLAY_ARDUINO_ARRAY_INDEX_A //optionally
         Serial.println("[ QUEUE_RESTART_INDEX]   by [ARDUINO_ARRAY_time_min_run_MIN_A] [ARDUINO_ARRAY_INDEX_time_min_run_MIN_A]") ;
         Serial.println("[Todo should commit provide counter and next automaticalluy - this is error case]");
         
-        ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,time_min_run ) ;
+        ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,
+        ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE , millis() ) ;
       }
       
       /*

+ 13 - 3
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_QUEUE_func.h

@@ -16,9 +16,14 @@ Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_QUEUE_T_ARDU
         Slave_Ports_Status_QUEUE_A[i].time_seq_id = 0;
         Slave_Ports_Status_QUEUE_A[i].time_min_run = 0;
         
-        ARDUINO_ATTR_ARRAY_S__commit_added_element(
-                          Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A , 
-                         i);
+        
+            ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A , i, //current index,
+                         ARDUINO_QUEUE_FLAG_QUEUE , ARDUINO_QUEUE_ELEMENT_FLAG_INITIAL_CORRUPT
+                         );
+        
+      //  ARDUINO_ATTR_ARRAY_S__commit_added_element(
+        //                  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A , 
+          //               i);
         //#ifdef DEBUG_QUEUE
              Serial.println("[#22] _Slave_Ports_queue__INIT  [OK] ");
         //#endif
@@ -50,6 +55,11 @@ Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_QUEUE_T_ARDU
 ) {
   int i;
     Serial.println("#100 _Slave_Ports_queue__list Slave_Ports_Status_QUEUE_A): ");
+    
+    
+    #ifdef DEBUG
+        ARDUINO_ATTR_ARRAY_S__display(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A);
+    #endif
     //Serial.println(sizeof(Slave_Ports_Status_QUEUE_A));
         for(i=ARDUINO_ARRAY_INDEX_FIRST;i<=ARDUINO_ARRAY_INDEX_LIMIT_QUEUE;i++) { //sizeof(_LCD_print_buffors)
 

+ 21 - 7
SE/stuff/P5_Automation_can-dev-res/___main/__main_struct.h

@@ -123,23 +123,37 @@ const ARDUINO_ARRAY_ATTR_QUEUE_FRONT_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT_INIT
 
 
 typedef byte ARDUINO_QUEUE_FLAG_T  ;
-const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_TO_POP   = B00000001 ;  //current element
-const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_POPPED   = B00000010 ; 
-const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_LOCKED   = B00000100 ;
-const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_EMPTY    = B00001000 ; 
-const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_INIT     = B00010000 ;
+
+
+
+typedef ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_ELEMENT_FLAG_T ; //type to be inside array to control
+const ARDUINO_QUEUE_ELEMENT_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_INITIAL_CORRUPT = B00000001 ; //type of empty initial array records
+const ARDUINO_QUEUE_ELEMENT_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_COMIT_CONTEXT   = B00000010 ; //to handle this flag by functions - shows that is expected sturcture
+
+
+
+const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_INIT                      = B00000001 ;  //just to init
+const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_RESTRICT_INDEX            = B00000010 ;  //no loose index changes
+const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_CAN_OVERWRITE             = B00000100 ; //data can be overwrited
+const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_USE_ELEMENT_FLAG_T        = B00001000 ; //delete order etc use ARDUINO_QUEUE_ELEMENT_FLAG_T in childs
+const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE          = B00010000 ; //data can be overwrited
+const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_NOT_SPECIFIED             = B00100000 ; //not specified
+const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_QUEUE                     = B01000000 ; //USE ARDUINO_ARRAY_ATTR_QUEUE_BACK_A +  ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A + rotate
+const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_FULL_ONLY_POP             = B10000000 ; // WHEN QUEUE FULL - DISALLOW TO NEW RECORDS
+
 
 
 struct ARDUINO_ATTR_ARRAY_S {
     ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_CURRENT_A ;
-    ARDUINO_ARRAY_INDEX_LAST_T ARDUINO_ARRAY_INDEX_LAST_A ;
+    ARDUINO_ARRAY_INDEX_LAST_T ARDUINO_ARRAY_INDEX_LAST_A ; //mzoe byc usabvle do pointerowania rejestru dalej
     ARDUINO_ARRAY_COUNT_T ARDUINO_ARRAY_COUNT_A ;
     ARDUINO_ARRAY_INDEX_LIMIT_T ARDUINO_ARRAY_INDEX_LIMIT_A;
     ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ARRAY_INDEX_NEXT_A ;
     ARDUINO_ARRAY_time_min_run_MIN_T ARDUINO_ARRAY_time_min_run_MIN_A ;
     ARDUINO_ARRAY_INDEX_time_min_run_MIN_T ARDUINO_ARRAY_INDEX_time_min_run_MIN_A ;
-    ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ;
     ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A ;
+    ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ; //ostatni zabrany element
+    ARDUINO_ARRAY_ATTR_QUEUE_COUNT_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A ; //kolejka elementow
 };
 
 typedef ARDUINO_ATTR_ARRAY_S ARDUINO_ATTR_ARRAY_T;

+ 162 - 30
SE/stuff/P5_Automation_can-dev-res/___main/__main_struct_funct.h

@@ -42,21 +42,8 @@ void ARDUINO_ATTR_ARRAY_S__commit_added_element(
         ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A++ ;
     }
      
-    
-    
-    
-    //ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ;
-    //ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A ;
-    
-    //ARDUINO_ARRAY_INDEX_LIMIT_A; todo use limits
-                #if defined(DEBUG) 
-                             Serial.print("#36 ATTR_ARRAY_S [DEBUG]  #C["); Serial.print(ARDUINO_ARRAY_INDEX_CURRENT_A);
-                            Serial.print("] CountNew["); Serial.print( ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A);
-                            Serial.print("] Last["); Serial.print( ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A);
-                            Serial.print("] Curr["); Serial.print( ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A); 
-                                Serial.println("]  ");
-                #endif
-    }
+     
+ }
 
 
 
@@ -65,16 +52,17 @@ void ARDUINO_ATTR_ARRAY_S__init(  //to init attr list table[1]
     ARDUINO_ARRAY_INDEX_LIMIT_T ARDUINO_ARRAY_INDEX_LIMIT_A //current limit table
     ) {
     
-    
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A = ARDUINO_ARRAY_INDEX_CURRENT_INIT ;
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A = ARDUINO_ARRAY_INDEX_LAST_INIT ;
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A = ARDUINO_ARRAY_COUNT_T_INIT ;
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A = ARDUINO_ARRAY_INDEX_LIMIT_A ; 
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A = ARDUINO_ARRAY_INDEX_NEXT_INIT ;
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_time_min_run_MIN_A = ARDUINO_ARRAY_time_min_run_MIN_INIT ;
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_time_min_run_MIN_A = ARDUINO_ARRAY_INDEX_time_min_run_MIN_INIT ;  
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A  = ARDUINO_ARRAY_ATTR_QUEUE_BACK_INIT ;
-             ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A  = ARDUINO_QUEUE_FLAG_INIT ;
+            if(not(ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A == ARDUINO_QUEUE_FLAG_INIT)) {
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A = ARDUINO_ARRAY_INDEX_CURRENT_INIT ;
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A = ARDUINO_ARRAY_INDEX_LAST_INIT ;
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A = ARDUINO_ARRAY_COUNT_T_INIT ;
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A = ARDUINO_ARRAY_INDEX_LIMIT_A ; 
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A = ARDUINO_ARRAY_INDEX_NEXT_INIT ;
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_time_min_run_MIN_A = ARDUINO_ARRAY_time_min_run_MIN_INIT ;
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_time_min_run_MIN_A = ARDUINO_ARRAY_INDEX_time_min_run_MIN_INIT ;  
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A  = ARDUINO_ARRAY_ATTR_QUEUE_BACK_INIT ;
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A  = ARDUINO_QUEUE_FLAG_INIT ;
+             }  
     }
 
 
@@ -141,9 +129,7 @@ void ARDUINO_ARRAY_INDEX_TABLE_S__add_void(
 
 void ARDUINO_ATTR_ARRAY_S__display(  //to init attr list table[1]
     ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A
-    ) {
-    
-    
+    ) {    
         Serial.print("   [#139 ARRAY_S__display]   #CURRENT[");
              Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A); Serial.print("]  #LAST[");
              Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A); Serial.print("]  #COUNT[");
@@ -151,14 +137,34 @@ void ARDUINO_ATTR_ARRAY_S__display(  //to init attr list table[1]
              Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A ); Serial.print("]  #NEXT[");
              Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A); Serial.print("]  @time_min_run[");
              Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_time_min_run_MIN_A ); Serial.print("]  #time_run_#[");
-             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_time_min_run_MIN_A ); Serial.println("]  ");  
+             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_time_min_run_MIN_A );Serial.print("]  #time_run_#[");
+             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A, BIN); Serial.print("]  QUEUE_FLAG_A[");
+             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A); Serial.print("]  QUEUE_BACK_A["); //ostatni zabrany element
+             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A );  Serial.println("] QUEUE_COUNT_A     ");//kolejka elementow  
     }
 
 
 
 
+void ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_basic_rotate(ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A){
+
+    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A =  ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ;
+    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A = ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A ;
+    
+    if((ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A + 1) >= ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A) {
+        ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A = ARDUINO_ARRAY_INDEX_FIRST ;
+    } else ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A ++ ;
+      
+    if((ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A + 1) >= ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A) {
+        ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A = ARDUINO_ARRAY_INDEX_FIRST ;
+    } else ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ++ ;    
+    
+}
+
+
 void ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(  //to maintain limit and set new indexes
     ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A ,
+    ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A,
     ARDUINO_ARRAY_time_min_run_MIN_T ARDUINO_ARRAY_time_min_run_MIN_A  //to provide index pointer to last
     ) {    
         Serial.print("   [#156 ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate]   #CURRENT[");
@@ -179,7 +185,14 @@ void ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(  //to maintain limit and set new i
              ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A = ARDUINO_ARRAY_INDEX_FIRST ;
              //ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_time_min_run_MIN_A
              //ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_time_min_run_MIN_A
-             // ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ;
+            //ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A ;
+             // ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ;
+            
+            //ARDUINO_ARRAY_ATTR_QUEUE_COUNT_T ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A ;
+
+         
+         //validate if ARDUINO_ARRAY_ATTR_QUEUE_BACK_A nie nachodzi
+   
    
     }
 
@@ -187,6 +200,125 @@ void ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(  //to maintain limit and set new i
 
 
 
+
+void ARDUINO_ARRAY_ATTR_QUEUE_add_distance(ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A ,ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A 
+ //usable to check if not chanmged?
+ ) {
+    //int INDEX_TO_POP ;
+    int Q1 ;
+    int Q2;
+    int BACK ;  
+    
+    
+    //boolean DIST_FROM_INDEX_CURRENT_A__rotated_to__QUEUE_BACK_A ;
+    //ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A - dlugosc kolejki
+    //ARDUINO_ARRAY_ATTR_QUEUE_BACK_A - indeks do POP
+    if((ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A + 1) >= (ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A -ARDUINO_ARRAY_INDEX_FIRST )) {
+        //size queue za duza - opcja albo 
+            //ARDUINO_QUEUE_FLAG_CAN_OVERWRITE            
+            if(ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A & ARDUINO_QUEUE_FLAG_CAN_OVERWRITE ) {
+                //przesuwamy wszystkie indeksy w prawo - nie powiekszajac kolejki, bo jest max
+                #ifdef DEBUG_QUEUE
+                 Serial.println("[#161] ARDUINO_ARRAY_ATTR_QUEUE_distance  [FLAG_CAN_OVERWRITE]");
+                #endif 
+                 
+                    ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_basic_rotate(ARDUINO_ATTR_ARRAY_A);
+            } else if(ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A & ARDUINO_QUEUE_FLAG_QUEUE ) {
+            //ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE //
+            //or todo indivual array elements ARDUINO_QUEUE_FLAG_USE_ELEMENT_FLAG_T
+               #ifdef DEBUG_QUEUE
+                 Serial.print("[#161] ARDUINO_ARRAY_ATTR_QUEUE_distance  [ARDUINO_QUEUE_FLAG_QUEUE]");
+                 Serial.print(" [SIZE_MAX] [NEED OVERWRITE]  +[ARDUINO_QUEUE_FLAG_FULL_ONLY_POP]") Serial.println("");
+                 
+                #endif 
+                ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A = ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A | ARDUINO_QUEUE_FLAG_FULL_ONLY_POP ;
+                
+            }
+    } else if((ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A > ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A) ) {
+    
+    
+        Q1 =  ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A - ARDUINO_ARRAY_INDEX_FIRST ;
+        Q2 = (  ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A - Q1 ) ;
+        BACK =  ( ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A +  ARDUINO_ARRAY_INDEX_FIRST ) - Q2 ; 
+        ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A =  BACK ;
+    
+       
+         #ifdef DEBUG_QUEUE
+              Serial.println("[#1470] ARDUINO_ARRAY_ATTR_QUEUE_distance [USING [QUEUE_COUNT]]");
+                Serial.println("1...........LIMIT_A........................>");
+                Serial.println("#######(PREV)[I](NEXT).....[Q](BACK)#######>");
+                Serial.println("|---[Q1]------|            |------[Q2]-----|");
+                Serial.println("     Q1 = I   Q2 = (Q - Q1)         B=L-Q  ");
+                Serial.println("|--------------------------------[BACK]     ");
+                Serial.print(" [ ");  Serial.print(Q1);  Serial.print("]  ") ;
+                Serial.print(" [ "); Serial.print(Q2);  Serial.print("]  ") ;
+                Serial.print(" [ ");  Serial.print(BACK)  ;Serial.print("]  ");
+
+         #endif 
+    
+    
+     } else  if(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A < ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A) {
+      
+         Q1 = (ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A + ARDUINO_ARRAY_INDEX_FIRST) - ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ;
+         
+         #ifdef DEBUG_QUEUE
+              Serial.println("[#1470] ARDUINO_ARRAY_ATTR_QUEUE_distance [USING [QUEUE_COUNT]]");
+                Serial.println("1...........LIMIT_A........................>");
+                Serial.println(".....[Q](BACK)#########>(PREV)[I](NEXT)....");
+                Serial.println("|--[Q1]--|                                  ");
+                Serial.println("     Q1 = (I - Q)                           ");
+                Serial.println("|--------------------------------[BACK]     ");
+                Serial.print(" [ ");  Serial.print(Q1);  Serial.print("]  ") ;
+                //Serial.print(" [ "); Serial.print(Q2);  Serial.print("]  ") ;
+                Serial.print(" [ ");  Serial.print(BACK)  ;Serial.print("]  ");
+
+         #endif 
+     } else {
+        #ifdef DEBUG_QUEUE || DEBUG
+            Serial.println("[#228] ARDUINO_ARRAY_ATTR_QUEUE_distance [UERROR?]");
+         #endif 
+     }
+         
+      
+         
+}
+
+
+
+
+void ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE(
+          ARDUINO_ATTR_ARRAY_S &ARDUINO_ATTR_ARRAY_A , 
+          ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_CURRENT_A, //current index,
+          ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A  ,
+          ARDUINO_QUEUE_ELEMENT_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_A //flags of records
+      ) { //when added new element call this func
+    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LAST_A = ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ;
+    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A = ARDUINO_ARRAY_INDEX_CURRENT_A ;
+    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A = ARDUINO_ARRAY_INDEX_CURRENT_A + 1 ;
+    if(ARDUINO_ARRAY_INDEX_CURRENT_A == ARDUINO_ARRAY_INDEX_CORRUPT )  {
+    } else if(ARDUINO_QUEUE_ELEMENT_FLAG_A & ARDUINO_QUEUE_ELEMENT_FLAG_INITIAL_CORRUPT) {
+    } else {
+        //if should index rotate
+        if((ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A + 1) > ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A) {
+                //should rotate
+                ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(ARDUINO_ATTR_ARRAY_A, 
+                ARDUINO_QUEUE_FLAG_A ,
+                millis());
+                //check if we not corrupt ARDUINO_ARRAY_ATTR_QUEUE_BACK_A
+                
+        }
+    
+    
+    
+        ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A++ ;
+    }
+     
+    
+    
+}
+
+
+
 /*
 void ARDUINO_ARRAY_COUNT(
 ARDUINO_ARRAY_INDEX_TABLE_S* ARDUINO_ARRAY_INDEX_TABLE_A,