Problems reading A&D


#1

Hi all!!, im trying to read a cell wich i`ve already write using the adl_adInfo funtion. First i suscribe the cell with success, then i use the info function but a ADL_RET_ERR_PARAM error appears!. I really dont know what im doing wrong.

This is the code

bool adStorage_ReadMem(u8 *BufferRdMem,int CELLID)
{
TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:Inside adStorage_ReadMem"));
adStorage_SuscribeCELLHandler=adl_adSubscribe(CELLID,ADL_AD_SIZE_UNDEF);

		switch(adStorage_SuscribeCELLHandler)
				{
		case OK:
		TRACE((1,"[wav_adStorage.c][adStorage_SuscribeCELLHandler]:sadl_adSubscribe OK"));
		s32 respuesta=adl_adInfo(adStorage_SuscribeCELLHandler,adStorage_Info);

					switch(respuesta)
						{
					case OK:	//on success
			                                TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:adl_adInfo OK"));
					u8 datoaux;
					datoaux= (u8*)(adStorage_Info->data); 						TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:Valor de datosaux %d",datoaux));
							return TRUE;
							break;

			               case ADL_RET_ERR_PARAM:
				TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_RET_ERR_PARAM"));
							return FALSE;
							break;

				case ADL_RET_ERR_UNKNOWN_HDL: 	//if the handle was not subscribed
				tRACE((1,"[wav_adStorage.c]Storage_ReadMem]:ADL_RET_ERR_UNKNOWN_HDL"));
								return FALSE;

							break;

							case ADL_RET_ERR_BAD_STATE:		//if the required cell is a not finalized or an undefined size
								TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_RET_ERR_BAD_STATE"));
								return FALSE;

							break;

							case ADL_RET_ERR_SERVICE_LOCKED:	//if the function was called from a low level interrupt handler (the function is forbidden in this context)
								TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_RET_ERR_SERVICE_LOCKED"));
								return FALSE;

							break;
						}






					break;

					case ADL_RET_ERR_ALREADY_SUBSCRIBED:		//if the cell is already subscribed
						TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_RET_ERR_ALREADY_SUBSCRIBED"));

					break;

					case ADL_AD_RET_ERR_OVERFLOW: 			//if there is not enough allocated space
						TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_AD_RET_ERR_OVERFLOW"));

					break;

					case ADL_AD_RET_ERR_NOT_AVAILABLE:	//	if there is no A&D space available on the product
						TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_AD_RET_ERR_NOT_AVAILABLE "));

					break;

					 case ADL_RET_ERR_PARAM:				//	if the CellId parameter is 0xFFFFFFFF (this value should not be used as an A&D Cell ID)
						 TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_RET_ERR_PARAM"));

					 break;

					 case ADL_RET_ERR_BAD_STATE:			//	(when subscribing an undefined size cell) if another undefined size cell is already subscribed and not finalized
						 TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_RET_ERR_BAD_STATE"));

					 break;

					 case ADL_RET_ERR_SERVICE_LOCKED:
						 TRACE((1,"[wav_adStorage.c][adStorage_ReadMem]:ADL_RET_ERR_SERVICE_LOCKED"));

					 break;


				}



return FALSE;
}

#2

You need to follow Wavecom step how to use A&D before writing code. For my understanding, you should subscribe event (adl_adEventSubscribe) before subscribe (adl_adSubscribe) A&D, and make sure both of them OK. Afterthat you can call read (adl_adInfo), write (adl_adWrite), delete (adl_adDelete), etc. Do not use adl_adInfo_t instance to pass the second parameter of adl_adInfo, use refernce, or pointer, that is,

s32 respuesta=adl_adInfo(adStorage_SuscribeCELLHandler,adStorage_Info);

should be

s32 respuesta=adl_adInfo(adStorage_SuscribeCELLHandler,&adStorage_Info);

Hope it may help you to solve the problem. Good luck.


#3

It worked!!. Thank u so much!!!. :smiley: