Hi guys,
I hope somebody can help me with this. I have developped an application which first reads an xml file (which I have already put inside the application root folder) and then it stores this information to flash. Lets say that the xml file contains 18 variables, I have checked the values of each variable after stored them to flash and they are ok! But when I try to read from flash, I get garbages at the end of variable “SOSContact” and at the end of variable “DevicePW” (please see code below). Instead of +306930553480 I get +306930553480cG and instead of 1230 I get 1230ULTIBAND 900E. I supposed something else was first stored there. I have chenged FLASH LOCATION and made it 10, but then when reading from flash, I get only the first eight variables (FLASH LOCATION+8=18). First I thought that it was because of FLASH LOCATION, but now it seems that it isn’t. Could anyone suggest me what can go wrong?
I forgot to tell that I have used:
#define FLASH_LOCATION 0
static const ascii* flash_test_var = “”;
I would really appreciate any help!
Thanks
Tatiana
void ReadFromFlash()
{ s32 length [18];
int i;
for (i=0;i<18;i++){
if ((length[i] = adl_flhExist (flash_test_var, FLASH_LOCATION+i)) > 0)
{ switch ( i )
{
case 0:
DateTime = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],DateTime);
TRACE ((TraceLevel, DateTime));
break;
case 1:
DeviceID = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],DeviceID);
TRACE ((TraceLevel, DeviceID));
break;
case 2:
DevicePW = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],DevicePW);
TRACE ((TraceLevel, DevicePW)); break;
case 3:
Name = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],Name);
TRACE ((TraceLevel, Name)); break;
case 4:
Surname = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],Surname);
TRACE ((TraceLevel, Surname)); break;
case 5:
PinCode = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],PinCode);
TRACE ((TraceLevel, PinCode)); break;
case 6:
SOSContact = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],SOSContact);
TRACE ((TraceLevel, SOSContact));
break;
case 7:
Supervisor = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],Supervisor);
TRACE ((TraceLevel, Supervisor));
break;
case 8:
Mode = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],Mode);
TRACE ((TraceLevel, Mode)); break;
case 9:
APNUserName = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],APNUserName);
TRACE ((TraceLevel, APNUserName)); break;
case 10:
APNLoggin = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],APNLoggin);
TRACE ((TraceLevel, APNLoggin)); break;
case 11:
APNPassword = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],APNPassword);
TRACE ((TraceLevel, APNPassword)); break;
case 12:
IP = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],IP);
TRACE ((TraceLevel, IP)); break;
case 13:
TCPPort = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],TCPPort);
TRACE ((TraceLevel, TCPPort)); break;
case 14:
UDPPort = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],UDPPort);
TRACE ((TraceLevel, UDPPort)); break;
case 15:
Medication = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],Medication);
TRACE ((TraceLevel, Medication)); break;
case 16:
Diseases = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],Diseases);
TRACE ((TraceLevel, Diseases)); break;
case 17:
Allergies = adl_memGet(sizeof(u8) * length[i]);
adl_flhRead(flash_test_var,FLASH_LOCATION+i,length[i],Allergies);
TRACE ((TraceLevel, Allergies)); break;
}
}
}
}
}
}
}
}
//////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------
bool FCM_USB_DataHandler() //bool FCM_USB_DataHandler(u16 DataSize, u8 * Data)
{
if (init_type=="OK")//was sent from the GUI ie: Data=="OK"....
{ s8 res;
struct basicxmlnode * root = NULL;
Initialisation=TRUE;
fp = fopen("Initialization.xml", "rt");
if (!fp)
{
TRACE((TraceLevel, "Cannot open XML File"));
}
else
{
root = readbasicxmlnode(fp);
fclose(fp);
if (!root)
{
TRACE((TraceLevel, "Cannot Read Root"));
}
adl_flhSubscribe( flash_test_var, 18 );
DateTime= Findatt(root,"DateTime");
adl_flhWrite(flash_test_var, FLASH_LOCATION, 15,DateTime);
DeviceID= Findatt(root,"DeviceID");
adl_flhWrite(flash_test_var, FLASH_LOCATION+1, 12,DeviceID);
DevicePW= Findatt(root,"DevicePW");
adl_flhWrite(flash_test_var, FLASH_LOCATION+2, 4,DevicePW);
Name= Findatt(root,"Name");
adl_flhWrite(flash_test_var, FLASH_LOCATION+3, 30,Name);
Surname= Findatt(root,"Surname");
adl_flhWrite(flash_test_var, FLASH_LOCATION+4, 30,Surname);
PinCode= Findatt(root,"PIN");
adl_flhWrite(flash_test_var, FLASH_LOCATION+5, 4,PinCode);
SOSContact= Findatt(root,"SOSContact");
adl_flhWrite(flash_test_var, FLASH_LOCATION+6, 13,SOSContact);
Supervisor= Findatt(root,"Supervisor");
adl_flhWrite(flash_test_var, FLASH_LOCATION+7, 13,Supervisor);
Mode= Findatt(root,"Mode");
adl_flhWrite(flash_test_var, FLASH_LOCATION+8, 1,Mode);
APNUserName= Findatt(root,"APNUserName");
adl_flhWrite(flash_test_var, FLASH_LOCATION+9, 20,APNUserName);
APNLoggin= Findatt(root,"APNLoggin");
adl_flhWrite(flash_test_var, FLASH_LOCATION+10, 5,APNLoggin);
APNPassword= Findatt(root,"APNPassword");
adl_flhWrite(flash_test_var, FLASH_LOCATION+11, 5,APNPassword);
IP= Findatt(root,"IP");
adl_flhWrite(flash_test_var, FLASH_LOCATION+12, 15,IP);
TCPPort= Findatt(root,"TCPPort");
adl_flhWrite(flash_test_var, FLASH_LOCATION+13, 4,TCPPort);
UDPPort= Findatt(root,"UDPPort");
adl_flhWrite(flash_test_var, FLASH_LOCATION+14, 4,UDPPort);
Medication= Findatt(root,"Medication");
adl_flhWrite(flash_test_var, FLASH_LOCATION+15, 200,Medication);
Diseases= Findatt(root,"Diseases");
adl_flhWrite(flash_test_var, FLASH_LOCATION+16, 200,Diseases);
Allergies= Findatt(root,"Allergies");
adl_flhWrite(flash_test_var, FLASH_LOCATION+17, 200,Allergies);
res = adl_fcmSendData(FCM_USB_handle,"OK",2 );
}
}
Initialisation=FALSE;
}
//////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------
void Inititalize()
{
init_type="OK";
//FCM_USB_DataHandler(); //at first time
ReadFromFlash();
}
//----------------------------------------------------------------------------------------
void adl_main ( adl_InitType_e InitType )
{
Inititalize();
}