a.binder 5 jaren geleden
bovenliggende
commit
5ebe6b18a2

+ 7 - 3
SE/stuff/P5_Automation_can-dev-res/P5_Automation_can-dev-res.ino

@@ -83,6 +83,10 @@
 
 //#define DEBUG_I2C_driver_Adafruit_PWMServoDriver
 //#define DEBUG_CAN
+//#define DEBUG_QUEUE
+//#define DEBUG_QUEUE_ASSERT
+//#define DEBUG_QUEUE_WAIT 500
+#define DEBUG_STRUCT_INIT
 
 //#define HAS__PCINT_setup //to allow interrupts
 
@@ -353,7 +357,7 @@
 void setup() {  //REMEMBER NOT INITIALIZE ANY VARIABLES OR ARRAYS
     Serial.begin(115200);
     
-#ifdef DISABLE_LOOP || DEBUG
+#if defined(DEBUG) || defined(DEBUG_QUEUE)
          Serial.println("#329 Serial.begin(115200)");
 #endif
 
@@ -375,7 +379,7 @@ void setup() {  //REMEMBER NOT INITIALIZE ANY VARIABLES OR ARRAYS
 
  
 //todo PCINT service
-#ifdef DISABLE_LOOP || DEBUG
+#if defined(DISABLE_LOOP) || defined(DEBUG)
          Serial.println("#375 will include ___main/__main_I2C_setup.h");
 #endif
 #include "___main/__main_I2C_setup.h"
@@ -399,7 +403,7 @@ void setup() {  //REMEMBER NOT INITIALIZE ANY VARIABLES OR ARRAYS
 
 
 #if defined(HAS_I2C_driver_Adafruit_PWMServoDriver)        
-            #ifdef DISABLE_LOOP || DEBUG || DEBUG_I2C_driver_Adafruit_PWMServoDriver
+            #if  defined(DISABLE_LOOP) || defined(DEBUG) || defined(DEBUG_I2C_driver_Adafruit_PWMServoDriver)
                      Serial.println("#401 will include /_I2C_driver_Adafruit_PWMServoDriver_setup.h");
             #endif
     

+ 4 - 4
SE/stuff/P5_Automation_can-dev-res/_CAN_setup.h

@@ -11,7 +11,7 @@
      Serial.print(LCDarray1 + LCDarray2);
      */
             
-         #ifdef DEBUG_CAN || DEBUG
+         #if  defined(DEBUG_CAN) || defined(DEBUG)
              Serial.print("       [CAN_OK]   ");
          #endif
 
@@ -29,7 +29,7 @@
     #endif
   } else { 
   
-          #ifdef DEBUG_CAN || DEBUG
+          #if defined(DEBUG_CAN) || defined(DEBUG)
              Serial.print("  #33     [CAN_ERROR]   ");
          #endif
 
@@ -82,7 +82,7 @@
           */ 
          #endif
          
-          #ifdef DEBUG_CAN || DEBUG
+          #if defined(DEBUG_CAN) || defined(DEBUG)
              Serial.print("  #366 will    [CAN0.setMode(MCP_NORMAL)]   ");
          #endif
 
@@ -90,7 +90,7 @@
         CAN0.setMode(MCP_NORMAL);                // Change to normal mode to allow messages to be transmitted
         pinMode(CAN_INTpin, INPUT);                       // Setting pin 2 for /INT input
 
-         #ifdef DEBUG_CAN || DEBUG
+         #if defined(DEBUG_CAN) || defined(DEBUG)
              Serial.println("  #94 EOF   MCP can setup.  ");
          #endif
 

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res/_I2C_driver_Adafruit_PWMServoDriver/_I2C_driver_Adafruit_PWMServoDriver_setup.h

@@ -3,7 +3,7 @@
 //  pwm1.setPWMFreq(50);  // This is the maximum PWM frequency
 
 
-#ifdef DISABLE_LOOP || DEBUG || DEBUG_I2C_driver_Adafruit_PWMServoDriver
+#if defined(DISABLE_LOOP) || defined(DEBUG) || defined(DEBUG_I2C_driver_Adafruit_PWMServoDriver)
          Serial.println("BEGIN #include _I2C_driver_Adafruit_PWMServoDriver_setup.h ");
         Adafruit_PWMServoDriver__print_status(Adafruit_PWMServoDriver_A);
 #endif

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res/_PCINT/_PCINT_setup.h

@@ -10,6 +10,6 @@
 //  digitalWrite(ROTTARY_SW_sw, HIGH); //use the internal pullup resistor
   
 
-#ifdef DISABLE_LOOP || DEBUG
+#if defined(DISABLE_LOOP) // || DEBUG
          Serial.println("#included _PCINT/_PCINT_setup.h ");
 #endif

+ 2 - 2
SE/stuff/P5_Automation_can-dev-res/_ROTTARY_SW/_ROTTARY_SW_setup.h

@@ -1,13 +1,13 @@
 
 
-#ifdef DISABLE_LOOP || DEBUG
+#if defined(DISABLE_LOOP) || defined(DEBUG)
          Serial.println("BEGIN #include _ROTTARY_SW_setup.h ");
 #endif
 
 #if defined(HAS__PCINT_setup)
 
     
-    #ifdef DISABLE_LOOP || DEBUG
+    #ifdef defined(DISABLE_LOOP) || defined(DEBUG)
              Serial.println("will  attachPinChangeInterrupt(ROTTARY_SW_sw, ROTTARY_SW_sw_INT, FALLING); ");
     #endif
   attachPinChangeInterrupt(ROTTARY_SW_sw, ROTTARY_SW_sw_INT, FALLING);  // add more attachInterrupt code as required

+ 11 - 4
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_QUEUE_add_func.h

@@ -25,17 +25,22 @@ ARDUINO_ARRAY_INDEX_T DISPLAY_ARDUINO_ARRAY_INDEX_A //optionally
       
       
          
-      #ifdef DEBUG_QUEUE
+      #if  defined(DEBUG_QUEUE)
             Serial.println("[#22] [DEBUG_QUEUE]  RDUINO_ATTR_ARRAY_S__display[ ");  
             ARDUINO_ATTR_ARRAY_S__display(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A) ;
            // Serial.print("]  [OLD_QUEUE]   cur peek[");
             //Serial.print(_Slave_Ports_queue_peek);  Serial.print("] cur back[");  Serial.print(_Slave_Ports_queue_back); 
             
             Serial.print("]    new push[");
-      
+            #if defined(DEBUG_QUEUE_WAIT)
+                Serial.print("  [delay][");Serial.print(DEBUG_QUEUE_WAIT); Serial.print("]  ");    
+                delay(DEBUG_QUEUE_WAIT);
+            #endif
       #endif
       
       
+      
+      
       //CONTROLLING ARR SIZE
       //ARDUINO_ARRAY_INDEX_CURRENT_T Slave_Ports_Status_QUEUE_T_INDEX_CURRENT_A =  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ;
       ARDUINO_ARRAY_INDEX_CURRENT_T Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A =  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A ;
@@ -78,7 +83,7 @@ ARDUINO_ARRAY_INDEX_T DISPLAY_ARDUINO_ARRAY_INDEX_A //optionally
      
          Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_back + 1 ].DISPLAY_ARDUINO_ARRAY_INDEX_A = DISPLAY_ARDUINO_ARRAY_INDEX_A ;
     */
-    Serial.print("]   [USING] [INDEX_NEXT_A]=["); 
+    Serial.print("]#81   [USING] [INDEX_NEXT_A]=["); 
      Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A =  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A ;
             Serial.print( Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A);   Serial.print("]  [");
         
@@ -89,7 +94,9 @@ ARDUINO_ARRAY_INDEX_T DISPLAY_ARDUINO_ARRAY_INDEX_A //optionally
      Slave_Ports_Status_QUEUE_A[Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A].time_min_run=time_min_run ;
      
       Slave_Ports_Status_QUEUE_A[Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A].DISPLAY_ARDUINO_ARRAY_INDEX_A = DISPLAY_ARDUINO_ARRAY_INDEX_A ;
-      ARDUINO_ATTR_ARRAY_S__commit_added_element(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A ) ;
+      //ARDUINO_ATTR_ARRAY_S__commit_added_element(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A ) ;
+      ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A,
+      ARDUINO_QUEUE_FLAG_QUEUE,ARDUINO_QUEUE_ELEMENT_FLAG_STANDARD  ) ;
        Serial.print("  new QUEUE_ID_A["); Serial.print(Slave_Ports_Status_QUEUE_A[Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A].QUEUE_ID_A ); Serial.println("]    ");
         
  return true ;

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

@@ -4,8 +4,14 @@
 void _Slave_Ports_queue__INIT( 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
 ) {
-  Serial.println("_Slave_Ports_queue__INIT");
-  ARDUINO_ATTR_ARRAY_S__init(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, ARDUINO_ARRAY_INDEX_LIMIT_QUEUE);
+                #if defined(DEBUG_STRUCT_INIT)
+                  Serial.print("#7AA _Slave_Ports_queue__INIT [FLAG][");
+                                Serial.print(ARDUINO_QUEUE_FLAG_QUEUE,BIN);Serial.print("] + [ ");
+                                Serial.print(ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE, BIN);Serial.print("] +  [ ");Serial.print(ARDUINO_QUEUE_FLAG_QUEUE | ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE, BIN); Serial.println("]   ");
+                #endif
+  ARDUINO_ATTR_ARRAY_S__init(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, 
+  ARDUINO_ARRAY_INDEX_LIMIT_QUEUE,
+   ARDUINO_QUEUE_FLAG_QUEUE | ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE);
   
    //INIT 2015
   ARDUINO_ARRAY_INDEX_CURRENT_T i =  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ;
@@ -57,7 +63,7 @@ Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_QUEUE_T_ARDU
     Serial.println("#100 _Slave_Ports_queue__list Slave_Ports_Status_QUEUE_A): ");
     
     
-    #ifdef DEBUG
+    #if defined(DEBUG) || defined(DEBUG_QUEUE)
         ARDUINO_ATTR_ARRAY_S__display(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A);
     #endif
     //Serial.println(sizeof(Slave_Ports_Status_QUEUE_A));

+ 2 - 2
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_broadcast_func.h

@@ -30,7 +30,7 @@
           int i;
           for(i=ARDUINO_ARRAY_INDEX_FIRST;i<=Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A;i++) {
             if(Slave_Ports_Status_A[i].Broadcast_state == Broadcast_state_TO_REFRESH and Slave_Ports_Status_A[i].IS_Local_A == IS_Local_TRUE) {
-            #ifdef DEBUG || DEBUG_CAN
+            #if defined(DEBUG) || defined(DEBUG_CAN)
                 if(DEBUG > 4) {
                     Serial.print(" ind:"); Serial.print(i);  Serial.print("] IS_Local_A:");
                     Serial.print(Slave_Ports_Status_A[i].IS_Local_A);
@@ -212,7 +212,7 @@
 
                                   //    delay(5000);   // send data per 100ms
                 } else {
-                 #ifdef DEBUG || DEBUG_CAN
+                 #if defined(DEBUG) //|| defined(DEBUG_CAN)
                 if(DEBUG > 4) {
                     Serial.print("#147 BCAST NOT SENT  ind:"); Serial.print(i);  Serial.print("] IS_Local_A:");
                     Serial.print(Slave_Ports_Status_A[i].IS_Local_A);

+ 7 - 5
SE/stuff/P5_Automation_can-dev-res/___CONFIG/0x101/config_Active_ControllerID_0x101.h

@@ -7,16 +7,18 @@
 #define DEBUG_I2C_driver_Adafruit_PWMServoDriver
 //#define HAS__PCINT_setup //to allow interrupts
 
-#//define DEBUG 5 
+//#define DEBUG 5 
 
 //#define DISABLE_LOOP //To debug and disable any output
 
-#define DEBUG_I2C
+//#define DEBUG_I2C
 //#define HAS_DEBUG_ACTION_TRIG
+//#define DEBUG_CAN
 
-#define DEBUG_CAN
+//#define DEBUG_DISPLAY
 
-#define DEBUG_DISPLAY
+//#define DEBUG_QUEUE
 
-#define DEBUG_QUEUE
+//#define DEBUG_QUEUE_ASSERT
 
+//#define DEBUG_QUEUE_WAIT 500

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

@@ -22,9 +22,11 @@ if(ARDUINO_LOOP_LATENCY_COUNTER__MAIN_END(ARDUINO_LOOP_LATENCY__MAIN_END_A) <= A
               int _Slave_Ports_queue_peek = _Slave_Ports_queue.peek();
               int _Slave_Ports_queue_pop = _Slave_Ports_queue.pop();
               */
-              #ifdef DISABLE_LOOP || DEBUG
+              #if defined(DISABLE_LOOP) || defined(DEBUG)
                 if(DEBUG_ACTION_TRIG != DEBUG_LAST_ACTION_TRIG)   {
-                    Serial.print("#14 main_loop_end  will    _Slave_Ports_queue__POP   _Slave_Ports_queue_count[");   Serial.print(_Slave_Ports_queue_count); Serial.println("] ");
+                    Serial.print("#14 main_loop_end  ");  
+                     //Serial.print(_Slave_Ports_queue_count); 
+                     Serial.println("] ");
                  }
                #endif
              _Slave_Ports_queue__POP(

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res/___main/__main_I2C_setup.h

@@ -1,6 +1,6 @@
 
 
 
-ARDUINO_ARRAY_INDEX_TABLE_S__init(I2C_ARRAY_INDEX_TABLE_A,I2C_ARDUINO_ATTR_ARRAY_A,ARDUINO_ARRAY_INDEX_LIMIT_PORTS_I2C);
+ARDUINO_ARRAY_INDEX_TABLE_S__init(I2C_ARRAY_INDEX_TABLE_A,I2C_ARDUINO_ATTR_ARRAY_A,ARDUINO_ARRAY_INDEX_LIMIT_PORTS_I2C,ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE);
 
 ARDUINO_ARRAY_INDEX_TABLE_S__add_void(I2C_ARRAY_INDEX_TABLE_A,I2C_ARDUINO_ATTR_ARRAY_A,I2C_ADDRESS_0x40);

+ 13 - 2
SE/stuff/P5_Automation_can-dev-res/___main/__main_struct.h

@@ -95,7 +95,7 @@ struct ARDUINO_ARRAY_ATTR_QUEUE_S {
 
 typedef struct ARDUINO_ARRAY_ATTR_QUEUE_S ARDUINO_ARRAY_ATTR_QUEUE_T ;
 
-
+/*
 typedef ARDUINO_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T; //     [#109 ELSE] 100100]
 const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_ACTION_GET = B00000001 ;
 const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_ACTION_SET = B00000010 ;
@@ -107,7 +107,7 @@ const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT      = B
 const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_BACK       = B10000000 ;//add back == pop
 
 
-
+*/
  
 typedef struct ARDUINO_ARRAY_ATTR_QUEUE_S ARDUINO_ARRAY_ATTR_QUEUE_T ;
 
@@ -129,6 +129,7 @@ typedef byte ARDUINO_QUEUE_FLAG_T  ;
 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_ELEMENT_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_STANDARD        = B00000100 ; //type of empty initial array records
 
 
 
@@ -143,6 +144,15 @@ const ARDUINO_QUEUE_FLAG_T  ARDUINO_QUEUE_FLAG_FULL_ONLY_POP             = B1000
 
 
 
+typedef  ARDUINO_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T; //do obslygi kluczy
+const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__TO_INITIALIZE    = B00000001 ; //initial state
+const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__TO_COMMIT        = B00000010 ; 
+const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__TO_INCREMENT     = B00000100 ; 
+const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__READY_TO_QUERY   = B00001000 ; 
+const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__QUERY_LOCKED     = B00010000 ; 
+const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__HAS_ERRORS       = B00100000 ; 
+
+
 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 ; //mzoe byc usabvle do pointerowania rejestru dalej
@@ -154,6 +164,7 @@ struct ARDUINO_ATTR_ARRAY_S {
     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
+    ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A ;
 };
 
 typedef ARDUINO_ATTR_ARRAY_S ARDUINO_ATTR_ARRAY_T;

+ 89 - 25
SE/stuff/P5_Automation_can-dev-res/___main/__main_struct_funct.h

@@ -49,10 +49,16 @@ void ARDUINO_ATTR_ARRAY_S__commit_added_element(
 
 void ARDUINO_ATTR_ARRAY_S__init(  //to init attr list table[1]
     ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A, 
-    ARDUINO_ARRAY_INDEX_LIMIT_T ARDUINO_ARRAY_INDEX_LIMIT_A //current limit table
+    ARDUINO_ARRAY_INDEX_LIMIT_T ARDUINO_ARRAY_INDEX_LIMIT_A ,//current limit table
+    ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A
     ) {
     
-            if(not(ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A == ARDUINO_QUEUE_FLAG_INIT)) {
+            if(not(ARDUINO_QUEUE_FLAG_A & ARDUINO_QUEUE_FLAG_INIT)) {
+                         
+                         #if defined(DEBUG) || defined(DISABLE_LOOP) || defined(DEBUG_QUEUE) || defined(DEBUG_STRUCT_INIT)
+                              Serial.print("[#89 ] ARDUINO_ATTR_ARRAY_S__init [ARDUINO_QUEUE_FLAG_INIT["); Serial.print(ARDUINO_QUEUE_FLAG_A, BIN) ; Serial.println("]    ");
+                          #endif 
+            
                     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 ;
@@ -62,16 +68,23 @@ void ARDUINO_ATTR_ARRAY_S__init(  //to init attr list table[1]
                     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 ;
-             }  
+             }  else {
+             
+                   #if defined(DEBUG) || defined(DISABLE_LOOP) || defined(DEBUG_QUEUE) || defined(DEBUG_STRUCT_INIT)
+                              Serial.print("[#89 74] else ARDUINO_ATTR_ARRAY_S__init [ARDUINO_QUEUE_FLAG_INIT] ["); Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A, BIN) ; Serial.println("]  ");
+                          #endif 
+             
+             }
     }
 
 
 void ARDUINO_ARRAY_INDEX_TABLE_S__init( //to init table INDEX
     ARDUINO_ARRAY_INDEX_TABLE_T* ARDUINO_ARRAY_INDEX_TABLE_A,
     ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A,
-    ARDUINO_ARRAY_INDEX_LIMIT_T ARDUINO_ARRAY_INDEX_LIMIT_A //current limit table
+    ARDUINO_ARRAY_INDEX_LIMIT_T ARDUINO_ARRAY_INDEX_LIMIT_A, //current limit table
+    ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A
     ) {
-           ARDUINO_ATTR_ARRAY_S__init(ARDUINO_ATTR_ARRAY_A, ARDUINO_ARRAY_INDEX_LIMIT_A) ; 
+           ARDUINO_ATTR_ARRAY_S__init(ARDUINO_ATTR_ARRAY_A, ARDUINO_ARRAY_INDEX_LIMIT_A,ARDUINO_QUEUE_FLAG_A) ; 
                 ARDUINO_ARRAY_INDEX_CURRENT_T  ARDUINO_ARRAY_INDEX_CURRENT_A = ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A;
                if(ARDUINO_ARRAY_INDEX_CURRENT_A == ARDUINO_ARRAY_INDEX_CORRUPT) {         
                     ARDUINO_ARRAY_INDEX_TABLE_A[ARDUINO_ARRAY_INDEX_CURRENT_A].ARDUINO_ARRAY_INDEX_A = ARDUINO_ARRAY_INDEX_CORRUPT;
@@ -98,7 +111,7 @@ ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_TABLE_S__add( //ADD SOME INT E
                 }
                 
     ARDUINO_ARRAY_INDEX_CURRENT_A = ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A ;
-                            #ifdef DISABLE_LOOP || DEBUG
+                            #if  defined(DISABLE_LOOP) || defined(DEBUG)
                                      Serial.print("#8592 ARDUINO_ARRAY_INDEX_TABLE_S__add  ARDUINO_ARRAY_INDEX_A=[");
                                      Serial.print(ARDUINO_ARRAY_INDEX_A); Serial.print("] ARDUINO_ARRAY_INDEX_CURRENT_A=[");
                                      Serial.print(ARDUINO_ARRAY_INDEX_CURRENT_A); Serial.print("]  ..after commit ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A=[");
@@ -106,7 +119,7 @@ ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_TABLE_S__add( //ADD SOME INT E
                             #endif
         ARDUINO_ARRAY_INDEX_TABLE_A[ARDUINO_ARRAY_INDEX_CURRENT_A].ARDUINO_ARRAY_INDEX_A = ARDUINO_ARRAY_INDEX_A;
             ARDUINO_ATTR_ARRAY_S__commit_added_element(ARDUINO_ATTR_ARRAY_A , ARDUINO_ARRAY_INDEX_CURRENT_A);
-                 #ifdef DISABLE_LOOP || DEBUG
+                 #if defined(DISABLE_LOOP) || defined(DEBUG)
                  Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A); Serial.println("]  [");
                  #endif 
 }
@@ -137,10 +150,10 @@ 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.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  
+             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_time_min_run_MIN_A );Serial.print("]  #QUEUE_FLAG_A#[");
+             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A, BIN); Serial.print("]  QUEUE_BACK[");
+             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A); Serial.print("]  QUEUE_COUNT["); //ostatni zabrany element
+             Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A );  Serial.println("]    ");//kolejka elementow  
     }
 
 
@@ -226,9 +239,9 @@ void ARDUINO_ARRAY_ATTR_QUEUE_add_distance(ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_AR
             } 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
+               #if  defined(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("");
+                 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 ;
@@ -274,7 +287,7 @@ void ARDUINO_ARRAY_ATTR_QUEUE_add_distance(ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_AR
 
          #endif 
      } else {
-        #ifdef DEBUG_QUEUE || DEBUG
+        #if defined(DEBUG_QUEUE) || defined(DEBUG)
             Serial.println("[#228] ARDUINO_ARRAY_ATTR_QUEUE_distance [UERROR?]");
          #endif 
      }
@@ -292,23 +305,61 @@ void ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE(
           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 defined(DEBUG) || defined(DEBUG_QUEUE)
+      // || DEBUG_QUEUE)
+      
+        Serial.println("[  #297 ARDUINO_ATTR_ARRAY_S__commit_added_element]  [INCREMENTED]  ARDUINO_QUEUE_FLAG_A[");Serial.print(ARDUINO_QUEUE_FLAG_A,BIN); Serial.print("]   ");
+      #endif
+      
+    
     if(ARDUINO_ARRAY_INDEX_CURRENT_A == ARDUINO_ARRAY_INDEX_CORRUPT )  {
+     #if defined(DEBUG) || defined(DEBUG_QUEUE)
+        Serial.println("[  #2398 commit_added_element]  [ARDUINO_ARRAY_INDEX_CORRUPT] ignored");
+      #endif
     } else if(ARDUINO_QUEUE_ELEMENT_FLAG_A & ARDUINO_QUEUE_ELEMENT_FLAG_INITIAL_CORRUPT) {
+      #if defined(DEBUG) || defined(DEBUG_QUEUE)
+        Serial.println("[  #3338 commit_added_element]  [ARDUINO_QUEUE_ELEMENT_FLAG_INITIAL_CORRUPT] ignored");
+      #endif
     } 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
+             #if defined(DEBUG) || defined(DEBUG_QUEUE)
+                Serial.println("[  #555 commit_added_element]  [if should index rotate]??");
+              #endif
+                if((ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A + 1) > ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A) {
+                     
+                      #if defined(DEBUG) || defined(DEBUG_QUEUE)
+                              Serial.print("   +[INDEX_NEXT_rotate]   ");
+                       #endif
+                        //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
+                        
+                } else {
                 
-        }
-    
+                
+                                        
+                            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 ;
+                            ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A = ARDUINO_QUEUE_FLAG_A ;
+                            
     
+                 #if defined(DEBUG) || defined(DEBUG_QUEUE)
+                        Serial.print("[ELSE][INDEX_CURRENT_A + 1 > INDEX_LIMIT_A ]   [CURRENT_A][");
+                        Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A);
+                        Serial.print("]   INDEX_CURRENT_A[");
+                        Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A);
+                        Serial.print("]    ");
+                   #endif
+                
+                
+                
+                }
+            
+            
     
         ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A++ ;
     }
@@ -319,6 +370,19 @@ void ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE(
 
 
 
+/*
+
+
+void AARDUINO_ARRAY_ATTR_INDEX__LOCK(
+          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
+     }     
+}
+*/
+
 /*
 void ARDUINO_ARRAY_COUNT(
 ARDUINO_ARRAY_INDEX_TABLE_S* ARDUINO_ARRAY_INDEX_TABLE_A,