00c91cb842a6a0847a3fc3383c74ac20f9d2e570
[platform/core/telephony/tel-plugin-imc.git] / packaging / 0007-s_sim-Get-the-SIM-type-when-SIM-is-ready.patch
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
7
8 ---
9  src/s_sim.c |   33 +++++++++++++++------------------
10  1 file changed, 15 insertions(+), 18 deletions(-)
11
12 diff --git a/src/s_sim.c b/src/s_sim.c
13 index 5ab702a..1d7e5c6 100644
14 --- a/src/s_sim.c
15 +++ b/src/s_sim.c
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
25         }
26  
27         tcore_sim_set_type(co_sim, sim_type);
28 -       _sim_status_update(co_sim, sp->first_recv_status);
29 +
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);
34 +       }
35 +
36         tcore_at_tok_free(tokens);
37         dbg(" Function exit");
38  }
39 @@ -1921,7 +1926,6 @@ OUT:
40  
41  static gboolean on_event_pin_status(CoreObject *o, const void *event_info, void *user_data)
42  {
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
48  
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");
53                 break;
54  
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
57  
58         switch (sim_status) {
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)
63 +                       _get_sim_type(o);
64 +               else
65 +                       _sim_status_update(o, sim_status);
66                 break;
67  
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;
76 -                       _get_sim_type(o);
77 -               } else {
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);
82 -                       }
83 -               }
84 +               _sim_status_update(o, sim_status);
85                 break;
86  
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;
91                 }
92 +
93 +               tcore_sim_set_type(o, SIM_TYPE_UNKNOWN);
94                 _sim_status_update(o, sim_status);
95                 break;
96  
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);
100  
101 -       file_meta->first_recv_status = SIM_STATUS_UNKNOWN;
102         tcore_sim_link_userdata(o, file_meta);
103  
104         tcore_object_add_callback(o, "+XLOCK", on_event_facility_lock_status, NULL);
105 -- 
106 1.7.10.4
107