diff options
-rw-r--r-- | drivers/isimodem/network-registration.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/isimodem/network-registration.c b/drivers/isimodem/network-registration.c index a30fc8c5..8bf2423c 100644 --- a/drivers/isimodem/network-registration.c +++ b/drivers/isimodem/network-registration.c @@ -78,6 +78,7 @@ struct netreg_data { struct reg_info reg; struct gsm_info gsm; struct rat_info rat; + GIsiVersion version; char nitz_name[OFONO_MAX_OPERATOR_NAME_LENGTH + 1]; }; @@ -338,7 +339,8 @@ static void rat_resp_cb(const GIsiMessage *msg, void *data) goto error; } - if (g_isi_client_resource(nd->client) == PN_MODEM_NETWORK) + if (g_isi_client_resource(nd->client) == PN_MODEM_NETWORK || + nd->version.major < 14) req[0] = NET_MODEM_REG_STATUS_GET_REQ; if (g_isi_client_send(nd->client, req, sizeof(req), @@ -649,7 +651,8 @@ static void isi_list_operators(struct ofono_netreg *netreg, if (cbd == NULL || nd == NULL) goto error; - if (g_isi_client_resource(nd->client) == PN_MODEM_NETWORK) + if (g_isi_client_resource(nd->client) == PN_MODEM_NETWORK || + nd->version.major < 14) msg[0] = NET_MODEM_AVAILABLE_GET_REQ; if (g_isi_client_send_with_timeout(nd->client, msg, sizeof(msg), @@ -938,6 +941,9 @@ static void reachable_cb(const GIsiMessage *msg, void *data) if (nd == NULL) return; + nd->version.major = g_isi_msg_version_major(msg); + nd->version.minor = g_isi_msg_version_minor(msg); + g_isi_client_ind_subscribe(nd->client, NET_RSSI_IND, rssi_ind_cb, netreg); g_isi_client_ind_subscribe(nd->client, NET_NITZ_NAME_IND, name_ind_cb, |