1 From 3da4bb2f70c4a15d1d61187e89d2f28ab33ca383 Mon Sep 17 00:00:00 2001
2 From: Philippe Nunes <philippe.nunes@linux.intel.com>
3 Date: Fri, 21 Sep 2012 16:46:54 +0200
4 Subject: [PATCH 07/23] s_sim: Get the SIM type when SIM is ready
5 Content-Type: text/plain; charset="utf-8"
6 Content-Transfer-Encoding: 8bit
9 src/s_sim.c | 33 +++++++++++++++------------------
10 1 file changed, 15 insertions(+), 18 deletions(-)
12 diff --git a/src/s_sim.c b/src/s_sim.c
13 index 5ab702a..1d7e5c6 100644
16 @@ -98,7 +98,6 @@ struct s_sim_property {
17 int rec_count; /**< Number of records in file */
18 int data_size; /**< File size */
19 int current_index; /**< current index to read */
20 - enum tel_sim_status first_recv_status;
21 enum s_sim_sec_op_e current_sec_op; /**< current index to read */
22 struct tel_sim_mbi_list mbi_list;
23 struct tel_sim_mb_number mb_list[SIM_MSP_CNT_MAX*5];
24 @@ -841,7 +840,13 @@ static void _response_get_sim_type(TcorePending *p, int data_len, const void *da
27 tcore_sim_set_type(co_sim, sim_type);
28 - _sim_status_update(co_sim, sp->first_recv_status);
30 + if (sim_type != SIM_TYPE_UNKNOWN) {
31 + /* set user request for using ur metainfo set/ref functionality */
32 + ur = tcore_user_request_new(NULL, NULL);
33 + _get_file_info(co_sim, ur, SIM_EF_IMSI);
36 tcore_at_tok_free(tokens);
37 dbg(" Function exit");
39 @@ -1921,7 +1926,6 @@ OUT:
41 static gboolean on_event_pin_status(CoreObject *o, const void *event_info, void *user_data)
43 - UserRequest *ur = NULL;
44 struct s_sim_property *sp = NULL;
45 enum tel_sim_status sim_status = SIM_STATUS_INITIALIZING;
46 GSList *tokens = NULL;
47 @@ -1986,7 +1990,7 @@ static gboolean on_event_pin_status(CoreObject *o, const void *event_info, void
49 case 7: // sim state = ready for attach (+COPS)
50 sim_status = SIM_STATUS_INIT_COMPLETED;
51 - dbg("Modem init completed");
52 + dbg("SIM is ready for attach");
55 case 8: // sim state = SIM Technical Problem
56 @@ -2015,8 +2019,10 @@ static gboolean on_event_pin_status(CoreObject *o, const void *event_info, void
59 case SIM_STATUS_INIT_COMPLETED:
60 - ur = tcore_user_request_new(NULL, NULL); // this is for using ur metainfo set/ref functionality.
61 - _get_file_info(o, ur, SIM_EF_IMSI);
62 + if (tcore_sim_get_type(o) == SIM_TYPE_UNKNOWN)
65 + _sim_status_update(o, sim_status);
68 case SIM_STATUS_INITIALIZING:
69 @@ -2028,17 +2034,7 @@ static gboolean on_event_pin_status(CoreObject *o, const void *event_info, void
70 case SIM_STATUS_SPCK_REQUIRED:
71 case SIM_STATUS_CCK_REQUIRED:
72 case SIM_STATUS_LOCK_REQUIRED:
73 - if (sp->first_recv_status == SIM_STATUS_UNKNOWN) {
74 - dbg("first received sim status[%d]", sim_status);
75 - sp->first_recv_status = sim_status;
78 - dbg("second or later received lock status[%d]", sim_status);
79 - if (tcore_sim_get_status(o) != SIM_STATUS_INIT_COMPLETED) {
80 - dbg("sim is not init complete in telephony side yet");
81 - _sim_status_update(o, sim_status);
84 + _sim_status_update(o, sim_status);
87 case SIM_STATUS_CARD_REMOVED:
88 @@ -2048,6 +2044,8 @@ static gboolean on_event_pin_status(CoreObject *o, const void *event_info, void
89 dbg("[SIM]SIM CARD REMOVED!!");
90 sim_status = SIM_STATUS_CARD_REMOVED;
93 + tcore_sim_set_type(o, SIM_TYPE_UNKNOWN);
94 _sim_status_update(o, sim_status);
97 @@ -3332,7 +3330,6 @@ gboolean s_sim_init(TcorePlugin *p, TcoreHal *h)
98 work_queue = g_queue_new();
99 tcore_object_link_user_data(o, work_queue);
101 - file_meta->first_recv_status = SIM_STATUS_UNKNOWN;
102 tcore_sim_link_userdata(o, file_meta);
104 tcore_object_add_callback(o, "+XLOCK", on_event_facility_lock_status, NULL);