Patent ID: 12237883

DETAILED DESCRIPTION

It will be readily understood that the components of the present invention, as generally described and illustrated in the Figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the invention, as represented in the Figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of certain examples of presently contemplated embodiments in accordance with the invention. The presently described embodiments will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout.

Various aspects of the present disclosure are described by narrative text, flowcharts, block diagrams of computer systems and/or block diagrams of the machine logic included in computer program product (CPP) embodiments. With respect to any flowcharts, depending upon the technology involved, the operations can be performed in a different order than what is shown in a given flowchart. For example, again depending upon the technology involved, two operations shown in successive flowchart blocks may be performed in reverse order, as a single integrated step, concurrently, or in a manner at least partially overlapping in time.

A computer program product embodiment (“CPP embodiment” or “CPP”) is a term used in the present disclosure to describe any set of one, or more, storage media (also called “mediums”) collectively included in a set of one, or more, storage devices that collectively include machine readable code corresponding to instructions and/or data for performing computer operations specified in a given CPP claim. A “storage device” is any tangible device that can retain and store instructions for use by a computer processor. Without limitation, the computer readable storage medium may be an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these mediums include: diskette, hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or Flash memory), static random access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded device (such as punch cards or pits/lands formed in a major surface of a disc) or any suitable combination of the foregoing. A computer readable storage medium, as that term is used in the present disclosure, is not to be construed as storage in the form of transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, light pulses passing through a fiber optic cable, electrical signals communicated through a wire, and/or other transmission media. As will be understood by those of skill in the art, data is typically moved at some occasional points in time during normal operations of a storage device, such as during access, de-fragmentation or garbage collection, but this does not render the storage device as transitory because the data is not transitory while it is stored.

Computing environment100contains an example of an environment for the execution of at least some of the computer code involved in performing the inventive methods, such as code150for configuring beamforming for a network device (i.e., collectively referred to herein as an “augmented configuration interface150”). In addition to block150, computing environment100includes, for example, computer101, wide area network (WAN)102, end user device (EUD)103, remote server104, public cloud105, and private cloud106. In this embodiment, computer101includes processor set110(including processing circuitry120and cache121), communication fabric111, volatile memory112, persistent storage113(including operating system122and block150, as identified above), peripheral device set114(including user interface (UI) device set123, storage124, and Internet of Things (IoT) sensor set125), and network module115. Remote server104includes remote database130. Public cloud105includes gateway140, cloud orchestration module141, host physical machine set142, virtual machine set143, and container set144.

Computer101may take the form of a desktop computer, laptop computer, tablet computer, smart phone, smart watch or other wearable computer, mainframe computer, quantum computer or any other form of computer or mobile device now known or to be developed in the future that is capable of running a program, accessing a network or querying a database, such as remote database130. As is well understood in the art of computer technology, and depending upon the technology, performance of a computer-implemented method may be distributed among multiple computers and/or between multiple locations. On the other hand, in this presentation of computing environment100, detailed discussion is focused on a single computer, specifically computer101, to keep the presentation as simple as possible. Computer101may be located in a cloud, even though it is not shown in a cloud inFIG.1. On the other hand, computer101is not required to be in a cloud except to any extent as may be affirmatively indicated.

Processor set110includes one, or more, computer processors of any type now known or to be developed in the future. Processing circuitry120may be distributed over multiple packages, for example, multiple, coordinated integrated circuit chips. Processing circuitry120may implement multiple processor threads and/or multiple processor cores. Cache121is memory that is located in the processor chip package(s) and is typically used for data or code that should be available for rapid access by the threads or cores running on processor set110. Cache memories are typically organized into multiple levels depending upon relative proximity to the processing circuitry. Alternatively, some, or all, of the cache for the processor set may be located “off chip.” In some computing environments, processor set110may be designed for working with qubits and performing quantum computing.

Computer readable program instructions are typically loaded onto computer101to cause a series of operational steps to be performed by processor set110of computer101and thereby effect a computer-implemented method, such that the instructions thus executed will instantiate the methods specified in flowcharts and/or narrative descriptions of computer-implemented methods included in this document (collectively referred to as “the inventive methods”). These computer readable program instructions are stored in various types of computer readable storage media, such as cache121and the other storage media discussed below. The program instructions, and associated data, are accessed by processor set110to control and direct performance of the inventive methods. In computing environment100, at least some of the instructions for performing the inventive methods may be stored in block150in persistent storage113.

Communication fabric111is the signal conduction path that allows the various components of computer101to communicate with each other. Typically, this fabric is made of switches and electrically conductive paths, such as the switches and electrically conductive paths that make up busses, bridges, physical input/output ports and the like. Other types of signal communication paths may be used, such as fiber optic communication paths and/or wireless communication paths.

Volatile memory112is any type of volatile memory now known or to be developed in the future. Examples include dynamic type random access memory (RAM) or static type RAM. Typically, volatile memory112is characterized by random access, but this is not required unless affirmatively indicated. In computer101, the volatile memory112is located in a single package and is internal to computer101, but, alternatively or additionally, the volatile memory may be distributed over multiple packages and/or located externally with respect to computer101.

Persistent storage113is any form of non-volatile storage for computers that is now known or to be developed in the future. The non-volatility of this storage means that the stored data is maintained regardless of whether power is being supplied to computer101and/or directly to persistent storage113. Persistent storage113may be a read only memory (ROM), but typically at least a portion of the persistent storage allows writing of data, deletion of data and re-writing of data. Some familiar forms of persistent storage include magnetic disks and solid state storage devices. Operating system122may take several forms, such as various known proprietary operating systems or open source Portable Operating System Interface-type operating systems that employ a kernel. The code included in block150typically includes at least some of the computer code involved in performing the inventive methods.

Peripheral device set114includes the set of peripheral devices of computer101. Data communication connections between the peripheral devices and the other components of computer101may be implemented in various ways, such as Bluetooth connections, Near-Field Communication (NFC) connections, connections made by cables (such as universal serial bus (USB) type cables), insertion-type connections (for example, secure digital (SD) card), connections made through local area communication networks and even connections made through wide area networks such as the internet. In various embodiments, UI device set123may include components such as a display screen, speaker, microphone, wearable devices (such as goggles and smart watches), keyboard, mouse, printer, touchpad, game controllers, and haptic devices. Storage124is external storage, such as an external hard drive, or insertable storage, such as an SD card. Storage124may be persistent and/or volatile. In some embodiments, storage124may take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments where computer101is required to have a large amount of storage (for example, where computer101locally stores and manages a large database) then this storage may be provided by peripheral storage devices designed for storing very large amounts of data, such as a storage area network (SAN) that is shared by multiple, geographically distributed computers. IoT sensor set125is made up of sensors that can be used in Internet of Things applications. For example, one sensor may be a thermometer and another sensor may be a motion detector.

Network module115is the collection of computer software, hardware, and firmware that allows computer101to communicate with other computers through WAN102. Network module115may include hardware, such as modems or Wi-Fi signal transceivers, software for packetizing and/or de-packetizing data for communication network transmission, and/or web browser software for communicating data over the internet. In some embodiments, network control functions and network forwarding functions of network module115are performed on the same physical hardware device. In other embodiments (for example, embodiments that utilize software-defined networking (SDN)), the control functions and the forwarding functions of network module115are performed on physically separate devices, such that the control functions manage several different network hardware devices. Computer readable program instructions for performing the inventive methods can typically be downloaded to computer101from an external computer or external storage device through a network adapter card or network interface included in network module115.

WAN102is any wide area network (for example, the internet) capable of communicating computer data over non-local distances by any technology for communicating computer data, now known or to be developed in the future. In some embodiments, the WAN102may be replaced and/or supplemented by local area networks (LANs) designed to communicate data between devices located in a local area, such as a Wi-Fi network. The WAN and/or LANs typically include computer hardware such as copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and edge servers.

End user device (EUD)103is any computer system that is used and controlled by an end user (for example, a customer of an enterprise that operates computer101), and may take any of the forms discussed above in connection with computer101. EUD103typically receives helpful and useful data from the operations of computer101. For example, in a hypothetical case where computer101is designed to provide a recommendation to an end user, this recommendation would typically be communicated from network module115of computer101through WAN102to EUD103. In this way, EUD103can display, or otherwise present, the recommendation to an end user. In some embodiments, EUD103may be a client device, such as thin client, heavy client, mainframe computer, desktop computer and so on.

Remote server104is any computer system that serves at least some data and/or functionality to computer101. Remote server104may be controlled and used by the same entity that operates computer101. Remote server104represents the machine(s) that collect and store helpful and useful data for use by other computers, such as computer101. For example, in a hypothetical case where computer101is designed and programmed to provide a recommendation based on historical data, then this historical data may be provided to computer101from remote database130of remote server104.

Public cloud105is any computer system available for use by multiple entities that provides on-demand availability of computer system resources and/or other computer capabilities, especially data storage (cloud storage) and computing power, without direct active management by the user. Cloud computing typically leverages sharing of resources to achieve coherence and economies of scale. The direct and active management of the computing resources of public cloud105is performed by the computer hardware and/or software of cloud orchestration module141. The computing resources provided by public cloud105are typically implemented by virtual computing environments that run on various computers making up the computers of host physical machine set142, which is the universe of physical computers in and/or available to public cloud105. The virtual computing environments (VCEs) typically take the form of virtual machines from virtual machine set143and/or containers from container set144. It is understood that these VCEs may be stored as images and may be transferred among and between the various physical machine hosts, either as images or after instantiation of the VCE. Cloud orchestration module141manages the transfer and storage of images, deploys new instantiations of VCEs and manages active instantiations of VCE deployments. Gateway140is the collection of computer software, hardware, and firmware that allows public cloud105to communicate through WAN102.

Some further explanation of virtualized computing environments (VCEs) will now be provided. VCEs can be stored as “images.” A new active instance of the VCE can be instantiated from the image. Two familiar types of VCEs are virtual machines and containers. A container is a VCE that uses operating-system-level virtualization. This refers to an operating system feature in which the kernel allows the existence of multiple isolated user-space instances, called containers. These isolated user-space instances typically behave as real computers from the point of view of programs running in them. A computer program running on an ordinary operating system can utilize all resources of that computer, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running inside a container can only use the contents of the container and devices assigned to the container, a feature which is known as containerization.

Private cloud106is similar to public cloud105, except that the computing resources are only available for use by a single enterprise. While private cloud106is depicted as being in communication with WAN102, in other embodiments a private cloud may be disconnected from the internet entirely and only accessible through a local/private network. A hybrid cloud is a composition of multiple clouds of different types (for example, private, community or public cloud types), often respectively implemented by different vendors. Each of the multiple clouds remains a separate and discrete entity, but the larger hybrid cloud architecture is bound together by standardized or proprietary technology that enables orchestration, management, and/or data/application portability between the multiple constituent clouds. In this embodiment, public cloud105and private cloud106are both part of a larger hybrid cloud.

Referring toFIG.2, as previously mentioned, beamforming is a technique wherein a wireless signal is focused or concentrated on one or more receiving devices as opposed to having the wireless signal evenly distributed in all directions, as typically occurs with a broadcast antenna. This technique results in a higher quality signal reaching the receiving devices, as well as increased coverage capacity for the transmitting device. This, in turn, may result in faster data transfers and fewer errors. Signal interference between receiving devices may also be reduced or avoided since wireless signals are focused where they are needed.

Despite all of its potential advantages, however, beamforming may add significant complexity to wireless networking as well as require significantly more computing resources. The processing requirements for implementing and maintaining beamforming technology have cost, hardware, and energy implications. In addition, configuring a router, access point, or other networking hardware that is capable of beamforming can be quite complex. The beamforming hardware may need to function in a three-dimensional environment where receivers have different locations in three dimensions and the signals themselves are propagated with different magnitudes and directions in three dimensions. This may, in certain cases, make configuring the beamforming networking hardware very complex.

In certain embodiments, in order to reduce the complexity of setting up and configuring beamforming for a network device, a system in accordance with the invention (hereinafter referred to as an “augmented configuration interface150”) may enable a user to establish a map within an interactive display device (e.g., a virtual reality device, augmented reality device, holographic interface, etc.). This map200may describe an area in which beamforming is to be configured. The map200may be provided in two or three dimensions depending on the application involved.

In certain embodiments, this map may include a floorplan if the area is within a building or includes one or more buildings or structures in the area that is intended to be covered by the beamforming pattern. For example,FIG.2shows one embodiment of a map200that may establish a coverage area for a network device (e.g., a wireless router or wireless access point) that supports beamforming. In this particular example, the map200includes a floorplan202for a building or other structure within the map200, although this is not necessary in all embodiments. The map200may define an indoor, outdoor, or combination area (i.e., indoor and outdoor area) in which a network device is to provide beamforming coverage.

As shown, in certain embodiments, the augmented configuration interface150may enable a network device204to be placed within the map200consistent with where the network device204is or will be placed within a real-world environment that corresponds to the map200. Similarly, the augmented configuration interface150may enable receiving devices206(e.g., smart phones, computers, tablets, televisions, etc.) to be placed or shown on the map200at the locations where they are or are intended to be in the real-world environment. Similarly, the augmented configuration interface150may enable a beamforming pattern, propagating from the network device204, to be overlayed on the map200to show where the network device's beams208are or will propagate from the network device204. This may enable a user to visualize a beamforming pattern within a particular environment.

As shown, the beams208may differ in magnitude and direction depending on the location of the receiving devices206to which the beams208are directed. In certain embodiments, the beams208are static, meaning that once they are configured they may retain their magnitude and/or direction until they are updated or reconfigured. In other embodiments, the beams208may dynamically change based on conditions within the map200or real-world environment. For example, the number, direction, and or magnitude of the beams208may change in response to changes to a number of receiving devices206, locations of receiving devices206, signal strength detected from the receiving devices206, the map200or real-world environment that corresponds to the map200, environmental conditions (weather, obstructions, etc.), or the like.

In certain embodiments, the augmented configuration interface150may enable weights to be assigned to the receiving devices206. These weights may, in certain embodiments, correspond to priorities of the receiving devices206. This may enable beams208to be focused on receiving devices206having the greatest priority, thereby ensuring that higher priority receiving devices206receive the strongest signal from the network device204. The augmented configuration interface150may, in certain embodiments, enable these weights to be changed or updated as the priorities of the receiving devices206change.

The augmented configuration interface150may, in certain embodiments, enable a beamforming pattern to be updated in an interactive and intuitive way. For example, given a map200with devices204,206and beams208overlaid thereon, reconfiguring the beamforming pattern may be as simple as selecting (e.g., with a mouse pointer, finger, etc.) a beam208and dragging the beam208to a new location on the map200. This technique may be used to alter the direction and/or magnitude of a particular beam208. A similar technique may be used to create new beams208or eliminate existing beams208on the map200. This may occur in either two or three dimensions depending on the application involved. Similarly, changing the weight of a receiving device206may be as simple as selecting a receiving device206on the map200and setting or updating information for the receiving device206. The same or similar technique may be used to update a configuration of a transmitting network device204.

For example, as shown inFIG.2, assume that a user wishes to redirect the beam208aonto a new receiving device206a, in this example an electric lawnmower206awith wireless connectivity. In order to redirect the beam208a, the user may select the beam208a with a mouse pointer210or finger210and drag the beam208ato a new location, namely over the lawnmower206a. This may create a new beamforming pattern as shown inFIG.3. In certain embodiments, the new beam208ais static, meaning that it may stay at the place where it is dragged. In other embodiments, the new beam208ais dynamic such that it may change in magnitude and/or direction. For example, if the electric lawnmower206amoves around the area of the map200, the changes in location may be detected and the beam208may be redirected to reflect the changing location.

As mentioned above, in certain embodiments, an interactive display device associated with the augmented configuration interface150may include a virtual reality device, augmented reality device, holographic interface, or the like. In the case of a virtual reality device, the map200may, in certain embodiments, be presented to a user as a three-dimensional virtual reality environment. The network device204, receiving devices206, and beamforming pattern may be presented to the user in the virtual reality environment in proper relation to the map200. The user may reconfigure the beamforming pattern by interacting with and manipulating the beamforming pattern in the virtual reality environment. Various types of hardware, such as a virtual reality headset, may be used to implement the augmented configuration interface150in the virtual reality environment.

Alternatively, or additionally, the augmented configuration interface150may be configured to function in an augmented reality environment. For example, in certain embodiments, virtual representations of the network device204, receiving devices206, and/or beamforming pattern may be overlaid onto a real-world scene presented through a device, such as a pair of augmented reality glasses, smartphone, tablet, or the like. In other contemplated embodiments, the augmented configuration interface150may be implemented as a holographic interface.

Referring toFIG.4, as previously mentioned, receiving devices206may move within an area defined by a map200. For example,FIG.4shows a receiving device206a(i.e., an electric lawnmower206a) and a receiving device206(e.g., a smartphone) that have different locations at a first time (T1), second time (T2), and third time (T3). In response, the beamforming pattern may be configured to dynamically change over time to alter the magnitude and/or direction of the beams208to reflect the changing locations of the receiving devices206,206a.

In certain embodiments, the augmented configuration interface150may be configured to learn how a beamforming pattern has changed over time to predict how the beamforming pattern may be optimized in the future. The augmented configuration interface150may, in certain embodiments, use machine learning to accomplish this. Specifically, the augmented configuration interface150may be trained with past location or movement data of the receiving devices206,206ain order to predict how the beamforming pattern should change in the future.

Referring toFIG.5, one embodiment of a method500for visualizing and managing a beamforming pattern is illustrated. Such a method500may, in certain embodiments, be executed by the augmented configuration interface150. As shown, the method500initially collects502the status of wireless devices (e.g., receiving devices206) in a given area. The method500then obtains504a map200(either in two or three dimensions) of the area. The relative positions of a transmitting device204(e.g., transmitting network device204) and receiving devices206on the map200may then be obtained506. The method500then calculates508the wireless signal strength of each connected receiving device206from the data collected at step502. Using the calculated signal strength, the method500generates510and saves510a current wireless beamforming pattern for the map200. The method500then visualizes512the current wireless beamforming pattern in the augmented configuration interface150and enables512a user to update/reprioritize the weights of the receiving devices206, user preferences, contextual needs, and the beamforming pattern.

Referring toFIG.6, one embodiment of a method600for rebalancing priorities of receiving devices206is illustrated. Such a method600may, in certain embodiments, be executed by the augmented configuration interface150. As shown, the method600enables602a user to update/reprioritize the weights of receiving devices206and change604a wireless beamforming pattern plan. The method600learns604beamforming patterns over time to recommend and predict an appropriate beamforming pattern for a user to update via the augmented configuration interface150. The method600may further create606a knowledge corpus of beamforming patterns based on priorities of the receiving devices206, weights of the receiving devices206, contextual use/need, and/or user preferences. The method600deploys608an updated beamforming pattern plan and refreshes608beamforming patterns in the network device204.

FIG.7is a high-level block diagram showing an augmented configuration interface150and various sub-modules that may be used to configure beamforming for a network device204. The augmented configuration interface150and associated sub-modules may be implemented in hardware, software, firmware, or combinations thereof. The augmented configuration interface150and associated sub-modules are presented by way of example and not limitation. More or fewer sub-modules may be provided in different embodiments. For example, the functionality of some sub-modules may be combined into a single or smaller number of sub-modules, or the functionality of a single sub-module may be distributed across several sub-modules.

As shown, the augmented configuration interface150may include one or more of a management module702, data collection module704, locator module706, beamforming pattern generation module708, and visualization module710. The management module702may contain a service profile module712, which may reference a data structure714and a priority list716. The data collection module704may reference a map200and a map repository718. The locator module706may include a signal strength determination module720. The beamforming pattern generation module708may include a rebalancing module722, which may reference a knowledge corpus724, and a beamforming pattern repository726. The visualization module710may include a prioritization module728and a beamform deployer module730.

The management module702and service profile module712may manage a current configuration of a beamforming pattern in a transmitting device204. In certain embodiments, the management module702and service profile module712may accomplish this by maintaining a data structure714that defines the current beamforming pattern and configuration parameters. For example, the data structure714may identify the map200that is being used by the augmented configuration interface150, the wireless transmitting device204(i.e., wireless network device204) that is producing the beamforming pattern, a list of receiving devices206that are receiving the wireless signal from the transmitting device204and/or are located on the map200, locations of the receiving devices206, and/or the current beamforming pattern that is being implemented by the transmitting device204. The management module702and service profile module712may assist in keeping the information in the data structure714updated as the information changes, or as changes are made to the configuration.

The priority list716may rank the receiving devices206in order of priority. In certain embodiments, this may be accomplished by recording a weight for each receiving device206in the list716. The management module702and service profile module712may assist in keeping the priority list716updated as the weights or other priority information changes.

The data collection module704may assist in collecting data for the augmented configuration interface150. For example, the data collection module704may collect the status of connected receiving devices206. The data collection module704may also collect data about the map200previously described. This may include collecting floorplans202for any building or structures that are in the map200. In certain embodiments, the data collection module704may enable a user to input a floorplan202in two or three dimensions. This may, in certain embodiments, include enabling a user to draw the floorplan202for input to the data collection module704. In certain embodiments, the data collection module704may also store maps200and/or floorplans202that have been gathered for use with the augmented configuration interface150in a map repository718.

The locator module706may be used to locate (i.e., determine (x,y,z) relative positions or coordinates) a transmitting device204and/or receiving devices206on the map200. In certain embodiments, the locator module706may utilize a signal strength determination module720to make this determination, which may detect the signal strength of the transmitting device204and/or receiving devices206. In certain embodiments, triangulation techniques may be used in combination with a detected signal strength to determine a relative location of a device. In other embodiments, the locator module706may use other techniques or technologies, such as GPS coordinates, for determining the location of a transmitting device204or receiving device206on the map200.

Using the locations and signal strengths of the transmitting device204and receiving devices206, and their relative importance (e.g., weights), the beamforming pattern generation module708may determine a beamforming pattern for use by the transmitting device204for the current map200. In certain embodiments, this beamforming pattern (as well as past beamforming patterns) may be saved in a beamforming pattern repository726. The rebalancing module722may be used to modify the beamforming pattern in response to changes to parameters such as the locations of the transmitting device204and/or receiving devices206, the weights of the receiving devices206, the signal strength of the receiving devices206, contextual use/need, user preferences, or the like.

In certain embodiments, the rebalancing module722may also be configured to learn how a beamforming pattern has changed over time to suggest or predict a beamforming pattern going forward or in the future. The rebalancing module722may in certain embodiments use machine learning to make these predictions or suggestions. In certain embodiments, the rebalancing module722may reference a knowledge corpus724that stores beamforming patterns based on priorities of the receiving devices206, weights associated with the receiving devices206, locations of the transmitting device204and/or receiving devices206, contextual use/need, user preferences, and/or the like.

The visualization module710may enable a user to visualize the beamforming pattern in a particular map200, which may include one or more floorplans202. This may be performed in two or three dimensions. In certain embodiments, this may be accomplished using an interactive display device such as a virtual reality device, augmented reality device, holographic interface, or the like. The visualization module710may also enable a user to interactively make modifications to the beamforming pattern or other configuration parameters. For example, the visualization module710may enable a user to reconfigure a beamforming pattern by selecting (e.g., with a mouse pointer, finger, etc.) a beam208of the beamforming pattern and dragging the beam208to a different location on a map200. A prioritization module728within the visualization module710may enable a user to change the beamforming pattern (or a beamforming pattern plan) by modifying weights associated with the receiving devices206. When a beamforming pattern or beamforming pattern plan is determined or modified in the augmented configuration interface150, the beamform deployer module730may deploy the beamforming pattern or beamforming pattern plan (e.g., a plan of how the beamforming pattern is to change over time) in the transmitting device204.

Referring toFIG.8, a flow chart is illustrated to show interaction and data flow between the modules illustrated inFIG.7. As shown inFIG.8, a user800may manage a current configuration of the beamforming pattern and augmented configuration interface150by way of the management module702and service profile module712. This configuration may be stored in a data structure714that records the current beamforming pattern and other configuration parameters, as previously discussed. Other data structures, such as the priority list716, may record priorities (e.g., weights) for receiving devices206associated with the beamforming pattern.

As shown inFIG.8, the data collection module704may collect data (e.g., status data) from the transmitting device204and receiving devices206. This data may be used by the locator module706to locate the transmitting device204and receiving devices206on the map200. This may be accomplished with assistance from the signal strength determination module720, which may measure the signal strength of the receiving devices206. The location data may be passed to the beamforming pattern generation module708to determine a beamforming pattern to effectively communicate between the transmitting device204and the receiving devices206. This beamforming pattern may be recorded in the beamforming pattern repository726. The beamforming pattern may be created in relation to the map200, which may be pulled from the map repository718.

As further shown inFIG.8, using data in the knowledge corpus724and/or beamforming pattern repository726, the rebalancing module722may be used to adjust the beamforming pattern as needed. This may be in response to changes to the locations of the transmitting device204and/or receiving devices206, weights of the receiving devices206, signal strength of the receiving devices206, contextual use/need, user preferences, or the like.

When a beamforming pattern is established, the visualization module710may enable a user800to visualize the beamforming pattern in two or three dimensions. In certain embodiments, this may be accomplished using an interactive display device such as a virtual reality device, augmented reality device, holographic interface, or the like. In certain embodiments, the visualization module710may enable a user to interactively modify the beamforming pattern or other configuration parameters. The prioritization module728may enable the user800to change the beamforming pattern (or a beamforming pattern plan) by modifying weights associated with the receiving devices206. When a beamforming pattern or beamforming pattern plan is established or modified, the beamform deployer module730may implement or deploy the beamforming pattern (or beamforming pattern plan) in the transmitting device204.

The flowcharts and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. Other implementations may not require all of the disclosed steps to achieve the desired functionality. It will also be noted that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

Several examples will now be provided to further clarify various aspects of the present disclosure:

Example 1: A method for configuring beamforming for a network device includes creating a map of an area in which a network device that supports beamforming is placed. The method shows, on an interactive display device, the network device on the map. The method shows, on the interactive display device, one or more beams emanating from the network device on the map. The method enables a user to manipulate the beams on the interactive display device to create a desired beamforming pattern that takes into account the map and receiving devices located in the area.

Example 2: The limitations of Example 1, wherein the map includes a floorplan associated with the area.

Example 3: The limitations of any of Examples 1 and 2, wherein the network device is one of a wireless router and a wireless access point.

Example 4: The limitations of any of Examples 1-3, wherein the interactive display device is one of a virtual reality device, augmented reality device, and holographic interface.

Example 5: The limitations of any of Examples 1-4, wherein the map is a three-dimensional map and the beams are represented in three dimensions on the three-dimensional map.

Example 6: The limitations of any of Examples 1-5, further comprising establishing weights for each of the receiving devices and adjusting the beamforming pattern in a way that takes the weights into account.

Example 7: The limitations of any of Examples 1-6, further comprising learning beamforming patterns occurring over time in order to recommend the desired beamforming pattern.

Example 8: A system comprising one or more processor and one or more computer-readable storage media collectively storing program instructions which, when executed by the processor, are configured to cause the processor to perform a method according to any of Examples 1-7.

Example 9: A computer program product comprising one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions comprising instructions configured to cause one or more processors to perform a method according to any one of Examples 1-7.

Example 10: A method for configuring beamforming for a network device includes creating a map of an area in which a network device that supports beamforming is placed. The method shows, on an interactive display device, the network device on the map. The method shows, on the interactive display device, one or more beams emanating from the network device on the map. The method enables a user to manipulate the beams on the interactive display device to create a desired beamforming pattern that takes into account the map and receiving devices located in the area. The method further establishes weights for each of the receiving devices and adjusts the beamforming pattern in a way that takes the weights into account.

Example 11: The limitations of Example 10, wherein the map is a floorplan associated with the area.

Example 12: The limitations of any of Examples 10 and 11, wherein the interactive display device is one of a virtual reality device, augmented reality device, and holographic interface.

Example 13: A system comprising one or more processor and one or more computer-readable storage media collectively storing program instructions which, when executed by the processor, are configured to cause the processor to perform a method according to any of Examples 10-12.