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.

...

 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

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

...

.

...

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.
Code Block
IARM_Bus_PWRMgr_GetPowerState_Param_t param;
IARM_Bus_Call(IARM_BUS_PWRMGR_NAME,
		IARM_BUS_PWRMGR_API_GetPowerState,
		(void *)&param, sizeof(param));

IARM_BUS_PWRMGR_API_WareHouseReset

  • This API is used to reset the box to warehouse state.
Code Block
IARM_Bus_Call(IARM_BUS_PWRMGR_NAME,
		IARM_BUS_PWRMGR_API_WareHouseReset, NULL, 0);

IARM_BUS_PWRMGR_API_SetDeepSleepTimeOut

  • This API is used to sets the timeout for deep sleep
Code Block
IARM_Bus_PWRMgr_SetDeepSleepTimeOut_Param_t param;
param.timeout = timeOut;
IARM_Bus_Call(IARM_BUS_PWRMGR_NAME,
		IARM_BUS_PWRMGR_API_SetDeepSleepTimeOut,
		(void *)&param, sizeof(param));

...