summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-06-13 08:10:13 +0200
committerMarcel Holtmann <marcel@holtmann.org>2010-06-13 08:10:13 +0200
commit66c50b6a72bee8a56e6a5577874c197ff35b538e (patch)
tree7bd59b7523745acc83c3e6673d549b7b906aac58
parent6a26431f585fe569ec830868f28d8da0f2d43705 (diff)
downloadofono-66c50b6a72bee8a56e6a5577874c197ff35b538e.tar.bz2
Add nasty quirk to allow HSO devices to read network code length
The AT+CRSM=192 commands are failing on HSO devices and thus it might be needed to return its details from a predefined database. Start with testing this for reading the network code length.
-rw-r--r--drivers/atmodem/sim.c9
-rw-r--r--plugins/hso.c3
2 files changed, 11 insertions, 1 deletions
diff --git a/drivers/atmodem/sim.c b/drivers/atmodem/sim.c
index 32c40a5c..766c60b1 100644
--- a/drivers/atmodem/sim.c
+++ b/drivers/atmodem/sim.c
@@ -110,6 +110,15 @@ static void at_sim_read_info(struct ofono_sim *sim, int fileid,
struct cb_data *cbd = cb_data_new(cb, data);
char buf[64];
+ if (sd->vendor == OFONO_VENDOR_OPTION_HSO) {
+ unsigned char access[3] = { 0x00, 0x00, 0x00 };
+
+ if (fileid == SIM_EFAD_FILEID) {
+ CALLBACK_WITH_SUCCESS(cb, 4, 0, 0, access, data);
+ return;
+ }
+ }
+
if (!cbd)
goto error;
diff --git a/plugins/hso.c b/plugins/hso.c
index 24a76b53..9e3b35af 100644
--- a/plugins/hso.c
+++ b/plugins/hso.c
@@ -221,7 +221,8 @@ static void hso_pre_sim(struct ofono_modem *modem)
DBG("%p", modem);
ofono_devinfo_create(modem, 0, "atmodem", data->control);
- sim = ofono_sim_create(modem, 0, "atmodem", data->control);
+ sim = ofono_sim_create(modem, OFONO_VENDOR_OPTION_HSO,
+ "atmodem", data->control);
if (sim)
ofono_sim_inserted_notify(sim, TRUE);