RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
...
Wi-Fi Network Manager:
Wi-Fi network manager is a daemon which handles network states and network interfaces. It handles Wireless initialization and management. This maintains the Wi-Fi state machine, initializes Wi-Fi subsystem & manages connection & disconnection events.
Wi-Fi generic HAL:
Provides It is an Abstraction of Wireless driver calls and various linux wireless utilities to present a set of APIs for common wireless operation. It provides a set of APIs as per RDK specification for connection, management & diagnostic related activities. Abstracts implementation details and SoC dependencies from network management layer.
Linux wireless utility:
Tools such as wpa_supplicant or , wereless-tools, net-link library, etc. which provides support for most of the common Wi-Fi chips.
Driver & Firmware:
Provided by SoC/OEM manufacturer. The kernel space driver and firmware binaries will be provided by Wi-FI SOC or OEM and it should be present in the defined path in the RDK box.
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.
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,
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.
Service Manager can be used for a wide range of services but in this context we wlll focus on the wifi service only.
Some of major API details are provided which is available under the header include/services/wifimanagerservice.h. Generally in case of each service, there are two common API for registering and un-registering particular service. When we register a service, we are making it available to the other application. And when we un-register it will no longer be accessible to the upper layer application.
Service Manager API List | Descriptions |
WifiManagerService() | Constructor, which will register for Wi-Fi service |
WifiManagerService::registerForEvents() | Register events for Wi-Fi manager service. |
WifiManagerService::unregisterEvents() | Unregister events for Wi-Fi manager service |
WifiManagerService::notifyEvent() | Notify the events received from netSrvMgr. |
WifiManagerService::getAvailableSSIDs() | Retrieves the array of strings representing SSIDs |
WifiManagerService::getCurrentState() | Retrieves the current state |
WifiManagerService::getPairedSSID() | Returns the paired SSIDs as string |
WifiManagerService::connect() | Connect with given or saved SSID and passphrase |
……. | ……. |
Wifi- network manager, which takes several responsibility for managing Wifi in Video device
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.
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.
IARMBus Call | Descriptions |
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 |
•IARM Call implementation:
•Here we can see that for each of the possible Wi-Fi Events, we have defined a IARM Call.
•For example, we have some remote procedure calls, which can be invoked from any application to perform some Wi-Fi related operation.
•These operation may be to get the list of available network or to connect to a particular wifi network, etc.
•IARM Events:
•Basically we have 2 types of events for Wifi Manager notifications.
1.State change notifications
•WIFI_CONNECTING : When a connection is initiated the state will change from IDEAL to CONNECTING.
•WIFI_FAILED : When a connection attempt is failed.
•WIFI_DISCONNECTED : When a AP is disconnected from client.
•WIFI_CONNECTED : This will be notified after a successful connection.
2.Error events:
•WIFI_NO_SSID: The Access point we wanted to connect is no longer available.
•WIFI_UNKNOWN : Unknown error has happened.
•WIFI_CONNECTION_LOST : connection is lost, this may indicate that an AP is no longer in range.
•WIFI_SSID_CHANGED : this indicates that we have connected to another SSID
•WIFI_CONNECTION_FAILED : When the connection is failed, it may be because of invalid credential or any other issue.
•WIFI_CONNECTION_INTERRUPTED : Connection is cancelled by user when it was in progress.
...