summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/isimodem/debug.c2
-rw-r--r--drivers/isimodem/network-registration.c8
-rw-r--r--drivers/isimodem/network.h2
3 files changed, 10 insertions, 2 deletions
diff --git a/drivers/isimodem/debug.c b/drivers/isimodem/debug.c
index 6fb451fc..b48dd95a 100644
--- a/drivers/isimodem/debug.c
+++ b/drivers/isimodem/debug.c
@@ -1035,6 +1035,8 @@ const char *net_message_id_name(enum net_message_id value)
_(NET_AVAILABLE_GET_RESP);
_(NET_OPER_NAME_READ_REQ);
_(NET_OPER_NAME_READ_RESP);
+ _(NET_OLD_OPER_NAME_READ_REQ);
+ _(NET_OLD_OPER_NAME_READ_RESP);
_(NET_COMMON_MESSAGE);
}
return "NET_<UNKNOWN>";
diff --git a/drivers/isimodem/network-registration.c b/drivers/isimodem/network-registration.c
index 56c3bb8f..6e9b184d 100644
--- a/drivers/isimodem/network-registration.c
+++ b/drivers/isimodem/network-registration.c
@@ -466,7 +466,8 @@ static void name_get_resp_cb(const GIsiMessage *msg, void *data)
memset(&op, 0, sizeof(struct ofono_network_operator));
- if (!check_response_status(msg, NET_OPER_NAME_READ_RESP))
+ if (!check_response_status(msg, NET_OLD_OPER_NAME_READ_RESP) &&
+ !check_response_status(msg, NET_OPER_NAME_READ_RESP))
goto error;
for (g_isi_sb_iter_init(&iter, msg, 6);
@@ -513,7 +514,7 @@ static void isi_current_operator(struct ofono_netreg *netreg,
struct netreg_data *nd = ofono_netreg_get_data(netreg);
struct isi_cb_data *cbd = isi_cb_data_new(netreg, cb, data);
- const uint8_t msg[] = {
+ uint8_t msg[] = {
NET_OPER_NAME_READ_REQ,
NET_HARDCODED_LATIN_OPER_NAME,
OFONO_MAX_OPERATOR_NAME_LENGTH,
@@ -525,6 +526,9 @@ static void isi_current_operator(struct ofono_netreg *netreg,
if (cbd == NULL || nd == NULL)
goto error;
+ if (nd->version.major < 14)
+ msg[0] = NET_OLD_OPER_NAME_READ_REQ;
+
if (g_isi_client_send(nd->client, msg, sizeof(msg), name_get_resp_cb,
cbd, g_free))
return;
diff --git a/drivers/isimodem/network.h b/drivers/isimodem/network.h
index ee1fbf2f..57c92aca 100644
--- a/drivers/isimodem/network.h
+++ b/drivers/isimodem/network.h
@@ -45,6 +45,8 @@ enum net_message_id {
NET_RSSI_IND = 0x1E,
NET_CIPHERING_IND = 0x20,
NET_TIME_IND = 0x27,
+ NET_OLD_OPER_NAME_READ_REQ = 0x28,
+ NET_OLD_OPER_NAME_READ_RESP = 0x29,
NET_CHANNEL_INFO_IND = 0x2C,
NET_RAT_IND = 0x35,
NET_RAT_REQ = 0x36,