All of lore.kernel.org
 help / color / mirror / Atom feed
* Handling of Fixed Dialing v4
@ 2010-10-14 21:02 Petteri Tikander
  2010-10-14 21:02 ` [RFC PATCH 1/8] simfs: add logic to retrieve only only EF-info, but no EF-contents Petteri Tikander
  0 siblings, 1 reply; 19+ messages in thread
From: Petteri Tikander @ 2010-10-14 21:02 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 614 bytes --]

The goal of these patches is to check, if Fixed Dialing is enabled in SIM-card.
Because also invalidation/rehabilitation status of ADN has to be checked,
functionality is added for retrieving file-status of EF-files.
So general information of EF-files is returned (containing now also file status)
without starting the actual EF-content retrieving.

The FDN-enable status is checked. If FDN is enabled, SIM-initialisation routine is 
interrupted (modem is left in PRE-SIM state), and FD-enabled property is signalled 
over D-BUS.

oFono still trusts to EFphase value when selecting SIM/USIM access.



^ permalink raw reply	[flat|nested] 19+ messages in thread
* [RFC PATCH 7/8] sim: check if Fixed Dialing is enabled in the SIM-card
@ 2010-10-12 15:18 Petteri Tikander
  2010-10-12 15:18 ` [RFC PATCH 8/8] doc: update sim-api Petteri Tikander
  0 siblings, 1 reply; 19+ messages in thread
From: Petteri Tikander @ 2010-10-12 15:18 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 4619 bytes --]

If FD is enabled, halt SIM initialization procedure.
New property (FixedDialing) is added. If FD is enabled,
this has been signalled via DBUS.
---
 src/sim.c |   81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 72 insertions(+), 9 deletions(-)

diff --git a/src/sim.c b/src/sim.c
index f0633bb..4836f55 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -71,6 +71,7 @@ struct ofono_sim {
 	unsigned char efest_length;
 	unsigned char *efsst;
 	unsigned char efsst_length;
+	gboolean fixed_dialing;
 
 	char *imsi;
 
@@ -307,6 +308,9 @@ static DBusMessage *sim_get_properties(DBusConnection *conn,
 		ofono_dbus_dict_append(&dict, "SubscriberIdentity",
 					DBUS_TYPE_STRING, &sim->imsi);
 
+	ofono_dbus_dict_append(&dict, "FixedDialing", DBUS_TYPE_BOOLEAN,
+				&sim->fixed_dialing);
+
 	if (sim->mnc_length) {
 		char mcc[OFONO_MAX_MCC_LENGTH + 1];
 		char mnc[OFONO_MAX_MNC_LENGTH + 1];
@@ -1061,12 +1065,41 @@ static void sim_retrieve_imsi(struct ofono_sim *sim)
 	sim->driver->read_imsi(sim, sim_imsi_cb, sim);
 }
 
+static void sim_info_read_cb(int ok, int length, int record,
+					const unsigned char *file_status,
+					int record_length, void *userdata)
+{
+	struct ofono_sim *sim = userdata;
+	DBusConnection *conn = ofono_dbus_get_connection();
+	const char *path = __ofono_atom_get_path(sim->atom);
+
+	if (!ok)
+		goto out;
+
+	if (*file_status != SIM_FILE_STATUS_NOT_INVALID) {
+
+		sim->fixed_dialing = TRUE;
+
+		ofono_dbus_signal_property_changed(conn, path,
+					OFONO_SIM_MANAGER_INTERFACE,
+					"FixedDialing",
+					DBUS_TYPE_BOOLEAN,
+					&sim->fixed_dialing);
+		return;
+	}
+
+out:
+	sim_retrieve_imsi(sim);
+}
+
 static void sim_efsst_read_cb(int ok, int length, int record,
 				const unsigned char *data,
 				int record_length, void *userdata)
 {
 	struct ofono_sim *sim = userdata;
 
+	sim->fixed_dialing = FALSE;
+
 	if (!ok)
 		goto out;
 
@@ -1078,6 +1111,21 @@ static void sim_efsst_read_cb(int ok, int length, int record,
 	sim->efsst = g_memdup(data, length);
 	sim->efsst_length = length;
 
+	/*
+	 * Check if Fixed Dialing is enabled in the SIM-card
+	 * (TS 11.11/TS 51.011, Section 9.3: FDN capability request).
+	 * If FDN is activated and ADN is invalidated,
+	 * don't continue initialization routine.
+	 */
+	if (sim_sst_is_active(sim->efsst, sim->efsst_length,
+				SIM_SST_SERVICE_FDN)) {
+
+		ofono_sim_read_info(sim, SIM_EFADN_FILEID,
+					OFONO_SIM_FILE_STRUCTURE_FIXED,
+					sim_info_read_cb, sim);
+		return;
+	}
+
 out:
 	sim_retrieve_imsi(sim);
 }
@@ -1087,6 +1135,8 @@ static void sim_efest_read_cb(int ok, int length, int record,
 				int record_length, void *userdata)
 {
 	struct ofono_sim *sim = userdata;
+	DBusConnection *conn = ofono_dbus_get_connection();
+	const char *path = __ofono_atom_get_path(sim->atom);
 
 	if (!ok)
 		goto out;
@@ -1099,6 +1149,24 @@ static void sim_efest_read_cb(int ok, int length, int record,
 	sim->efest = g_memdup(data, length);
 	sim->efest_length = length;
 
+	/*
+	 * Check if Fixed Dialing is enabled in the USIM-card
+	 * (TS 31.102, Section 5.3.2: FDN capability request).
+	 * If FDN is activated, don't continue initialization routine.
+	 */
+	if (sim_est_is_active(sim->efest, sim->efest_length,
+				SIM_EST_SERVICE_FDN)) {
+
+		sim->fixed_dialing = TRUE;
+
+		ofono_dbus_signal_property_changed(conn, path,
+						OFONO_SIM_MANAGER_INTERFACE,
+						"FixedDialing",
+						DBUS_TYPE_BOOLEAN,
+						&sim->fixed_dialing);
+		return;
+	}
+
 out:
 	sim_retrieve_imsi(sim);
 }
@@ -1109,6 +1177,8 @@ static void sim_efust_read_cb(int ok, int length, int record,
 {
 	struct ofono_sim *sim = userdata;
 
+	sim->fixed_dialing = FALSE;
+
 	if (!ok)
 		goto out;
 
@@ -1183,15 +1253,6 @@ static void sim_efphase_read_cb(int ok, int length, int record,
 		sim->phase = data[0];
 }
 
-static void sim_info_read_cb(int ok, int length, int record,
-					const unsigned char *file_status,
-					int record_length, void *userdata)
-{
-	DBG("OK: %d, length: %d, record: %d, \
-		file_status: %x, record_length: %d",
-		ok, length, record, file_status[0], record_length);
-}
-
 static void sim_initialize_after_pin(struct ofono_sim *sim)
 {
 	ofono_sim_read(sim, SIM_EFPHASE_FILEID,
@@ -1691,6 +1752,8 @@ static void sim_free_state(struct ofono_sim *sim)
 		sim->efimg = NULL;
 		sim->efimg_length = 0;
 	}
+
+	sim->fixed_dialing = FALSE;
 }
 
 void ofono_sim_inserted_notify(struct ofono_sim *sim, ofono_bool_t inserted)
-- 
1.6.3.3



^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2010-10-15 12:33 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-14 21:02 Handling of Fixed Dialing v4 Petteri Tikander
2010-10-14 21:02 ` [RFC PATCH 1/8] simfs: add logic to retrieve only only EF-info, but no EF-contents Petteri Tikander
2010-10-14 21:02   ` [RFC PATCH 2/8] simutil: response-handler returns now also file-status Petteri Tikander
2010-10-14 21:02     ` [RFC PATCH 3/8] sim: add new parameter to file-info utility Petteri Tikander
2010-10-14 21:02       ` [RFC PATCH 4/8] atmodem: returns file-status of SIM EF-file Petteri Tikander
2010-10-14 21:02         ` [RFC PATCH 5/8] isimodem: " Petteri Tikander
2010-10-14 21:02           ` [RFC PATCH 6/8] sim: add function for reading only general info from SIM-EF file Petteri Tikander
2010-10-14 21:02             ` [RFC PATCH 7/8] sim: check if Fixed Dialing is enabled in the SIM-card Petteri Tikander
2010-10-14 21:02               ` [RFC PATCH 8/8] doc: update sim-api Petteri Tikander
2010-10-15 12:28                 ` Denis Kenzior
2010-10-15 12:33               ` [RFC PATCH 7/8] sim: check if Fixed Dialing is enabled in the SIM-card Denis Kenzior
2010-10-15 12:32             ` [RFC PATCH 6/8] sim: add function for reading only general info from SIM-EF file Denis Kenzior
2010-10-15 12:27           ` [RFC PATCH 5/8] isimodem: returns file-status of SIM EF-file Denis Kenzior
2010-10-15 12:26         ` [RFC PATCH 4/8] atmodem: " Denis Kenzior
2010-10-15 12:21       ` [RFC PATCH 3/8] sim: add new parameter to file-info utility Denis Kenzior
2010-10-15 12:20     ` [RFC PATCH 2/8] simutil: response-handler returns now also file-status Denis Kenzior
2010-10-15 12:19   ` [RFC PATCH 1/8] simfs: add logic to retrieve only only EF-info, but no EF-contents Denis Kenzior
  -- strict thread matches above, loose matches on Subject: below --
2010-10-12 15:18 [RFC PATCH 7/8] sim: check if Fixed Dialing is enabled in the SIM-card Petteri Tikander
2010-10-12 15:18 ` [RFC PATCH 8/8] doc: update sim-api Petteri Tikander
2010-10-14  5:56   ` Marcel Holtmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.