From 8e755599291e9f4dabf113011c5ac672e30027c9 Mon Sep 17 00:00:00 2001 From: Prerepa Viswanadham Date: Thu, 28 May 2015 00:37:32 -0700 Subject: [PATCH] Modem activity info Change-Id: Iab8fbdeae0867c6e9cb9027b08317b1b5a2c9dfc --- ril/libril/ril.cpp | 32 ++++++++++++++++++++++++++++++++ ril/libril/ril_commands.h | 1 + 2 files changed, 33 insertions(+) diff --git a/ril/libril/ril.cpp b/ril/libril/ril.cpp index 9d942c31..f40fce45 100644 --- a/ril/libril/ril.cpp +++ b/ril/libril/ril.cpp @@ -305,6 +305,7 @@ static int responseRadioCapability(Parcel &p, void *response, size_t responselen static int responseSSData(Parcel &p, void *response, size_t responselen); static int responseLceStatus(Parcel &p, void *response, size_t responselen); static int responseLceData(Parcel &p, void *response, size_t responselen); +static int responseActivityData(Parcel &p, void *response, size_t responselen); static int decodeVoiceRadioTechnology (RIL_RadioState radioState); static int decodeCdmaSubscriptionSource (RIL_RadioState radioState); @@ -3806,6 +3807,37 @@ static int responseLceData(Parcel &p, void *response, size_t responselen) { return 0; } +static int responseActivityData(Parcel &p, void *response, size_t responselen) { + if (response == NULL || responselen != sizeof(RIL_ActivityStatsInfo)) { + if (response == NULL) { + RLOGE("invalid response: NULL"); + } + else { + RLOGE("responseActivityData: invalid response length %d expecting len: d%", + sizeof(RIL_ActivityStatsInfo), responselen); + } + return RIL_ERRNO_INVALID_RESPONSE; + } + + RIL_ActivityStatsInfo *p_cur = (RIL_ActivityStatsInfo *)response; + p.writeInt32(p_cur->sleep_mode_time_ms); + p.writeInt32(p_cur->idle_mode_time_ms); + for(int i = 0; i < RIL_NUM_TX_POWER_LEVELS; i++) { + p.writeInt32(p_cur->tx_mode_time_ms[i]); + } + p.writeInt32(p_cur->rx_mode_time_ms); + + startResponse; + appendPrintBuf("Modem activity info received: sleep_mode_time_ms %d idle_mode_time_ms %d + tx_mode_time_ms %d %d %d %d %d and rx_mode_time_ms %d", + p_cur->sleep_mode_time_ms, p_cur->idle_mode_time_ms, p_cur->tx_mode_time_ms[0], + p_cur->tx_mode_time_ms[1], p_cur->tx_mode_time_ms[2], p_cur->tx_mode_time_ms[3], + p_cur->tx_mode_time_ms[4], p_cur->rx_mode_time_ms); + closeResponse; + + return 0; +} + /** * A write on the wakeup fd is done just to pop us out of select() * We empty the buffer here and then ril_event will reset the timers on the diff --git a/ril/libril/ril_commands.h b/ril/libril/ril_commands.h index 16a7dcd9..001b4704 100644 --- a/ril/libril/ril_commands.h +++ b/ril/libril/ril_commands.h @@ -149,3 +149,4 @@ {RIL_REQUEST_START_LCE, dispatchInts, responseLceStatus}, {RIL_REQUEST_STOP_LCE, dispatchVoid, responseLceStatus}, {RIL_REQUEST_PULL_LCEDATA, dispatchVoid, responseLceData}, + {RIL_REQUEST_GET_ACTIVITY_INFO, dispatchVoid, responseActivityData},