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

+ 7 - 10
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_QUEUE_add_func.h

@@ -44,19 +44,16 @@ ARDUINO_FUNCT_INIT_RESULT_T _Slave_Ports_queue__add( Slave_Ports_Status_QUEUE_T*
       //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_NEXT_T Slave_Ports_Status_QUEUE_A;
+     //ARDUINO_ARRAY_INDEX_NEXT_T Slave_Ports_Status_QUEUE_NEXT_A;
       //ARDUINO_ARRAY_INDEX_NEXT_T Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A=ARDUINO_ARRAY_INDEX_NEXT_LOCK(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,Slave_Ports_ATTR_QUEUE_A) ; //TODOARDUINO_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 ;
        //first index next
-       ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ARRAY_INDEX_NEXT_LOCK(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_QUEUE_A)
+       ARDUINO_ARRAY_INDEX_NEXT_T Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A = ARDUINO_ARRAY_INDEX_NEXT_LOCK(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A);
       // ARDUINO_ARRAY_ATTR_QUEUE_T Slave_Ports_ATTR_QUEUE_A = ARDUINO_ARRAY_ATTR_QUEUE(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A);
-      if(Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A == ARDUINO_ARRAY_INDEX_LIMIT_QUEUE) {
-      Serial.println("] "); Serial.print("[#41] [ERROR] [DEBUG_QUEUE] [LIMIT HIT]  [ARDUINO_ARRAY_INDEX_LIMIT_QUEUE] = [");
-      Serial.print(ARDUINO_ARRAY_INDEX_LIMIT_QUEUE) ; Serial.print("]  ");
-        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,
-        ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE , millis() ) ;
+      if(Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A <= 0) { //ARDUINO_ARRAY_INDEX_LIMIT_QUEUE
+      Serial.println("] "); Serial.print("[#41] [ERROR] [DEBUG_QUEUE] [INDEX_NEXT_A ==0??] = [");
+        Serial.print(Slave_Ports_Status_QUEUE_T_INDEX_NEXT_A) ; Serial.print("]  ");       
+        //ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,
+        //ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE , millis() ) ;
       }
       
       /*

+ 67 - 61
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_QUEUE_func.h

@@ -24,7 +24,8 @@ void _Slave_Ports_queue__INIT( Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QU
         
         
             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_QUEUE_FLAG_QUEUE , 
+                         ARDUINO_QUEUE_ELEMENT_FLAG_INITIAL_CORRUPT
                          );
         
       //  ARDUINO_ATTR_ARRAY_S__commit_added_element(
@@ -131,20 +132,25 @@ void _Slave_Ports_queue__list( Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QU
      Adafruit_PWMServoDriver_T* Adafruit_PWMServoDriver_A
  ) {
  
- 
+  ARDUINO_ARRAY_ATTR_QUEUE_T Slave_Ports_ATTR_QUEUE_A = ARDUINO_ARRAY_ATTR_QUEUE(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A) ;//ARDUINO_ARRAY_INDEX_CURRENT_T Slave_Ports_ATTR_QUEUE_PEEK_A ;// = Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ;
+
  Serial.println("#####135####NOT WORKING PEEK TODO ADD");
+ 
+ Serial.print(" COUNT_MAX["); Serial.print(Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_A); 
+    Serial.print("] COUNT_A["); Serial.print(Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A); Serial.print("] ");
+    Serial.print("] BACK_A["); Serial.print(Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A); Serial.print("] ");
+    Serial.print("] FRONT_A["); Serial.print(Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A); Serial.println("] ");
  return false;
 //call      ARDUINO_ARRAY_INDEX_NEXT_LOCK
  
- ARDUINO_ARRAY_ATTR_QUEUE_T Slave_Ports_ATTR_QUEUE_A = ARDUINO_ARRAY_ATTR_QUEUE(ARDUINO_ATTR_ARRAY_A, ) ;//ARDUINO_ARRAY_INDEX_CURRENT_T Slave_Ports_ATTR_QUEUE_PEEK_A ;// = Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_CURRENT_A ;
  
 // Slave_Ports_ATTR_T=ARDUINO_ARRAY_INDEX_NEXT_LOCK(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,Slave_Ports_ATTR_QUEUE_PEEK_A );
- 
+ /*
 ARDUINO_ARRAY_ATTR_T Slave_Ports_ATTR_QUEUE_COUNT_MAX_A  = ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_A   ;
 ARDUINO_ARRAY_ATTR_T Slave_Ports_ATTR_QUEUE_COUNT_A = ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A    //  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A ;
 ARDUINO_ARRAY_ATTR_T Slave_Ports_ATTR_QUEUE_BACK_A = ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A  ;
 ARDUINO_ARRAY_ATTR_T Slave_Ports_ATTR_QUEUE_FRONT_A = ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A ;
-
+*/
  //ARDUINO_ARRAY_ATTR_T Slave_Ports_ATTR_QUEUE_PEEK_A = Slave_Ports_Status_QUEUE_T_INDEX_CURRENT_A ;
 // Slave_Ports_Status_QUEUE_T_INDEX_CURRENT_A =  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A ;
 //DO OBSLUGI KOLEJEK 
@@ -193,10 +199,10 @@ Slave_Ports_Status_QUEUE_STATIC_ID_COUNTER( Slave_Ports_ATTR_QUEUE_COUNT_MAX_A,
   
   
   //Serial.print([ ARDUINO_ARRAY_COUNT_A]);
-               _Slave_Ports_queue_task_type_DESC(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A) ; 
+               _Slave_Ports_queue_task_type_DESC(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A) ; 
    
    // if (_Slave_Ports_queue_count > 0) {
-   if(Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A > 0) {
+   if(Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A > 0) {
                             /*
                              String LCDarray1 = "`Slave_Ports_queue size [";
                              LCDarray1.concat(_Slave_Ports_queue_count);
@@ -225,15 +231,15 @@ Slave_Ports_Status_QUEUE_STATIC_ID_COUNTER( Slave_Ports_ATTR_QUEUE_COUNT_MAX_A,
 //    LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
 
              // if(Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].QUEUE_ID_A == 0 and
-                if(Slave_Ports_Status_QUEUE_A[ Slave_Ports_ATTR_QUEUE_PEEK_A ].QUEUE_ID_A == 0 and
+                if(Slave_Ports_Status_QUEUE_A[ Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A ].QUEUE_ID_A == 0 and
                 //Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].QUEUE_ID_A == 0 and
                 //  Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_TYPE_A == 0 and
-                    Slave_Ports_Status_QUEUE_A[  Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == 0 and
+                    Slave_Ports_Status_QUEUE_A[  Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A ].TASK_TYPE_A == 0 and
                     //Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_PORT_ASSOC_A == 0 and 
                     //  Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].time_seq_id == 0 and 
-                    Slave_Ports_Status_QUEUE_A[ Slave_Ports_ATTR_QUEUE_PEEK_A ].time_seq_id == 0 and
+                    Slave_Ports_Status_QUEUE_A[ Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A ].time_seq_id == 0 and
                     //    Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].time_min_run == 0 ) {
-                    Slave_Ports_Status_QUEUE_A[ Slave_Ports_ATTR_QUEUE_PEEK_A ].time_min_run == 0 ) {
+                    Slave_Ports_Status_QUEUE_A[ Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A ].time_min_run == 0 ) {
                     
                     
                /* todo
@@ -246,7 +252,7 @@ Slave_Ports_Status_QUEUE_STATIC_ID_COUNTER( Slave_Ports_ATTR_QUEUE_COUNT_MAX_A,
                 */
                   #if defined(DEBUG)
                     // if(DEBUG > 6) {
-                                   Serial.print("#166  [DEBUG]  Error with queue [INDEX_CURR]=["); Serial.print(Slave_Ports_ATTR_QUEUE_PEEK_A);
+                                   Serial.print("#166  [DEBUG]  Error with queue [INDEX_CURR]=["); Serial.print(Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A);
                                    Serial.println("]  ");
                              //      }
                     #endif    
@@ -262,43 +268,43 @@ Slave_Ports_Status_QUEUE_STATIC_ID_COUNTER( Slave_Ports_ATTR_QUEUE_COUNT_MAX_A,
                    Serial.println(LCDarray2);
             //        LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
                     */
-                     if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].time_min_run > millis()) {
-                            Serial.print("#182 QUEUE reassign .time_seq_id > millis()  time_seq_id[");     Serial.print( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].time_seq_id); 
+                     if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].time_min_run > millis()) {
+                            Serial.print("#182 QUEUE reassign .time_seq_id > millis()  time_seq_id[");     Serial.print( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].time_seq_id); 
                             Serial.print("]  millis()["); Serial.print(millis());
-                            Serial.print("]  TASK_TYPE_A["); Serial.print(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A);
-                            Serial.print("]  Will wait() to next ["); Serial.print(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].time_seq_id);
-                            Serial.print("]  #["); Serial.print(Slave_Ports_ATTR_QUEUE_PEEK_A);  Serial.print("]  ID["); Serial.print(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].QUEUE_ID_A);  Serial.println("]  ");  
+                            Serial.print("]  TASK_TYPE_A["); Serial.print(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A);
+                            Serial.print("]  Will wait() to next ["); Serial.print(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].time_seq_id);
+                            Serial.print("]  #["); Serial.print(Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A);  Serial.print("]  ID["); Serial.print(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].QUEUE_ID_A);  Serial.println("]  ");  
                             _Slave_Ports_queue__add( Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A , 
-                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A,
-                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_PORT_ASSOC_A,
-                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].time_seq_id,
-                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].time_min_run,
-                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A
+                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A,
+                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_PORT_ASSOC_A,
+                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].time_seq_id,
+                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].time_min_run,
+                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A
                               );
                                Serial.print("[WILL DELETE REC]     millis()["); Serial.print(millis());
-                              Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A]={} ; 
+                              Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A]={} ; //TODO delete by func 
 
 
                         //TODO CALL STORAGE ROUND ROBIN
             
-                     } else if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == TASK_TYPE_T_Slave_Ports_ttl_decrement) {
+                     } else if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == TASK_TYPE_T_Slave_Ports_ttl_decrement) {
                             
-                                      Serial.print("#224 running _Slave_Ports_ttl_decrement = ");     Serial.println( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A); Serial.println("]");     
+                                      Serial.print("#224 running _Slave_Ports_ttl_decrement = ");     Serial.println( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A); Serial.println("]");     
                                       //#include "_Slave_Ports_ttl_decrement.h"
-                                      _Slave_Ports_ttl_decrement_POP(Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,  Slave_Ports_ATTR_QUEUE_PEEK_A ,  Slave_Ports_Status_A ) ;  
-                                    Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A]={} ;  
+                                      _Slave_Ports_ttl_decrement_POP(Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A,  Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A ,  Slave_Ports_Status_A ) ;  
+                                    Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A]={} ;  
                                       //TODO STORAGE
-                     } else if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == TASK_TYPE_T_Slave_Ports_broadcast____) {
-                                      Serial.print("#337 running _Slave_Ports_broadcast = ");     Serial.println( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A); Serial.println("]");     
+                     } else if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == TASK_TYPE_T_Slave_Ports_broadcast____) {
+                                      Serial.print("#337 running _Slave_Ports_broadcast = ");     Serial.println( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A); Serial.println("]");     
                                      // #include "_Slave_Ports_ttl_decrement.h"
                                      _Slave_Ports_broadcast_POP(                                     
                                                  Slave_Ports_Status_QUEUE_A, 
                                                  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
-                                                 Slave_Ports_ATTR_QUEUE_COUNT_A, 
-                                                 Slave_Ports_ATTR_QUEUE_PEEK_A, 
-                                                 Slave_Ports_ATTR_QUEUE_FRONT_A, 
-                                                 Slave_Ports_ATTR_QUEUE_BACK_A,
-                                                 Slave_Ports_ATTR_QUEUE_PEEK_A,
+                                                 Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A, 
+                                                 Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A, 
+                                                 Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A, 
+                                                 Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A,
+                                                 Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A,
                                                  LCDtim,   
                                               Slave_Ports_Status_A ,
                                               Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
@@ -318,11 +324,11 @@ Slave_Ports_Status_QUEUE_STATIC_ID_COUNTER( Slave_Ports_ATTR_QUEUE_COUNT_MAX_A,
                                             DISPLAY_PHYSICAL_CHAR_A
                                             */
                                             ) ;
-                                      Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A]={} ;    //todo storage
-                     } else if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == TASK_TYPE_T_DISPLAY_queue_pop________ ) {
-                       Serial.print("#212 DISPLAY TASK_TYPE_A[");     Serial.print( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A);
+                                      Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A]={} ;    //todo storage
+                     } else if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == TASK_TYPE_T_DISPLAY_queue_pop________ ) {
+                       Serial.print("#212 DISPLAY TASK_TYPE_A[");     Serial.print( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A);
                              Serial.println("] ");   
-                        _Slave_Ports_queue_task_type_DESC(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A) ;
+                        _Slave_Ports_queue_task_type_DESC(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A) ;
                      
                             
                                // #include "_DISPLAY_queue_pop_func.h"
@@ -330,27 +336,27 @@ Slave_Ports_Status_QUEUE_STATIC_ID_COUNTER( Slave_Ports_ATTR_QUEUE_COUNT_MAX_A,
                                                     DISPLAY__print( DISPLAY_A ,
                                                     DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
                                                     DISPLAY_PHYSICAL_CHAR_A, 
-                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].DISPLAY_pos_seq_A,
-                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].DISPLAY_array16_A,
-                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].DISPLAY_TARGET_A,
-                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].time_seq_id_A,
-                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].time_min_run_A,
+                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].DISPLAY_pos_seq_A,
+                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].DISPLAY_array16_A,
+                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].DISPLAY_TARGET_A,
+                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].time_seq_id_A,
+                                                    DISPLAY_A[Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A].time_min_run_A,
                                                     //queue
                                                     Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
-                                                    Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A,
-                                                    Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_PORT_ASSOC_A);
+                                                    Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A,
+                                                    Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_PORT_ASSOC_A);
                                                                            
-                                        Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A]={} ;   //todo storage
-                                        Serial.print("#201 DELETED DISPLAY TASK_TYPE_A #[");     Serial.print( Slave_Ports_ATTR_QUEUE_PEEK_A);
+                                        Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A]={} ;   //todo storage
+                                        Serial.print("#201 DELETED DISPLAY TASK_TYPE_A #[");     Serial.print( Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A);
                                         
                                         
-                      } else if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == TASK_TYPE_T_Slave_Ports_set_I2C______) {
-                                      Serial.print("#221 running TASK_TYPE_T_Slave_Ports_set_I2C______ = ");     Serial.println( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A); Serial.println("]");     
+                      } else if(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A == TASK_TYPE_T_Slave_Ports_set_I2C______) {
+                                      Serial.print("#221 running TASK_TYPE_T_Slave_Ports_set_I2C______ = ");     Serial.println( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A); Serial.println("]");     
                                       //#include "_Slave_Ports_ttl_decrement.h"
                                       _Slave_Ports_I2C_POP(
                                         //Slave_Ports_Status_QUEUE_A, _Slave_Ports_queue_pop ,  Slave_Ports_Status_A 
                                          Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
-                                         Slave_Ports_ATTR_QUEUE_PEEK_A ,  
+                                         Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A ,  
                                          Slave_Ports_Status_A,
                                           Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
                                            //display
@@ -360,27 +366,27 @@ Slave_Ports_Status_QUEUE_STATIC_ID_COUNTER( Slave_Ports_ATTR_QUEUE_COUNT_MAX_A,
                                                  DISPLAY_pos_seq_A_NEXT, //initial set
                                                  "#233 Setting I2C" , //DISPLAY_array16_A,
                                                   DISPLAY_TARGET_ANY , //DISPLAY_TARGET_A, - setting
-                                                  Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].time_seq_id, 
-                                                  Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].time_min_run,
+                                                  Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].time_seq_id, 
+                                                  Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].time_min_run,
                                              //tasks
-                                               Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A,
-                                               Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_PORT_ASSOC_A,
+                                               Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A,
+                                               Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_PORT_ASSOC_A,
                                                 Adafruit_PWMServoDriver_A
                                         ) ;  
-                                         Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A]={} ;   //todo storage
+                                         Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A]={} ;   //todo storage
                      } else {
 
-                             Serial.print("$177 Error unsupported type TASK_TYPE_A[");     Serial.print( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A);
-                             _Slave_Ports_queue_task_type_DESC(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A) ;
+                             Serial.print("$177 Error unsupported type TASK_TYPE_A[");     Serial.print( Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A);
+                             _Slave_Ports_queue_task_type_DESC(Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A) ;
                              Serial.println("] REASSIGN NEXT QUEUE FOR FURTHER ACTION");     
                              _Slave_Ports_queue__add( Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
-                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_TYPE_A,
-                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].TASK_PORT_ASSOC_A,
+                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_TYPE_A,
+                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].TASK_PORT_ASSOC_A,
                                 millis(), 
                                 millis() +  ARDUINO_time_seq_id_A_INCREMENT ,
-                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A
+                                Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A].DISPLAY_ARDUINO_ARRAY_INDEX_A
                               );
-                              Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_PEEK_A]={} ;  
+                              Slave_Ports_Status_QUEUE_A[Slave_Ports_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A]={} ;  
                               //TODO STORAGE
                      }
 

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

@@ -150,7 +150,8 @@ const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__TO_INITIALIZE
 const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__INITIALIZED      = 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__READY_TO_QUERY   = B00001000 ;
+const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__INCREMENTED      = B00001000 ; //same as READY_TO_QUERY  
 const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__LOCK             = B00010000 ;  //use  typedef ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ARRAY_INDEX_NEXT_LOCK_A
 
 const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__HAS_ERRORS       = B00100000 ; 
@@ -170,6 +171,9 @@ struct ARDUINO_ATTR_ARRAY_S {
     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 ;
+    ARDUINO_ARRAY_ATTR_QUEUE_FRONT_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A ;
+    ARDUINO_ARRAY_ATTR_QUEUE_PEEK_T ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A; 
+ 
 };
 
 typedef ARDUINO_ATTR_ARRAY_S ARDUINO_ATTR_ARRAY_T;

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

@@ -65,6 +65,9 @@ void ARDUINO_ATTR_ARRAY_S__init(  //to init attr list table[1]
                     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_ARRAY_ATTR_QUEUE_FRONT_A  = ARDUINO_ARRAY_ATTR_QUEUE_FRONT_INIT ;
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A  = ARDUINO_ARRAY_ATTR_QUEUE_PEEK_INIT ;
+
                     ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A  = ARDUINO_QUEUE_FLAG_INIT | ARDUINO_QUEUE_FLAG_A ; Serial.print(" [?78]  [ARDUINO_QUEUE_FLAG_A] ?"); 
                                                                                                                                         Serial.print(ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A , BIN); Serial.print("]   ");
                     ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A = ARDUINO_ARRAY_ATTR_QUEUE_COUNT_INIT; //kolejka elementow
@@ -182,7 +185,6 @@ void ARDUINO_ATTR_ARRAY_S__display(  //to init attr list table[1]
 
 
 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 ;
     
@@ -197,7 +199,8 @@ void ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_basic_rotate(ARDUINO_ATTR_ARRAY_T &ARDUINO
     }
 
 
-ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(  //to maintain limit and set new indexes
+    //ARDUINO_ARRAY_INDEX_NEXT_T 
+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, bez semnsiu fagi
     ARDUINO_ARRAY_time_min_run_MIN_T ARDUINO_ARRAY_time_min_run_MIN_A  //to provide index pointer to last
@@ -213,11 +216,11 @@ ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(  //to mainta
           if(ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A == ARDUINO_ARRAY_COUNT_T_INIT) {
             Serial.print(" [ARDUINO_ARRAY_COUNT_A]  [NOT SET ERROR]  [IGNORE] ");
           }
-             //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_FIRST ;
+             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_FIRST ;
              //ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A //NOT CHANGED
              //ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A// NOT CHANGED
-          //   ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A = ARDUINO_ARRAY_INDEX_FIRST ;
+             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_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A ;
@@ -239,10 +242,12 @@ ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(  //to mainta
 
 
 
-ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T  ARDUINO_ARRAY_ATTR_QUEUE_add_distance(
-         ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A , 
-         ARDUINO_ARRAY_INDEX_NEXT_T &ARDUINO_ARRAY_INDEX_NEXT_A,
-         ARDUINO_ARRAY_INDEX_T &ARDUINO_ARRAY_INDEX_A) {
+//    ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T  
+void ARDUINO_ARRAY_ATTR_QUEUE_add_distance(
+         ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A //, 
+        //    ARDUINO_ARRAY_INDEX_NEXT_T &ARDUINO_ARRAY_INDEX_NEXT_A,
+        // ARDUINO_ARRAY_INDEX_T &ARDUINO_ARRAY_INDEX_A
+         ) {
     //int INDEX_TO_POP ;
     int Q1 ;
     int Q2;
@@ -284,13 +289,14 @@ ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T  ARDUINO_ARRAY_ATTR_QUEUE_add_distance(
                     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 ;
+                    ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A =  Q2 ;
                 
-                   ARDUINO_ARRAY_INDEX_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_A = 
+                   /*ARDUINO_ARRAY_INDEX_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_A = 
                    ARDUINO_ARRAY_INDEX_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A =
                    ARDUINO_ARRAY_INDEX_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A =
                    ARDUINO_ARRAY_INDEX_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A =
                    ARDUINO_ARRAY_INDEX_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A =  //TODO
-                   
+                   */
                     
                      #if  defined(DEBUG_QUEUE)
                           Serial.println("[#1470] ARDUINO_ARRAY_ATTR_QUEUE_distance [USING [QUEUE_COUNT]]");
@@ -309,8 +315,9 @@ ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T  ARDUINO_ARRAY_ATTR_QUEUE_add_distance(
                  } 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 ;
-                     
-                     #ifd defined(DEBUG_QUEUE)
+                     ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A =  Q1 ; //TODO CHECK
+                     ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A =  Q1 ; //TODO CHECK
+                     #if defined(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)....");
@@ -334,7 +341,8 @@ ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T  ARDUINO_ARRAY_ATTR_QUEUE_add_distance(
                             #endif
                             
                        
-                       ARDUINO_ARRAY_INDEX_NEXT_A  =   ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(  //to maintain limit and set new indexes
+                       //ARDUINO_ARRAY_INDEX_NEXT_A  =   
+                       ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(  //to maintain limit and set new indexes
                                          ARDUINO_ATTR_ARRAY_A ,
                                          //ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A,
                                          0  //to provide index pointer to last
@@ -384,20 +392,16 @@ void ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE(
                        #endif
                         //should rotate
                         ARDUINO_ATTR_ARRAY_S__INDEX_NEXT_rotate(ARDUINO_ATTR_ARRAY_A, 
-                        ARDUINO_QUEUE_FLAG_A ,
-                        millis());
+                            //ARDUINO_QUEUE_FLAG_A 
+                            millis()); //todo element value
                         //check if we not corrupt ARDUINO_ARRAY_ATTR_QUEUE_BACK_A
-                        
-                } else {
-                
-                
-                                        
+                        ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A = ARDUINO_ARRAY_ATTR_INDEX__INCREMENTED ;
+                } 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 ;
-                            
-    
+                         //   ARDUINO_ATTR_ARRAY_A.ARDUINO_QUEUE_FLAG_A = ARDUINO_QUEUE_FLAG_A ;
+                            ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A = ARDUINO_ARRAY_ATTR_INDEX__INCREMENTED ;
                  #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);
@@ -419,20 +423,15 @@ void ARDUINO_ATTR_ARRAY_S__commit_added_element_QUEUE(
     
 }
 
-ARDUINO_ARRAY_ATTR_QUEUE_T ARDUINO_ARRAY_ATTR_QUEUE(
- ARDUINO_ATTR_ARRAY_S &ARDUINO_ATTR_ARRAY_A
- ) {
-    /* ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_A;
-         ARDUINO_ARRAY_ATTR_QUEUE_COUNT_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A ;
-         ARDUINO_ARRAY_ATTR_QUEUE_PEEK_T ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A ;
-         ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ;
-         ARDUINO_ARRAY_ATTR_QUEUE_FRONT_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A;*/
-        // ARDUINO_ARRAY_ATTR_QUEUE_T ARDUINO_ARRAY_ATTR_QUEUE_A =
-        // ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A = 
-        // ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A =
-        // ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A
-        // ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A
-}
+ARDUINO_ARRAY_ATTR_QUEUE_T ARDUINO_ARRAY_ATTR_QUEUE(ARDUINO_ATTR_ARRAY_T &ARDUINO_ATTR_ARRAY_A) {
+        ARDUINO_ARRAY_ATTR_QUEUE_T ARDUINO_ARRAY_ATTR_QUEUE_A = {} ;
+         ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_A = ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_LIMIT_A ;
+         ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A = ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A ;   //  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A ;
+         ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A = ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ;
+         ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A =  ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A;
+         ARDUINO_ARRAY_ATTR_QUEUE_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A =  ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A;
+         return  ARDUINO_ARRAY_ATTR_QUEUE_A ;
+        }
 
 
 
@@ -445,8 +444,8 @@ ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_CURRENT(
 
 
 ARDUINO_ARRAY_INDEX_NEXT_LOCK_T ARDUINO_ARRAY_INDEX_NEXT_LOCK( 
-        ARDUINO_ATTR_ARRAY_S &ARDUINO_ATTR_ARRAY_A, 
-        ARDUINO_ARRAY_INDEX_T &ARDUINO_ARRAY_INDEX_A //,
+        ARDUINO_ATTR_ARRAY_S &ARDUINO_ATTR_ARRAY_A//, 
+        //ARDUINO_ARRAY_INDEX_T &ARDUINO_ARRAY_INDEX_A //,
         //ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T &ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A
         //ARDUINO_ARRAY_INDEX_NEXT_T &ARDUINO_ARRAY_INDEX_NEXT_LOCK_A,
         //Slave_Ports_ATTR_QUEUE_COUNT_MAX_A
@@ -471,13 +470,13 @@ ARDUINO_ARRAY_INDEX_NEXT_LOCK_T ARDUINO_ARRAY_INDEX_NEXT_LOCK(
             
                                 if( ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A & ARDUINO_ARRAY_ATTR_INDEX__LOCK) {
                                               #if defined(DEBUG) || defined(DISABLE_LOOP) || defined(DEBUG_QUEUE) || defined(DEBUG_STRUCT_INIT)
-                                                    Serial.print(" &[ARDUINO_ARRAY_ATTR_INDEX__LOCK] [LOCKED]  ");       
+                                                    Serial.print(" &[ARDUINO_ARRAY_ATTR_INDEX__LOCK] [LOCKED] [FALSE] ");       
                                                 #endif 
-                                                ARDUINO_ARRAY_INDEX_NEXT_LOCK_A = NULL ; 
+                                               // ARDUINO_ARRAY_INDEX_NEXT_LOCK_A = NULL ; 
                                                 return false;
                                   } else  if( ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A & ARDUINO_ARRAY_ATTR_INDEX__TO_COMMIT) {
                                                #if defined(DEBUG) || defined(DISABLE_LOOP) || defined(DEBUG_QUEUE) || defined(DEBUG_STRUCT_INIT)
-                                                    Serial.print(" =[ARDUINO_ARRAY_ATTR_INDEX__TO_COMMIT][OK] ");       
+                                                    Serial.print(" =[ARDUINO_ARRAY_ATTR_INDEX__TO_COMMIT] [FALSE] ");       
                                                 #endif 
                                                  return false;
                                                 
@@ -485,9 +484,10 @@ ARDUINO_ARRAY_INDEX_NEXT_LOCK_T ARDUINO_ARRAY_INDEX_NEXT_LOCK(
                                                #if defined(DEBUG) || defined(DISABLE_LOOP) || defined(DEBUG_QUEUE) || defined(DEBUG_STRUCT_INIT)
                                                     Serial.print(" =[ARDUINO_ARRAY_ATTR_INDEX__TO_INCREMENT][OK]  -> [ARDUINO_ARRAY_ATTR_QUEUE_add_distance] ");       
                                                 #endif 
-                                        ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A = ARDUINO_ARRAY_ATTR_QUEUE_add_distance(ARDUINO_ATTR_ARRAY_A , 
-                                                ARDUINO_QUEUE_ELEMENT_FLAG_STANDARD , ARDUINO_ARRAY_INDEX_NEXT_A, ARDUINO_ARRAY_INDEX_A) ;
-                                          
+                                        //ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A = 
+                                        ARDUINO_ARRAY_ATTR_QUEUE_add_distance(ARDUINO_ATTR_ARRAY_A ) ;//,  ARDUINO_QUEUE_ELEMENT_FLAG_STANDARD , ARDUINO_ARRAY_INDEX_NEXT_A, ARDUINO_ARRAY_INDEX_A) ;
+                                        ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A =  ARDUINO_ARRAY_ATTR_INDEX__LOCK ;
+                                         return  ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A ;
                                    }
                     
                           

+ 118 - 605
SE/stuff/P5_Automation_can-dev-res/doc/P5_Automation_can-dev.graphml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
-  <!--Created by yEd 3.18.1-->
+  <!--Created by yEd 3.20-->
   <key attr.name="Description" attr.type="string" for="graph" id="d0"/>
   <key for="port" id="d1" yfiles.type="portgraphics"/>
   <key for="port" id="d2" yfiles.type="portgeometry"/>
@@ -13,7 +13,7 @@
   <key attr.name="description" attr.type="string" for="edge" id="d9"/>
   <key for="edge" id="d10" yfiles.type="edgegraphics"/>
   <graph edgedefault="directed" id="G">
-    <data key="d0"/>
+    <data key="d0" xml:space="preserve"/>
     <node id="n0" yfiles.foldertype="group">
       <data key="d4" xml:space="preserve"/>
       <data key="d5"/>
@@ -21,115 +21,17 @@
         <y:ProxyAutoBoundsNode>
           <y:Realizers active="0">
             <y:GroupNode>
-              <y:Geometry height="64.0" width="155.0" x="877.0" y="558.0"/>
-              <y:Fill color="#F2F0D8" transparent="false"/>
-              <y:BorderStyle color="#000000" type="line" width="1.0"/>
-              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#B7B69E" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="155.0" x="0.0" xml:space="preserve" y="0.0">1602_LCD</y:NodeLabel>
-              <y:Shape type="rectangle"/>
-              <y:DropShadow color="#D2D2D2" offsetX="4" offsetY="4"/>
-              <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
-              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
-              <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-            </y:GroupNode>
-            <y:GroupNode>
-              <y:Geometry height="50.0" width="50.0" x="927.0" y="181.0"/>
-              <y:Fill color="#F2F0D8" transparent="false"/>
-              <y:BorderStyle color="#000000" type="line" width="1.0"/>
-              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#B7B69E" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">3</y:NodeLabel>
-              <y:Shape type="rectangle"/>
-              <y:DropShadow color="#D2D2D2" offsetX="4" offsetY="4"/>
-              <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
-              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
-              <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-            </y:GroupNode>
-          </y:Realizers>
-        </y:ProxyAutoBoundsNode>
-      </data>
-      <graph edgedefault="directed" id="n0:"/>
-    </node>
-    <node id="n1" yfiles.foldertype="group">
-      <data key="d4" xml:space="preserve"/>
-      <data key="d5"/>
-      <data key="d6">
-        <y:ProxyAutoBoundsNode>
-          <y:Realizers active="0">
-            <y:GroupNode>
-              <y:Geometry height="134.666015625" width="123.0" x="704.0" y="558.0"/>
-              <y:Fill color="#F2F0D8" transparent="false"/>
-              <y:BorderStyle color="#000000" type="line" width="1.0"/>
-              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#B7B69E" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="123.0" x="0.0" xml:space="preserve" y="0.0">ATMEGA</y:NodeLabel>
-              <y:Shape type="rectangle"/>
-              <y:DropShadow color="#D2D2D2" offsetX="4" offsetY="4"/>
-              <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
-              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
-              <y:BorderInsets bottom="0" bottomF="0.0" left="1" leftF="1.0" right="1" rightF="1.0" top="0" topF="0.0"/>
-            </y:GroupNode>
-            <y:GroupNode>
-              <y:Geometry height="50.0" width="50.0" x="156.0" y="163.0"/>
-              <y:Fill color="#F2F0D8" transparent="false"/>
-              <y:BorderStyle color="#000000" type="line" width="1.0"/>
-              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#B7B69E" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">3</y:NodeLabel>
-              <y:Shape type="rectangle"/>
-              <y:DropShadow color="#D2D2D2" offsetX="4" offsetY="4"/>
-              <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
-              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
-              <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-            </y:GroupNode>
-          </y:Realizers>
-        </y:ProxyAutoBoundsNode>
-      </data>
-      <graph edgedefault="directed" id="n1:">
-        <node id="n1::n0" yfiles.foldertype="group">
-          <data key="d4" xml:space="preserve"/>
-          <data key="d5"/>
-          <data key="d6">
-            <y:ProxyAutoBoundsNode>
-              <y:Realizers active="0">
-                <y:GroupNode>
-                  <y:Geometry height="83.0" width="91.0" x="720.0" y="594.666015625"/>
-                  <y:Fill color="#CAECFF84" transparent="false"/>
-                  <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
-                  <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="91.0" x="0.0" xml:space="preserve" y="0.0">_PCINT</y:NodeLabel>
-                  <y:Shape type="roundrectangle"/>
-                  <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
-                  <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
-                  <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-                </y:GroupNode>
-                <y:GroupNode>
-                  <y:Geometry height="50.0" width="50.0" x="262.0" y="261.0"/>
-                  <y:Fill color="#CAECFF84" transparent="false"/>
-                  <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
-                  <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">2</y:NodeLabel>
-                  <y:Shape type="roundrectangle"/>
-                  <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
-                  <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
-                  <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-                </y:GroupNode>
-              </y:Realizers>
-            </y:ProxyAutoBoundsNode>
-          </data>
-          <graph edgedefault="directed" id="n1::n0:"/>
-        </node>
-      </graph>
-    </node>
-    <node id="n2" yfiles.foldertype="group">
-      <data key="d4" xml:space="preserve"/>
-      <data key="d5"/>
-      <data key="d6">
-        <y:ProxyAutoBoundsNode>
-          <y:Realizers active="0">
-            <y:GroupNode>
-              <y:Geometry height="171.0" width="208.0" x="450.0" y="558.0"/>
+              <y:Geometry height="403.6427812757149" width="571.4121822784651" x="102.0727830960135" y="0.0"/>
               <y:Fill color="#CAECFF84" transparent="false"/>
               <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
-              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="208.0" x="0.0" xml:space="preserve" y="0.0">_Slave_Ports[]</y:NodeLabel>
+              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="571.4121822784651" x="0.0" xml:space="preserve" y="0.0">ARDUINO_ARRAY_INDEX_NEXT_LOCK</y:NodeLabel>
               <y:Shape type="roundrectangle"/>
               <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
               <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
               <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
             </y:GroupNode>
             <y:GroupNode>
-              <y:Geometry height="50.0" width="50.0" x="145.0" y="606.0"/>
+              <y:Geometry height="50.0" width="50.0" x="125.18188736681896" y="697.3150684931506"/>
               <y:Fill color="#CAECFF84" transparent="false"/>
               <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
               <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">2</y:NodeLabel>
@@ -141,523 +43,134 @@
           </y:Realizers>
         </y:ProxyAutoBoundsNode>
       </data>
-      <graph edgedefault="directed" id="n2:"/>
-    </node>
-    <node id="n3" yfiles.foldertype="group">
-      <data key="d5"/>
-      <data key="d6">
-        <y:TableNode configuration="YED_TABLE_NODE">
-          <y:Geometry height="512.0859375" width="202.0" x="362.0" y="0.0"/>
-          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
-          <y:BorderStyle color="#000000" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="102.47412109375" x="49.762939453125" xml:space="preserve" y="4.0">_Slave_Ports[]</y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="57.759765625" x="3.0" xml:space="preserve" y="38.1201171875">_Protocol<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="57.900390625" x="3.0" xml:space="preserve" y="101.3212890625">_Slave_ID<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="3.0" xml:space="preserve" y="154.4150390625">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="3.0" xml:space="preserve" y="205.6865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="3.0" xml:space="preserve" y="255.6865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_4" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="3.0" xml:space="preserve" y="382.1865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_5" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:StyleProperties>
-            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
-            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
-          </y:StyleProperties>
-          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
-          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:BorderInsets bottom="385" bottomF="384.953125" left="15" leftF="15.0" right="15" rightF="15.0" top="79" topF="79.0"/>
-          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
-            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
-            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
-            <y:Columns>
-              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
-                <y:Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
-              </y:Column>
-            </y:Columns>
-            <y:Rows>
-              <y:Row height="74.0" id="row_0" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="52.54296875" id="row_1" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="52.54296875" id="row_2" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="50.0" id="row_3" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="50.0" id="row_4" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="203.0" id="row_5" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-            </y:Rows>
-          </y:Table>
-        </y:TableNode>
-      </data>
-      <graph edgedefault="directed" id="n3:">
-        <node id="n3::n0">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="148.0" x="401.0" y="110.56640625"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="57.900390625" x="45.0498046875" xml:space="preserve" y="-1.56640625">_Slave_ID<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-      </graph>
-    </node>
-    <node id="n4" yfiles.foldertype="group">
-      <data key="d5"/>
-      <data key="d6">
-        <y:TableNode configuration="YED_TABLE_NODE">
-          <y:Geometry height="512.0859375" width="316.0" x="0.0" y="0.0"/>
-          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
-          <y:BorderStyle color="#000000" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="268.6826171875" x="23.65869140625" xml:space="preserve" y="4.0">_Slave_Ports_queue_task_type_LIST[]</y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="73.2060546875">0<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="124.4775390625">1<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="177.0205078125">2<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="228.2919921875">3<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="278.2919921875">4<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_4" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="404.7919921875">5<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_5" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="25.4921875" x="51.25390625" xml:space="preserve" y="33.0">hex<y:LabelModel><y:ColumnNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:ColumnNodeLabelModelParameter id="column_0" inside="true" verticalPosition="0.0"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="30.501953125" x="128.7490234375" xml:space="preserve" y="33.0">desc<y:LabelModel><y:ColumnNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:ColumnNodeLabelModelParameter id="column_1" inside="true" verticalPosition="0.0"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="156.0" y="254.04296875">
-            <y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
-          <y:StyleProperties>
-            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
-            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
-          </y:StyleProperties>
-          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
-          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:BorderInsets bottom="180" bottomF="179.8671875" left="15" leftF="15.0" right="15" rightF="15.0" top="5" topF="5.0"/>
-          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
-            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="24.0"/>
-            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
-            <y:Columns>
-              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
-                <y:Insets bottom="0.0" left="0.0" right="0.0" top="24.0"/>
-              </y:Column>
-              <y:Column id="column_1" minimumWidth="80.0" width="80.0">
-                <y:Insets bottom="0.0" left="0.0" right="0.0" top="24.0"/>
-              </y:Column>
-            </y:Columns>
-            <y:Rows>
-              <y:Row height="50.0" id="row_0" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="52.54296875" id="row_1" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="52.54296875" id="row_2" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="50.0" id="row_3" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="50.0" id="row_4" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="203.0" id="row_5" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-            </y:Rows>
-          </y:Table>
-        </y:TableNode>
-      </data>
-      <graph edgedefault="directed" id="n4:">
-        <node id="n4::n0">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="22.0" width="48.0" x="39.0" y="59.0"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="1.93359375">0x00<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n1">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="22.0" width="48.0" x="39.0" y="109.0"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="1.93359375">0x01<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n2">
+      <graph edgedefault="directed" id="n0:">
+        <node id="n0::n0">
           <data key="d5"/>
           <data key="d6">
             <y:ShapeNode>
-              <y:Geometry height="15.0" width="48.0" x="39.0" y="163.109375"/>
+              <y:Geometry height="26.306243341383833" width="212.84095460149962" x="117.0727830960135" y="180.998046875"/>
               <y:Fill color="#FFCC00" transparent="false"/>
               <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="-1.56640625">0x02<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="155.34765625" x="28.74664917574981" xml:space="preserve" y="4.086715420691917">ARDUINO_ATTR_ARRAY_A<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
               <y:Shape type="hexagon"/>
             </y:ShapeNode>
           </data>
         </node>
-        <node id="n4::n3">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="48.0" x="39.0" y="215.65234375"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="-1.56640625">0x03<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n4">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="48.0" x="39.0" y="265.65234375"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="-1.56640625">0x04<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n5">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="48.0" x="39.0" y="315.65234375"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="-1.56640625">0x05<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n6">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="104.0" x="119.0" y="62.5"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="72.044921875" x="15.9775390625" xml:space="preserve" y="-1.56640625">_NOT_USED<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n7">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="182.0" x="119.0" y="112.5"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="161.224609375" x="10.3876953125" xml:space="preserve" y="-1.56640625">_Slave_Ports_ttl_decrement<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n8">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="182.0" x="119.0" y="163.109375"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="160.66796875" x="10.666015625" xml:space="preserve" y="-1.56640625">request_confirm_Exp_state<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n9">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="182.0" x="119.0" y="215.65234375"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="162.37890625" x="9.810546875" xml:space="preserve" y="-1.56640625">request_set_new_Exp_state<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n10">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="182.0" x="119.0" y="265.65234375"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="138.3671875" x="21.81640625" xml:space="preserve" y="-1.56640625">_Slave_Ports_broadcast<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-        <node id="n4::n11">
-          <data key="d5"/>
-          <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="15.0" width="182.0" x="119.0" y="315.65234375"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="123.61328125" x="29.193359375" xml:space="preserve" y="-1.56640625">_Slave_Ports_set_I2C<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
-          </data>
-        </node>
-      </graph>
-    </node>
-    <node id="n5" yfiles.foldertype="group">
-      <data key="d5"/>
-      <data key="d6">
-        <y:TableNode configuration="YED_TABLE_NODE">
-          <y:Geometry height="512.0859375" width="104.0" x="0.0" y="558.0"/>
-          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
-          <y:BorderStyle color="#000000" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="101.69775390625" x="1.151123046875" xml:space="preserve" y="4.0">ROTTARY_SW</y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.54296875" x="3.0" xml:space="preserve" y="45.728515625">Lane 0<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.54296875" x="3.0" xml:space="preserve" y="286.771484375">Lane 1<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:StyleProperties>
-            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
-            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
-          </y:StyleProperties>
-          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
-          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
-            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
-            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
-            <y:Columns>
-              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
-                <y:Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
-              </y:Column>
-            </y:Columns>
-            <y:Rows>
-              <y:Row height="74.0" id="row_0" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="408.0859375" id="row_1" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-            </y:Rows>
-          </y:Table>
-        </y:TableNode>
-      </data>
-      <graph edgedefault="directed" id="n5:"/>
-    </node>
-    <node id="n6" yfiles.foldertype="group">
-      <data key="d5"/>
-      <data key="d6">
-        <y:TableNode configuration="YED_TABLE_NODE">
-          <y:Geometry height="512.0859375" width="104.0" x="150.0" y="558.0"/>
-          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
-          <y:BorderStyle color="#000000" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="103.47021484375" x="0.264892578125" xml:space="preserve" y="4.0">TFT_ILI9163C</y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="35.76953125" x="3.0" xml:space="preserve" y="49.115234375">L0,L1<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="35.76953125" x="3.0" xml:space="preserve" y="290.158203125">L2,L3<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:StyleProperties>
-            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
-            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
-          </y:StyleProperties>
-          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
-          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
-            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
-            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
-            <y:Columns>
-              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
-                <y:Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
-              </y:Column>
-            </y:Columns>
-            <y:Rows>
-              <y:Row height="74.0" id="row_0" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="408.0859375" id="row_1" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-            </y:Rows>
-          </y:Table>
-        </y:TableNode>
-      </data>
-      <graph edgedefault="directed" id="n6:"/>
-    </node>
-    <node id="n7" yfiles.foldertype="group">
-      <data key="d5"/>
-      <data key="d6">
-        <y:TableNode configuration="YED_TABLE_NODE">
-          <y:Geometry height="512.0859375" width="104.0" x="300.0" y="558.0"/>
-          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
-          <y:BorderStyle color="#000000" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="79.05126953125" x="12.474365234375" xml:space="preserve" y="4.0">1602_LCD</y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="17.986328125" x="3.0" xml:space="preserve" y="58.0068359375">L0<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="17.986328125" x="3.0" xml:space="preserve" y="299.0498046875">L1<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:StyleProperties>
-            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
-            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
-            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
-            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
-            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
-          </y:StyleProperties>
-          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
-          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
-            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
-            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
-            <y:Columns>
-              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
-                <y:Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
-              </y:Column>
-            </y:Columns>
-            <y:Rows>
-              <y:Row height="74.0" id="row_0" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-              <y:Row height="408.0859375" id="row_1" minimumHeight="50.0">
-                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
-              </y:Row>
-            </y:Rows>
-          </y:Table>
-        </y:TableNode>
-      </data>
-      <graph edgedefault="directed" id="n7:"/>
-    </node>
-    <node id="n8" yfiles.foldertype="group">
-      <data key="d5"/>
-      <data key="d6">
-        <y:TableNode configuration="com.yworks.bpmn.Pool">
-          <y:Geometry height="512.0859375" width="181.62109375" x="834.37890625" y="0.0"/>
-          <y:Fill color="#FFF2BC" color2="#D4D4D4CC" transparent="false"/>
-          <y:BorderStyle color="#000000" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="l" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="147.4521484375" x="4.0" xml:space="preserve" y="182.31689453125">_CAN_MSG_STRUCT</y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="57.900390625" x="33.0" xml:space="preserve" y="33.0498046875">_Slave_ID<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.54296875" x="33.0" xml:space="preserve" y="109.0">Lane 2<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.54296875" x="33.0" xml:space="preserve" y="161.54296875">Lane 3<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="33.0" xml:space="preserve" y="205.6865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="33.0" xml:space="preserve" y="355.6865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_4" inside="true"/></y:ModelParameter></y:NodeLabel>
-          <y:StyleProperties>
-            <y:Property name="y.view.tabular.TableNodePainter.ALTERNATE_ROW_STYLE">
-              <y:SimpleStyle fillColor="#474A4340" lineColor="#000000" lineType="line" lineWidth="1.0"/>
-            </y:Property>
-            <y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.line.color" value="#000000"/>
-            <y:Property name="y.view.tabular.TableNodePainter.ALTERNATE_COLUMN_SELECTION_STYLE">
-              <y:SimpleStyle fillColor="#474A4380" lineColor="#000000" lineType="line" lineWidth="3.0"/>
-            </y:Property>
-            <y:Property name="y.view.tabular.TableNodePainter.ALTERNATE_ROW_SELECTION_STYLE">
-              <y:SimpleStyle fillColor="#474A4380" lineColor="#000000" lineType="line" lineWidth="3.0"/>
-            </y:Property>
-            <y:Property class="java.awt.Color" name="POOL_LANE_COLOR_ALTERNATING" value="#ffffff"/>
-            <y:Property class="java.awt.Color" name="POOL_LANE_COLOR_MAIN" value="#ffffff"/>
-            <y:Property class="java.lang.String" name="POOL_LANE_STYLE" value="LANE_STYLE_COLUMNS"/>
-            <y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill2" value="#d4d4d4cc"/>
-            <y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill" value="#ffffffe6"/>
-            <y:Property class="com.yworks.yfiles.bpmn.view.BPMNTypeEnum" name="com.yworks.bpmn.type" value="POOL_TYPE_LANE"/>
-            <y:Property name="y.view.tabular.TableNodePainter.ALTERNATE_COLUMN_STYLE">
-              <y:SimpleStyle fillColor="#474A4340" lineColor="#000000" lineType="line" lineWidth="1.0"/>
-            </y:Property>
-          </y:StyleProperties>
-          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
-          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
-          <y:BorderInsets bottom="318" bottomF="317.54296875" left="30" leftF="29.62109375" right="0" rightF="0.0" top="142" topF="141.54296875"/>
-          <y:Table autoResizeTable="true" defaultColumnWidth="360.0" defaultMinimumColumnWidth="30.0" defaultMinimumRowHeight="30.0" defaultRowHeight="107.0">
-            <y:DefaultColumnInsets bottom="3.0" left="3.0" right="3.0" top="20.0"/>
-            <y:DefaultRowInsets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
-            <y:Insets bottom="0.0" left="30.0" right="0.0" top="0.0"/>
-            <y:Columns>
-              <y:Column id="column_0" minimumWidth="30.0" width="128.62109375">
-                <y:Insets bottom="3.0" left="3.0" right="3.0" top="20.0"/>
-              </y:Column>
-            </y:Columns>
-            <y:Rows>
-              <y:Row height="84.0" id="row_0" minimumHeight="52.54296875">
-                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
-              </y:Row>
-              <y:Row height="52.54296875" id="row_1" minimumHeight="52.54296875">
-                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
-              </y:Row>
-              <y:Row height="52.54296875" id="row_2" minimumHeight="52.54296875">
-                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
-              </y:Row>
-              <y:Row height="50.0" id="row_3" minimumHeight="30.0">
-                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
-              </y:Row>
-              <y:Row height="250.0" id="row_4" minimumHeight="30.0">
-                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
-              </y:Row>
-            </y:Rows>
-          </y:Table>
-        </y:TableNode>
-      </data>
-      <graph edgedefault="directed" id="n8:">
-        <node id="n8::n0">
+        <node id="n0::n1" yfiles.foldertype="group">
+          <data key="d4" xml:space="preserve"/>
           <data key="d5"/>
           <data key="d6">
-            <y:ShapeNode>
-              <y:Geometry height="30.0" width="99.0" x="914.0" y="161.54296875"/>
-              <y:Fill color="#FFCC00" transparent="false"/>
-              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
-              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="59.2421875" x="19.87890625" xml:space="preserve" y="5.93359375">task_type<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
-              <y:Shape type="hexagon"/>
-            </y:ShapeNode>
+            <y:ProxyAutoBoundsNode>
+              <y:Realizers active="0">
+                <y:GroupNode>
+                  <y:Geometry height="351.9767656507149" width="452.72136665249303" x="205.7635987219856" y="36.666015625"/>
+                  <y:Fill color="#F5F5F5" transparent="false"/>
+                  <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+                  <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="39.33203125" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="452.72136665249303" x="0.0" xml:space="preserve" y="0.0">ARDUINO_ATTR_ARRAY_A
+.ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A </y:NodeLabel>
+                  <y:Shape type="roundrectangle"/>
+                  <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+                  <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+                  <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="5" rightF="5.1138426789099185" top="0" topF="0.0"/>
+                </y:GroupNode>
+                <y:GroupNode>
+                  <y:Geometry height="50.0" width="50.0" x="186.20668702619673" y="88.73540613566405"/>
+                  <y:Fill color="#F5F5F5" transparent="false"/>
+                  <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+                  <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">1</y:NodeLabel>
+                  <y:Shape type="roundrectangle"/>
+                  <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+                  <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+                  <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+                </y:GroupNode>
+              </y:Realizers>
+            </y:ProxyAutoBoundsNode>
           </data>
+          <graph edgedefault="directed" id="n0::n1:">
+            <node id="n0::n1::n0">
+              <data key="d5"/>
+              <data key="d6">
+                <y:ShapeNode>
+                  <y:Geometry height="26.306243341383833" width="342.97160214680184" x="262.00745932336235" y="90.998046875"/>
+                  <y:Fill color="#FFCC00" transparent="false"/>
+                  <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+                  <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="276.021484375" x="33.47505888590092" xml:space="preserve" y="4.086715420691917">ARDUINO_ARRAY_ATTR_INDEX__TO_INITIALIZE<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+                  <y:Shape type="hexagon"/>
+                </y:ShapeNode>
+              </data>
+            </node>
+            <node id="n0::n1::n1" yfiles.foldertype="group">
+              <data key="d4" xml:space="preserve"/>
+              <data key="d5"/>
+              <data key="d6">
+                <y:ProxyAutoBoundsNode>
+                  <y:Realizers active="0">
+                    <y:GroupNode>
+                      <y:Geometry height="238.16381159172613" width="417.6075239735831" x="220.7635987219856" y="135.4789696839888"/>
+                      <y:Fill color="#F5F5F5" transparent="false"/>
+                      <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+                      <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="417.6075239735831" x="0.0" xml:space="preserve" y="0.0">ARDUINO_ARRAY_ATTR_INDEX__INITIALIZED</y:NodeLabel>
+                      <y:Shape type="roundrectangle"/>
+                      <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+                      <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+                      <y:BorderInsets bottom="63" bottomF="63.38751331723233" left="7" leftF="7.285052859135192" right="25" rightF="25.199760274383493" top="15" topF="14.676405328868668"/>
+                    </y:GroupNode>
+                    <y:GroupNode>
+                      <y:Geometry height="50.0" width="50.0" x="418.609348094333" y="99.53756746983879"/>
+                      <y:Fill color="#F5F5F5" transparent="false"/>
+                      <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+                      <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">1</y:NodeLabel>
+                      <y:Shape type="roundrectangle"/>
+                      <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+                      <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+                      <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+                    </y:GroupNode>
+                  </y:Realizers>
+                </y:ProxyAutoBoundsNode>
+              </data>
+              <graph edgedefault="directed" id="n0::n1::n1:">
+                <node id="n0::n1::n1::n0">
+                  <data key="d5"/>
+                  <data key="d6">
+                    <y:ShapeNode>
+                      <y:Geometry height="26.306243341383833" width="265.3809478338447" x="307.3952072936703" y="186.82139063785746"/>
+                      <y:Fill color="#FFCC00" transparent="false"/>
+                      <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+                      <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="226.251953125" x="19.564497354422315" xml:space="preserve" y="4.086715420691917">ARDUINO_ARRAY_ATTR_INDEX__LOCK<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+                      <y:Shape type="hexagon"/>
+                    </y:ShapeNode>
+                  </data>
+                </node>
+                <node id="n0::n1::n1::n1">
+                  <data key="d5"/>
+                  <data key="d6">
+                    <y:ShapeNode>
+                      <y:Geometry height="26.306243341383833" width="342.97160214680184" x="255.19976027438344" y="212.64278127571492"/>
+                      <y:Fill color="#FFCC00" transparent="false"/>
+                      <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+                      <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="266.646484375" x="38.16255888590092" xml:space="preserve" y="4.086715420691917">ARDUINO_ARRAY_ATTR_INDEX__TO_COMMIT<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+                      <y:Shape type="hexagon"/>
+                    </y:ShapeNode>
+                  </data>
+                </node>
+                <node id="n0::n1::n1::n2">
+                  <data key="d5"/>
+                  <data key="d6">
+                    <y:ShapeNode>
+                      <y:Geometry height="26.306243341383833" width="342.97160214680184" x="243.0486515811208" y="268.94902461709876"/>
+                      <y:Fill color="#FFCC00" transparent="false"/>
+                      <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+                      <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="285.314453125" x="28.82857451090092" xml:space="preserve" y="4.086715420691917">ARDUINO_ARRAY_ATTR_INDEX__TO_INCREMENT<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+                      <y:Shape type="hexagon"/>
+                    </y:ShapeNode>
+                  </data>
+                </node>
+              </graph>
+            </node>
+          </graph>
         </node>
       </graph>
     </node>
-    <edge id="e0" source="n4" target="n8::n0">
-      <data key="d9"/>
-      <data key="d10">
-        <y:PolyLineEdge>
-          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
-          <y:LineStyle color="#000000" type="line" width="1.0"/>
-          <y:Arrows source="none" target="standard"/>
-          <y:BendStyle smoothed="false"/>
-        </y:PolyLineEdge>
-      </data>
-    </edge>
   </graph>
   <data key="d7">
     <y:Resources/>