Software framework and development platform for Wi-Fi chipsets
A wireless network device comprises a wireless signal driver, an application-driver framework that includes a bidirectional interface and an application interface. The application-driver framework is configured for application-agnostic and driver-agnostic communication. The bidirectional interface communicatively couples the wireless signal driver to the application-driver framework. The bidirectional interface includes an abstraction layer via which driver-agnostic command signals and driver-agnostic event signals are communicated with the application-driver framework and via which driver-specific command signals and driver-specific event signals are communicated with the wireless signal driver. The application interface is configured to interface with applications and with the application-driver framework. The application interface is configured to communicate application-agnostic command signals and application-agnostic event signals with the application-driver framework and to communicate application-specific event signals and application-specific command signals with the one or more applications and the application-driver framework.
1 . A wireless network device, comprising:
a wireless signal driver configured to generate a Wi-Fi network;
an application-driver framework configured for application-agnostic and driver-agnostic communication, the application-driver framework including:
a bidirectional interface that communicatively couples the wireless signal driver to the application-driver framework, the bidirectional interface being configured to convert driver-agnostic command signals to driver-specific command signals and to convert driver-specific event signals to driver-agnostic event signals; and
an application interface that is configured to interface one or more applications with the application-driver framework, the application interface being configured to communicate application-agnostic command signals and application-agnostic event signals with the application-driver framework and to communicate application-specific event signals and application-specific command signals with the one or more applications and the application-driver framework, the application interface being configured to perform application-specific filtering to convert application-agnostic event signals to application-specific event signals, wherein a first application of the one or more applications being related to interacting with a physical environment, by using changes in Wi-Fi signals for spatial diagnostics or motion detection.
2 . The wireless network device of claim 1 , wherein:
at least one application of the one or more applications includes a library;
the application-driver framework is configured to implement a user-space background process; and
the at least one application is dynamically loaded by the user-space background process.
3 . The wireless network device of claim 1 , wherein at least one application is implemented as:
a dynamically loadable library; or
a standalone process interfaced by an inter-process communication bus.
4 . The wireless network device of claim 1 , wherein:
the one or more applications is configured to use wireless signal information associated with a wireless network or to invoke a wireless function implemented by the wireless network; and
the wireless network is generated or supported by the wireless signal driver.
5 . The wireless network device of claim 4 , wherein the one or more applications includes one or more or a combination of:
a home management application;
a media access control (MAC) sublayer management entity (MLME) delegation;
a client steering application;
a channel and power management application;
application management;
a data path control application; and
a spatial stream diagnostic application.
6 . The wireless network device of claim 4 , further comprising:
a first chipset including a first chipset architecture; and
a second chipset including a second chipset architecture, wherein:
a first application of the one or more applications is run on the first chipset;
a second application of the one or more applications is run on the second chipset; and
the application-driver framework is configured to provide compatibility between the first application and the second application.
7 . The wireless network device of claim 1 , wherein the wireless signal driver, the application-driver framework, the bidirectional interface, and the application interface are configured as a Wi-Fi repeater, a wireless access point (WAP), or a Wi-Fi gateway.
8 . The wireless network device of claim 1 , wherein the application-driver framework is configured to initiate an asynchronous framework event that as the application agnostic event signal, the asynchronous framework event including at least one of a periodic application update, an application restart event, or an application quit event.
9 . The wireless network device of claim 1 , wherein the application-driver framework is configured to provide a compatible interface between a first application of the one or more applications and a second application of the one or more applications and the wireless signal driver, the first application and the second application developed by different developers and listed on a cloud server as usable with the wireless network device.
10 . A method performed by a wireless network device, the method comprising:
providing a wireless network by the wireless network device using a wireless signal driver, the wireless signal driver configured to generate a Wi-Fi network;
interfacing the wireless signal driver with a bi-directional interface, the bi-directional interface converting driver-agnostic command signals to driver-specific command signals and converting driver-specific event signals to driver-agnostic event signals;
interfacing one or more applications with an application-driver framework of a bi-directional interface via an application interface, a first application of the one or more applications being related to interacting with a physical environment by using changes in Wi-Fi signals for spatial diagnostics or motion detection;
communicating an application-agnostic command signal, via the application interface, to the application-driver framework;
communicating an application-agnostic event signal, via the application interface, to the application-driver framework;
communicating an application-specific command signal, via the application interface, to the one or more applications; and
communicating an application-specific event signal, via the application interface, to the one or more applications, the application interface performing application-specific filtering to convert application-agnostic event signals to application-specific event signals.
11 . The method of claim 10 , further comprising:
implementing a user-space background process by the application-driver framework; and
dynamically loading at least one application of the one or more applications by the user-space background process, the at least one application including a library.
12 . The method of claim 10 , further comprising implementing at least one application of the one or more applications as a dynamically loadable library or a standalone process interfaced by an inter-process communication bus.
13 . The method of claim 10 , further comprising:
using, by the one or more applications, wireless signal information associated with a wireless network generated or supported by the wireless signal driver; or
invoking, by the one or more applications, a wireless function implemented by the wireless network.
14 . The method of claim 13 , wherein the one or more applications includes one or more of or a combination of:
a home management application;
a media access control (MAC) sublayer management entity (MLME) delegation;
a client steering application;
a channel and power management application;
application management;
a data path control application; and
a spatial stream diagnostic application.
15 . The method of claim 10 , wherein the application-agnostic event signal includes an asynchronous framework event, the method further comprising:
filtering, by the application interface, the asynchronous framework event to generate the application-specific event signal from the application-agnostic event signal.
16 . The method of claim 15 , wherein the asynchronous framework event includes at least one of a periodic application update, an application restart event, or an application quit event.
17 . The method of claim 10 , further comprising:
communicating a signal to the application interface from a first application of the one or more applications, the signal including an application-specific invoke command; and
filtering, by the application interface, the application-specific invoke command to generate an application-agnostic invoke command,
wherein the application-agnostic invoke command is the application-agnostic command signal communicated via the application interface to the application-driver framework.
18 . The method of claim 17 , wherein the application-specific invoke command includes a command to update the first application, restart the first application, or quit the first application.
19 . The method of claim 10 , further comprising:
communicating a signal to the application interface from a first application of the one or more applications, the signal including a first application-specific command signal;
filtering, by the application interface, the first application-specific command to generate the application-agnostic command signal that is communicated to the application-driver framework;
performing processing of the application-agnostic command signal by the application-driver framework;
communicating a framework event from the application-driver framework to the application interface as at least part of the application-agnostic event signal, the framework event based on the processing of the application-agnostic command signal; and
filtering, by the application interface, the application-agnostic event signal to generate the application-specific event signal that is communicated to the one or more applications,
wherein the application-specific event signal is specifically compatible with a second application of the one or more applications that is different from the first application; and
wherein communicating the application-specific event signal to the one or more applications includes communicating the application-specific event signal to the second application.
20 . One or more non-transitory computer-readable media within a wireless network device, the non-transitory computer-readable media storing instructions which, when executed by one or more processors, cause the wireless network device to perform one or more operations, the operations comprising:
providing a wireless network by the wireless network device using a wireless signal driver, the wireless signal driver configured to generate a Wi-Fi network;
interfacing the wireless signal driver with a bi-directional interface, the bi-directional interface converting driver-agnostic command signals to driver-specific command signals and converting driver-specific event signals to driver-agnostic event signals;
interfacing one or more applications with an application-driver framework of a bi-directional interface via an application interface, a first application of the one or more applications being related to interacting with a physical environment by using changes in Wi-Fi signals for spatial diagnostics or motion detection;
communicating an application-agnostic command signal, via the application interface, to the application-driver framework;
communicating an application-agnostic event signal, via the application interface, to the application-driver framework;
communicating an application-specific command signal, via the application interface, to the one or more applications; and
communicating an application-specific event signal, via the application interface, to the one or more applications, the application interface performing application-specific filtering to convert application-agnostic event signals to application-specific event signals.