This component provides 3 major functionalities,
- Wi-Fi: Manage the Wi-Fi network by connecting to AP (Access Point) and provide the notification to the application. Generally it is called as Wi-Fi Network Manager.
- Route : Discover and manage the network route for data communication.
- MoCA: Managing MoCA services.
Wi-Fi Network Manager
Wifi- network manager, which takes several responsibility for managing Wifi in Video device
- It dynamically detect the Network interfaces, send notifications to subscribers
- Supports diagnostics both local and cloud based applications
- Setup and update the network routes based on priorities, wifi connection status, availability, etc
- It also Listen to home networking updates to determine the routes for which communication to be established in outside world
- It provide Modular approach to add/remove new network interface types and also provide support for configuring routing rules
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.
- It Provide API to Initialize the wifi driver and runs the linux wireless daemon
- Provides API to configure WiFi SSID and password, it is required for video device to to connect to the Access Point.
- It provide facility to immediately try to connect to WiFi network with provided SSID and password when API is invoked.
- It also Provides response to caller to indicate whether or not WiFi network connection was successfully established.
- Provides API to clear previously configured SSID and password.
- Stores/Saves WiFi SSID and password in persistent memory, which will help in automatically connecting to the AP after box reboots.
- Enumerates via API the available broadcasting SSIDs.
- Wifi Manager automatically tries to connect to paired Wifi network on startup
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.
- Any state change that either the state changed from Connected to Disconnected or Vice Versa.
- when settop boots with WiFi capability.
- when WiFi network is successfully established.
- when connection to WiFi network is lost.
- when WiFi driver failure is detected.
- By notifying about all the discussed events, it helps the other application to do some decision making or display some information in the screen.
- For example, when a video is being played from internet and in-between wireless connection is lost.
- In this case the video player will receive a disconnection event from the network manager and can show on screen error message.
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.
Retrieves the List of available APs
Returns the properties of the currently connected SSID
Enable the WIFI adapter on the box
Connect with given or saved SSID and passphrase
Retrieves the type based on active network interface
Retrieve the get radio stats properties
IARM Call implementation:
- In the above table 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 Wi-Fi network, etc.
IARM Events Notificaiton:
Basically we have 2 types of events for Wifi Manager notifications.
State change notifications events:
- 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.
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.