BCA2 API Overview

Explains the second Baseband Channel Abstraction design (BCA2).

Required background

You should be familiar with the following areas:

Key concepts and terms

BCA

Baseband Channel Adapter

LDD

Logical device driver (see Device Drivers Concepts)

PPP

Point-to-Point Protocol (see What is PPP?)

HDLC

High-level Data Link Control

ISDN

Integrated Services Digital Network

ECUART

Serial RS232 driver for Symbian platform. UART means Universal Asynchronous Receiver/Transmitter.

C32

Serial Communications Server in Symbian platform (see Serial Communications Server)

Introduction

The Baseband Channel Adapter (BCA) provides a telephony-specific abstraction of the baseband driver.

You implement your BCA components depending on the level of abstraction you require, providing a standard interface to the component above it in the Communications stack. You can also stack BCA components for more flexibility.

Performance is a critical requirement for the Comms Data Plane. To improve throughput, update your BCA components and your link layer protocol plugins to use the MBca2 interface.

Architecture

This topic focuses on a general case where there is one BCA component between the driver and the lower layer of the Data Plane. In the case of a stack of BCA components, the same design is repeated between each BCA layer.

In a "pull" communication model, the destination requests data from the source. Data transfer happens when the destination is ready. In a "push" model, the source provides data to the destination : data transfer happens when the source is ready.

BCA2 is based on a "push" architecture. The link layer component registers with the BCA component. The BCA component provides the data to its registered clients as soon as the data becomes available.

The API is split into five classes to separate control flow and data flow methods.

Figure 1. MBca2 design

Moreover, the MBca2 interface relies on shared buffers instead of regular buffers. Using shared buffers avoids data copies between different layers of the stack. For more information, see Memory Management in the Communications Framework.

APIs

BCA component

API Description

MBca2

Provides startup and shutdown methods.

MLowerDataSender

Provides the Send() method, which takes a RCommsBufChain as its parameter and is called by the link layer component whenever it needs to send data to the baseband (through the BCA component).

MLowerControl

Provides methods for downwards flow control and control options. The control options depend on your implementations of the BCA, the driver and the link layer component. For examples of control options, see the BCA2 Control Options reference page.

Link layer component

API Description

MUpperDataReceiver

Provides the Process() method, which takes a RCommsBufChain as its parameter and is called by the lower BCA component whenever data is available, in order to push the data to the upper layer.

MUpperDataControl

Provides methods for error management and upwards flow control.

In the case of stacked BCA components, these APIs are implemented by the upper BCA component.

Typical uses

Device driver developers implement the BCA2 design in the Networking stack (BCA components and link layer protocol plugins).

The following three diagrams show common BCA components and illustrate how they integrate with the Communications Framework. For definition of the abbreviations used in the diagrams, see the Key concepts and terms section.

Figure 2. Use case for BCA: IP communication through the serial port
Figure 3. Use case for BCA: PPP communication through the serial port
Figure 4. Use case for BCA: PPP communication over Ethernet
Related reference
BCA2 Control Options