1. Field
The present disclosure relates generally to communication systems and methods, and more particularly, to an application programming interface (API) for a receiver in a wireless communications device.
2. Background
Forward Link Only (FLO) is a digital wireless technology that has been developed by an industry-led group of wireless providers. FLO technology uses advances in coding and interleaving to achieve high-quality reception, both for real-time content streaming and other data services. FLO technology can provide robust mobile performance and high capacity without compromising power consumption. The technology also reduces the network cost of delivering multimedia content by dramatically decreasing the number of transmitters needed to be deployed. In addition, FLO technology-based multimedia multicasting compliments wireless operators' cellular network data and voice services, delivering content to the same cellular mobile terminals used on 3G networks.
Today, FLO technology is used to create and broadcast real time multimedia content across various networks to a large number of mobile subscribers. These mobile subscribers generally employ a FLO receiver, which can be described conceptually with a reference model comprising a number of processing layers, typically referred to as a “protocol stack.” Each processing layer includes one or more entities that perform specific functions.
An attractive feature of the protocol stack employed by the FLO receiver is that each layer is self-contained so that the functions performed by one layer can be performed independently of the functions performed by the other layers. This allows improvements to be made to the FLO receiver for one layer without adversely affecting the other layers. However, various challenges are posed when designing the interface between layers in the FLO receiver. Efficient communications across layers in terms of efficient reception of multicast services is always an objective of the FLO receiver designer.
In accordance with one aspect of the disclosure, an apparatus is configured to receive a signal in accordance with a protocol stack comprising a physical layer, MAC layer, control layer and stream layer. The apparatus includes a receiver stack processing system configured to provide the control and stream layers, a media processing system configured to provide the physical and MAC layers, and an application programming interface (API) to support service requests from the receiver stack processing system.
In accordance with another aspect of the disclosure, an apparatus is configured to receive a signal in accordance with a protocol stack comprising a physical layer, MAC layer, control layer and stream layer. The apparatus includes first processing means for providing the control and stream layers, second processing means for providing the physical and MAC layers, and application programming interface (API) means for supporting service requests from the first processing means.
In accordance with a further aspect of the disclosure, a method of communications includes receiving a signal in accordance with a protocol stack comprising a physical layer, MAC layer, control layer and stream layer, the physical and MAC layers, the control and stream layers being implemented with a media processing system, and the control and stream layers being implement with a receiver stack processing system. The method further includes supporting service requests with an application programming interface (API), from the receiver stack processing system to the media processing system.
In accordance with yet a further aspect of the disclosure, a machine-readable medium includes instructions executable by one or more processors in an apparatus, the apparatus being configured to receive a signal in accordance with a protocol stack comprising a physical layer, MAC layer, control layer and stream layer, the control and stream layers being implemented with a media processing system, and the control and stream layers being implement with a receiver stack processing system. The instructions include a receiver stack code segment to implement the receiver stack processing system, and an application programming interface (API) code segment to support service requests from the receiver stack processing system to the media processing system.
It is understood that other embodiments of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein it is shown and described only various embodiments of the invention by way of illustration. As will be realized, the invention is capable of other and different embodiments and its several details are capable of modification in various other respects, all without departing from the spirit and scope of the present invention. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.
Various aspects of a wireless communications system are illustrated by way of example, and not by way of limitation, in the accompanying drawings, wherein:
The detailed description set forth below in connection with the appended drawings is intended as a description of various embodiments of the invention and is not intended to represent the only embodiments in which the invention may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the invention. However, it will be apparent to those skilled in the art that the invention may be practiced without these specific details. In some instances, well known structures and components are shown in block diagram form in order to avoid obscuring the concepts of the invention.
In the following detailed description, various concepts will be described in the context of a FLO technology. While these concepts may be well suited for this application, those skilled in the art will readily appreciate that these concepts are likewise applicable to other technology. Accordingly, any reference to FLO technology is intended only to illustrate these concepts, with the understanding the such concepts have a wide range of applications.
The content providers 102 provide content for distribution to mobile subscribers in the communications system 100. The content may include video, audio, multimedia content, clips, real-time and non real-time content, scripts, programs, data or any other type of suitable content. The content providers 102 provide content to the content provider network 104 for wide-area or local-area distribution.
The content provider network 104 comprises any combination of wired and wireless networks that operate to distribute content for delivery to mobile subscribers. In the example illustrated in
The content provider network 104 may also include a content server (not shown) for distribution of content through a wireless access network 108. The content server communicates with a base station controller (BSC) (not shown) in the wireless access network 108. The BSC may be used to manage and control any number of base transceiver stations (BTS)s (not shown) depending on the geographic reach of the wireless access network 108. The BTSs provide access to wide-area and local-area for the various devices 110.
The multimedia content broadcast by the content providers 102 include one or more services. A service is an aggregation of one or more independent data components. Each independent data component of a service is called a flow. By way of example, a cable news service may include three flows: a video flow, an audio flow, and a control flow.
Services are carried over one or more logical channels. In FLO applications, a logical channel is often referred to as a Multicast Logical Channel (MLC). A logical channel may be divided into multiple logical sub-channels. These logical sub-channels are called streams. Each flow is carried in a single stream. The content for a logical channel is transmitted through the various networks in a physical frame. In FLO applications, the physical frame is often referred to as a superframe.
The air interface used to transmit the physical frames to the various devices 110 shown in
The receiver blocks located below the API 310 will be collectively referred to as a media processing system. The media processing system provides the physical and MAC layer 202, 204 functionality of the protocol stack 200. The receiver stack block 312, located above the API 310, will be referred to as the receiver stack processing system, which provides the stream and control layer 206, 208 functionality of the protocol stack 200. The exact division of the protocol functionality in the media processing system or in the receiver stack processing system is implementation dependant. By way of example, the MAC layer 204 can be localized in the ASIC specific software block 308 for one implementation while for another implementation it may be spread across all blocks in the media processing system, namely the receiver hardware block 302, the driver block 306 and the ASIC specific software block 308.
The functionality of the receiver blocks will now be described. This description is informative in nature and broadly defines the functionality of each block. Only the pertinent functionality to various concepts described throughout this disclosure will be described. Those skilled in the art will recognize that these blocks can provide other functionality that is not described herein.
The receiver hardware block 302 represents the semiconductor hardware that provides the functionality of demodulating a wireless signal and retrieving data carried by the physical layer. This block 302 provides various functions such as RF front-end processing, ADC, timing and frequency estimation, channel estimation, turbo decoding etc. In summary, the receiver hardware block 302 provides the complete physical layer 202 implementation of the protocol stack. Depending upon the implementation, this block 302 may also provide full or partial MAC layer 204 functionality (e.g. low level MAC layer functionality like R-S decoding and/or MAC layer interleaving).
The host processor block 304 represents the functionality provided by a host processor in the receiver 300. More specifically, the host processor block 304 represents the host processor hardware and the software implementation residing in the host processor. The host processor hardware may be implemented with one or more processors, including by way of example, a general purpose processor, such as a microprocessor, and/or a specific application processor, such a digital signal processor (DSP). The host processor block 304 may also include a machine readable medium for storing software executed by the one or more processors. Software shall be construed broadly to mean any combination of instructions, data structures, or program code, whether referred to as software, firmware, middleware, microcode, or any other terminology. The machine readable medium may include one or more storage devices that are implemented, either in whole or part, by the host processor hardware. The machine readable medium may also include one or more storage devices remote to the host processor, a transmission line, or a carrier wave that encodes a data signal. Those skilled in the art will recognize how best to implement the described functionality for the host processor block 304 for each particular application.
The host processor block 304 communicates with the receiver hardware block 302 to retrieve and process information recovered from the wireless transmission. The retrieved information includes control information received on a control channel, content received on an overhead channel, and the application layer content carried in a logical channel.
The driver block 306 represents the driver level software in the host processor block 304 that directly interfaces with the receiver hardware block 302. The driver block 306 provides controller functions (e.g. turning on or turning off the receiver hardware block 302) and data exchange functions (e.g. retrieving the data from the receiver hardware block 302 or conveying the characteristics of a logical channel to be received). The driver level software may be specific to the type of hardware interface mechanism that exists between the host processor and the receiver hardware. For example, the driver level software may be different depending upon whether the hardware interface between the one or more processors in the host processor and the receiver hardware is interrupt driven, implemented with memory mapped address/registers or packet based transaction interface like SDIO. Some examples of tasks performed by the driver block 306 include hardware interactions such as initialization, sleep or wakeup triggers, data exchange with hardware such as emptying hardware buffers into main memory or providing ISR implementation, and MAC layer implementation to support inter-frame sleep logic functionality.
Generally, the driver block 306 functions are tightly coupled with the receiver hardware and are considered time sensitive in nature. Therefore, the driver block 306 may be given a higher priority with respect to other blocks shown in
The ASIC specific software block 308 provides the MAC layer functionality not handled by the driver block 306. Depending upon the division of MAC layer functionality across different blocks, it may provide complete or partial MAC layer functionality. At the very least, the ASIC specific software block 308 will generally provide high level MAC layer functionality that is not practical to be delegated to driver block 306.
The receiver stack block 312 communicates with the ASIC specific software block 308 using the API 310. The receiver stack block 312 implements the control and stream layers and provides the interface with the application layer protocols. The receiver stack block 312 triggers the ASIC specific software block 308 to receive the specified contents as requested by the application layer. The receiver stack block 312 acts on the notifications or content provided by the ASIC specific software block 308 and delivers any content received from the ASIC specific software block 308 to the application layer protocols.
The API 310 defines the interfaces that allows the ASIC specific software block 308 to communicate with the receiver stack block 312. Any receiver stack that adheres to the interfaces defined by the API 310 will work with any ASIC specific software that adheres to these interfaces as well. This interface will be presented in greater detail below.
The hardware interface block 305 represents the hardware interface mechanism that exists between the host processor block 304 and the receiver hardware block 302. This interface provides the communication and data exchange functionality. The driver block 306 uses this interface 305 to exchange commands and data with the receiver hardware block 302. The hardware interface block 305 can be any desired interface, such as a proprietary bus interface or a standard based interface (e.g. SDIO).
Various examples will now be presented illustrating the communication that takes place within the receiver 300 across the API 310. The following examples will be described in connection with
In step 403, a command from the receiver stack processing system 400 is sent to the ASIC specific software block 308 specifying a set of frequencies (along with the bandwidth/channel plan) from which the receiver 300 selects a frequency to acquire the wireless signal. The set of frequencies and bandwidth may be retrieved from information provisioned at the wireless device.
In step 404, the receiver stack processing system 400 sends a command to the ASIC specific software block 308 to acquire the system. This command causes the ASIC specific software block 308 to read the overhead information on the selected frequency.
In step 405, a network event from the ASIC specific software block 308 is received by the receiver stack processing system 400 indicating that the overhead information has been acquired along with a network ID and the type of overhead information acquired (i.e., local-area or wide-area information). Once the overhead information has been acquired, the ASIC specific software block 308 sends, in step 406, a control information update message to the receiver stack processing system 400 indicating that control information is available along with the latest control information sequence numbers that have been received. In step 407, the receiver stack processing system 400 commands the ASIC specific software block 308 to get the control information. In response, the ASIC specific hardware block 308 reads the control channels and sends packets of control information, in step 408, to the receiver stack processing system 400 every frame. Included in each frame is side information which identifies the location of the control packet(s) in the frame and the sequence number of each packet. Once the receiver stack processing system 400 has determined that the control information has been received in its entirety, it instructs the ASIC specific software block 308 to stop receiving the control channel in step 409.
In step 601, the receiver stack processing system 400 commands the ASIC specific software block 308 to get the content on the specified logical channel ID. Along with the logical channel ID, the physical layer characteristics of logical channel are provided (e.g., frequency, transmit mode, outer code rate). Also, the sequence numbers for the control packets are provided for the ASIC specific software block 308. This allows the ASIC specific software block 308 to determine if the control information maintained by the control layer is current and if there is a need to receive the control channel prior to receiving the logical channel.
In step 602, the ASIC specific software 308 acknowledges whether or not it will be able to service the command to get the requested logical channel.
In step 603, the ASIC specific software block 308 returns the content on the logical channel retrieved from the receiver hardware block 302. The content on the logical channel is returned after the R-S decoding has been performed. The content is returned every frame until the receiver stack processing system 400 requests the ASIC specific software block 308 to stop receiving content on that logical channel in step 604.
In step 702, the ASIC specific software block 308 sends a control information update message to the receiver stack processing system 400 indicating that updated control information is available along with the latest control sequence numbers received. In step 703, the receiver stack processing system 400 commands the ASIC specific software block 308 to get the control information for the new area that the wireless device has moved into. In response, the ASIC specific hardware block 308 reads the control channels and sends packets of control information, in step 704, to the receiver stack processing system 400 Included in each frame is side information which identifies the location of the control packet(s) in the frame and the sequence number of each packet. In step 705, the receiver stack processing system 400 determines that the control information has been received in its entirety and instructs the ASIC specific software block 308 to stop receiving the control channel.
In step 802, the receiver stack 312 sends a command to the ASIC specific software to abandon receiving data on the active logical channels and to free up any resources allocated towards receiving those logical channels.
Once a network is successfully acquired in step 803, the ASIC specific software block 308 sends a network event indication to receiver stack specifying the successful acquisition. If the acquired network is different from the last acquired network, or the control sequence numbers have been updated, the ASIC specific software block 308 sends a control information update message to the receiver stack processing system 400, in step 804, indicating that updated control information is available along with the latest control sequence numbers received. In step 805, the receiver stack processing system 400 commands the ASIC specific software block 308 to get the control information for the network that has been acquired. In response, the ASIC specific hardware block 308 reads the control channels and sends packets of control information, in step 806, to the receiver stack processing system 400 Included in each frame is side information which identifies the location of the control packet(s) in the frame and the sequence number of each packet. In step 807, the receiver stack processing system 400 determines that the control information has been received in its entirety and instructs the ASIC specific software block 308 to stop receiving the control channel.
When ASIC specific software block receives the overhead information in step 901, it compares the control sequence numbers received with the last stored. If there is an update detected, the ASIC specific software block 308 sends a control information update message to the receiver stack processing system 400, in step 902, indicating that an update in the control information is available. In step 903, the receiver stack processing system 400 commands the ASIC specific software block 308 to get the control information. In response, the ASIC specific hardware block 308 reads the control channels and sends packets of control information, in step 904, to the receiver stack processing system 400. Included in each frame is side information which identifies the location of the control packet(s) in the frame and the sequence number of each packet. In step 905, the receiver stack processing system 400 determines that the control information has been received in its entirety and instructs the ASIC specific software block 308 to stop receiving the control channel.
In step 1001, the receiver stack processing system 400 commands the ASIC specific software to enable monitoring of the overhead information based on the periodicity defined by the system parameters message. The ASIC specific software block 308 ensures that overhead information is monitored with at least this periodicity in absence of any other event causing it to read the overhead information.
In step 1002, an update of the control information is detected by the ASIC specific software block 308 when the control sequence numbers received in the overhead information are different than the last received. The receiver stack 312 receives a control information update message from the ASIC specific software block 308 indicating that an update in the control information is available. In step 1003, the receiver stack processing system 400 commands the ASIC specific software block 308 to get the control information. In response, the ASIC specific hardware block 308 reads the control channels and sends packets of control information, in step 1004, to the receiver stack processing system 400. Included in each frame is side information which identifies the location of the control packet(s) in the frame and the sequence number of each packet. In step 1005, the receiver stack processing system 400 determines that the control information has been received in its entirety and instructs the ASIC specific software block 308 to stop receiving the control channel.
Upon being commanded to disable the periodic monitoring of the overhead information, the ASIC specific software block 308 disables it in step 1006. Steps 1002-1005 are conditional and are performed only when an update of control information is detected in the overhead information received.
In step 1101, the receiver stack processing system 400 commands the ASIC specific software block 308 to get the control information. In response, the ASIC specific hardware block 308 reads the control channels and sends packets of control information, in step 1102, to the receiver stack processing system 400. Included in each frame is side information which identifies the location of the control packet(s) in the frame and the sequence number of each packet. In step 1103, the receiver stack processing system 400 determines that the control information has been received in its entirety and instructs the ASIC specific software block 308 to stop receiving the control channel.
In step 1104, the receiver stack processing system 400 makes a consolidated list of the neighboring systems by processing the neighborhood description message in the control information. The receiver stack processing system 400 then conveys this list to the ASIC specific software block 308. The ASIC specific software blocks 308 uses this list to execute handoff algorithms by using this list to monitor the signals from the neighboring systems. If a handoff to a neighboring system is performed, an indication is sent to the receiver stack processing system 400 in step 1105 along with wide-area and local area differentiators for the destination system. Step 1105 is conditional and performed only when the handoff is performed. After handoff, the new system is acquired and overhead information received on it is used to detect further network events.
The previous description is provided to enable any person skilled in the art to practice the various embodiments described herein. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments. Thus, the claims are not intended to be limited to the embodiments shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or moe.” All structural and functional equivalents to the elements of the various embodiments described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. §112, sixth paragraph, unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for.”
The present Application for Patent claims priority to Provisional Application No. 60/886,293 entitled “APPLICATION PROGRAMMING INTERFACE (API) FOR RECEIVER IN A WIRELESS COMMUNICATIONS DEVICE” filed Jan. 23, 2007, and assigned to the assignee hereof and hereby expressly incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
60886293 | Jan 2007 | US |