I have the function:
// Open the EDB table, if existed or created...
void AG_Table_Open(unsigned long APtr_AGHead, char* AID_AGHead){
DBGL3_PRN("(1) AID_AGHead: ");
DBGL3_PRN(AID_AGHead);
DBGL3_PRN(", size: ");
DBGL3_PRNLN(sizeof(AID_AGHead));
AG_LogStruct strucRec;
String dbDescr;
/* DBGL3_PRN("(");
DBGL3_PRN(AID_AGHead);
DBGL3_PRN("=");
DBGL3_PRN(AG_EDBIndex_ID);
DBGL3_PRNLN(")=========================");*/
if (strcmp(AID_AGHead, AG_EDBIndex_ID)==0){
// if (AID_AGHead==AG_EDBIndex_ID){
dbDescr = "AG_EDBIndex";
}
else {
LOG_PRN("unknown AG_Table! (");
LOG_PRN(AID_AGHead);
LOG_PRNLN(")");
return;
}
EDB db(&AG_Table_EEPROM_Writer, &AG_Table_EEPROM_Reader);
DBGL3_PRNLN("DB object created...");
int memPos = APtr_AGHead+sizeof(AID_AGHead)-1;
if (EEPROM.read(APtr_AGHead + 0) == AID_AGHead[0] &&
EEPROM.read(APtr_AGHead + 1) == AID_AGHead[1] &&
EEPROM.read(APtr_AGHead + 2) == AID_AGHead[2]) {
DBGL3_PRN(dbDescr);
DBGL3_PRN(" DB exists... (mem loc: ");
DBGL3_PRN(memPos, DEC);
DBGL3_PRNLN(")");
if (db.open(memPos)==EDB_OK){
DBGL3_PRN(dbDescr);
DBGL3_PRN(" DB opened... (RecCount: ");
DBGL3_PRN(db.count(), DEC);
DBGL3_PRNLN(")");
}
else {
DBGL3_PRN(dbDescr);
DBGL3_PRNLN(" DB could not opened...!");
// db.create(200, TABLE_SIZE, sizeof(logUpPeriod));
// db.create(300, 100, sizeof(logUpPeriod));
// DBGL3_PRNLN("DB created...");
}
}
else {
DBGL3_PRN("AID_AGHead: ");
DBGL3_PRN(AID_AGHead);
DBGL3_PRN(", size: ");
DBGL3_PRNLN(sizeof(AID_AGHead));
for (unsigned int t=0; t<sizeof(AID_AGHead); t++)
EEPROM.write(APtr_AGHead + t, *((char*)&AID_AGHead + t));
DBGL3_PRN(dbDescr);
DBGL3_PRNLN(" DB header ID saved...!");
if (strcmp(AID_AGHead, AG_EDBIndex_ID)==0){
// if (AID_AGHead==AG_EDBIndex_ID){
db.create(memPos, 120, sizeof(strucRec));
}
}
}
I am calling it through:
AG_Table_Open(AG_EDBIndex_START, AG_EDBIndex_ID);
where:
#define AG_EDBIndex_START 50
#define AG_EDBIndex_ID "a@i"
The sizeof AID_AGHead (inside the function) is 2! (instead of 4) but the contents looks OK ("a@i")...!?
Why is this happening?
What I am doing wrong?
What is the correct way of passing strings in Arduino (C++)?
Thank you