From 66c50b6a72bee8a56e6a5577874c197ff35b538e Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 13 Jun 2010 08:10:13 +0200 Subject: [PATCH] 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. --- drivers/atmodem/sim.c | 9 +++++++++ plugins/hso.c | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) 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);