AD for other purposes than DOTA

Hi people,

I am getting data from a TCP server and I have to process it. This is not DOTA, simple bynary data.
Since I cannot process my data on the go, I have decided to store it in a AD cell (2x 1kbyte).

Everything is correctly written but I do not know how to read it…
I mean, what is the parent function to adl_adWrite ? is there a adl_adRead ?

Can anyone please help me ?

Thanks in advance


Stefan Pelimon


You can use the adl_adInfo () function for reading the data. You receive a pointer to the written data along with other infos about the AD cell.

There is more info in the adl user guide by the adl_adInfo() function.

Best Regards,


Hi TomAlex,

thank you for your quick answer. It is really a good idea to use adl_adInfo() function, it will allow me to work in asynchronous mode.

The problem is now that I have a huge problem :

when I make adSubscribe,

cell_handle = adl_adSubscribe(1, ADL_AD_SIZE_UNDEF);

I get error codes like -20, -23 …

The documentation says it is the beginning of the specific error codes, do you yourself or anybode else already experienced this severe case ?

Please help me ,

yours Stefan Pelimon


Please make a test and start your application with adl_adFormat() function, and after that you should be able to subscribe to the cell.

If this solves your problem, your ad flash space needed a reformat. I have red somewhere, that the AD space could get corrupted if unwanted reset or power losses occur.


Hi TomAlex,

thanks for your help.

I have found out that my module loses the configuration for AD storage.

When you type the command AT+WOPEN=6 you shoud get +WOPEN 6, 512, 1088. This means you have about ~ 512kb for AD.

If you get +WOPEN:6, 0,1088 it means that nothing is allowed to AD. The problem in my module is that it looses this config at almost every reboot.

Do you or somebody else know how to make permanent configuration for AD ? maybe in the e2p customisation files ?

Please, I need help

Thanks in advance,


Stefan Pelimon


You have to use the AT&W command to save modifications in EEPROM.


Thanks David,

I had forgotten this command. I will give you feedback when I will re-use the Q655 firmware.

Nevertheless I think you are right,


Stefan Pelimon

Hi David,

I returned on firmware Q6.55 and OPEN AT v3.10 after one month and I observe that this release is really problematic.

When I try to set my AD memory cutting with command AT+WOPEN=6,512 or AT+WOPEN=6,768 it works only once.

After reboot the answer to AT+WOPEN=6 is +WOPEN 6, 512, 1088. this is OK.
Then after second reboot the answer is again the old one +WOPEN:6, 0,1088.

Saving the parameters with AT&W command makes no difference. writing it before or after reboot due to AT+WOPEN=6,512 command.

I think I really have to work with OpenAT v3.02 and Q651.

Can somebody help me please ?



Hello Stefan,

It looks like I’m running into the same problem now as you did. Only I have used the A&D memory for quitte a while whitout any problem. And I also use Q6.55/v3.10.

The only thing I did not do was erasing Cell’s. With my first attempt to erase Cell’s I powerred down the Modem (Q2406) while recompacting was in progress.

Now I get exactly the same result as you for “AT+WOPEN=6,512”. If I try to allocate more memory with “AT+WOPEN=6,768” the modem just hangs, and never returns.

Did you allready find the cause of your problem? Have you tried going back to Q6.51/v3.02 ?



Hello Peter,

when I started AD development in april 2006 I initially developed with core Q6.55/v3.10 and it worked for a while. Then it stopped suddenly. Memory areas sizing was not possible anymore with AT+WOPEN=6.

Yes, now I came back to Q652/v304 and I am dealing with other known problems than AD storage.


Stefan Pelimon

Hello again,

I have got my modem working again, with help from our distibutor:

format the ad-space with adl_adFormat () from within the application,
then do a adl_adRecompact() and wait untill this is ready.

After this everything worked well again.