Bug in DTL 1.0?


First of all, I’m very happy with the resources of Q2501B. It is a nice GSM module with a powerful TCP/IP stack. My product is 95% finished and currently I’m testing the module in the streets.
After many hours analysing the logs created by my application, I detected a strange behavior from DTL 1.0 library. Sometimes I can not get the IP connection and DTL seems to be frozen.
Fortunately I detected where is the problem and how to simulate it.

I’m using:
+WOPEN: 2,“AT v03.10”,“AT v03.10”
655_09gg.Q2501B 2015268 111705 17:01

Sequence of command to reproduce the problem:

-> At+CGATT=1

-> sReturn = dtl_ipConnect (DtlHandle);
(Introduce here a command AT+CGATT=0 (GPRS Dettach)

After a GPRS dettach just after DTL_SRV_EVENT_IP_CONNECTING, DTL library remain completely corrupted and the event DTL_SRV_EVENT_IP_CONNECTED never appears. It is necessary to restart the module with “AT+CFUN=1” to get other GPRS connection with DTL.

In the streets, the problem appears when the module is connecting and the GSM signal is weak.

I fixed the problem creating a complete rotine to restart the module with AT+CFUN=1 but this routine affect the GPS and many positions are lost. Certainly it is not the most elegant option.

I think that a routine like “DTL_Reset” would be userful in the future.

Comments will be welcome.


Negative! It is not a bug of DTL.
I replaced DTL by edLib and got the same problem:

Instead dtl_ipConnect() , I used ed_GprsSetConfig and ed_DialupConnectionStart and the result was the same:

Sequence of command to reproduce the problem with edLib:

-> At+CGATT=1

-> sReturn= ed_GprsSetConfig (&ParamsGPRS);
-> sReturn= ed_DialupConnectionStart (Dialup_Callback);

(Introduce here a command AT+CGATT=0 (GPRS Dettach))
Just type it in Hyperterminal before receiving ED_OK_GPRS_SESSION_SET


After the GPRS dettach, “Dialup_Callback” is not called anymore and edLib remains corrupted. If I try a new GPRS connection, “Dialup_Callback” returns ED_ERR_WM_GPRS_OPEN.

Once I receive ED_ERR_WM_GPRS_OPEN, the module must be restarted.

Any help about how to reset edLib / DTL without to reset the module will be welcome.