Media Mode Handoffs
A
media mode handoff takes place when there is a new, targeted media mode, usually when the owning
application determines that the media mode needed for the call is not present
or is about to change. The process for a media-dependent handoff can be a
probing process if the UNKNOWN bit is on, and is virtually the same as for the
initial assignment of a call to an application. The difference is the fact that
lineHandoff can have only one media-mode bit set.
Because only a single media mode bit can be specified, the call is given to
the highest priority application for that media mode. However, it is possible
that more than one media mode is to be considered for the handoff. In this case,
the handing-off application should specify the highest-priority of the possible
media modes as a parameter for
lineHandoff. If an applications specifies the UNKNOWN bit when performing a media-mode
handoff and the handoff fails, this means that no Unknown application is
currently running. The handing-off application should then try to hand the call off to
the highest priority application registered for the next higher media mode.
The receiving application is now responsible for the call. It now probes for
the call's actual media mode. If the call's media mode matches that handled by
the application, it must ensure that it is the highest-priority application
registered for that media mode. If so, it keeps the call and processes it normally.
If not, it hands the call off to another application registered for that media
mode.
If, however, the probe for that media mode fails, the application probes
again, attempting the remaining media-mode possibilities. It determines these by
examining the
dwMediaMode field in the
LINECALLINFO structure. But first, using the
lineSetMediaMode function, the owning application turns off the bit for the current
(disproved) media mode in the
dwMediaMode field.
This process of probing and handing off continues, and the remaining media
modes are eliminated one by one. Along the way, one of the applications may see
that the media mode it handles is on the call, and the handoff is successful. The
application should now perform a final
lineSetMediaMode to set the correct media mode and clear all other media-mode bits. This
informs other interested applications of the correct media mode. These other
applications receive a LINE_CALLINFO message stating that the call's media mode has
changed. To determine the correct media mode, they invoke
lineGetCallInfo and examine the
dwMediaMode member in the
LINECALLINFO structure.
It is the responsibility of the owning application to cycle through media
modes to find the highest-priority application. TAPI does this cycling only on the
initial incoming call to find the first owner. It does not do it when
lineHandoff is called.
To sum up the media-mode handoff process, TAPI
does not check for other media bits during
lineHandoff. TAPI only attempts to hand off to the
single media mode indicated in the parameter to
lineHandoff. It is up to the application to turn off the bit corresponding to the media
mode that failed to hand off, and to try other media modes until the handoff
succeeds or all the possible media modes are exhausted. If it gets to a point
where all of the bits are off except for UNKNOWN, it must abandon the call by
calling
lineDrop and then deallocating the handle.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database