The originating tag calls Modem Manager's MakeCall() method with a media value mode indicating an audio call. Immediately, the tag's DataPort variable is set to a valid value. Shortly after, DataPort becomes a pointer to an array, indicating that the call is queued. Once call setup is started, DataPort almost immediately becomes a valid stream value. This is different from data call setup, in that there is no progress indication, and although DataPort is a stream value, the call has not actually connected at this stage. This anomaly arises because a modem operating in voice mode cannot acquire and interpret the various tones that indicate the progress of the call – the modem returns connected status as soon as dialing is complete.
The only practical action the caller can invoke is to operate a time-out that allows a typical connect time, before starting to use the stream.
Any data written to the stream is converted to speech using the voice identified when the discriminator was registered. The speech device is initialized using the string defined by the DialerSpeechInit Config.ini variable. Data written may include any escape sequences meaningful to the TTS engine.
If a bookmark is set, when the bookmark is reported back to the Modem Manager, a single character equal to 0x45+Bookmark Number is inserted into the stream and may be read by the tag.
The only other data that can be received are DTMF tones
input at the remote device. In order to receive such tones, this requirement
must have been specified in the media mode supplied to MakeCall(). This data appears in the stream as the
digits 0..9, or as the number-hatch (
) or asterisk (*) character.
To shut down a call, you can call the CancelCall() method. If the other end hangs up, DataPort will become invalid.