Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Overview

IARM (Inter Application Resource Management) is a mechanism for inter-process communication among different RDK applications. Its a platform agnostic inter process communication (IPC) mechanism for the other RDK components. The inter communication is possible between IARM application using events and RPC method.



IARM Manager is an IARM Application that runs as Linux daemon process.The IARM Bus Daemon is a Manager Component with Special privileges to manage resources. Other IARM Manager components include:

  • Power Manager
  • IR Manager
  • Disk Manager
  • Sys Manager
  • DS Manager
  • DeepSleep Manager
  • DeviceUpdate Manager
  • IP Manager
  • vrexManager

Image Removed

IARM-Bus offers two basic functionalities:

...

 An IARM Application that runs as a linux daemon process is considered a Manager Component. The IARM-Bus Daemon is a special Manager component that belongs to the IARM core. Such manager components normally register Events and RPC methods for other applications to use.

IARM Manager Components

Power Manager

  • Power Manager monitors Power IR key events and reacts to power state changes.
  • It dispatches Power Mode Change events to IARM-Bus.
  • All listeners should release resources when entering POWER OFF/STANDBY state and re-acquire them when entering POWER ON state.
  • Power manager sends these events to other applications
      • IARM_BUS_PWRMGR_EVENT_MODECHANGED
      • IARM_BUS_PWRMGR_EVENT_DEEPSLEEP_TIMEOUT

...

    • SetPowerState
    • GetPowerState
    • WareHouseReset
    • SetDeepSleepTimeOut

draw.io Diagram
diagramNameArchitecture.drawio
size1200
revision1


Basically there are three IARM entities involved for development

  1. IARM Bus
  2. IARM Application (Consumers/Listeners)
  3. IARM Manager (Publishers)

IARM Bus

  • Invoke methods in other processes via Remote Procedure Call.
  • Send inter-process messages.
  • Manage shared and exclusive access to resources.
  • Register for event notification.
  • Publish Event notification to registered listener.
  • There are two ways for application to use IARM Bus ie 'Subscribe for system events' and 'Invoke RPC Methods'

IARM Application

  • IARM Application utilize the IARM utilities and it register for event notification.
  • For example, IR Application registering for the events and the same event appears in the IARM Bus so that the notification of the IARM Bus event shall be transfer to the IARM Bus application.
  • IARM application can also invoke the RPC method which has been registered by the other IARM process.

IARM Manager

  • IARM Manager is an IARM Application that runs as Linux daemon process.
  • The IARM Bus Daemon is a Manager Component with Special privileges to manage resources.
  • The Other IARM Manager components include Power Manager, IR Manager, Disk Manager, Sys Manager, DS Manager, etc

IARM Publisher and Listeners Concept

draw.io Diagram
diagramNameFlow Diagram.drawio
size600
revision1


IARM Manager modules

Page Tree
rootIARM Manager


API Documentation 

 To know more about SoC/Application level APIs details use in RDK, refer the link  IARM MANAGER API Documentation

Events

IARM_BUS_PWRMGR_EVENT_DEEPSLEEP_TIMEOUT

  • Event to notify deep sleep timeout
  • Deep sleep timeout is set by “IARM_BUS_PWRMGR_API_SetDeepSleepTimeOut” API after which this event will be broadcast.
Code Block
IARM_BUS_PWRMgr_DeepSleepTimeout_EventData_t param;
param.timeout = deep_sleep_delay_in_seconds;
IARM_Bus_BroadcastEvent( IARM_BUS_PWRMGR_NAME, 
		IARM_BUS_PWRMGR_EVENT_DEEPSLEEP_TIMEOUT,
		(void*)&param, sizeof(param));

IARM_BUS_PWRMGR_EVENT_MODECHANGED

  • Event to notify power mode change.
  • This event is broadcast in case of power state change. Along with the current power state and new state, this event is broadcast. This event can be handled by the application.
Code Block
IARM_Bus_PWRMgr_EventData_t param;
param.data.state.curState = curState;
param.data.state.newState = newState;
IARM_Bus_BroadcastEvent( IARM_BUS_PWRMGR_NAME,
		IARM_BUS_PWRMGR_EVENT_MODECHANGED,
		(void *)&param, sizeof(param));

RPC Methods

IARM_BUS_PWRMGR_API_SetPowerState

  • Sets the power state of the device
  • Used to set a new power state to the device.
  • The power state can be ON, OFF, STANDBY, STANDBYLIGHT-SLEEP or STANDBY-DEEP-SLEEP
Code Block
IARM_Bus_PWRMgr_SetPowerState_Param_t param;
param.newState = IARM_BUS_PWRMGR_POWERSTATE_ON
IARM_Bus_Call(IARM_BUS_PWRMGR_NAME,
		IARM_BUS_PWRMGR_API_SetPowerState,
		(void *)&param, sizeof(param));

IARM_BUS_PWRMGR_API_GetPowerState

  • This API is used to retrieve the current power state of the box.

...