KSNODETYPE_TELEPHONY_BIDI

The KSNODETYPE_TELEPHONY_BIDI node represents both sides (bi-directional) of a phone call.

If the device supports cellular telephony then a KSNODETYPE_TELEPHONY_BIDI endpoint for each Provider (executor) is required.

CELLULAR TELEPHONY

The radio stack has a concept of Provider Id (Executor Id) and call type (packet/circuit) to connect the phone call instance to a specific hardware path.

The driver associates a provider Id to the wave filter. This provider Id will also be set on the associated cellular streaming endpoints. The provider Id for the wave filter must not change at runtime. The audio stack will query the provider Id from the driver by using KSPROPERTY_TELEPHONY_PROVIDERID. After this, all the calls for that provider Id will be sent to the particular wave filter.

STARTING AND ENDING CELLULAR CALLS

Starting and stopping calls is done by sending KSPROPERTY_TELEPHONY_CALLCONTROL to the wave filter for the provider. This property will communicate call type (packet switched/circuit switched) and call control operation (Enable or Disable) to driver. Call type is ignored when the call control operation is Disable.

Once the call is Enabled, associated KSNODETYPE_TELEPHONY_BIDI’s jack state will be made Active by the driver and the call state will be updated to TELEPHONY_CALLSTATE_ENABLED. When the call is terminated, the endpoint's jack state will change to unplugged and the call state will be updated to TELEPHONY_CALLSTATE_DISABLED.