RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
...
1.Basic Feature wise R-PI Wi-Fi is almost at the same level as that of other RDK platforms.
draw.io Diagram | ||||
---|---|---|---|---|
|
Main difference that we can derive are:
...
In this section, we will get the details on the architecture, layers, and how different RDK components interact with the wifi driver to enable Core wifi functionality.
draw.io Diagram | ||||
---|---|---|---|---|
|
Application:
In top of the eco-system we have wide range of application which requires wireless network access. This may be a cloud based UI application, a diagnostics webpage or a console application such as test automation kit which will be required to verify readiness of a new RDK box with respect to different component features. This can be a HTML based webpage or a native console application requesting Wi-Fi functionalities.
...
Let us see in what types of network topology one wireless enabled RDK box can operate. We can see two use cases here,
In first case we will see a straight forward network where we will have an IP headend for TV channels, VOD, etc.
draw.io Diagram | ||||
---|---|---|---|---|
|
In second use case, we wanted to show how a legacy network can be extended to operate with wifi enable devices,
In the figure, we use a RDK Video gateway to receive data from Cable media and relay to a RDK broadband device through MoCA network. In this network topology,
draw.io Diagram |
---|
|
RDK client RDK client devices will be able to access the QAM channel and DVR from the Video gateway and internet through the broadband device. Video and internet data will be received by the Broadband Device and sent to Wireless clients.
...
Lets see how network manager works when a RDK device boots up, On bootup, network service manager reads a configuration file to check what all network interfaces are supported on current set-top box and accordingly it initializes and bring-up the corresponding subsystems such as wifi, moca, or Ethernet. It also sets the telemetry parameters such as logging interval and decide what information need to be logged according to the configuration sets by the user.
The WIFI Manager API provides support to client applications that wish to enable WIFI communications on a STB.
Another important feature of the network manager is to notify other application or other listeners when a major event occurs with the Wi-Fi sub-system
Here the event may of following types.
Wi-Fi Network Manager - IARM Event & Calls
Lets see how the event notification mechanism works. Basically all the event related activity are done through a D-Bus messaging extension known as IARM. In our case the network manager will register few event names and their corresponding event handler function. When an application is interested to receive that event, he will be register as a listen to that event. Whenever the event occurs all the register listener that are connected to IARM will be able to receive the notification.
...
IARM_BUS_WIFI_MGR_API_getAvailableSSIDs
...
Retrieves the List of available APs
...
IARM_BUS_WIFI_MGR_API_getConnectedSSID
...
Returns the properties of the currently connected SSID
...
IARM_BUS_WIFI_MGR_API_setEnabled
...
Enable the WIFI adapter on the box
...
IARM_BUS_WIFI_MGR_API_connect
...
Connect with given or saved SSID and passphrase
...
IARM_BUS_WIFI_MGR_API_getConnectionType
...
Retrieves the type based on active network interface
...
IARM_BUS_WIFI_MGR_API_getRadioStatsProps
...
Retrieve the get radio stats properties
Refer to netsrvmgr for more detail such as APIs, Events and Error codes.
In the below sequence diagram, we will see how an HTML application will interact with Wifi manager through Service manager
IARM Call implementation:
IARM Events Notificaiton:
Basically we have 2 types of events for Wifi Manager notifications.
State change notifications events:
Error events:
WIFI_NO_SSID: The Access point we wanted to connect is no longer available.
In the below sequence diagram, we will see how an HTML application will interact with Wifi manager through Service manager. We can see that for each functionality we have an uniform API name across different component, which enable simplicity in development and the set off APIs can be mapped easily. For example, If we take one API that is getConnectionType(), which we can use to get the active interface type which may be Wifi or LAN interface.
draw.io Diagram | ||||
---|---|---|---|---|
|
In first place, we will have Java Script functions registered with Service manager. Then Service manager will have an internal implementation for that API with error handling and managing result.
When the call is propagated, to the actual handler daemon (Wifi manager) through message bus, it will be translated to a IARM RPC call.
...
Here we will walkthrough the different RDK component involved in the process and starting from Application which is the imitator, ending with Wi-Fi HAL which is the provider of the functionality. We will also see the messaging formats in which the RDK components communicate.
draw.io Diagram | ||||
---|---|---|---|---|
|
Initiating the connection: Here application may need to enable the WiFi if required. In which case he has call the initialization routine and network manager will handle the further operation
...
draw.io Diagram | ||||
---|---|---|---|---|
|
RDK Wifi Specification mentions, all communication from network manager to the Wifi Driver has to be through WPA supplicant. So the basic requirement is to add WPA supplicant and its related packages such as netlink library and wireless tools. When all the dependency are added to the platform, we have to write a Wi-Fi HAL customized in our platform. Then we have to add the Wifi support in build framework via adding appropriate packages in image recipe as well as machine configuration file.
...
This is a simple recipe which defines build rules for WIFI HAL library code. Here we can see that after defining some common stuff, it defines 2 environment variables i.e. PROVIDES , RPROVIDES_PN, both of which are assigned to virtual/wifi-hal. We can also see that wpa_supplicant and wifi-hal-headers as dependencies in the below code.
TODO
TODO
Useful links:
https://etwiki.sys.comcast.net/display/CE/%5bShared%5d+WiFi
TODO
To know more about SoC/Application level APIs details use in RDK, refer the link WIFI API Documentationhttps://etwiki.sys.comcast.net/display/APPS/WIFI+Manager+API