* [PATCHv3 0/4] Unify SPN reading logic
@ 2012-01-18 11:56 Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 1/4] gprs: Use sim SPN watch API Oleg Zhurakivskyy
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Oleg Zhurakivskyy @ 2012-01-18 11:56 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 764 bytes --]
Hello,
Please find the changes in order not to duplicate the SPN reading logic in src/grps.c and src/network.c.
Changes from v2:
- Removed sim_watch() capability from gprs.c
- Corrected the operator name emission logic.
- In order to save some memory, netreg accesses the spn directly
from the sim atom.
Regards,
Oleg
Oleg Zhurakivskyy (4):
gprs: Use sim SPN watch API
network: Use sim SPN watch API
sim: Add ofono_sim_get_spn()
network: Access SPN directly from the sim atom
include/sim.h | 1 +
src/gprs.c | 71 ++++++++++-------------
src/network.c | 171 ++++++---------------------------------------------------
src/sim.c | 8 +++
4 files changed, 58 insertions(+), 193 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCHv3 1/4] gprs: Use sim SPN watch API
2012-01-18 11:56 [PATCHv3 0/4] Unify SPN reading logic Oleg Zhurakivskyy
@ 2012-01-18 11:56 ` Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 2/4] network: " Oleg Zhurakivskyy
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Oleg Zhurakivskyy @ 2012-01-18 11:56 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 3869 bytes --]
---
src/gprs.c | 71 ++++++++++++++++++++++++++---------------------------------
1 files changed, 31 insertions(+), 40 deletions(-)
diff --git a/src/gprs.c b/src/gprs.c
index 4e46743..bf7c66f 100644
--- a/src/gprs.c
+++ b/src/gprs.c
@@ -94,7 +94,7 @@ struct ofono_gprs {
const struct ofono_gprs_driver *driver;
void *driver_data;
struct ofono_atom *atom;
- struct ofono_sim_context *sim_context;
+ unsigned int spn_watch;
};
struct ipv4_settings {
@@ -2502,6 +2502,17 @@ static void free_contexts(struct ofono_gprs *gprs)
g_slist_free(gprs->contexts);
}
+static inline struct ofono_sim *ofono_gprs_get_sim(struct ofono_gprs *gprs)
+{
+ struct ofono_atom *atom = __ofono_modem_find_atom(
+ __ofono_atom_get_modem(gprs->atom),
+ OFONO_ATOM_TYPE_SIM);
+ if (atom)
+ return __ofono_atom_get_data(atom);
+
+ return NULL;
+}
+
static void gprs_unregister(struct ofono_atom *atom)
{
DBusConnection *conn = ofono_dbus_get_connection();
@@ -2530,6 +2541,10 @@ static void gprs_unregister(struct ofono_atom *atom)
gprs->netreg = NULL;
}
+ if (gprs->spn_watch)
+ ofono_sim_remove_spn_watch(ofono_gprs_get_sim(gprs),
+ &gprs->spn_watch);
+
ofono_modem_remove_interface(modem,
OFONO_CONNECTION_MANAGER_INTERFACE);
g_dbus_unregister_interface(conn, path,
@@ -2565,9 +2580,6 @@ static void gprs_remove(struct ofono_atom *atom)
if (gprs->driver && gprs->driver->remove)
gprs->driver->remove(gprs);
- if (gprs->sim_context)
- ofono_sim_context_free(gprs->sim_context);
-
g_free(gprs);
}
@@ -2955,57 +2967,36 @@ static void ofono_gprs_finish_register(struct ofono_gprs *gprs)
__ofono_atom_register(gprs->atom, gprs_unregister);
}
-static void sim_spn_read_cb(int ok, int length, int record,
- const unsigned char *data,
- int record_length, void *userdata)
+static void spn_read_cb(const char *spn, const char *dc, void *data)
{
- struct ofono_gprs *gprs = userdata;
- char *spn = NULL;
- struct ofono_atom *sim_atom;
- struct ofono_sim *sim = NULL;
+ struct ofono_gprs *gprs = data;
+ struct ofono_sim *sim = ofono_gprs_get_sim(gprs);
- if (ok)
- spn = sim_string_to_utf8(data + 1, length - 1);
-
- sim_atom = __ofono_modem_find_atom(__ofono_atom_get_modem(gprs->atom),
- OFONO_ATOM_TYPE_SIM);
- if (sim_atom) {
- sim = __ofono_atom_get_data(sim_atom);
- provision_contexts(gprs, ofono_sim_get_mcc(sim),
+ provision_contexts(gprs, ofono_sim_get_mcc(sim),
ofono_sim_get_mnc(sim), spn);
- }
- g_free(spn);
+ ofono_sim_remove_spn_watch(sim, &gprs->spn_watch);
+
ofono_gprs_finish_register(gprs);
}
void ofono_gprs_register(struct ofono_gprs *gprs)
{
- struct ofono_modem *modem = __ofono_atom_get_modem(gprs->atom);
- struct ofono_atom *sim_atom;
- struct ofono_sim *sim = NULL;
-
- sim_atom = __ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_SIM);
-
- if (sim_atom) {
- const char *imsi;
- sim = __ofono_atom_get_data(sim_atom);
+ struct ofono_sim *sim = ofono_gprs_get_sim(gprs);
- imsi = ofono_sim_get_imsi(sim);
- gprs_load_settings(gprs, imsi);
+ if (sim == NULL) {
+ ofono_gprs_finish_register(gprs);
+ return;
}
- if (gprs->contexts == NULL && sim != NULL) {
- /* Get Service Provider Name from SIM for provisioning */
- gprs->sim_context = ofono_sim_context_create(sim);
+ gprs_load_settings(gprs, ofono_sim_get_imsi(sim));
- if (ofono_sim_read(gprs->sim_context, SIM_EFSPN_FILEID,
- OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
- sim_spn_read_cb, gprs) >= 0)
- return;
+ if (gprs->contexts) {
+ ofono_gprs_finish_register(gprs);
+ return;
}
- ofono_gprs_finish_register(gprs);
+ ofono_sim_add_spn_watch(sim, &gprs->spn_watch, spn_read_cb, gprs, NULL);
}
void ofono_gprs_remove(struct ofono_gprs *gprs)
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCHv3 2/4] network: Use sim SPN watch API
2012-01-18 11:56 [PATCHv3 0/4] Unify SPN reading logic Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 1/4] gprs: Use sim SPN watch API Oleg Zhurakivskyy
@ 2012-01-18 11:56 ` Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 3/4] sim: Add ofono_sim_get_spn() Oleg Zhurakivskyy
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Oleg Zhurakivskyy @ 2012-01-18 11:56 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 6618 bytes --]
---
src/network.c | 166 ++++++--------------------------------------------------
1 files changed, 18 insertions(+), 148 deletions(-)
diff --git a/src/network.c b/src/network.c
index 92256a8..e5f67a8 100644
--- a/src/network.c
+++ b/src/network.c
@@ -43,7 +43,6 @@
#define NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN 0x1
#define NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN 0x2
#define NETWORK_REGISTRATION_FLAG_READING_PNN 0x4
-#define NETWORK_REGISTRATION_FLAG_READING_SPN 0x8
enum network_registration_mode {
NETWORK_REGISTRATION_MODE_AUTO = 0,
@@ -84,6 +83,7 @@ struct ofono_netreg {
struct ofono_atom *atom;
unsigned int hfp_watch;
char *spn;
+ unsigned int spn_watch;
};
struct network_operator_data {
@@ -1648,140 +1648,22 @@ static void sim_spn_display_condition_parse(struct ofono_netreg *netreg,
netreg->flags |= NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN;
}
-static gboolean sim_spn_parse(const void *data, int length, char **dst)
+static void spn_read_cb(const char *spn, const char *dc, void *data)
{
- char *spn;
-
- /*
- * TS 31.102 says:
- *
- * the string shall use:
- *
- * - either the SMS default 7-bit coded alphabet as defined in
- * TS 23.038 [5] with bit 8 set to 0. The string shall be left
- * justified. Unused bytes shall be set to 'FF'.
- *
- * - or one of the UCS2 code options defined in the annex of TS
- * 31.101 [11].
- *
- * 31.101 has no such annex though. 51.101 refers to Annex B of
- * itself which is not there either. 11.11 contains the same
- * paragraph as 51.101 and has an Annex B which we implement.
- */
- spn = sim_string_to_utf8(data, length);
- if (spn == NULL) {
- ofono_error("EFspn read successfully, but couldn't parse");
- return FALSE;
- }
-
- if (strlen(spn) == 0) {
- g_free(spn);
- return FALSE;
- }
-
- *dst = spn;
- return TRUE;
-}
-
-static void sim_cphs_spn_short_read_cb(int ok, int length, int record,
- const unsigned char *data,
- int record_length, void *user_data)
-{
- struct ofono_netreg *netreg = user_data;
-
- netreg->flags &= ~NETWORK_REGISTRATION_FLAG_READING_SPN;
-
- if (!ok)
- return;
-
- if (!sim_spn_parse(data, length, &netreg->spn))
- return;
-
- if (netreg->current_operator)
- netreg_emit_operator_display_name(netreg);
-}
-
-static void sim_cphs_spn_read_cb(int ok, int length, int record,
- const unsigned char *data,
- int record_length, void *user_data)
-{
- struct ofono_netreg *netreg = user_data;
-
- if (!ok) {
- if (__ofono_sim_cphs_service_available(netreg->sim,
- SIM_CPHS_SERVICE_SHORT_SPN))
- ofono_sim_read(netreg->sim_context,
- SIM_EF_CPHS_SPN_SHORT_FILEID,
- OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
- sim_cphs_spn_short_read_cb, netreg);
- else
- netreg->flags &= ~NETWORK_REGISTRATION_FLAG_READING_SPN;
-
- return;
- }
-
- netreg->flags &= ~NETWORK_REGISTRATION_FLAG_READING_SPN;
-
- if (!sim_spn_parse(data, length, &netreg->spn))
- return;
-
- if (netreg->current_operator)
- netreg_emit_operator_display_name(netreg);
-}
-
-static void sim_spn_read_cb(int ok, int length, int record,
- const unsigned char *data,
- int record_length, void *user_data)
-{
- struct ofono_netreg *netreg = user_data;
-
- if (!ok) {
- ofono_sim_read(netreg->sim_context,
- SIM_EF_CPHS_SPN_FILEID,
- OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
- sim_cphs_spn_read_cb, netreg);
-
- return;
- }
-
- netreg->flags &= ~NETWORK_REGISTRATION_FLAG_READING_SPN;
-
- if (!sim_spn_parse(data + 1, length - 1, &netreg->spn))
- return;
-
- sim_spn_display_condition_parse(netreg, data[0]);
-
- if (netreg->current_operator)
- netreg_emit_operator_display_name(netreg);
-}
-
-static void sim_spn_changed(int id, void *userdata)
-{
- struct ofono_netreg *netreg = userdata;
- gboolean had_spn;
-
- if (netreg->flags & NETWORK_REGISTRATION_FLAG_READING_SPN)
- return;
+ struct ofono_netreg *netreg = data;
- had_spn = netreg->spn != NULL && strlen(netreg->spn) > 0;
+ g_free(netreg->spn);
+ netreg->spn = NULL;
netreg->flags &= ~(NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN |
NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN);
- g_free(netreg->spn);
- netreg->spn = NULL;
+ if (dc)
+ sim_spn_display_condition_parse(netreg, *dc);
- /*
- * We can't determine whether the property really changed
- * without checking the name, before and after. Instead we use a
- * simple heuristic, which will not always be correct
- */
- if (had_spn && netreg->current_operator)
- netreg_emit_operator_display_name(netreg);
+ netreg->spn = g_strdup(spn);
- netreg->flags |= NETWORK_REGISTRATION_FLAG_READING_SPN;
- ofono_sim_read(netreg->sim_context, SIM_EFSPN_FILEID,
- OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
- sim_spn_read_cb, netreg);
+ if (netreg->current_operator)
+ netreg_emit_operator_display_name(netreg);
}
int ofono_netreg_get_location(struct ofono_netreg *netreg)
@@ -1919,6 +1801,12 @@ static void netreg_unregister(struct ofono_atom *atom)
netreg->settings = NULL;
}
+ if (netreg->spn_watch)
+ ofono_sim_remove_spn_watch(netreg->sim, &netreg->spn_watch);
+
+ g_free(netreg->spn);
+ netreg->spn = NULL;
+
if (netreg->sim_context) {
ofono_sim_context_free(netreg->sim_context);
netreg->sim_context = NULL;
@@ -1947,7 +1835,6 @@ static void netreg_remove(struct ofono_atom *atom)
sim_eons_free(netreg->eons);
sim_spdi_free(netreg->spdi);
- g_free(netreg->spn);
g_free(netreg);
}
@@ -2199,25 +2086,8 @@ void ofono_netreg_register(struct ofono_netreg *netreg)
sim_pnn_opl_changed, netreg,
NULL);
- netreg->flags |= NETWORK_REGISTRATION_FLAG_READING_SPN;
- ofono_sim_read(netreg->sim_context, SIM_EFSPN_FILEID,
- OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
- sim_spn_read_cb, netreg);
-
- ofono_sim_add_file_watch(netreg->sim_context, SIM_EFSPN_FILEID,
- sim_spn_changed, netreg,
- NULL);
- ofono_sim_add_file_watch(netreg->sim_context,
- SIM_EF_CPHS_SPN_FILEID,
- sim_spn_changed, netreg,
- NULL);
-
- if (__ofono_sim_cphs_service_available(netreg->sim,
- SIM_CPHS_SERVICE_SHORT_SPN))
- ofono_sim_add_file_watch(netreg->sim_context,
- SIM_EF_CPHS_SPN_SHORT_FILEID,
- sim_spn_changed,
- netreg, NULL);
+ ofono_sim_add_spn_watch(netreg->sim, &netreg->spn_watch,
+ spn_read_cb, netreg, NULL);
if (__ofono_sim_service_available(netreg->sim,
SIM_UST_SERVICE_PROVIDER_DISPLAY_INFO,
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCHv3 3/4] sim: Add ofono_sim_get_spn()
2012-01-18 11:56 [PATCHv3 0/4] Unify SPN reading logic Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 1/4] gprs: Use sim SPN watch API Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 2/4] network: " Oleg Zhurakivskyy
@ 2012-01-18 11:56 ` Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 4/4] network: Access SPN directly from the sim atom Oleg Zhurakivskyy
2012-01-18 19:04 ` [PATCHv3 0/4] Unify SPN reading logic Denis Kenzior
4 siblings, 0 replies; 7+ messages in thread
From: Oleg Zhurakivskyy @ 2012-01-18 11:56 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1111 bytes --]
---
include/sim.h | 1 +
src/sim.c | 8 ++++++++
2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/include/sim.h b/include/sim.h
index b238868..605164e 100644
--- a/include/sim.h
+++ b/include/sim.h
@@ -183,6 +183,7 @@ void *ofono_sim_get_data(struct ofono_sim *sim);
const char *ofono_sim_get_imsi(struct ofono_sim *sim);
const char *ofono_sim_get_mcc(struct ofono_sim *sim);
const char *ofono_sim_get_mnc(struct ofono_sim *sim);
+const char *ofono_sim_get_spn(struct ofono_sim *sim);
enum ofono_sim_phase ofono_sim_get_phase(struct ofono_sim *sim);
enum ofono_sim_cphs_phase ofono_sim_get_cphs_phase(struct ofono_sim *sim);
diff --git a/src/sim.c b/src/sim.c
index 93b3655..e4bd378 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -2151,6 +2151,14 @@ const char *ofono_sim_get_mnc(struct ofono_sim *sim)
return sim->mnc;
}
+const char *ofono_sim_get_spn(struct ofono_sim *sim)
+{
+ if (sim == NULL)
+ return NULL;
+
+ return sim->spn;
+}
+
enum ofono_sim_phase ofono_sim_get_phase(struct ofono_sim *sim)
{
if (sim == NULL)
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCHv3 4/4] network: Access SPN directly from the sim atom
2012-01-18 11:56 [PATCHv3 0/4] Unify SPN reading logic Oleg Zhurakivskyy
` (2 preceding siblings ...)
2012-01-18 11:56 ` [PATCHv3 3/4] sim: Add ofono_sim_get_spn() Oleg Zhurakivskyy
@ 2012-01-18 11:56 ` Oleg Zhurakivskyy
2012-01-18 19:04 ` [PATCHv3 0/4] Unify SPN reading logic Denis Kenzior
4 siblings, 0 replies; 7+ messages in thread
From: Oleg Zhurakivskyy @ 2012-01-18 11:56 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2599 bytes --]
---
src/network.c | 19 +++++++------------
1 files changed, 7 insertions(+), 12 deletions(-)
diff --git a/src/network.c b/src/network.c
index e5f67a8..0699ff2 100644
--- a/src/network.c
+++ b/src/network.c
@@ -82,7 +82,6 @@ struct ofono_netreg {
void *driver_data;
struct ofono_atom *atom;
unsigned int hfp_watch;
- char *spn;
unsigned int spn_watch;
};
@@ -362,6 +361,7 @@ static char *get_operator_display_name(struct ofono_netreg *netreg)
{
struct network_operator_data *opd = netreg->current_operator;
const char *plmn;
+ const char *spn;
static char name[1024];
static char mccmnc[OFONO_MAX_MCC_LENGTH + OFONO_MAX_MNC_LENGTH + 1];
int len = sizeof(name);
@@ -392,7 +392,9 @@ static char *get_operator_display_name(struct ofono_netreg *netreg)
if (opd->eons_info && opd->eons_info->longname)
plmn = opd->eons_info->longname;
- if (netreg->spn == NULL || strlen(netreg->spn) == 0) {
+ spn = ofono_sim_get_spn(netreg->sim);
+
+ if (spn == NULL || strlen(spn) == 0) {
g_strlcpy(name, plmn, len);
return name;
}
@@ -406,14 +408,14 @@ static char *get_operator_display_name(struct ofono_netreg *netreg)
if (home_or_spdi)
if (netreg->flags & NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN)
/* Case 1 */
- snprintf(name, len, "%s (%s)", netreg->spn, plmn);
+ snprintf(name, len, "%s (%s)", spn, plmn);
else
/* Case 2 */
- snprintf(name, len, "%s", netreg->spn);
+ snprintf(name, len, "%s", spn);
else
if (netreg->flags & NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN)
/* Case 3 */
- snprintf(name, len, "%s (%s)", netreg->spn, plmn);
+ snprintf(name, len, "%s (%s)", spn, plmn);
else
/* Case 4 */
snprintf(name, len, "%s", plmn);
@@ -1652,16 +1654,12 @@ static void spn_read_cb(const char *spn, const char *dc, void *data)
{
struct ofono_netreg *netreg = data;
- g_free(netreg->spn);
- netreg->spn = NULL;
netreg->flags &= ~(NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN |
NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN);
if (dc)
sim_spn_display_condition_parse(netreg, *dc);
- netreg->spn = g_strdup(spn);
-
if (netreg->current_operator)
netreg_emit_operator_display_name(netreg);
}
@@ -1804,9 +1802,6 @@ static void netreg_unregister(struct ofono_atom *atom)
if (netreg->spn_watch)
ofono_sim_remove_spn_watch(netreg->sim, &netreg->spn_watch);
- g_free(netreg->spn);
- netreg->spn = NULL;
-
if (netreg->sim_context) {
ofono_sim_context_free(netreg->sim_context);
netreg->sim_context = NULL;
--
1.7.5.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCHv3 0/4] Unify SPN reading logic
2012-01-18 11:56 [PATCHv3 0/4] Unify SPN reading logic Oleg Zhurakivskyy
` (3 preceding siblings ...)
2012-01-18 11:56 ` [PATCHv3 4/4] network: Access SPN directly from the sim atom Oleg Zhurakivskyy
@ 2012-01-18 19:04 ` Denis Kenzior
2012-01-19 13:09 ` Oleg Zhurakivskyy
4 siblings, 1 reply; 7+ messages in thread
From: Denis Kenzior @ 2012-01-18 19:04 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1078 bytes --]
Hi Oleg,
On 01/18/2012 05:56 AM, Oleg Zhurakivskyy wrote:
> Hello,
>
> Please find the changes in order not to duplicate the SPN reading logic in src/grps.c and src/network.c.
>
> Changes from v2:
>
> - Removed sim_watch() capability from gprs.c
> - Corrected the operator name emission logic.
> - In order to save some memory, netreg accesses the spn directly
> from the sim atom.
>
> Regards,
> Oleg
>
> Oleg Zhurakivskyy (4):
> gprs: Use sim SPN watch API
> network: Use sim SPN watch API
> sim: Add ofono_sim_get_spn()
> network: Access SPN directly from the sim atom
>
> include/sim.h | 1 +
> src/gprs.c | 71 ++++++++++-------------
> src/network.c | 171 ++++++---------------------------------------------------
> src/sim.c | 8 +++
> 4 files changed, 58 insertions(+), 193 deletions(-)
>
All four patches have been applied, thanks. I did break up patch 3 into
two patches and performed some minor refactoring afterwards. Please
review and make sure I didn't screw anything up.
Regards,
-Denis
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCHv3 0/4] Unify SPN reading logic
2012-01-18 19:04 ` [PATCHv3 0/4] Unify SPN reading logic Denis Kenzior
@ 2012-01-19 13:09 ` Oleg Zhurakivskyy
0 siblings, 0 replies; 7+ messages in thread
From: Oleg Zhurakivskyy @ 2012-01-19 13:09 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 458 bytes --]
Hello Denis,
On 01/18/2012 09:04 PM, Denis Kenzior wrote:
> All four patches have been applied, thanks. I did break up patch 3 into
> two patches and performed some minor refactoring afterwards. Please
> review and make sure I didn't screw anything up.
The changes look good, I like the idea. Thanks!
Regards,
Oleg
--
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-01-19 13:09 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-18 11:56 [PATCHv3 0/4] Unify SPN reading logic Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 1/4] gprs: Use sim SPN watch API Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 2/4] network: " Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 3/4] sim: Add ofono_sim_get_spn() Oleg Zhurakivskyy
2012-01-18 11:56 ` [PATCHv3 4/4] network: Access SPN directly from the sim atom Oleg Zhurakivskyy
2012-01-18 19:04 ` [PATCHv3 0/4] Unify SPN reading logic Denis Kenzior
2012-01-19 13:09 ` Oleg Zhurakivskyy
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.