PDA

View Full Version : TAPI lineGetID on XDA II


new_to_imate
29th June 2004, 04:48 PM
Trying to write a program to record phone calls and act as answering machine. I'm initializing TAPI, opening the cellular line, then trying to use lineGetID to get the "wave/in" and "wave/out" devices id's, this last function call always returns the same error "the operation failed".
Any thoughts???

mamaich
30th June 2004, 08:50 AM
as I've wrote before it is impossible to make an answering machine. You can record phone calls, but cannot play anything to the line. It is a software limitation in CE 4.20

edsub
30th June 2004, 04:39 PM
HOW can you record phone calls
(sounds handy when certain callcentre agents make promises)

mamaich
1st July 2004, 01:33 AM
built-in recorder can record calls. You may decompile it to find how it is working. I think that code used to record calls is the same as recording from a device microphone when the call is not active.

nutitija
4th October 2005, 05:26 AM
How would you use LineGetId in order to recieve data calls through TAPI ?? I'm struggling udnerstanding where this function should be implemented and what it actually does.

Thanks for all your help !!!

IIIu30uD
4th October 2005, 09:22 AM
After you catch CONNECT event (media type is datamodem) you must get handler of opened serial device for data transmition

1)LPVARSTRING lpVarStr;
2)Allocate memory for lpVarStr;
3)Call lineGetID
for example: lineGetID(0, 0, hCall, LINECALLSELECT_CALL, lpVarStr, TEXT("comm/datamodem"))
4-th parameter means how call will be selected
LINECALLSELECT_CALL - select by specified call
also you can select by deviceID, address, line etc
last parameter specifies device class (look msdn for possible values)
4)check lpVarStr->dwNeededSize
5)Realloc lpVarStr
6)call lineGetID
7)get handle of serial device *(LPHANDLE)((BYTE*)lpVarStr + lpVarStr->dwStringOffset))

OdeeanRDeathshead
16th January 2006, 04:57 PM
I think you will find that the ability to record the incoming audio is only as a result of the microphone picking up the audio from the speaker. I have tested everything I can think of to do this and hit a brick wall. firstly if you check the linedevcaps for each line device, non support the "wave/***" classes needed. Secondly the linegetid will always fail because of the way the line is being opened. To open a line correctly to use "wave/***" in linegetid, the dwmediamodes flag of lineopen needs to be set to LINEMEDIAMODE_AUTOMATEDVOICE. If you did not an error of LINEERR_INVALMEDIAMODE returns. If your error is LINEERR_OPERATIONFAILED, I think it could be coming from your timing of when you call linegetid. This will not work on any device I have because the hardware will not support it.

There is a physical seperation between the hardware that picks up and sends voice, and the computing hardware. I first encountered this while using an audiovox rtm8000 card in a toshiba e570. The modem built into the card can communicate data over the port but dose nothing with audio. That may sound irrelivant exept that later audiovox started selling the hardware combination built together under their brand as a pda phone to compeat with xda. They modified it by hooking the system speaker and mic up to the card with extra wires internally. All pda phones are arranged essentially like this. the fact that you cant see a seperate "phone card" makes it deceptive.
.
.
.
.
.
loose end. How dose my bluetooth wireless earpeice get the audio from my xdaII. Explore that, I am.