浏览代码

+calc includes and way to debug printf in Serial.print

a.binder 5 年之前
父节点
当前提交
eac8ca8eef

+ 20 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/gyro_and_compass_test/gyro_and_compass_test.ino

@@ -1,3 +1,13 @@
+
+//radio
+#include <SPI.h>
+#include <nRF24L01.h>
+#include <RF24.h>
+RF24 radio(7, 10); // CE, CSN
+const byte address[6] = "00001";
+
+
+
 // #include "I2Cdev.h"
 #include "MPU6050.h"
 
@@ -58,6 +68,15 @@ void setup()
 //lcd.print("Hello, world!");

    #include "LiquidCrystal_I2C_setup.h"
 // setZeroMotionDetectionThreshold(154);
+
+
+
+radio.begin();
+radio.openWritingPipe(address);
+radio.setPALevel(RF24_PA_MIN);
+radio.stopListening();
+
+
 }
  
 
@@ -105,6 +124,7 @@ Serial.println();
 
 
     #include "LiquidCrystal_I2C_loop.h"
+    #include "radio_loop.h"
   delay(1500);
 
 }

+ 2 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/gyro_and_compass_test/radio_loop.h

@@ -0,0 +1,2 @@
+const char text[] = "Hello World";
+radio.write(&text, sizeof(text));

+ 193 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/testing_calc_db/calc.h

@@ -0,0 +1,193 @@
+
+int calc__get_firstConf( int idObj ) { return DB_OBJ[idObj][0]; }
+int calc__get_lastConf(  int idObj ) { return DB_OBJ[idObj][1]; }
+int calc__get_firstAttr( int idObj ) { return DB_OBJ[idObj][2]; }
+int calc__get_lastAttr(  int idObj ) { return DB_OBJ[idObj][3]; }
+int calc__get_totalConf( int idObj ) { return DB_OBJ[idObj][1] - DB_OBJ[idObj][0] + 1; }
+int calc__get_totalAttr( int idObj ) { return DB_OBJ[idObj][3] - DB_OBJ[idObj][2] + 1; }
+int calc__get_conf( int idObj, int relIdx ) { return DB_CONF[ calc__get_firstConf(idObj) + relIdx ]; }
+
+int * calc__attr(int idObj, int relIdx, int subIdx) {
+	int si = 0;
+	for (int i = calc__get_firstAttr(idObj); i <= calc__get_lastAttr(idObj); i++) {
+		if (DB_ATTR[i][0] == relIdx) {
+			if (si == subIdx) {
+				return &DB_ATTR[i][1];
+			}
+			si++;
+		}
+	}
+	return NULL;
+}
+void calc__DBG_OBJ(int idObj) {
+    #if(DBG_OBJ_LEVEL > 2)
+     int n ;
+     char buffer [50];
+     n=sprintf(buffer, "DBG:obj[%d] = { %d, %d, %d, %d }\n", idObj, DB_OBJ[idObj][0], DB_OBJ[idObj][1], DB_OBJ[idObj][2], DB_OBJ[idObj][3]);
+	  Serial.print(String(buffer));
+      
+       //Serial.println(String(printf("DBG:conf(obj:%d,total:%d): { ", idObj, calc__get_totalConf(idObj))));
+       n=sprintf(buffer, "DBG:conf(obj:%d,total:%d): { ", idObj, calc__get_totalConf(idObj));
+	   Serial.print(String(buffer));
+             for (int i = DB_OBJ[idObj][0]; i < DB_OBJ[idObj][1]; i++) { 
+                //Serial.println(printf("%d:%d, ", i, DB_CONF[i])); 
+                n=sprintf(buffer, "%d:%d, ", i, DB_CONF[i]);
+	            Serial.print(String(buffer));
+             }; 
+              Serial.println("}");
+	           // Serial.println(printf("DBG:attr(obj:%d,total:%d): { ", idObj, calc__get_totalAttr(idObj)));
+              n=sprintf(buffer, "DBG:attr(obj:%d,total:%d): { ", idObj, calc__get_totalAttr(idObj));
+              Serial.println(String(buffer));
+
+	#endif
+	#if(DBG_OBJ_LEVEL > 2)
+   	for (int i = calc__get_firstAttr(idObj); i <= calc__get_lastAttr(idObj); i++) {
+   		if (DB_ATTR[i][2] == idObj) {
+   		       if     (i==0) { SPFT(0); }
+   		       else if(i==1) { SPFT(1); }
+                  else if(i==2) { SPFT(2); }
+                  else if(i==3) { SPFT(3); }
+                  else if(i==4) { SPFT(4); }
+                  else if(i==5) { SPFT(5); }
+                  else if(i==6) { SPFT(6); }
+                  else if(i==7) { SPFT(7); }
+                  else if(i==8) { SPFT(8); }
+                  else if(i==9) { SPFT(9); }
+                  else if(i==10) { SPFT(10); }
+                  else if(i==11) { SPFT(11); }
+                  else if(i==12) { SPFT(12); }
+                  
+
+   			// Serial.println(printf("%d:{%d,%d,%d}, ", i, DB_ATTR[i][0], DB_ATTR[i][1], DB_ATTR[i][2]));
+   			 n=sprintf(buffer, "%d:{%d,%d,%d}, ",  i, DB_ATTR[i][0], DB_ATTR[i][1], DB_ATTR[i][2]);
+                Serial.println(String(buffer));
+   		   //Serial.println(printf("%d:{%d,%d}, ", i, DB_ATTR[i][0], DB_ATTR[i][1]));
+   			 n=sprintf(buffer, "%d:{%d,%d}, ", i, DB_ATTR[i][0], DB_ATTR[i][1]);
+                Serial.println(String(buffer));
+                
+   		}
+   	};
+	// Serial.println("}\n");
+	#endif
+}
+void calc__run(int idObj, int regData[]) {
+	int i = 0;
+	int confTotal = calc__get_totalConf(idObj);
+	int attrTotal = calc__get_totalAttr(idObj);
+	// Serial.println("DBG:calc__run:confTotal = %d, attrTotal = %d\n", confTotal, attrTotal); // TODO: DBG
+	int regVal[confTotal];
+	for (i = 0; i < confTotal; i++) regVal[i] = 0;
+
+	// int test[3][2] = { { 1,4 }, { 2,5 }, { 2,8 } };
+    // for ( int ( *p )[2] = test ; p != test + 3; ++p ) {
+    //     for ( int *q = *p; q != *p + 2; ++q ) Serial.println( "%d ", *q );
+    //     puts( "" );
+    // }
+
+	// int DB_ATTR[DB_ATTR_MAX][3]; // { idxConf, value, idObj }
+	int regAttr[1][2];
+
+	// DB_CONF[ DB_OBJ[idObj][0] + relIdx ];
+	int * p = NULL;
+	for (i = 0; i < confTotal; i++) {
+		if (calc__get_conf(idObj, i) == CALC_GET_DATA) {
+			p = calc__attr(idObj, i, 0);
+			if (p != NULL) {
+				regVal[i] = regData[*p];
+			} else {
+				// BUG: cant find reg idx in attr
+			}
+		}
+	}
+
+	// Serial.println("DBG:calc__run:regVal:  { "); for (int i = 0; i < confTotal; i++) { Serial.println("%d:%d, ", i, regVal[i]); }; Serial.println("}\n"); // TODO: DBG
+	// Serial.println("DBG:calc__run:regData: { "); for (int i = 0; i < 7; i++) { Serial.println("%d:%d, ", i, regData[i]); }; Serial.println("}\n"); // TODO: DBG
+
+	char finish = 0;
+	int regIdx = 0; // relative reg idx
+	int nextRegIdx = 0; // relative reg idx
+	// int lastAttr = calc__get_lastAttr(idObj); // TODO: security: (regIdx >= firstAttr && regIdx <= lastAttr)
+	int calc_loop_limit = 100; // TODO: ...
+	for (i = 0; i < calc_loop_limit && !finish; i++) {
+		// Serial.println("DBG:loop:%d: Start\n", i);
+
+		// Serial.println("DBG:loop:%d:reg(%d:[%d,%d,%d])\n", i, regIdx, reg[regIdx][0], reg[regIdx][1], reg[regIdx][2]);
+		int type = calc__get_conf(idObj, regIdx);
+		int * pa = calc__attr(idObj, regIdx, 0);
+		int * pb = calc__attr(idObj, regIdx, 1);
+		// Serial.println("DBG:calc__run:loop:%d:reg[%d]C(%d) => a(%d):%d, b(%d):%d\n", i, regIdx, type, (NULL == pa) ? -1 : *pa, (NULL == pa) ? -1 : regVal[*pa], (NULL == pb) ? -1 : *pb, (NULL == pb) ? -1 : regVal[*pb]);
+		// calc__DBG_OBJ(0); // TODO: DBG
+		int a = (pa != NULL) ? *pa : 0;
+		int b = (pb != NULL) ? *pb : 0;
+		// Serial.println("DBG:calc__run:loop:%d:reg[%d] => a(%d):%d, b(%d):%d\n", i, regIdx, a, regVal[a], b, regVal[b]);
+		switch (type) {
+			case CALC_DEFINE: { // 0
+				regVal[regIdx] = *pa; // TODO: check NULL
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_GET_DATA: { // 1
+				regVal[regIdx] = regData[*pa]; // TODO: read from data register
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_SET_DATA: { // 2
+				regVal[regIdx] = regVal[*pb];
+				// Serial.println("DBG:calc__run:loop:stop:%d:reg[%d] => %d from %d | data[%d] = %d\n", i, regIdx, regVal[regIdx], *pb, *pa, regVal[regIdx]);
+				regData[*pa] = regVal[regIdx];
+				// regAttr[0][1] = regVal[regIdx]; // TODO: set this too ???
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_COMP_EQ: { // 3
+				regVal[regIdx] = (regVal[*pa] == regVal[*pb]) ? 1 : 0;
+				nextRegIdx = (regVal[regIdx]) ? regIdx + 1 : *calc__attr(idObj, regIdx, 2);
+			} break;
+			case CALC_COMP_GT: { // 4
+				regVal[regIdx] = (regVal[*pa] > regVal[*pb]) ? 1 : 0;
+				nextRegIdx = (regVal[regIdx]) ? regIdx + 1 : *calc__attr(idObj, regIdx, 2);
+			} break;
+			case CALC_COMP_LT: { // 5
+				regVal[regIdx] = (regVal[*pa] < regVal[*pb]) ? 1 : 0;
+				nextRegIdx = (regVal[regIdx]) ? regIdx + 1 : *calc__attr(idObj, regIdx, 2);
+			} break;
+			case CALC_FUNC_ABS: { // 6
+				Serial.println("TODO:calc__run:Not Implemented:CALC_FUNC_ABS"); // abs(reg[a]);
+				regVal[regIdx] = 0;
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_FUNC_DIV: { // 7
+				Serial.println("TODO:calc__run:Not Implemented:CALC_FUNC_DIV"); // reg[a] / reg[b];
+				regVal[regIdx] = 0;
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_FUNC_MULTI: { // 8
+				Serial.println("TODO:calc__run:Not Implemented:CALC_FUNC_MULTI"); // reg[a] * reg[b];
+				regVal[regIdx] = 0;
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_FUNC_ADD: { // 9
+				regVal[regIdx] = regVal[*pa] + regVal[*pb];
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_FUNC_SUB: { // 10
+				regVal[regIdx] = regVal[*pa] - regVal[*pb];
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_FUNC_OPPOSITE: { // 11
+				regVal[regIdx] = regVal[*pa] * -1; // -1 * nr;
+				nextRegIdx = regIdx + 1;
+			} break;
+			case CALC_FINISH: { // 12
+				finish = 1; // TODO: break loop
+			} break;
+		}
+
+		// (finish)
+		// ?	Serial.println("DBG:calc__run:loop:%d:reg[%d] => %d; finish!\n", i, regIdx, regVal[regIdx])
+		// :	Serial.println("DBG:calc__run:loop:%d:reg[%d] => %d; goto %d\n", i, regIdx, regVal[regIdx], nextRegIdx)
+		// ;
+
+		regIdx = nextRegIdx;
+	}
+
+	// Serial.println("DBG:calc__run:end:regVal:  { "); for (int i = 0; i < confTotal; i++) { Serial.println("%d:%d, ", i, regVal[i]); }; Serial.println("}\n"); // TODO: DBG
+	// Serial.println("DBG:calc__run:end:regData: { "); for (int i = 0; i < 7; i++) { Serial.println("%d:%d, ", i, regData[i]); }; Serial.println("}\n"); // TODO: DBG
+}

+ 34 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/testing_calc_db/calc_db.h

@@ -0,0 +1,34 @@
+
+void calc__db_init() {
+	int i;
+	for (i = 0; i < DB_OBJ_MAX; i++) {
+		DB_OBJ[i][0] = 0;
+		DB_OBJ[i][1] = 0;
+		DB_OBJ[i][2] = 0;
+		DB_OBJ[i][3] = 0;
+	}
+	for (i = 0; i < DB_CONF_MAX; i++) {
+		DB_CONF[i] = 0;
+	}
+	for (i = 0; i < DB_ATTR_MAX; i++) {
+		DB_ATTR[i][0] = 0;
+		DB_ATTR[i][1] = 0;
+		DB_ATTR[i][2] = -1;
+	}
+}
+int calc__db_create_obj() {
+	int idObj = DB_OBJ_IDX;
+	DB_OBJ[DB_OBJ_IDX][0] = DB_CONF_IDX;
+	DB_OBJ[DB_OBJ_IDX][1] = 0; // last conf idx
+	DB_OBJ[DB_OBJ_IDX][2] = DB_ATTR_IDX; // first conf idx
+	DB_OBJ[DB_OBJ_IDX][3] = 0; // last attr idx
+	DB_OBJ_IDX++;
+	return idObj;
+}
+void calc__db_attr_add(int idObj, int val) {
+	DB_ATTR[DB_ATTR_IDX][0] = DB_CONF_IDX - DB_OBJ[idObj][0];
+	DB_ATTR[DB_ATTR_IDX][1] = val;
+	DB_ATTR[DB_ATTR_IDX][2] = idObj;
+	DB_OBJ[idObj][3] = DB_ATTR_IDX; // last attr idx
+	DB_ATTR_IDX++;
+}

+ 66 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/testing_calc_db/calc_db_conf.h

@@ -0,0 +1,66 @@
+
+void calc__db_conf_add0(int idObj, int idType) {
+	if (DB_CONF_IDX >= DB_CONF_MAX) {
+		Serial.println("BUG:DB_CONF_MAX reached!");
+		return;
+	}
+
+	DB_CONF[DB_CONF_IDX] = idType;
+
+	DB_OBJ[idObj][1] = DB_CONF_IDX;
+	DB_CONF_IDX++;
+}
+void calc__db_conf_add1(int idObj, int idType, int a) {
+	if (DB_CONF_IDX >= DB_CONF_MAX) {
+		Serial.println("BUG:DB_CONF_MAX reached!");
+		return;
+	}
+
+	DB_CONF[DB_CONF_IDX] = idType;
+	calc__db_attr_add(idObj, a);
+
+	DB_OBJ[idObj][1] = DB_CONF_IDX;
+	DB_CONF_IDX++;
+}
+void calc__db_conf_add2(int idObj, int idType, int a, int b) {
+	if (DB_CONF_IDX >= DB_CONF_MAX) {
+		Serial.println("BUG:DB_CONF_MAX reached!");
+		return;
+	}
+
+	DB_CONF[DB_CONF_IDX] = idType;
+	calc__db_attr_add(idObj, a);
+	calc__db_attr_add(idObj, b);
+
+	DB_OBJ[idObj][1] = DB_CONF_IDX;
+	DB_CONF_IDX++;
+}
+void calc__db_conf_add3(int idObj, int idType, int a, int b, int c) {
+	if (DB_CONF_IDX >= DB_CONF_MAX) {
+		Serial.println("BUG:DB_CONF_MAX reached!");
+		return;
+	}
+
+	DB_CONF[DB_CONF_IDX] = idType;
+	calc__db_attr_add(idObj, a);
+	calc__db_attr_add(idObj, b);
+	calc__db_attr_add(idObj, c);
+
+	DB_OBJ[idObj][1] = DB_CONF_IDX;
+	DB_CONF_IDX++;
+}
+void calc__db_conf_add4(int idObj, int idType, int a, int b, int c, int d) {
+	if (DB_CONF_IDX >= DB_CONF_MAX) {
+		Serial.println("BUG:DB_CONF_MAX reached!");
+		return;
+	}
+
+	DB_CONF[DB_CONF_IDX] = idType;
+	calc__db_attr_add(idObj, a);
+	calc__db_attr_add(idObj, b);
+	calc__db_attr_add(idObj, c);
+	calc__db_attr_add(idObj, d);
+
+	DB_OBJ[idObj][1] = DB_CONF_IDX;
+	DB_CONF_IDX++;
+}

+ 12 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/testing_calc_db/calc_db_conf__setup__idObject1.h

@@ -0,0 +1,12 @@
+	int idObject1 = calc__db_create_obj(); // LVL_VAL = (LVL_VAL + DELTA > LVL_MAX) ? LVL_VAL - DELTA : LVL_VAL + DELTA;
+
+    calc__db_conf_add1(idObject1, CALC_GET_DATA, LVL_VAL);    // reg: 0
+	calc__db_conf_add1(idObject1, CALC_DEFINE, 35);           // reg: 1
+	calc__db_conf_add1(idObject1, CALC_GET_DATA, LVL_MAX);    // reg: 2
+	calc__db_conf_add2(idObject1, CALC_FUNC_ADD, 0, 1);       // reg: 3 : ... LVL_VAL + DELTA ...
+	calc__db_conf_add3(idObject1, CALC_COMP_GT, 3, 2, 8);     // reg: 4 : ... (LVL_VAL + DELTA > LVL_MAX) ? ...
+	calc__db_conf_add2(idObject1, CALC_FUNC_SUB, 0, 1);       // reg: 5 : ... ? LVL_VAL - DELTA ...
+	calc__db_conf_add2(idObject1, CALC_SET_DATA, LVL_VAL, 5); // reg: 6 : LVL_VAL = ...
+	calc__db_conf_add0(idObject1, CALC_FINISH);               // reg: 7
+	calc__db_conf_add2(idObject1, CALC_SET_DATA, LVL_VAL, 3); // reg: 8 : LVL_VAL = ( ... ) ? ... : LVL_VAL + DELTA
+	calc__db_conf_add0(idObject1, CALC_FINISH);               // reg: 9

+ 35 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/testing_calc_db/calc_db_conf__setup__idObject2.h

@@ -0,0 +1,35 @@
+
+	int idObject2 = calc__db_create_obj();
+	//  int NEW_VAL = LVL_VAL + SWING;
+	// 	if (NEW_VAL > LVL_MAX) {
+	// 	  LVL_VAL = LVL_MAX - (NEW_VAL - LVL_MAX);
+	// 	  SWING = -1 * SWING;
+	//  } else {
+	//    if (NEW_VAL < LVL_MIN) {
+	// 	    LVL_VAL = LVL_MIN + (LVL_MIN - NEW_VAL);
+	// 	    SWING = -1 * SWING;
+	// 	  } else {
+	// 	    LVL_VAL = NEW_VAL;
+	// 	  }
+	// 	}
+	calc__db_conf_add1(idObject2, CALC_GET_DATA, LVL_VAL); // reg: 0  : LVL_VAL
+	calc__db_conf_add1(idObject2, CALC_GET_DATA, SWING);   // reg: 1  : SWING
+	calc__db_conf_add1(idObject2, CALC_DEFINE, 150);       // reg: 2  : LVL_MIN
+	calc__db_conf_add1(idObject2, CALC_DEFINE, 200);       // reg: 3  : LVL_MAX
+	calc__db_conf_add2(idObject2, CALC_FUNC_ADD, 0, 1);    // reg: 4  : NEW_VAL = LVL_VAL + SWING;
+	calc__db_conf_add3(idObject2, CALC_COMP_GT, 4, 3, 12); // reg: 5  : if (NEW_VAL > LVL_MAX) {
+	calc__db_conf_add2(idObject2, CALC_FUNC_SUB, 4, 3);       // reg: 6  : ... (NEW_VAL - LVL_MAX)
+	calc__db_conf_add2(idObject2, CALC_FUNC_SUB, 3, 6);       // reg: 7  : LVL_MAX - (NEW_VAL - LVL_MAX);
+	calc__db_conf_add2(idObject2, CALC_SET_DATA, LVL_VAL, 7); // reg: 8  : LVL_VAL = LVL_MAX - (NEW_VAL - LVL_MAX);
+	calc__db_conf_add1(idObject2, CALC_FUNC_OPPOSITE, 1);     // reg: 9  : -1 * SWING
+	calc__db_conf_add2(idObject2, CALC_SET_DATA, SWING, 9);   // reg: 10 : SWING = -1 * SWING;
+	calc__db_conf_add0(idObject2, CALC_FINISH);               // reg: 11
+	calc__db_conf_add3(idObject2, CALC_COMP_LT, 4, 2, 19);    // reg: 12 : if (NEW_VAL < LVL_MIN) {
+	calc__db_conf_add2(idObject2, CALC_FUNC_SUB, 2, 4);       // reg: 13 : ... (LVL_MIN - NEW_VAL);
+	calc__db_conf_add2(idObject2, CALC_FUNC_ADD, 2, 13);      // reg: 14 : LVL_MIN + (LVL_MIN - NEW_VAL);
+	calc__db_conf_add2(idObject2, CALC_SET_DATA, LVL_VAL, 14); // reg : 15 : LVL_VAL = LVL_MIN + (LVL_MIN - NEW_VAL);
+	calc__db_conf_add1(idObject2, CALC_FUNC_OPPOSITE, 1);     // reg: 16 : -1 * SWING
+	calc__db_conf_add2(idObject2, CALC_SET_DATA, SWING, 9);   // reg: 17 : SWING = -1 * SWING;
+	calc__db_conf_add0(idObject2, CALC_FINISH);               // reg: 18
+	calc__db_conf_add2(idObject2, CALC_SET_DATA, LVL_VAL, 4); // reg: 19 : LVL_VAL = NEW_VAL;
+	calc__db_conf_add0(idObject2, CALC_FINISH);               // reg: 20

+ 35 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/testing_calc_db/const_calc.h

@@ -0,0 +1,35 @@
+#define FPr(x);   Serial.print(FP(x));              // FlashPrint(FT)
+#define SPFT(x);  Serial.print(FP(FT_##x));         // shorter version (ID)
+#define SFP(x);   Serial.print(FP(x));
+#define FT(x,y);  const char FT_##x[] PROGMEM = {y};// generate FlashText(ID,FT)
+#define FP(x)     (__FlashStringHelper*)(x)         // Helper
+
+
+
+// TODO: CALC_ enum?
+const int CALC_DEFINE        = 0;  //  attr[i] = { value }              // regVal[i] = value
+FT(0, "CALC_DEFINE attr[i] = { value }" );
+const int CALC_GET_DATA      = 1;  //  attr[i] = { data_idx };          // regVal[i] = data[data_idx]
+FT(1, "CALC_GET_DATA attr[i] = { data_idx }" );
+const int CALC_SET_DATA      = 2;  //  attr[i] = { data_idx, reg_idx }  // data[data_idx] = regVal[reg_idx]
+FT(2, "CALC_SET_DATA attr[i] = { data_idx, reg_idx }" );
+const int CALC_COMP_EQ       = 3;  //  attr[i] = { a, b, false_idx }    // if (reg[a] == reg[b]) then go to + 1, else go to false_idx
+FT(3, "CALC_COMP_EQ attr[i] = { a, b, false_idx }    // if (reg[a] == reg[b]) then go to + 1, else go to false_idx" );
+const int CALC_COMP_GT       = 4;  //  attr[i] = { a, b, false_idx }    // if (reg[a] > reg[b])  then go to + 1, else go to false_idx
+FT(4, "CALC_COMP_GT attr[i] = { a, b, false_idx }");
+const int CALC_COMP_LT       = 5;  //  attr[i] = { a, b, false_idx }    // if (reg[a] < reg[b])  then go to + 1, else go to false_idx
+FT(5, "CALC_COMP_LT attr[i] = { a, b, false_idx }");
+const int CALC_FUNC_ABS      = 6;  //  attr[i] = { idx }                // regVal[i] = abs(reg[idx])
+FT(6, "CALC_FUNC_ABS attr[i] = { idx }");
+const int CALC_FUNC_DIV      = 7;  //  attr[i] = { a, b }               // regVal[i] = regVal[a] / regVal[b]
+FT(7, "CALC_FUNC_DIV  attr[i] = { a, b }");
+const int CALC_FUNC_MULTI    = 8;  //  attr[i] = { a, b }               // regVal[i] = regVal[a] * regVal[b]
+FT(8, "CALC_FUNC_MULTI attr[i] = { a, b } ");
+const int CALC_FUNC_ADD      = 9;  //  attr[i] = { a, b }               // regVal[i] = regVal[a] + regVal[b]
+FT(9, "CALC_FUNC_ADD attr[i] = { a, b }");
+const int CALC_FUNC_SUB      = 10; //  attr[i] = { a, b }               // regVal[i] = regVal[a] - regVal[b]
+FT(10, "CALC_FUNC_SUB attr[i] = { a, b }");
+const int CALC_FUNC_OPPOSITE = 11; //  attr[i] = { a, b }               // regVal[i] = -1 * regVal[a]
+FT(11, "CALC_FUNC_OPPOSITE attr[i] = { a, b }");
+const int CALC_FINISH        = 12;
+FT(12, "CALC_FINISH");

+ 15 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/testing_calc_db/loop.h

@@ -0,0 +1,15 @@
+  #if(DBG_OBJ_LEVEL > 2)
+     int n ;
+     char buffer [50];
+     // Serial.println("DBG:loop:%d:obj1:", calcLoopCounterDBG);
+      n=sprintf(buffer, "DBG:loop:%d:obj1:", calcLoopCounterDBG);
+	  Serial.print(String(buffer));
+   #endif
+
+	calc__run(idObject1, obj1);
+	// Serial.println("DBG:loop:%d:obj1:END; obj1[LVL_VAL:%d] = %d", calcLoopCounterDBG, LVL_VAL, obj1[LVL_VAL]);
+
+	// Serial.println("DBG:loop:%d:obj2:", calcLoopCounterDBG);
+	calc__run(idObject2, obj2);
+	// Serial.println("DBG:loop:%d:obj2:END; obj2[LVL_VAL:%d] = %d", calcLoopCounterDBG, LVL_VAL, obj2[LVL_VAL]);
+  

+ 14 - 317
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/testing_calc_db/testing_calc_db.ino

@@ -11,20 +11,10 @@
 //             - obj has attrs - TODO: config for calculations like XPATH or in x3d
 // Task Object attrs - like xsd element attrs of type (int value, other object)
 
-// TODO: CALC_ enum?
-const int CALC_DEFINE        = 0;  //  attr[i] = { value }              // regVal[i] = value
-const int CALC_GET_DATA      = 1;  //  attr[i] = { data_idx };          // regVal[i] = data[data_idx]
-const int CALC_SET_DATA      = 2;  //  attr[i] = { data_idx, reg_idx }  // data[data_idx] = regVal[reg_idx]
-const int CALC_COMP_EQ       = 3;  //  attr[i] = { a, b, false_idx }    // if (reg[a] == reg[b]) then go to + 1, else go to false_idx
-const int CALC_COMP_GT       = 4;  //  attr[i] = { a, b, false_idx }    // if (reg[a] > reg[b])  then go to + 1, else go to false_idx
-const int CALC_COMP_LT       = 5;  //  attr[i] = { a, b, false_idx }    // if (reg[a] < reg[b])  then go to + 1, else go to false_idx
-const int CALC_FUNC_ABS      = 6;  //  attr[i] = { idx }                // regVal[i] = abs(reg[idx])
-const int CALC_FUNC_DIV      = 7;  //  attr[i] = { a, b }               // regVal[i] = regVal[a] / regVal[b]
-const int CALC_FUNC_MULTI    = 8;  //  attr[i] = { a, b }               // regVal[i] = regVal[a] * regVal[b]
-const int CALC_FUNC_ADD      = 9;  //  attr[i] = { a, b }               // regVal[i] = regVal[a] + regVal[b]
-const int CALC_FUNC_SUB      = 10; //  attr[i] = { a, b }               // regVal[i] = regVal[a] - regVal[b]
-const int CALC_FUNC_OPPOSITE = 11; //  attr[i] = { a, b }               // regVal[i] = -1 * regVal[a]
-const int CALC_FINISH        = 12;
+#define  DBG_OBJ_LEVEL  3 
+
+#include "const_calc.h" //attributes avialable to calculate
+
 
 const int DB_OBJ_MAX = 10; // Object list -> Conf -> Attr
 int DB_OBJ_IDX = 0;
@@ -38,257 +28,11 @@ const int DB_ATTR_MAX = 100; // Attr list
 int DB_ATTR_IDX = 0;
 int DB_ATTR[DB_ATTR_MAX][3]; // { relIdxConf, value, idObj }
 
-void calc__db_init() {
-	int i;
-	for (i = 0; i < DB_OBJ_MAX; i++) {
-		DB_OBJ[i][0] = 0;
-		DB_OBJ[i][1] = 0;
-		DB_OBJ[i][2] = 0;
-		DB_OBJ[i][3] = 0;
-	}
-	for (i = 0; i < DB_CONF_MAX; i++) {
-		DB_CONF[i] = 0;
-	}
-	for (i = 0; i < DB_ATTR_MAX; i++) {
-		DB_ATTR[i][0] = 0;
-		DB_ATTR[i][1] = 0;
-		DB_ATTR[i][2] = -1;
-	}
-}
-int calc__db_create_obj() {
-	int idObj = DB_OBJ_IDX;
-	DB_OBJ[DB_OBJ_IDX][0] = DB_CONF_IDX;
-	DB_OBJ[DB_OBJ_IDX][1] = 0; // last conf idx
-	DB_OBJ[DB_OBJ_IDX][2] = DB_ATTR_IDX; // first conf idx
-	DB_OBJ[DB_OBJ_IDX][3] = 0; // last attr idx
-	DB_OBJ_IDX++;
-	return idObj;
-}
-void calc__db_attr_add(int idObj, int val) {
-	DB_ATTR[DB_ATTR_IDX][0] = DB_CONF_IDX - DB_OBJ[idObj][0];
-	DB_ATTR[DB_ATTR_IDX][1] = val;
-	DB_ATTR[DB_ATTR_IDX][2] = idObj;
-	DB_OBJ[idObj][3] = DB_ATTR_IDX; // last attr idx
-	DB_ATTR_IDX++;
-}
-void calc__db_conf_add0(int idObj, int idType) {
-	if (DB_CONF_IDX >= DB_CONF_MAX) {
-		Serial.println("BUG:DB_CONF_MAX reached!");
-		return;
-	}
+#include "calc_db.h"
+#include "calc_db_conf.h"
 
-	DB_CONF[DB_CONF_IDX] = idType;
+#include "calc.h"
 
-	DB_OBJ[idObj][1] = DB_CONF_IDX;
-	DB_CONF_IDX++;
-}
-void calc__db_conf_add1(int idObj, int idType, int a) {
-	if (DB_CONF_IDX >= DB_CONF_MAX) {
-		Serial.println("BUG:DB_CONF_MAX reached!");
-		return;
-	}
-
-	DB_CONF[DB_CONF_IDX] = idType;
-	calc__db_attr_add(idObj, a);
-
-	DB_OBJ[idObj][1] = DB_CONF_IDX;
-	DB_CONF_IDX++;
-}
-void calc__db_conf_add2(int idObj, int idType, int a, int b) {
-	if (DB_CONF_IDX >= DB_CONF_MAX) {
-		Serial.println("BUG:DB_CONF_MAX reached!");
-		return;
-	}
-
-	DB_CONF[DB_CONF_IDX] = idType;
-	calc__db_attr_add(idObj, a);
-	calc__db_attr_add(idObj, b);
-
-	DB_OBJ[idObj][1] = DB_CONF_IDX;
-	DB_CONF_IDX++;
-}
-void calc__db_conf_add3(int idObj, int idType, int a, int b, int c) {
-	if (DB_CONF_IDX >= DB_CONF_MAX) {
-		Serial.println("BUG:DB_CONF_MAX reached!");
-		return;
-	}
-
-	DB_CONF[DB_CONF_IDX] = idType;
-	calc__db_attr_add(idObj, a);
-	calc__db_attr_add(idObj, b);
-	calc__db_attr_add(idObj, c);
-
-	DB_OBJ[idObj][1] = DB_CONF_IDX;
-	DB_CONF_IDX++;
-}
-void calc__db_conf_add4(int idObj, int idType, int a, int b, int c, int d) {
-	if (DB_CONF_IDX >= DB_CONF_MAX) {
-		Serial.println("BUG:DB_CONF_MAX reached!");
-		return;
-	}
-
-	DB_CONF[DB_CONF_IDX] = idType;
-	calc__db_attr_add(idObj, a);
-	calc__db_attr_add(idObj, b);
-	calc__db_attr_add(idObj, c);
-	calc__db_attr_add(idObj, d);
-
-	DB_OBJ[idObj][1] = DB_CONF_IDX;
-	DB_CONF_IDX++;
-}
-int calc__get_firstConf( int idObj ) { return DB_OBJ[idObj][0]; }
-int calc__get_lastConf(  int idObj ) { return DB_OBJ[idObj][1]; }
-int calc__get_firstAttr( int idObj ) { return DB_OBJ[idObj][2]; }
-int calc__get_lastAttr(  int idObj ) { return DB_OBJ[idObj][3]; }
-int calc__get_totalConf( int idObj ) { return DB_OBJ[idObj][1] - DB_OBJ[idObj][0] + 1; }
-int calc__get_totalAttr( int idObj ) { return DB_OBJ[idObj][3] - DB_OBJ[idObj][2] + 1; }
-int calc__get_conf( int idObj, int relIdx ) { return DB_CONF[ calc__get_firstConf(idObj) + relIdx ]; }
-
-int * calc__attr(int idObj, int relIdx, int subIdx) {
-	int si = 0;
-	for (int i = calc__get_firstAttr(idObj); i <= calc__get_lastAttr(idObj); i++) {
-		if (DB_ATTR[i][0] == relIdx) {
-			if (si == subIdx) {
-				return &DB_ATTR[i][1];
-			}
-			si++;
-		}
-	}
-	return NULL;
-}
-void calc__DBG_OBJ(int idObj) {
-	// Serial.println("DBG:obj[%d] = { %d, %d, %d, %d }\n", idObj, DB_OBJ[idObj][0], DB_OBJ[idObj][1], DB_OBJ[idObj][2], DB_OBJ[idObj][3]); // TODO: DBG
-	// Serial.println("DBG:conf(obj:%d,total:%d): { ", idObj, calc__get_totalConf(idObj)); for (int i = DB_OBJ[idObj][0]; i < DB_OBJ[idObj][1]; i++) { Serial.println("%d:%d, ", i, DB_CONF[i]); }; Serial.println("}\n");
-	// Serial.println("DBG:attr(obj:%d,total:%d): { ", idObj, calc__get_totalAttr(idObj));
-	for (int i = calc__get_firstAttr(idObj); i <= calc__get_lastAttr(idObj); i++) {
-		if (DB_ATTR[i][2] == idObj) {
-			// Serial.println("%d:{%d,%d,%d}, ", i, DB_ATTR[i][0], DB_ATTR[i][1], DB_ATTR[i][2]);
-			// Serial.println("%d:{%d,%d}, ", i, DB_ATTR[i][0], DB_ATTR[i][1]);
-		}
-	};
-	// Serial.println("}\n");
-}
-void calc__run(int idObj, int regData[]) {
-	int i = 0;
-	int confTotal = calc__get_totalConf(idObj);
-	int attrTotal = calc__get_totalAttr(idObj);
-	// Serial.println("DBG:calc__run:confTotal = %d, attrTotal = %d\n", confTotal, attrTotal); // TODO: DBG
-	int regVal[confTotal];
-	for (i = 0; i < confTotal; i++) regVal[i] = 0;
-
-	// int test[3][2] = { { 1,4 }, { 2,5 }, { 2,8 } };
-    // for ( int ( *p )[2] = test ; p != test + 3; ++p ) {
-    //     for ( int *q = *p; q != *p + 2; ++q ) Serial.println( "%d ", *q );
-    //     puts( "" );
-    // }
-
-	// int DB_ATTR[DB_ATTR_MAX][3]; // { idxConf, value, idObj }
-	int regAttr[1][2];
-
-	// DB_CONF[ DB_OBJ[idObj][0] + relIdx ];
-	int * p = NULL;
-	for (i = 0; i < confTotal; i++) {
-		if (calc__get_conf(idObj, i) == CALC_GET_DATA) {
-			p = calc__attr(idObj, i, 0);
-			if (p != NULL) {
-				regVal[i] = regData[*p];
-			} else {
-				// BUG: cant find reg idx in attr
-			}
-		}
-	}
-
-	// Serial.println("DBG:calc__run:regVal:  { "); for (int i = 0; i < confTotal; i++) { Serial.println("%d:%d, ", i, regVal[i]); }; Serial.println("}\n"); // TODO: DBG
-	// Serial.println("DBG:calc__run:regData: { "); for (int i = 0; i < 7; i++) { Serial.println("%d:%d, ", i, regData[i]); }; Serial.println("}\n"); // TODO: DBG
-
-	char finish = 0;
-	int regIdx = 0; // relative reg idx
-	int nextRegIdx = 0; // relative reg idx
-	// int lastAttr = calc__get_lastAttr(idObj); // TODO: security: (regIdx >= firstAttr && regIdx <= lastAttr)
-	int calc_loop_limit = 100; // TODO: ...
-	for (i = 0; i < calc_loop_limit && !finish; i++) {
-		// Serial.println("DBG:loop:%d: Start\n", i);
-
-		// Serial.println("DBG:loop:%d:reg(%d:[%d,%d,%d])\n", i, regIdx, reg[regIdx][0], reg[regIdx][1], reg[regIdx][2]);
-		int type = calc__get_conf(idObj, regIdx);
-		int * pa = calc__attr(idObj, regIdx, 0);
-		int * pb = calc__attr(idObj, regIdx, 1);
-		// Serial.println("DBG:calc__run:loop:%d:reg[%d]C(%d) => a(%d):%d, b(%d):%d\n", i, regIdx, type, (NULL == pa) ? -1 : *pa, (NULL == pa) ? -1 : regVal[*pa], (NULL == pb) ? -1 : *pb, (NULL == pb) ? -1 : regVal[*pb]);
-		// calc__DBG_OBJ(0); // TODO: DBG
-		int a = (pa != NULL) ? *pa : 0;
-		int b = (pb != NULL) ? *pb : 0;
-		// Serial.println("DBG:calc__run:loop:%d:reg[%d] => a(%d):%d, b(%d):%d\n", i, regIdx, a, regVal[a], b, regVal[b]);
-		switch (type) {
-			case CALC_DEFINE: { // 0
-				regVal[regIdx] = *pa; // TODO: check NULL
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_GET_DATA: { // 1
-				regVal[regIdx] = regData[*pa]; // TODO: read from data register
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_SET_DATA: { // 2
-				regVal[regIdx] = regVal[*pb];
-				// Serial.println("DBG:calc__run:loop:stop:%d:reg[%d] => %d from %d | data[%d] = %d\n", i, regIdx, regVal[regIdx], *pb, *pa, regVal[regIdx]);
-				regData[*pa] = regVal[regIdx];
-				// regAttr[0][1] = regVal[regIdx]; // TODO: set this too ???
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_COMP_EQ: { // 3
-				regVal[regIdx] = (regVal[*pa] == regVal[*pb]) ? 1 : 0;
-				nextRegIdx = (regVal[regIdx]) ? regIdx + 1 : *calc__attr(idObj, regIdx, 2);
-			} break;
-			case CALC_COMP_GT: { // 4
-				regVal[regIdx] = (regVal[*pa] > regVal[*pb]) ? 1 : 0;
-				nextRegIdx = (regVal[regIdx]) ? regIdx + 1 : *calc__attr(idObj, regIdx, 2);
-			} break;
-			case CALC_COMP_LT: { // 5
-				regVal[regIdx] = (regVal[*pa] < regVal[*pb]) ? 1 : 0;
-				nextRegIdx = (regVal[regIdx]) ? regIdx + 1 : *calc__attr(idObj, regIdx, 2);
-			} break;
-			case CALC_FUNC_ABS: { // 6
-				Serial.println("TODO:calc__run:Not Implemented:CALC_FUNC_ABS"); // abs(reg[a]);
-				regVal[regIdx] = 0;
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_FUNC_DIV: { // 7
-				Serial.println("TODO:calc__run:Not Implemented:CALC_FUNC_DIV"); // reg[a] / reg[b];
-				regVal[regIdx] = 0;
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_FUNC_MULTI: { // 8
-				Serial.println("TODO:calc__run:Not Implemented:CALC_FUNC_MULTI"); // reg[a] * reg[b];
-				regVal[regIdx] = 0;
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_FUNC_ADD: { // 9
-				regVal[regIdx] = regVal[*pa] + regVal[*pb];
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_FUNC_SUB: { // 10
-				regVal[regIdx] = regVal[*pa] - regVal[*pb];
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_FUNC_OPPOSITE: { // 11
-				regVal[regIdx] = regVal[*pa] * -1; // -1 * nr;
-				nextRegIdx = regIdx + 1;
-			} break;
-			case CALC_FINISH: { // 12
-				finish = 1; // TODO: break loop
-			} break;
-		}
-
-		// (finish)
-		// ?	Serial.println("DBG:calc__run:loop:%d:reg[%d] => %d; finish!\n", i, regIdx, regVal[regIdx])
-		// :	Serial.println("DBG:calc__run:loop:%d:reg[%d] => %d; goto %d\n", i, regIdx, regVal[regIdx], nextRegIdx)
-		// ;
-
-		regIdx = nextRegIdx;
-	}
-
-	// Serial.println("DBG:calc__run:end:regVal:  { "); for (int i = 0; i < confTotal; i++) { Serial.println("%d:%d, ", i, regVal[i]); }; Serial.println("}\n"); // TODO: DBG
-	// Serial.println("DBG:calc__run:end:regData: { "); for (int i = 0; i < 7; i++) { Serial.println("%d:%d, ", i, regData[i]); }; Serial.println("}\n"); // TODO: DBG
-}
 
 
 int calcLoopCounterDBG = 0;
@@ -339,66 +83,19 @@ void setup() {
 	obj2[SWING] = 30; // var, default = 8
 
 	calc__db_init();
-	int idObject1 = calc__db_create_obj(); // LVL_VAL = (LVL_VAL + DELTA > LVL_MAX) ? LVL_VAL - DELTA : LVL_VAL + DELTA;
-	calc__db_conf_add1(idObject1, CALC_GET_DATA, LVL_VAL);    // reg: 0
-	calc__db_conf_add1(idObject1, CALC_DEFINE, 35);           // reg: 1
-	calc__db_conf_add1(idObject1, CALC_GET_DATA, LVL_MAX);    // reg: 2
-	calc__db_conf_add2(idObject1, CALC_FUNC_ADD, 0, 1);       // reg: 3 : ... LVL_VAL + DELTA ...
-	calc__db_conf_add3(idObject1, CALC_COMP_GT, 3, 2, 8);     // reg: 4 : ... (LVL_VAL + DELTA > LVL_MAX) ? ...
-	calc__db_conf_add2(idObject1, CALC_FUNC_SUB, 0, 1);       // reg: 5 : ... ? LVL_VAL - DELTA ...
-	calc__db_conf_add2(idObject1, CALC_SET_DATA, LVL_VAL, 5); // reg: 6 : LVL_VAL = ...
-	calc__db_conf_add0(idObject1, CALC_FINISH);               // reg: 7
-	calc__db_conf_add2(idObject1, CALC_SET_DATA, LVL_VAL, 3); // reg: 8 : LVL_VAL = ( ... ) ? ... : LVL_VAL + DELTA
-	calc__db_conf_add0(idObject1, CALC_FINISH);               // reg: 9
-
-	int idObject2 = calc__db_create_obj();
-	//  int NEW_VAL = LVL_VAL + SWING;
-	// 	if (NEW_VAL > LVL_MAX) {
-	// 	  LVL_VAL = LVL_MAX - (NEW_VAL - LVL_MAX);
-	// 	  SWING = -1 * SWING;
-	//  } else {
-	//    if (NEW_VAL < LVL_MIN) {
-	// 	    LVL_VAL = LVL_MIN + (LVL_MIN - NEW_VAL);
-	// 	    SWING = -1 * SWING;
-	// 	  } else {
-	// 	    LVL_VAL = NEW_VAL;
-	// 	  }
-	// 	}
-	calc__db_conf_add1(idObject2, CALC_GET_DATA, LVL_VAL); // reg: 0  : LVL_VAL
-	calc__db_conf_add1(idObject2, CALC_GET_DATA, SWING);   // reg: 1  : SWING
-	calc__db_conf_add1(idObject2, CALC_DEFINE, 150);       // reg: 2  : LVL_MIN
-	calc__db_conf_add1(idObject2, CALC_DEFINE, 200);       // reg: 3  : LVL_MAX
-	calc__db_conf_add2(idObject2, CALC_FUNC_ADD, 0, 1);    // reg: 4  : NEW_VAL = LVL_VAL + SWING;
-	calc__db_conf_add3(idObject2, CALC_COMP_GT, 4, 3, 12); // reg: 5  : if (NEW_VAL > LVL_MAX) {
-	calc__db_conf_add2(idObject2, CALC_FUNC_SUB, 4, 3);       // reg: 6  : ... (NEW_VAL - LVL_MAX)
-	calc__db_conf_add2(idObject2, CALC_FUNC_SUB, 3, 6);       // reg: 7  : LVL_MAX - (NEW_VAL - LVL_MAX);
-	calc__db_conf_add2(idObject2, CALC_SET_DATA, LVL_VAL, 7); // reg: 8  : LVL_VAL = LVL_MAX - (NEW_VAL - LVL_MAX);
-	calc__db_conf_add1(idObject2, CALC_FUNC_OPPOSITE, 1);     // reg: 9  : -1 * SWING
-	calc__db_conf_add2(idObject2, CALC_SET_DATA, SWING, 9);   // reg: 10 : SWING = -1 * SWING;
-	calc__db_conf_add0(idObject2, CALC_FINISH);               // reg: 11
-	calc__db_conf_add3(idObject2, CALC_COMP_LT, 4, 2, 19);    // reg: 12 : if (NEW_VAL < LVL_MIN) {
-	calc__db_conf_add2(idObject2, CALC_FUNC_SUB, 2, 4);       // reg: 13 : ... (LVL_MIN - NEW_VAL);
-	calc__db_conf_add2(idObject2, CALC_FUNC_ADD, 2, 13);      // reg: 14 : LVL_MIN + (LVL_MIN - NEW_VAL);
-	calc__db_conf_add2(idObject2, CALC_SET_DATA, LVL_VAL, 14); // reg : 15 : LVL_VAL = LVL_MIN + (LVL_MIN - NEW_VAL);
-	calc__db_conf_add1(idObject2, CALC_FUNC_OPPOSITE, 1);     // reg: 16 : -1 * SWING
-	calc__db_conf_add2(idObject2, CALC_SET_DATA, SWING, 9);   // reg: 17 : SWING = -1 * SWING;
-	calc__db_conf_add0(idObject2, CALC_FINISH);               // reg: 18
-	calc__db_conf_add2(idObject2, CALC_SET_DATA, LVL_VAL, 4); // reg: 19 : LVL_VAL = NEW_VAL;
-	calc__db_conf_add0(idObject2, CALC_FINISH);               // reg: 20
+	#include "calc_db_conf__setup__idObject1.h"
+	#include "calc_db_conf__setup__idObject2.h"
 
 	calc__DBG_OBJ(idObject1);
 	calc__DBG_OBJ(idObject2);
 }
 
 void loop() {
-	// Serial.println("DBG:loop:%d:obj1:", calcLoopCounterDBG);
-	calc__run(idObject1, obj1);
-	// Serial.println("DBG:loop:%d:obj1:END; obj1[LVL_VAL:%d] = %d", calcLoopCounterDBG, LVL_VAL, obj1[LVL_VAL]);
-
-	// Serial.println("DBG:loop:%d:obj2:", calcLoopCounterDBG);
-	calc__run(idObject2, obj2);
-	// Serial.println("DBG:loop:%d:obj2:END; obj2[LVL_VAL:%d] = %d", calcLoopCounterDBG, LVL_VAL, obj2[LVL_VAL]);
+    
+    //debugign changes that occurs to test calculation
+    calc__DBG_OBJ(idObject1); 
 
+  #include "loop.h"
 	Serial.println("Test calc db: End");
-  delay(100);
+  delay(500);
 }