How can I transfer a call using the 'tromboning' method?

Tromboning is achieved by making B-channel connections locally on the Aculab card that enable two callers to speak to each other. None of the generic call transfer functions are used when implementing this method.

Here is an example of how a call might be transferred using the 'tromboning' method.

An incoming call gets accepted/connected by the Aculab card (we will refer to this call as 'call A')
Call A wants to be transferred to a new destination.
An outgoing call is made (using the call_openout function) to the new destination. We will refer to this outgoing call as 'call B'.
When call B is accepted/connected by the far end, the voice-channels of call A and B are connected together on the Aculab card using the switch API functions (specifically, 'sw_set_output')

The main disadvantage of this method is that it will not route optimise. Each time a call is transferred, 2 timeslots will be required and need to remain connected until call A or B decide to terminate their conversation.