RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
Table of Contents
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:
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.
...
draw.io Diagram | ||||||
---|---|---|---|---|---|---|
|
Basically there are three IARM entities involved for development
draw.io Diagram | ||||||
---|---|---|---|---|---|---|
|
Page Tree root IARM Manager
To know more about SoC/Application level APIs details use in RDK, refer the link IARM MANAGER API Documentation
...
IARM_BUS_PWRMGR_EVENT_DEEPSLEEP_TIMEOUT
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*)¶m, 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 *)¶m, sizeof(param)); |
IARM_BUS_PWRMGR_API_SetPowerState
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 *)¶m, sizeof(param)); |
IARM_BUS_PWRMGR_API_GetPowerState
Code Block |
---|
IARM_Bus_PWRMgr_GetPowerState_Param_t param;
IARM_Bus_Call(IARM_BUS_PWRMGR_NAME,
IARM_BUS_PWRMGR_API_GetPowerState,
(void *)¶m, sizeof(param)); |
IARM_BUS_PWRMGR_API_WareHouseReset
Code Block |
---|
IARM_Bus_Call(IARM_BUS_PWRMGR_NAME,
IARM_BUS_PWRMGR_API_WareHouseReset, NULL, 0); |
IARM_BUS_PWRMGR_API_SetDeepSleepTimeOut
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 *)¶m, sizeof(param)); |
...