diff options
-rw-r--r-- | drivers/isimodem/network-registration.c | 10 |
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]); } |