FengT
February 6, 2007, 1:53am
1
I tested the A&D operation in the environment :
2406B
650a09gg.2406B 1949844 122204 14:53
+WOPEN: 2,“AT v03.01”
VC++6
OPENAT 3.02
Remote mode
the code is :
void adl_main ( adl_InitType_e InitType )
{
u8 i,Buffer;
s32 sReturn;
adl_adState_t State;
for(i = 0;i<132;i++)
FCM_temp[i] = test_temp[i];
dwl_AppCellHandle = adl_adSubscribe ( dwl_CellID, ADL_AD_SIZE_UNDEF );
TRACE (( 3, "Subscribe to A&&D cell %.8X : %d", dwl_CellID, dwl_AppCellHandle ));
sReturn = adl_adWrite ( dwl_AppCellHandle, 130, FCM_temp );
TRACE (( 3, "Write cell %d", sReturn ));
sReturn = adl_adGetState ( &State );
TRACE (( 3, "cell State1%d", sReturn ));
// TO DO : Add your initialization code here
}
dwl_AppCellHandle return value is 0x00000000
sReturn = adl_adWrite ( dwl_AppCellHandle, 130, FCM_temp );
return value is 0xffffffea
sReturn = adl_adGetState ( &State );
return value is 0x00000000
Subscribe is OK, But adl_adWrite didn’t work
Why?
pls help me
thanks
awneil
February 6, 2007, 7:56am
2
Note that the return values are signed - so that represents -22
This is an undocumented error code - see:
wavecom.com/modules/movie/sc … documented
Also search the FAQ for “-22” and “ADL_AD_RET_ERROR” - it seems that this is not an uncommon problem
I get the impression that there are a number of restrictions that need to be observed when using A&D storage, but which are not documented
eg, see:
wavecom.com/modules/movie/sc … .php?t=928
wavecom.com/modules/movie/sc … php?p=3332
FengT
February 6, 2007, 10:18am
3
Thanks, awneil.
There’re poor documents for A&D operation!
I updated the firmware of 2406b to version 652a,and tested adWrite();
The return value is 0;
I did the next step:
void adl_main ( adl_InitType_e InitType )
{
u8 i,Buffer,temp[200],*AD_Read_Buffer,*AD_Read_Buffer1;
s32 sReturn;
adl_adState_t State;
adl_adInfo_t Info;
////
for(i = 0;i<132;i++)
FCM_temp[i] = '2';
//format the A&D Area//
sReturn = adl_adFormat();
TRACE (( 3, "adl_adFormat %d", sReturn ));//return value is 0//
//for delay//
for(i = 0;i<250;i++);
dwl_AppCellHandle = adl_adSubscribe ( dwl_CellID, ADL_AD_SIZE_UNDEF ); //return value is 0//
TRACE (( 3, "Subscribe to A&&D cell %.8X : %d", dwl_CellID, dwl_AppCellHandle ));
//test the Storage AREA add or not//
sReturn = adl_adGetState ( &State );
TRACE (( 3, "cell State1%d", sReturn ));//return value is 0//
for(i = 0;i<250;i++);
sReturn = adl_adWrite ( dwl_AppCellHandle, 130, FCM_temp );
//return value is 0//
for(i = 0;i<250;i++);
TRACE (( 3, "Write cell %d", sReturn ));
for(i = 0;i<250;i++);
sReturn = adl_adGetState ( &State );
//return value is 0//
//but the freemem,pad...are all same as the first adl_adGetState got//
TRACE (( 3, "cell State1%d", sReturn ));
for(i = 0;i<250;i++);
//read A&D area I wrote in//
sReturn = adl_adInfo(dwl_AppCellHandle,&Info);//return value is 0//
TRACE (( 3, "adl_adInfo%d", sReturn ));
AD_Read_Buffer = temp;
AD_Read_Buffer1 = Info.data;
wm_memcpy(AD_Read_Buffer,AD_Read_Buffer1,130);
//value in temp are 0xcd from 0~127//
//value in temp are 0x31 from 128~130 :roll: :roll: :roll: //
for(i = 0;i<250;i++);
for(i = 0;i<132;i++)
FCM_temp[i] = '1';
sReturn = adl_adWrite ( dwl_AppCellHandle, 130, FCM_temp );//return value is 0//
for(i = 0;i<250;i++);
TRACE (( 3, "Write cell %d", sReturn ));
for(i = 0;i<250;i++);
sReturn = adl_adInfo(dwl_AppCellHandle,&Info);//return value is 0//
TRACE (( 3, "adl_adInfo%d", sReturn ));
AD_Read_Buffer = temp;
AD_Read_Buffer1 = Info.data;
wm_memcpy(AD_Read_Buffer,AD_Read_Buffer1,130);
//Faint........the value in temp are same as the first operation.....//
for(i = 0;i<250;i++);
}
I have no idea…
Sorry for my silly question, but why do you expect a change in the array temp , if you change the content of the array FCM_temp ?
Regards
Ralf
Wallace
February 7, 2007, 10:33am
6
Hi FengT,
It seems you are keep reading the “first” 130 bytes of the cell, so you will always get the same result… remember newer data written is added after old ones but not overwrite.
Also I STRONGLY recommend you to read ALL Wavecom website’s Q&A:
http://www.wavecom.com/modules/movie/scenes/support/index.php?fuseAction=listFaqs
You will find a lot of info not mentioned in pdf files…
That’s Wavecom way… much infomation is only “documented” there…
FengT
February 7, 2007, 12:31pm
7
thanks Ralf,Wallace.
The important thing is the String I wrote is different from the String I Read
//read A&D area I wrote in//
sReturn = adl_adInfo(dwl_AppCellHandle,&Info);//return value is 0//
TRACE (( 3, "adl_adInfo%d", sReturn ));
AD_Read_Buffer = temp;
AD_Read_Buffer1 = Info.data;
wm_memcpy(AD_Read_Buffer,AD_Read_Buffer1,130);
//value in temp are 0xcd from 0~127//
//value in temp are 0x31 from 128~130 //
the String I Wrote is “1111111111…1111”(130BYTE)
the String I Read is 0xcd,0xcd…0xcd,0x31,0x31,0x31(130BYTE)
Wallace,I test your app,It has the same problem
Ralf,I chang the content and test,same,too…
(the String I wrote is different from the String I Read)
thanks again.
Best Regards
awneil
April 13, 2011, 5:59am
8
That was the old Wavecom site - where can this now be found on the Sierra Wireless site