summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/isimodem/network-registration.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/isimodem/network-registration.c b/drivers/isimodem/network-registration.c
index 4898d42b..6eef99ee 100644
--- a/drivers/isimodem/network-registration.c
+++ b/drivers/isimodem/network-registration.c
@@ -50,6 +50,7 @@ struct netreg_data {
guint8 last_reg_mode;
guint8 rat;
guint8 gsm_compact;
+ guint8 strength;
};
static inline guint8 *mccmnc_to_bcd(const char *mcc, const char *mnc,
@@ -200,6 +201,13 @@ static void reg_status_ind_cb(GIsiClient *client,
if (decode_reg_status(nd, msg+3, len-3, &status, &lac, &ci, &tech)) {
status = isi_status_to_at_status(status);
ofono_netreg_status_notify(netreg, status, lac, ci, tech);
+
+ /*
+ * Make sure the core is also informed of current
+ * signal strength, as it can be received before
+ * registration status.
+ */
+ ofono_netreg_strength_notify(netreg, nd->strength);
}
}
@@ -748,10 +756,12 @@ static void rssi_ind_cb(GIsiClient *client,
{
const unsigned char *msg = data;
struct ofono_netreg *netreg = opaque;
+ struct netreg_data *nd = ofono_netreg_get_data(netreg);
if (!msg || len < 3 || msg[0] != NET_RSSI_IND)
return;
+ nd->strength = msg[1];
ofono_netreg_strength_notify(netreg, msg[1]);
}