Explains the second Baseband Channel Abstraction design (BCA2).
You should be familiar with the following areas:
architecture of device drivers in Symbian platform (see Device Drivers Concepts)
general principles of a telephony stack (see Cellular Baseband Services)
networking and telephony components.
Baseband Channel Adapter
Logical device driver (see Device Drivers Concepts)
Point-to-Point Protocol (see What is PPP?)
High-level Data Link Control
Integrated Services Digital Network
Serial RS232 driver for Symbian platform. UART means Universal Asynchronous Receiver/Transmitter.
Serial Communications Server in Symbian platform (see Serial Communications Server)
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.
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.
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.
BCA component
API | Description |
---|---|
Provides startup and shutdown methods. |
|
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). |
|
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 |
---|---|
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. |
|
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.
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.
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.