Device, network, and method for CSI feedback of hybrid beamforming

Various methods and systems are provided to provide for Channel State Information (CSI) feedback of hybrid beamforming. In a first example embodiment, a method for signaling a beamforming reference signal (BFRS) is provided. A resource block is created for the BFRS, the resource block containing a plurality of resource elements, each resource element defined by a time-frequency resource within one subcarrier and one multiplexing symbol. A total number of analog transmit beams for the BFRS is then determined, along with grouping information for the analog transmit beams for the BFRS. Then, the resource block, the total number of analog beams, and the grouping information are transmitted from a first network controller to a user equipment (UE). Then the BFRS is transmitted from the first network controller to the UE.

TECHNICAL FIELD

The present disclosure relates to a device, network, and method for wireless communications, and, in particular embodiments, to a device and method for Channel State Information (CSI) feedback of hybrid antenna beamforming.

BACKGROUND

The amount of wireless data utilized in mobile networks has increased dramatically in the last few years, pushing the capacity of current macro cellular deployments. Cellular communications systems, which utilize microwave spectrum bands (300 MHz to 3 GHz), are becoming capacity-limited due to interference and traffic load. The use of high frequency bands, where vast amounts of bandwidth is available, is considered to be a crucial technology for future generation communication systems. The use of these frequency bands (e.g., 28, 38, 60 and 73 GHz) can mitigate the problem of capacity currently observed.

Propagation in the millimeter band (mmWave) is much more challenging than in the microwave band, resulting in a more stringent link budget at a mmWave band than at a microwave band. Equipping both the transmitter and receiver with a larger number of antenna arrays is a viable solution to compensate for the mmWave extra path loss by beamforming.

Since antenna size is inversely proportional to the carrier frequency, the use of these high frequency bands reduces the antenna size considerably. This opens the door to employ a larger number of transmit and receive antenna arrays at both network and terminal sides.

Hybrid antenna architecture may be used to trade off hardware complexity, power consumption, and the performance and coverage of the system. Hybrid antenna architecture typically includes analog (phase shifter) and digital (baseband pre-coder) beamforming parts.

A base station may include one or more Radio Frequency (RF) chains, and each RF chain is connected to analog phase shifters and antenna arrays. A user equipment (UE) receiver may include one or more RF chains connected to receiver analog phase shifters and antenna arrays.

There are different types of analog beamforming architectures. Two such architectures are shared array and sub-array.

SUMMARY

Various methods and systems are provided to provide for channel state information (CSI) feedback of hybrid beamforming. In a first example embodiment, a method for signaling a beamforming reference signal (BFRS) is provided. A resource block is created for the BFRS, the resource block containing a plurality of resource elements, each resource element defined by a time-frequency resource within one subcarrier and one multiplexing symbol. A total number of analog transmit beams for the BFRS is then determined, along with grouping information for the analog transmit beams for the BFRS. Then, the resource block, the total number of analog beams, and the grouping information are transmitted from a first network controller to a user equipment (UE). Then the BFRS is transmitted from the first network controller to the UE.

In a second example embodiment, a method for utilizing a beamforming reference signal (BFRS) is provided. A resource block for the BFRS is received at a UE, along with a total number of analog beams for the BFRS, and grouping information for the BFRS, the resource block containing a plurality of resource elements, each resource element defined by a time-frequency resource within one subcarrier and one multiplexing symbol. Then a BFRS is received by the UE. Beam pair selection is performed to form effective multiple-input and multiple-output (MIMO) channels using the resource block, the total number of analog beams, and the grouping information by selecting one or more best transmit-receive beam pairs, while limiting each effective MIMO channel to including a single transmit analog beam per beam group. Then the UE derives, based on the effective MIMO channels, a corresponding CSI feedback. At least one set of recommendations of a channel for each supported rank by the BFRS is calculated based on the CSI feedback, each supported rank corresponding to a different stream of symbols transmitted in the BFRS. Then the at least one set of recommendations is reported.

In a third example embodiment, another method for utilizing a beamforming reference signal (BFRS) is provided. A resource block for the BFRS is received at the UE, along with a total number of analog beams for the BFRS and grouping information for the BFRS, the resource block containing a plurality of resource elements, each resource element defined by a time-frequency resource within one subcarrier and one multiplexing symbol. Then a BFRS is received by the UE. Beam pair selection is performed to form effective MIMO channels using the resource block, the total number of analog beams, and the grouping information by selecting one or more best transmit-receive beam pairs, while limiting each effective MIMO channel to including a single transmit analog beam per beam group. The UE then transmits to the network controller a report of indexes of the selected best transmit-receive beam pairs. Then the UE transmits to the network controller an uplink sounding signal by applying the selected best transmit-receive beam pairs.

DETAILED DESCRIPTION

In a modern wireless communications system, such as a Third Generation Partnership Project (3GPP) Long Term Evolution (LTE) compliant communications system, a plurality of cells or evolved NodeBs (eNB) (also commonly referred to as NodeBs, base stations (BSs), base terminal stations, communications controllers, network controllers, controllers, access points (APs), and so on) may be arranged into a cluster of cells, with each cell having multiple transmit antennas. Additionally, each cell or eNB may be serving a number of users (also commonly referred to as User Equipment (UE), mobile stations, users, subscribers, terminals, and so forth) based on a priority metric, such as fairness, proportional fairness, round robin, and the like, over a period of time. It is noted that the terms cell, transmission points, and eNB may be used interchangeably. Distinction between cells, transmission points, and eNBs will be made where needed.

FIG. 1shows an example of one hybrid beamforming architecture100with a shared array. The architecture100includes a baseband beamforming transmitter102and a baseband beamforming receiver104. In one example embodiment the baseband beamforming transmitter102may be implemented as a baseband beamforming transmission means. In another example embodiment, the baseband beamforming receiver104may be implemented as a baseband beamforming receiving means. The baseband beamforming transmitter102includes a plurality of precoders106A-106B. The precoders106A-106B act to exploit transmit diversity by weighting information streams. In an example embodiment, each of the precoders106A-106B may be implemented as a precoding means. Digital-to-Analog converters (DACs)108A,108B then act to convert the precoded digital signals to analog signals to send to the transmitter shared array110. In an example embodiment, each of the DACs108A,108B may be implemented as a digital-to-analog conversion means. In another example embodiment, the transmitter shared array110may be implemented as a transmitter shared array means. A receiver shared array112then receives the transmitted signal, and one or more analog-to-digital converters (ADCs)114A,114B convert the received signal to digital. In an example embodiment, the receiver shared array112may be implemented as a receiver shared array means. In another example embodiment, each of the ADCs114A,114B may be implemented as an analog-to-digital conversion means. Finally, one or more equalizers116A,116B to equalize the digital signals. In an example embodiment, each of the equalizers116A,116B may be implemented as an equalization means.

FIG. 2shows an example of another hybrid beamforming architecture200with a sub-array. This architecture200provides a lower complexity version of the hybrid beamforming architecture100ofFIG. 1by reducing the number of phase shifters and omitting the need for RF combiners on the transmission side. However, the rest of the architecture200is the same as the shared hybrid beamforming architecture100ofFIG. 1. The architecture200includes a baseband beamforming transmitter202and a baseband beamforming receiver204. In one example embodiment the baseband beamforming transmitter202may be implemented as a baseband beamforming transmission means. In another example embodiment, the baseband beamforming receiver204may be implemented as a baseband beamforming receiving means. The baseband beamforming transmitter202includes a plurality of precoders206A-206B. The precoders206A-206B act to exploit transmit diversity by weighting information streams. In an example embodiment, each of the precoders206A-206B may be implemented as a precoding means. Digital-to-Analog converters (DACs)208A,208B then act to convert the precoded digital signals to analog signals to send to the transmitter sub-array210. In an example embodiment, each of the DACs208A,208B may be implemented as a digital-to-analog conversion means. In another example embodiment, the transmitter sub-array210may be implemented as a transmitter shared array means. A receiver sub-array212then receives the transmitted signal, and one or more analog-to-digital converters (ADCs)214A,214B convert the received signal to digital. In an example embodiment, the receiver sub-array212may be implemented as a receiver sub-array means. In another example embodiment, each of the ADCs214A,214B may be implemented as an analog-to-digital conversion means. Finally, one or more equalizers216A,216B equalize the digital signals. In an example embodiment, each of the equalizers216A,216B may be implemented as an equalization means.

FIG. 3depicts how the transmission/reception from controller300to a UE302is called downlink (DL) transmission/reception, and the transmission/reception from a UE304to a controller300is called uplink (UL) transmission/reception.

FIG. 4is an interaction diagram illustrating a method400of handshaking between an eNb402and a UE404in accordance with an example embodiment. Here, at operation406, the eNb402signals beam scanning transmission information and restriction configurations to the UE404. This may be performed by creating a resource block for the BFRS, the resource block containing a plurality of resource elements, each resource element defined by a time-frequency resource within one subcarrier and one multiplexing symbol, determining a total number of analog transmit beams for the BFRS, and determining grouping information for the analog transmit beams for the BFRS and then transmitting this information to the UE404. The resource blocks include time and frequency at which the BFRS is transmitted, and a sequence to generate the BFRS. This may also include determining a set of analog beam selection restriction configurations, the analog beam selection restriction configurations indicating a set of analog beams upon which the UE should not derive a digital Channel State Information (CSI) feedback, and transmitting this information to the UE404.

Then, at operation408, the eNb402transmits the beam scanning reference signal to the UE404. At operation410, the UE404selects the best transmit-receive analog beam pairs with restrictions. The beam scanning reference signal may be a combination of wide beams and narrow beams. To derive a digital effective channel, the UE404can be restricted not to use any of the wide beams. At operation412, the UE404forms effective MIMO channels and virtual antenna ports using the resource block, the total number of analog beams, and the grouping information, while limiting each effective MIMO channel to including a single transmit analog beam per beam group. At operation414, the UE404derives baseband CSI feedback based on the digital MIMO channels. At operation416, the UE404compiles both analog and digital CSI reports. This may include calculating at least one set of recommendations of a channel for each supported rank by the BFR based on the CSI feedback, each supported rank corresponding to a different stream of symbols transmitted in the BFRS. Then, at operation418, the UE404sends hybrid CSI reports (from the analog and digital CSI reports) to the eNb402.

FIG. 5is an interaction diagram illustrating another method500of handshaking between an eNb502and a UE504in accordance with another example embodiment. Here, at operation506, the eNb502signals beam scanning transmission information and restriction configurations to the UE504. This may be performed by creating a resource block for the BFRS, the resource block containing a plurality of resource elements, each resource element defined by a time-frequency resource within one subcarrier and one multiplexing symbol, determining a total number of analog transmit beams for the BFRS, and determining grouping information for the analog transmit beams for the BFRS, and then transmitting this information to the UE504. The resource blocks include time and frequency at which the BFRS is transmitted, and a sequence to generate the BFRS. This may also include determining a set of analog beam selection restriction configurations, the analog beam selection restriction configurations indicating a set of analog beams upon which the UE should not derive a digital Channel State Information (CSI) feedback, and transmitting this information to the UE504.

Then, at operation508, the eNb502transmits the beam scanning reference signal to the UE504. At operation510, the UE404selects the best transmit-receive analog beam pairs with restrictions. The beam scanning reference signal may be a combination of wide beams and narrow beams. To derive a digital effective channel, the UE504can be restricted not to use any of the wide beams. At operation512, the UE504reports the best transmit beam indexes to the eNb502. At operation514, the UE504sends an uplink sounding signal to the eNb502by applying the receive beams. At operation516, the eNb502receives the signal using the reported transmit beams as receive beams. At operation518, the baseband CSI is derived for data transmissions.

In Orthogonal frequency-division multiplexing (OFDM) systems, the frequency bandwidth is divided into multiple subcarriers in the frequency domain. In the time domain, one subframe is divided into multiple OFDM symbols. The OFDM symbol may have a cyclic prefix to avoid inter-symbol interference due to multiple path delays. One resource element (RE) is defined by the time-frequency resource within one subcarrier and one OFDM symbol. A reference signal and other signals, such as data channel, e.g. physical downlink shared channel (PDSCH), and control channel, e.g. physical downlink control channel (PDCCH), are orthogonal and multiplexed in different resource elements in the time-frequency domain. Further, the signals are modulated and mapped into resource elements. Using inverse Fourier transform per each OFDM symbol, the signals in the frequency domain are transformed into the signals in the time domain, and are transmitted with an added cyclic prefix to avoid the inter-symbol interference.

Each resource block (RB) contains a number of REs.FIG. 6is a diagram illustrating an example resource block600in accordance with an example embodiment. The resource block600comprises a number of different resource elements, such as resource element602. For each resource block600, there are 14 OFDM symbols labeled from 0 to 13 in each subframe. The symbols 0 to 6 in each subframe correspond to even slots, and the symbols 7 to 13 in each subframe correspond to odd slots. In the figure, only seven OFBM symbols across are shown (604). There are also 12 subcarriers (606) in each resource block600, and hence in this example, there are 84 REs in a RB. In each subframe, there are a number of RBs, and the number may depend on the bandwidth (BW).

FIG. 7is a diagram showing example data packets700A,700B in accordance with an example embodiment. The data channels transmitting data packets700A from an eNB to UEs in the physical layer are called physical downlink shared channel (PDSCH)702and711, and the data channel transmitting data packet700B from the UEs to the eNB in the physical layer are called physical uplink shared channel (PUSCH)704and705. The corresponding physical control channels, transmitted from the eNB to the UEs, indicate where the corresponding PDSCH702and711and/or PUSCH704and705are in the frequency domain, and in which manner the PDSCH702and711and/or PUSCH704and705are transmitted. Such physical control channels are called physical downlink control channels (PDCCH)701and710, and physical uplink control channel (PUCCH)703. InFIG. 7, PDCCH701may indicate the signaling for PDSCH702or PUSCH704, and the PDCCH710may indicate the signaling for PDSCH711or PUSCH705.

UEs measure the channel status, especially for multiple antennas. PMI/CQI/RI and other feedbacks may be based on the measurement of reference signal. PMI is the precoding matrix indicator, CQI is the channel quality indicator, and RI is the rank indicator of the precoding matrix. There may be multiple reference signal resources configured for a UE. There is specific time-frequency resource and scrambling code assigned by the eNB for each reference signal resource.

Usually, the eNBs may be arranged close to each other so that a decision made by a first eNB may have an impact on a second eNB. For example, the eNBs may use their transmit antenna arrays to form beams towards their UEs when serving them. This may mean that if the first eNB decides to serve a first UE in a particular time-frequency resource, it may form a beam pointing to that UE. However, the pointed beam may extend into a coverage area of the second eNB and cause interference to UEs served by the second eNB. The inter-cell interference (ICI) for small cell wireless communications systems is commonly referred to as an interference limited cell scenario, which may be different from a noise limited cell scenario seen in large cell wireless communications systems.

In an example embodiment, an eNodeB may control one or more cells. Multiple remote radio units may be connected to the same baseband unit of the eNodeB by fiber cable, and the latency between the baseband unit and the remote radio unit is quite small. Therefore the same baseband unit can process the coordinated transmission/reception of multiple cells. For example, the eNodeB may coordinate the transmissions of multiple cells to a UE, which is called coordinated multiple point (CoMP) transmission. The eNodeB may also coordinate the reception of multiple cells from a UE, which is called CoMP reception. In this case, the backhaul link between these cells with the same eNodeB is fast backhaul and the scheduling of PDSCH transmitted in different cells for the UE can be easily coordinated in the same eNodeB.

In an example embodiment, a device and method signaling a set of downlink analog beamforming reference signal (BFRS) to a UE is provided. A BFRS resource may include time, frequency and sequence. A BFRS transmission may consist of the sequential transmission of analog transmit beams supported in the eNodeB. The cell signals the BFRS resource, its total number of analog beams, and the analog beam grouping information to the UE. The UE should not derive the digital CSI feedback involving more than two analog beams from the same group.

In another example embodiment, a device and method for signaling a set of analog beam restriction configuration to UE are provided. The restriction may indicate a set of analog beams upon which the UE should not derive the digital CSI feedback including any of the analog beams indicated in the restriction configuration. The UE should not derive the digital CSI feedback involving more than two analog beams from the same group.

In an example embodiment, the signaling may be in the forms of macro cell broadcasting, macro sending UE-specific radio resource control (RRC) signaling, small cell broadcasting, small cells sending UE-specific radio resource control (RRC) signaling, or any combination of the above.

In an example embodiment, a UE receives the configuration of BFRS transmission of a set of network controllers and a set of analog beam restriction configuration. The UE receives each transmit analog beam after applying each of the UE's receive beams. The UE collects the channel response for each of the transmit-receive-beam pairs. The UE performs sorting and pruning on the transmit-receive-beam pairs according to some metric, e.g. reference signal received power (RSRP) or signal-to-interference-plus-noise ratio (SINR).

In an example embodiment, a UE selects the best transmit-receive-beam pairs to form the effective MIMO channels and virtual antenna ports. Multiple effective MIMO channels can be formed by including one transmit beam from one or more transmit beam groups, or one or more receive beams. For example, a system with four sets of transmit beams (one set of transmit beams includes the RF chain, phase shift, and antenna array) at the eNodeB side, and two sets of receive beams (one set of receive beam includes RF chain, phase shift, and antenna array) at the UE side, could form 4×2, 3×2, 2×2, 1×2, 4×1, 3×1, 2×1 and 1×1 various effective MIMO channels.

The selection to form effective MIMO channels can follow the received analog beam restriction configuration. The effective MIMO channel should not include any transmit analog beams indicated in the restriction configuration. The effective MIMO channel should not include more than one transmit analog beam belonging to the same group.

In an example embodiment, the UE derives the CSI feedback based on the effective MIMO channels and selects the best set(s) to feedback to the network. The feedback set should include the indexes of the analog transmit beams forming the selected effective MIMO channel and its corresponding rank, CQI, PMI or the pre-coding matrix. More than one set of feedback may be reported to the network, covering different rank or different effective MIMO choices of the same rank, according to network feedback configurations.

In an example embodiment, the UE only reports the best analog transmit beams to the network. The reported transmit beams may not be from the same group. The reported transmit beams may not include any transmit beams indicated in the received beam restriction configuration. The UE may send uplink sounding signals by applying the receive beams from the selected transmit-receive-beam pair as the transmit beams. The eNodeB receives these analog beams and derives the CSI information for later downlink data transmission.

In an example embodiment, analog beams are divided into transmit groups. Each transmit group may correspond to one transmit RF chain. Each transmit group may contain many transmit beams, and when beam scanning is performed, each beam may be transmitted sequentially. The UE receives the beam scanning signal by sequentially trying each of the UE's receive beams.

FIG. 8is a diagram illustrating an example frame structure800in accordance with an example embodiment. Here, the frame structure800includes N wide beams (labeled802A,802B,802N). Each wide beam802A,802B,802N includes K narrow beams within it (labeled804A-K,806A-K, and808A-K.

Though the above descriptions are mainly for LTE systems, the concepts may be applicable in other systems such as HSPA systems, WiFi systems, etc.

FIG. 9is a diagram illustrating a system900for sequentially transmitting a beam scanning signal in accordance with an example embodiment. On the transmit side902, multiple RF transmitters906A-906D act to transmit the narrow beams sequentially to the receive side904, where RF receivers908A-908B sequentially try each of its receive beams.

The following figures are diagrams of a processing system that may be used for implementing the devices and methods disclosed herein. Specific devices may utilize all of the components shown, or only a subset of the components, and levels of integration may vary from device to device.

Machine and Software Architecture

The modules, methods, applications and so forth described in conjunction withFIGS. 1-9are implemented, in some embodiments, in the context of a machine and an associated software architecture. The sections below describe representative software architecture(s) and machine (e.g., hardware) architecture(s) that are suitable for use with the disclosed embodiments.

Software Architecture

FIG. 10is a block diagram1000illustrating a representative software architecture1002, which may be used in conjunction with various hardware architectures herein described.FIG. 10is merely a non-limiting example of a software architecture1002and it will be appreciated that many other architectures may be implemented to facilitate the functionality described herein. The software architecture1002may be executing on hardware such as machine1100ofFIG. 11that includes, among other things, processors1110, memory/storage1130, and I/O components1150. A representative hardware layer1004is illustrated and can represent, for example, the machine1100ofFIG. 11. The representative hardware layer1004comprises one or more processing units1006having associated executable instructions1008. Executable instructions1008represent the executable instructions of the software architecture1002, including implementation of the methods, modules and so forth ofFIGS. 1-9. Hardware layer1004also includes memory and/or storage modules1010, which also have executable instructions1008. Hardware layer1004may also comprise other hardware1012, which represents any other hardware of the hardware layer1004, such as the other hardware illustrated as part of machine1100.

In the example architecture ofFIG. 10, the software architecture1002may be conceptualized as a stack of layers where each layer provides particular functionality. For example, the software architecture1002may include layers such as an operating system1014, libraries1016, frameworks/middleware1018, applications1020and presentation layer1044. Operationally, the applications1020and/or other components within the layers may invoke application programming interface (API) calls1024through the software stack and receive a response, returned values, and so forth illustrated as messages1026in response to the API calls1024. The layers illustrated are representative in nature and not all software architectures1002have all layers. For example, some mobile or special purpose operating systems may not provide a frameworks/middleware1018, while others may provide such a layer. Other software architectures may include additional or different layers.

The operating system1014may manage hardware resources and provide common services. The operating system1014may include, for example, a kernel1028, services1030, and drivers1032. The kernel1028may act as an abstraction layer between the hardware and the other software layers. For example, the kernel1028may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, and so on. The services1030may provide other common services for the other software layers. The drivers1032may be responsible for controlling or interfacing with the underlying hardware. For instance, the drivers1032may include display drivers, camera drivers, Bluetooth® drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi® drivers, audio drivers, power management drivers, and so forth, depending on the hardware configuration.

The libraries1016may provide a common infrastructure that may be utilized by the applications1020and/or other components and/or layers. The libraries1016typically provide functionality that allows other software modules to perform tasks in an easier fashion than to interface directly with the underlying operating system1014functionality (e.g., kernel1028, services1030and/or drivers1032). The libraries1016may include system libraries1034(e.g., C standard library) that may provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries1016may include API libraries1036such as media libraries (e.g., libraries to support presentation and manipulation of various media format such as MPEG4, H.264, MP3, AAC, AMR, JPG, PNG), graphics libraries (e.g., an OpenGL framework that may be used to render 2D and 3D in a graphic content on a display), database libraries (e.g., SQLite that may provide various relational database functions), web libraries (e.g., WebKit that may provide web browsing functionality), and the like. The libraries1016may also include a wide variety of other libraries1038to provide many other APIs to the applications1020and other software components/modules.

The frameworks/middleware1018(also sometimes referred to as middleware) may provide a higher-level common infrastructure that may be utilized by the applications1020and/or other software components/modules. For example, the frameworks/middleware1018may provide various graphic user interface (GUI) functions, high-level resource management, high-level location services, and so forth. The frameworks/middleware1018may provide a broad spectrum of other APIs that may be utilized by the applications1020and/or other software components/modules, some of which may be specific to a particular operating system1014or platform.

The applications1020include built-in applications1040and/or third-party applications1042. Examples of representative built-in applications1040may include, but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, and/or a game application. Third-party applications1042may include any of the built-in applications1040as well as a broad assortment of other applications. In a specific example, the third-party application1042(e.g., an application developed using the Android™ or iOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as iOS™, Android™ Windows® Phone, or other mobile operating systems. In this example, the third-party application1042may invoke the API calls1024provided by the mobile operating system such as operating system1014to facilitate functionality described herein.

The applications1020may utilize built-in operating system functions (e.g., kernel1028, services1030and/or drivers1032), libraries (e.g., system libraries1034, API libraries1036, and other libraries1038), and frameworks/middleware1018to create user interfaces to interact with users of the system. Alternatively, or additionally, in some systems, interactions with a user may occur through a presentation layer, such as presentation layer1044. In these systems, the application/module “logic” can be separated from the aspects of the application/module that interact with a user.

Some software architectures utilize virtual machines. In the example ofFIG. 10, this is illustrated by virtual machine1048. A virtual machine creates a software environment where applications/modules can execute as if they were executing on a hardware machine (such as the machine1100ofFIG. 11, for example). A virtual machine1048is hosted by a host operating system (operating system1014inFIG. 10) and typically, although not always, has a virtual machine monitor1046, which manages the operation of the virtual machine1048as well as the interface with the host operating system (i.e., operating system1014). A software architecture1002executes within the virtual machine1048such as an operating system1050, libraries1052, frameworks/middleware1054, applications1056and/or presentation layer1058. These layers of software architecture executing within the virtual machine1048can be the same as corresponding layers previously described or may be different.

Example Machine Architecture and Machine-Readable Medium

FIG. 11is a block diagram illustrating components of a machine1100, according to some example embodiments, able to read instructions1116from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein. Specifically,FIG. 11shows a diagrammatic representation of the machine1100in the example form of a computer system, within which instructions1116(e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine1100to perform any one or more of the methodologies discussed herein may be executed. For example, the instructions1116may cause the machine1100to execute the flow diagrams ofFIGS. 4 and 5. Additionally, or alternatively, the instructions1116may implement modules ofFIGS. 1-9, and so forth. The instructions1116transform the general, non-programmed machine1100into a particular machine programmed to carry out the described and illustrated functions in the manner described. In alternative embodiments, the machine1100operates as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine1100may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine1100may comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions1116, sequentially or otherwise, that specify actions to be taken by machine1100. Further, while only a single machine1100is illustrated, the term “machine” shall also be taken to include a collection of machines1100that individually or jointly execute the instructions1116to perform any one or more of the methodologies discussed herein.

The machine1100may include processors1110, memory/storage1130, and I/O components1150, which may be configured to communicate with each other such as via a bus1102. In an example embodiment, the processors1110(e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processor1112and processor1114that may execute instructions1116. The term “processor” is intended to include multi-core processor1112,1114that may comprise two or more independent processors1112,1114(sometimes referred to as “cores”) that may execute instructions1116contemporaneously. AlthoughFIG. 11shows multiple processors1110, the machine1100may include a single processor1112,1114with a single core, a single processor1112,1114with multiple cores (e.g., a multi-core processor1112,1114), multiple processors1112,1114with a single core, multiple processors1112,1114with multiples cores, or any combination thereof.

The memory/storage1130may include a memory1132, such as a main memory, or other memory storage, and a storage unit1136, both accessible to the processors1110such as via the bus1102. The storage unit1136and memory1132store the instructions1116embodying any one or more of the methodologies or functions described herein. The instructions1116may also reside, completely or partially, within at least one of the processors1110(e.g., within the processor1112,1114's cache memory), or any suitable combination thereof, during execution thereof by the machine1100. Accordingly, the memory1132, the storage unit1136, and the memory of processors1110are examples of machine-readable media.

Communication may be implemented using a wide variety of technologies. The I/O components1150may include communication components1164operable to couple the machine1100to a network1180or devices1170via coupling1182and coupling1172respectively. For example, the communication components1164may include a network interface component or other suitable device to interface with the network1180. In further examples, communication components1164may include wired communication components, wireless communication components, cellular communication components, near field communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components to provide communication via other modalities. The devices1170may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).

Transmission Medium

The instructions1116may be transmitted or received over the network1180using a transmission medium via a network interface device (e.g., a network interface component included in the communication components1164) and utilizing any one of a number of well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions1116may be transmitted or received using a transmission medium via the coupling1192(e.g., a peer-to-peer coupling) to devices1170. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions1116for execution by the machine1100, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software.

Language