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