Data Call questions

We have devices that send data over GPRS. They can use CSD calls sometimes.
The part of code that realize GPRS exchange is in OpenAT and part of code for DATA calls is in external processor. It seems that DATA calls are processed on UART1, since we can see incoming chars and UART1 is blocked between CONNECT and hangup.
Now we think about speeding up data exchange and porting CSD part from processor to OpenAT. But after some experiments I cannot understand some issues for ADL Call API:

  • is it possible to have CSD exchange without breaking GPRS session?
  • it seems to be a bit slower. At least CONNECT shows after longer time than before
  • is it possible to use transparent data calls? All I’ve got is some garbage. Does somebody know how to get data from this garbage?

That may have some advantages - but I not sure that speed would be one of them?

No.

Even closing a GPRS session to do CSD has (had?) problems - see: viewtopic.php?f=16&t=1607&st=0&sk=t&sd=a&hilit=gprs+csd

What seems to be slower?
Slower than what?

Shows up where?
Before what?

It should be just like using any other modem.

Are you sure that “garbage” isn’t just the encoding used by the other end?

But there may be some settings required according to your network; eg, see: viewtopic.php?t=1622&highlight=orange

Why it is impossible? It works without closing GPRS session if used with external processor. Why it cannot work from within module?

Slower than our current realisation (ATA from external processor).

Shows in terminal connected to UART1. It shows slower (or doesn’t shows ever) than it was with external processor.

I’m not sure in anything about modem data exchange cause it’s pretty hard to debug and it’s not so much info about this stuff in internet. All I’ve got is that after setting transparent mode on my side I get CONNECT indication very fast but after it I get some random stuff and sometimes I get valid data. With not transparent mode I wait for some time for CONNECT but I usually get valid data or no data at all.
While experimenting with ADL call API I managed to make remote terminal: answer to the call and exchange AT commands as data (from ADL examples). But the result is not satisfactory at all. I need to close session (as said in links that you gave me) and I still do not understand that transparent call stuff.