V.110 datamodem in TAPI - Windows Mobile Development and Hacking General

I wana use V.110 9600....
I think I must use lineSetDevConfig(...)
but this function always return 0 and do nothing
Can you pass some source codes?

I wrote a DLL in eVC that makes a Tapi datamodem call and then called it from a simple eVB program just to show what functions it contained.
Have a look at the code for the DLL and you will see how I made a datamodem connection using TAPI.

No...No..No..
I know it all
FROM http://msdn.microsoft.com/library/d...ry/en-us/APISP/html/sp_tsp_cellbeararinfo.asp
"9,600 bps (V.32 compression setting)
Note This value is the standard setting used for 9,600 bps circuit switched data calls."
IN TEORY
I can select V.34 or V.110
IN DOWN OF PAGE
"An application may use lineGetDevConfig to determine the current settings."
...and I think I can use lineGetDevConfig and lineSetDevConfig
...but how?

Hello,
many thanks for the source code!!!javascript:emoticon(':wink:')
javascript:emoticon(':wink:')
I want to use the XDA for internet access via my laptop. With the new Rom version a programm WMODEM is delivered with the device. But with WMODEM there is only a GPRS connection possible.javascript:emoticon('')
javascript:emoticon('')
So I am searching for a programm like WMODEM which makes ist possible to use the XDA as a modem with which a can dial numbers via ATD...
Is this possible?
If yes where ?

Related

Starting up GPRS connection

How can I programatically initiate a GPRS connection on an XDA (using EVB)?. I have a program which works when the connection is up (started using explorer) but fails when down. Would I do it using the TAPI?
Martin
I think you should have a look at the Connection Manager API.
I don't have any EVB sample code for you, but take a look at the PocketPC 2002 SDK sample CMHELPER usualy found at this path if you have eVC and the SDK installed:
C:\Windows CE Tools\wce300\Pocket PC 2002\samples\mfc\CMHELPER
BTW, you can download the SDK from www.pocketpc.com ...
here is the solution
I also was lookinf for this solution forever and never found it so i wrote the software myself. Here is the dll that you need to connect to the internet through evb it connects to the default connection no problems.
http://xdaconnect.wastedbrains.com
have fun,
Dan Mayer
Not knowing anything about C++, is there a simple way to open a GPRS connection with just eVB?
danmanmayer, can you send me the sources?
Or maybe somebody knows URL where can I found info about it?
Thanks in advance
SapphireRAS does all this and more.
Connects/Disconnects via GPRS using eVB or VB.Net
Create and manages connections, locations etc.
See www.sapphire-solutions.co.uk

Data Call between two XDA's

Hi
I am new to this form.
I had a look at the tsril.zip example as it seems from this forum that to make/receive a data call the ril is the only option. Unfortunately the documentation for ril is nonexistent and I want to ask if someone has done an example of a client/server data call, data transfer between to XDA's.
Thanks in advance.
Anton
It all depends on what type of data you want to transfer. I have never used RIL so I don't know the advantages of it, over the normal programming interface. I say normal, not thinking there is anything wrong with RIL but the little I do know is that RIL is operating system level and is normally hidden from the application programmer. There must be times when RIL must be used if Microsoft forgot functions in the normal APIs.
However I would say that for a data link between 2 devices then RAS seems the way forward. One device would be the Server and the other the Client. I have only ever programmed RAS from the client side, making a Telnet link to an already running server.
I just had a look at the help on Embedded Visual C++ 3.0 and under 'Creating a TCP Stream Socket Application' it explains the server side and then links to the client side. Have a read there.
RAS is not an option as it is a server consept, which I think does not even exist as a service on the desktop windows os let alone on a Pocket PC.
What I am looking for is something similar that you would be able to do with a landline modem or a gsm modem connected to a serial port of a pc (even a usb modem) which is to send AT commands to make/accept a call and then to make use of the serial port as if it is an io stream. This is possible on windows, linux using either c#, c++ or java. I can even do this with an embedded gsm module like the siemens TC45 java module.
What I can not understand is why Microsoft and the XDA suppliers (I am using a Qtex running Pocket PC 2002) is making it so difficult to make/answer a data call and let you run your own protocol over the connected stream.
RAS (Remote Access Services) is built into all Windows Operating Systems, including Windows CE. Did you look up the help example I pointed to ? What you do with RAS on an application level is for you to code but the connection itself is handled by the operating system.
As to making a connection similer to a modem and using AT commands. Then no you can't use AT commands directly, but you don't need to. To get that type of connection you need to use TAPI. Once Tapi has made a DATA_MODEM type connection, you use the TAPI callback connect event to then ask for a file handle that you can use with the normal WriteFile and ReadFile commands.
I already have something on this forum about that see:-
http://forum.xda-developers.com/viewtopic.php?p=7857&highlight=#7857
The problem is not so much making the data call but it is accepting/answering the data call that I can not get working on the XDA
Not sure if this is your problem, but in Australia they have a seperate "data" phone number for the same SIM. If yo call one number you get voice, if you call another number you get data on the same sim. Not sure if this may be effecting you.
I just looked into all this ras stuff a bit deeper, and yes I think I may of been talking rubbish. Although RAS does exist in PPC2002, it can't see any functions that allow the device to answer the line. I can see that PPC2003 has a Ras Server and RasIOControl that looks like the answer there.
Also looking into Tapi, I can't see how you answer a data call using that.
So I now understand your problem. It seems PPC is made as a client device.
Is GPRS the answer ? With that the link is always present and then you can use the built in Ras functions on seperate devices. Since you only pay for data actually sent then would it matter if the network link was always present ?
I have only worked out Tapi and Ras from the client side so I have never had this problem, but I agree it is an interesting one. I will have a bow out of this thread for a bit and see if anybody else knows how to Answer a Call.
Thanks for trying.
GPRS is also not the answer as you need a server in between that both XDA's can connect too and use as a router as the XDA's do not get fixed IP adresses but actually a NAT adres from the APN so you can not connect directly between the two.
Now that's an interesting thought, how about using some free web space to act as a pigion hole for your data ?
Believer: A seperate number? How do you know this, and what would the number be?
I can actually make two XDA connecting to each other using TCP. The trick is that I have one client always connect to a server to register it IP address with an ID. Then the caller send a query to the server to look up the callee's IP address.
In this way, accept() and connect() work fine.
I am using AT&T network and not sure about if other networks behave the same.
I wrote two application using TAPI. One is ModemDial and the other is ModemWatch, if I make a voice call the ModemDial dials the number successfully and ModemWatch reports that an incoming call exist. But when I change the behavior of call to DATAMODEM, the ModemWatch couldn't track any incoming call.
Is there any one, had some experience with pick a call for DataModem?
Best regards,
A. Riazi
riazi said:
I wrote two application using TAPI. One is ModemDial and the other is ModemWatch, if I make a voice call the ModemDial dials the number successfully and ModemWatch reports that an incoming call exist. But when I change the behavior of call to DATAMODEM, the ModemWatch couldn't track any incoming call.
Is there any one, had some experience with pick a call for DataModem?
Best regards,
A. Riazi
Click to expand...
Click to collapse
In your ModemWatch application make sure you are calling lineOpen with dwPrivileges (the 7th parameter, 1 based) equal to LINECALLPRIVILEGE_OWNER and dwMediaModes (the 8th parameter) equal to LINEMEDIAMODE_DATAMODEM.
If you're able to answer a voice call successfully, making these changes to the ModemWatch application should allow you to answer a data call.

Program to handle GPRS automaticlly

I would like a program that can do the following:
The main purpose is that the program should be 100% automatic and will after a easy configuration be left alone and handle GPRS to be online whenever there are GSM/GPRS available.
* Create a connection (in system/connection) automaticly from a file or something.
* With the created connection above, the program should automaticly connect. From suspend mode and after a soft reset.
Anyone knows a good program that can do this or a great programmer that can supply features like the above (and more).
Best regards
Zomen
advise
1. use ConnMgrEstablish to establish GPRS connection
2. Create a hide window to received message when the connection status changing.
3. soft reboot issue: writting a service to these or config the target device to run your app at startup time.
4. active device on suspended state mode: try API CeSetUserNotification
Hi Zomen,
I think you will need to look at Connection Manager API. It handles all low level connections on the device, including GPRS. It can be found here -
http://msdn.microsoft.com/library/d...s/apippc/html/ppc_cnmn_connection_manager.asp
And here is an example -
http://www.codeguru.com/cpp/w-p/ce/pocketpc/article.php/c7355/
Cheers,
Dav
Thank you for the answers but how about using RAS to make the connection?
And remember that the purpose of the application is to work on a Mobile 5 device.
/Zomen
hi,
Hmm, I think it should be ok to work on Mobile 5, but I have only been using 4.21 so cant be sure. However, there is a helper sample which comes with Embedded Visual C++ 4. If you have EVC4 You can find it here -
C:\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Samples\Mfc\Cmhelper
And there is further information here about the sample here -
http://msdn.microsoft.com/library/d...s/guide_ppc/html/ppc_about_cmhelpersample.asp
You can use the sample to build a GPRS connection exe which will handle GPRS connections for you. At least on 4.21, havent tried on Mobile 5.
Cheers

RAS connection - how do I do it?

I want to make a connection to a server either via GPRS or via Activesync when cradled.
I used to use the API call RasDial on an old Windows CE 3.0 programme but this does not appear to make a connection under WM5 and fails to dial up a GPRS connection. It opens the port, etc but fails to dial.
Is there a simpler way to make a connection? Do I simply try to open a TCP/IP connection and the OS does it for me?
Any and all ideas appreciated!!
Dave...
Use Pocket PC connection manager API to make
a GPRS connection. That is the PPC way. RAS API
can be used but connection manager is better for
some things.
Houser
Houser said:
Use Pocket PC connection manager API to make
a GPRS connection. That is the PPC way. RAS API
can be used but connection manager is better for
some things.
Houser
Click to expand...
Click to collapse
Thanks. I found a sample of how to do this in the SDK so I will modify my code to use this instead and see if it all works.
Dave...

Recognising Wifi on WM5

Hello,
I've developed an application on WM4 that associates with 802.11 access-points and also establishes GPRS connections. Connections created with my app work just fine on PocketPC 2002 (WM4). When I ported to PocketPC 2005 (WM5) the application still creates the 802.11 and GPRS connections without error but the device will not recognise the 802.11 connection and always wants to create a connection using GPRS when I open IE or attempt any other IP connection. The only way around this that I've found is to put the phone into flight mode, but since my software is supposed to run on phones, that is not an option since users probably want to recieve calls while they browse. I've seen threads related to this on user forums but so far the only solution I've seen is to disable the phone.
Everything works just fine when WZC creates the 802.11 connection which leads me to believe that there's some IOCTL out there that tells the device to use the 802.11 connection.
Does anyone know the true magic to get around this?
litewoheat said:
Hello,
I've developed an application on WM4 that associates with 802.11 access-points and also establishes GPRS connections. Connections created with my app work just fine on PocketPC 2002 (WM4). When I ported to PocketPC 2005 (WM5) the application still creates the 802.11 and GPRS connections without error but the device will not recognise the 802.11 connection and always wants to create a connection using GPRS when I open IE or attempt any other IP connection. The only way around this that I've found is to put the phone into flight mode, but since my software is supposed to run on phones, that is not an option since users probably want to recieve calls while they browse. I've seen threads related to this on user forums but so far the only solution I've seen is to disable the phone.
Everything works just fine when WZC creates the 802.11 connection which leads me to believe that there's some IOCTL out there that tells the device to use the 802.11 connection.
Does anyone know the true magic to get around this?
Click to expand...
Click to collapse
Have you disable WZC ? If you disable the WZC of device, the Connection Manager can not detect the WiFi card and it use GPRS connection. IE use the service of Connection Manager for detect if a device is connected or no to internet.
WZC
WZC is disabled. With it enabled I cannot control the 802.11 device with NDISUIO.
litewoheat said:
WZC is disabled. With it enabled I cannot control the 802.11 device with NDISUIO.
Click to expand...
Click to collapse
Yes and no.
You can query and set OID value of 802.11 also if NDISUIO is locked by WZC.
IOCTL_NDISUIO_QUERY_OID_VALUE accept NDISUIO_QUERY_OID struct that in WinCE is present the ptcDeviceName variable. Set it with name of device and you can query OID value also if NDISUIO is locket by WZC.
You can select the access point with WZC and prefered network. The functions is WZCQueryInterface and WZCSetInterface.
Ciao Massimo
Really can't use WZC
Thanks for the informative reply. We'd like to turn WZC off for other reasons, mainly the notifications it displays when a new access point is in range. In places where there's metro wifi or just a large concentration of wifi access the notifications are extreeeeemly annoying when they constantly pop up(thanks Microsoft).
Is there a way to disable Connection Manager entirely so that it doesn't get in the way?
litewoheat said:
Thanks for the informative reply. We'd like to turn WZC off for other reasons, mainly the notifications it displays when a new access point is in range. In places where there's metro wifi or just a large concentration of wifi access the notifications are extreeeeemly annoying when they constantly pop up(thanks Microsoft).
Is there a way to disable Connection Manager entirely so that it doesn't get in the way?
Click to expand...
Click to collapse
For notification,you can simply disable from panel control->sound & notification.
For disable Connecion Manager, you must kill the process connmgr.exe with a task manager. Without connecion manager, the wifi remains enabled also you syncronize the device with activesync. The collateral effect is that IE don't work. The Connection Manager is a wrapper between applications and socket. Without CM, the applications can not establish a connection also is the device is effectively connected to network.
You can also disable WZC with DeactivateDevice API.
if I can give a suggestion to you, don't disable WZC or Connection Manager... the negative effect is more of positive effect. Try to use my prev solution.
I am developing a advanced manager of wireless with thie solution posted and work very well. I can select a my prefered AP, retrive RSSI and search SSID without disable WZC a CM.
Ciao Massimo
I'll give it a try, but...
OK, I think you've convinced me. Can I programatically disable the notifications? I can't really expect our users to do that.
litewoheat said:
OK, I think you've convinced me. Can I programatically disable the notifications? I can't really expect our users to do that.
Click to expand...
Click to collapse
For disable notifications edit the registry:
HKCU\ControlPanel\Notifications\{DDBD3B44-80B0-4b24-9DC4-839FEA6E559E}
and set
Options = 0
Ciao Massimo
How to link in wzcsapi.lib?
So I guess I'm not smart enough to figure out how to link in the library wzcsapi.lib. I'm using VS2005. I have Platform Builder so I do indeed have the correct files. I don't get a cannot file file linker error but I do get linker errors for every WZC function in my app. I tried the wzctool sample with the same outcome.
From what I can tell the wzcsapi.lib does have the exports I need but I just can't get VS2005 to link.
Is there some magic to use the WZC functions?
If you use Platform Builder, add into your catalog platform "Wireless LAN (802.11) STA - Automatic Configuration and 802.1x". After sysgen, you found wzcsapi.lib into $(_PROJECTROOT)\cesysgen\oak\lib\$(_CPUINDPATH)\ folder.
No using PB
I'm not using Platform Builder. I'm using VC2005.
Is there a solution for this issue
Using a dll without the correct lib file.
First my guess at the problem, and then a couple of questions.
Library files are compiler specific. The one you're using is for Platform Builder. Platform Builder's compiler probably differs from the one in VS2005.
Another way to use wzcsapi.dll is to link to it at run time using LoadLibrary and GetProcAddress like so
Code:
INTFS_KEY_TABLE GuidTable;
PINTFS_KEY_TABLE pGuidTable;
pGuidTable = &GuidTable;
HMODULE hMod = LoadLibrary (_T("wzcsapi.dll"));
if (hMod==NULL) {
_stprintf(buff, , ErrorCode);
MessageBox(NULL, _T("Failed to load wzcsapi.dll"), _T("ERROR"), MB_OK);
return;
}
_WZCEnumInterfaces pfnWZCEnumInterfaces = (_WZCEnumInterfaces) GetProcAddress (hMod, _T("WZCEnumInterfaces"));
if (pfnWZCEnumInterfaces == NULL) {
MessageBox(NULL, _T("Failed find function"), _T("ERROR"), MB_OK);
return;
}
DWORD ErrorCode = pfnWZCEnumInterfaces(NULL, pGuidTable);
if (ErrorCode!= ERROR_SUCCESS )
{
ErrorCode=GetLastError();
_stprintf(buff, _T("WZCEnumInterfaces Failed--error code %d"), ErrorCode);
MessageBox(NULL, buff, _T("ERROR"), MB_OK);
return;
}
Now for the question part .
How does a miniport driver originally tell the connection manager to consider using the miniport when making and IP connection?
Also, I'd like to be able to request 802.11 scans and set OID_802_11_BSSID to force association with a particular access point. Is this best done using CreateFile/DeviceIoControl or using the WZC funtions? I'll guess using DeviceIoControl, since it doesn't look possible using WZC functions? Can I do this with connection manager running? Anyone have sample code for getting/setting one of the OID_802_11 oid's?
Thanks,
SetoK
Thanks
SetoK

Categories

Resources