adl_adInstall reboot solution

Hi.

I have discovered why adl_adInstall hangs.

After calling adl_adinstall the modem waits until all the buffered unsolicited responses are sent, if UART1 is in data mode it will wait forever. So its necesary to put UART1 in AT mode before calling adl_adInstall.

adl_fcmSwitchV24State(uart1Handler, ADL_FCM_V24_STATE_AT);
adl_adInstall(cellHandle);

I hadn’t noticed that it did hang!

I keep the UART in Data mode, and haven’t noticed the problem - but then I do take care to ensure that unsolicited responses are disabled.

Does this mean that there is a possible trap waiting for me, and some unexpected unsolicited response could actually hang my adl_adInstall … ? :open_mouth:

Have you had this “feature” confirmed by Wavecom?

Its not confirmed by wavecom but there are a lot of threads about this problem.
I will try to disable unsolicited responses and see what happens.

If you’re sure that it’s unsolicited responses that cause it, then I think your suggestion to ensure that the UART is in AT mode is the safest - otherwise you’re still at risk from some unexpected unsolicited response…

Good morning. I just noriced this and think a simpler solution is to add the following code as the very first code to execute whent he OBA starts up. Works very well and you do not have to worry about issuing and calls to make sure things are set up before the install.

And BTW, I have implemented, successfully, DOTA operation using HTTP GET over TCP/IP in my own custom IP stack.

/**
* First block any possibility of unsolicited events occurring on the serial port.
* This is to eliminate any possible cause for the adl_adInstall command from starting
* and completing the reset. This is an known cause of the install not completing
*/
adl_atCmdCreate(“AT+WIND=28667”,FALSE,NULL,NULL);
adl_atUnSoSubscribe("",Block_UnSo_Handler);

///////////////////////////////////////////////////////////////////////////////
/// FUNCTION: Block_UnSo_Handler
/// PURPOSE: Used to block any unsolicited event output to the serial port
/// at initialize time. Resolves the adl_adInstall issue
/// INPUT:
/// OUTPUT:
///
/// ORIGIN: 02/29/2008 DR Hendershot
/// MODIFICATIONS: DATE WHO MODIFICATION
///
/// FUNCTION NOTES:
///
///////////////////////////////////////////////////////////////////////////////
bool Block_UnSo_Handler( adl_atUnsolicited_t *Unsol_Event )
{
return FALSE;
}

Good morning. I just noriced this and think a simpler solution is to add the following code as the very first code to execute whent he OBA starts up. Works very well and you do not have to worry about issuing and calls to make sure things are set up before the install.

And BTW, I have implemented, successfully, DOTA operation using HTTP GET over TCP/IP in my own custom IP stack.

/**
* First block any possibility of unsolicited events occurring on the serial port.
* This is to eliminate any possible cause for the adl_adInstall command from starting
* and completing the reset. This is an known cause of the install not completing
*/
adl_atCmdCreate(“AT+WIND=28667”,FALSE,NULL,NULL);
adl_atUnSoSubscribe("",Block_UnSo_Handler);

///////////////////////////////////////////////////////////////////////////////
/// FUNCTION: Block_UnSo_Handler
/// PURPOSE: Used to block any unsolicited event output to the serial port
/// at initialize time. Resolves the adl_adInstall issue
/// INPUT:
/// OUTPUT:
///
/// ORIGIN: 02/29/2008 DR Hendershot
/// MODIFICATIONS: DATE WHO MODIFICATION
///
/// FUNCTION NOTES:
///
///////////////////////////////////////////////////////////////////////////////
bool Block_UnSo_Handler( adl_atUnsolicited_t *Unsol_Event )
{
return FALSE;
}

This worked for me. Thanks a lot for your post. Simple solution to a tough problem.