TAPI cellular line CSD call - howto stop provider error handling ? - Windows Mobile Development and Hacking General

Hi,
I have written a program to make a CSD data call from one PPC to another using TAPI with the Cellular line provider. However, I want a clean line so that I can do throughput measurements but the provider seems to do its own error handling. I want to handle errors myself but I don't know how to get a line without automatic error handling. Cab anyone help ?
Mark.c

Just to make things a bit clearer -
If you make the call using AT modem commands you would use the CBST command to switch off automatic error control on the line. This is also known as transparent and non-transparent mode. Non-transparent is what I want. I think that this can be set by TAPI commands for high-speed data calls such as GPRS but I want to be able to set non-transparent mode for a basic low speed CSD call.
Is this possible ?
mark.c

Answering myself again :-( but I think that it is worth it as someone else might find some value here.
I have now established that transparent mode is what I want. A non-transparent CSD call invokes the network's error control mechanism. However I have found that it makes no difference, as my results are the same for both types of call. I get bad jitter and no errors in both modes. This tells me that the network may be ignoring the phone CSD setting and always using non-transparent mode. I actually remember someone else on this forum saying that some operators use non-transparent mode always. Perhaps I will have to abandon TAPI and try connecting using Hayes AT commands :-(
mark.c

Related

GSM/GPRS and Roam detection?

Hi,
I've been having problems getting some cellular info for my program. In both cases I open a tapi line to the "Cellular Line" device...
Problem 1:
I am trying to use lineGetCurrentSystemType() in extapi to get information about the current connection type. In other words I want to know if the phone currently has GPRS or GSM capability. I can successfully open the line, but everytime I call lineGetCurrentSystemType() I get LINEERR_OPERATIONFAILED. Can anyone help with this, or offer a better solution?
Problem 2:
I want to know if the phone is roaming, or on its home network. I've been using lineGetLineDevStatus() from TAPI, but dwRoamMode is always LINEROAMMODE_UNAVAIL. Can anyone tell me how to get the roaming status?
Thanx,
Blair.
Whenever I try to read ROAM from lineGetLineDevStatus() I always get LINEROAMMODE_HOME even when it is searching for a network. I think the implementation of some of these members is not complete because the phone hardware people did not provide it to the driver.
On my XDA2, the lineGetCurrentSystemType() returns LINESYSTEMTYPE_GSM, so I can't help you with that....
I'm assuming you've already done this, but you did the following functions right?
lineInitialize
lineNegotiateAPIVersion
lineOpen
I couldn't get anything to work until I did the lineNegotiateAPIVersion call
Yep, I've done those. And I select the "Cellular Line" device. I use a lot of code from the SDK Tapi examples. I'll keep working on it.
You wouldn't happen to know how to get the cellular's phone number from Tapi, do you?
Thanks,
Blair.

How to send a data over GSM(XDA II) ?.

Hi,
Thks for the reply, Is it possible to send a data through GSM(XDA II ) ?.
( with out using SMS command )
if possible means how i can do that ?.
in GPRS there is digital to analog coverter is there( am i correct ?)
the same converter is available in GSM as well or what ?
Kindly explain me in details.
regards,
Rajesh. S
What do you mean?
For network connectivity you can choose from either GPRS or Switched line.
With GPRS you get the fastest connection (maybe even 64kps). You pay per kB/MB datatraffic (up & down add up!). Price per kB/MB can be quite high.
With Switched line (cellular line) your speed is limited to 9.6kbps. You pay per minute/second connected.
Advantage (for me) is I can pay my switched line data connections from my monthly calling-bundle (ie. no extra costs)
Depending on your subscription you van make FAX calls as well. Those are always via Switched line, but most of the time have to be paid for separately.
Since your device also has a built-in modem you canb also set up modem connections, those are always via Switched line, and most of the time have to be paid for separately.
Hi Edsub
I've been trying to set my XDAii up to use up all those free minutes i have hanging about (just to check email) but have been unable to do so.
Any suggestions?
Oo, nearly forgot to say, yes, it is the circuit switched connection i'm trying to use - the question is how (this is, i expect, gonna depend mostly on the Orange UK connection settings which they have not been able to provide me with -perhaps one of the clever chaps reading this post may have suggestions)
ta
Happy new year, btw
You cannot use the orange connection settings. I bet they do not supply (cheap) dial-up access where they can sell (expensive) gprs access . . .
What I did is just get a free Internet subscribtion with 'an' ISP (doesnt matter which one really, youre only using them to get a dial-up number).
There is one trick (at least here in holland): Most free ISP's have dial-numbers in a special range and thus:
- cannot be dialed from most mobile devices (also a special number range here)
- if dialed do not fall into the monthly bundle
- cannot be dialed from abroad.
AFAIK in Holland the only ISP that has a special dial-up number for mobile/abroad use is Zonnet.
Maybe this issue is not the case in UK, but do check it before starting to puzzle.
For network setting you just use the settings as provided by the ISP
Aha! Cunning! I'm off on holiday tomorrow but will check it when i get back. Thanks very much for the suggestion.
Data Call over GSM ?
I've been trying to get some useful links on steps on making a GSM data call from a GSM phone to another GSM phone. But haven't been able to find a complete document with the AT commands that are required for making a data call. can somebody plz provide somelinks how data calls can be made between GSM phones? & how to receive the data call ? what AT Commands i have to use ?
thanks in advance
Rajesh. S

Listening to incoming data calls using RIL functions

Hi guys,
I'm trying to write a code which uses a RIL.dll exports function to listen to incoming data calls (CSD).
My application does receive the first incoming RING notification, but then the incoming waiting call is disconnected. I was trying to analyze the AT commands log and figured out that after the first RING message "AT+CHLD=0\r" is executed, which sends a busy signal to the other party.
Another "interesting" fact is that I do receive incoming voice calls normally.
I tried to use TAPI to accomplish the same functionality and it worked just fine.
Thanks,
Miro
PS: I am using XDA2 with WM2003SE
I posted two days ago.
http://forum.xda-developers.com/viewtopic.php?t=21333
But I have not found the decision yet
I think RIL_SetCallWaitingStatus can helps. But this function doesn't seems work.
I tried RIL_SetCallWaitingStatus with no luck (It responds Ok, but no change occurs).
It is obvious that incoming call types can be somehow configured, because CellTSP.dll is working ok (most of the time) and is able to receive data calls.
RIL.dll from WM2003SE is exporting some new functions like RIL_SetPreferredPrivacyMode (I looked into RIL.DLL exports), maybe these functions are somehow relates to our desired functionality. But at the other hand CellTSP.dll (TAPI service provider) is not importing these new functions.
I tried to disassemble CellTSP.dll to look after it's initialization sequence, but with my small understanding of ARM assembly I didn't understand much.
IIIu30uD said:
I posted two days ago.
http://forum.xda-developers.com/viewtopic.php?t=21333
But I have not found the decision yet
I think RIL_SetCallWaitingStatus can helps. But this function doesn't seems work.
Click to expand...
Click to collapse
I think that RIL doesn't send DISCONNECT manualy.
I think that Service Provider sends DISCONNECT, because it think, that it must receive only VOICE.
heh
I removed all keys from HKEY_LOCAL_MACHINE\TAPI\TSP, and restarted device.
After reboot I catched error: "Unable to initialize TAPI monitor process!"
I started my program with RIL, and I received datacall correctly.
I was right.
Do you know how kill TAPI temporary?
You are good!
Previously I had a thoughts that maybe some other process is responsible of disconnecting data call, but I was unable to figure out that it's TAPI.
Nice job!
Now the problem is how to get CPROG.EXE back to work - some of it's componets uses TAPI (well maybe it's not a problem for you, but for me it is). I thought of patching the import entries of RIL.DLL at the import table of CellTSP.DLL and hide the RING data call notification from it. Or maybe not pass the RIL_ManageCalls function (which is responsible of disconnecting the data call) to the RIL.DLL. This way we can run TAPI TSP and not be worried about data calls disconnection.
I did import table patching before - i'll try to get it work here....
I think I have a better solution:
TAPI is responsible of disconnecting (marking as BUSY) incoming data calls. I guess it operates this way, because it's only active "clients" (CPROG modules for example) are handling voice calls only. It is obvious, becase when we are trying to handle data calls though TAPI, it does not disconnects incoming calls.
If these assumptions are correct, the only thing we should do, is to initialize TAPI line (lineOpen) with LINEMEDIAMODE_DATAMODEM and hold it until we exit the application. This way we can continue working directly with RIL and not worry about TAPI, which will not disconnect data calls.
I am "running" with this now....
I am afraid that in this way TAPI will try to set bearer mode. This is not interesting for me. I worked with RIL because I don't know how set bearer mode via TAPI (if possible).
would u agree to say that it would be possible to establisha data call using TAPI from an XDA to a remote unit ??

Why incoming call is blocked while GPRS is in transmission?

hi all,
i got a very annoying "feature" in the O2 Cosmo(T-Mobile Dash). The incoming call will be blocked(heard busy tone) if the GPRS is in transmission. I was complained by many friends.
To my understanding, there's a setting in some phones to enable both GSM/GPRS concurrent connections. Is there such setting in Windows Mobile?
My ROM is 1.13.207.2, RADIO is 4.1.13.28_02.63.90
i tried to refersh its ROM, but don't know how to CID unlock. the "RUU_Excalibur_SPL-1.11_UpgradeOnly.exe" on the server has no luck for me, still "Invalid model ID".
can anythone show light on me?
thank you
reply
I think microsoft released a patch for that: i'll try find it on google for you. can you explain what configuration you used?
I think the 'patch' you need is called 3G.
I have the exact same problem and I opened a thread on it as well.
Read here.
The conclusion we reached was that this is a network, not phone dependent problem.
yeah never happent to me ever
thanks for all the replies.
My previous phone is O2 XDA Mini S(Wizard). I used that one to receive push mail provided by GoodLink, which requires GPRS always on. I didn't have such issue with that, at least no complain from my friends.
That's why i am wondering something wrong with the RADIO configuration. I didn't make any specific change to my new O2 XDA Cosmo(Excalibur).
best regards
And back to my memory.
I used to have the classical Ericsson T39. There was a setting to enable GSM incoming call during GPRS transmission(cannot remember the exact name). By enable that, i can still receive incoming call, and the GPRS connection will auto resume after the call.
Is there similar setting for Windows Mobile?
There is not as far as I've ever known. I've used smartphones that determined which was blocked and which was not based on which application was in use at the time. That is, if you were actively using IE or some other network app, phone calls would go straight to voice mail. If a non-network app was front and center at the time, the network would be disconnected and the phone would ring. That (and the SE settings mentioned above which I saw on my SE phones too) showed that it was a phone setting made by the carrier. I'd hope there's a little more intelligence behind it than just "voice trumps network" but if there is, I couldn't tell you what determines which gets through and when.
I've found that it's based on the amount of data being transmitted at the time of the (attempted) call. For example, high-bandwith usage such as media streaming will lead to the incoming phone call being blocked/diverted most of the time, whereas sporadic usage (eg. PING, or loading a very simple web page) has allowed a call to come in, temporarily disabling GPRS. GPRS can never be used during a phone call.

[RIL] - Making a data call and getting the handle...

I need to make a data call through RIL api.
I deployed 2 different programs on 2 i-mate JASJAR palmars which uses
API. I'm able to make the data call and wait all the connection setup
until i receive from both sides RIL_NOTIFY_CONNECT.
I print those messages on the pocketconsole and the connection
speed is 9.6 kbit/s through the CSD (Circuit Switched Data) channel.
The problem is that when i try to RIL_GetSerialPortHandle and send
data to the other side i receive a strange handle with value 0xffffff.
Trying to call read/write on that handle doesn't work.
Is there any example-code about data calls with RIL?
Thanks.
RIL
1)Deny to TAPI to drop datacalls (search on this forum)
2)Initialize RIL and set callbacks(RIL_Initialize)
3)For originate - RIL_Dial
4)For answer - RIL_Answer
5)For hangup - RIL_Hangup
6)After connect get COM-device (RIL_GetSerialPortHandle)
I've found this valuable knowledge.
The only thing i'm not doing is the first point and i don't know how to.
Anyone knows?

Categories

Resources