5cc5efd413e9a796e9982104b6814be7c74a574d
[platform/core/telephony/tel-plugin-imc.git] / packaging / 0017-Fix-the-issue-that-system-is-waken-up-by-modem-frequ.patch
1 From ddcdf41b670a51aee4f30bd3dc2574836e6e324b Mon Sep 17 00:00:00 2001
2 From: Caiwen Zhang <caiwen.zhang@intel.com>
3 Date: Fri, 19 Oct 2012 23:16:45 +0800
4 Subject: [PATCH 17/23] Fix the issue that system is waken up by modem
5  frequently
6 Content-Type: text/plain; charset="utf-8"
7 Content-Transfer-Encoding: 8bit
8
9 Disable modem unsolicited message when screen is off, enable modem
10 unsolicted message when screen is on.
11
12 Conflicts:
13         CMakeLists.txt
14         packaging/tel-plugin-imc.spec
15 ---
16  CMakeLists.txt  |    6 ++++--
17  src/s_network.c |   24 ++++++++++++++++++++++++
18  2 files changed, 28 insertions(+), 2 deletions(-)
19
20 diff --git a/CMakeLists.txt b/CMakeLists.txt
21 index 9bbaec3..101137c 100644
22 --- a/CMakeLists.txt
23 +++ b/CMakeLists.txt
24 @@ -10,13 +10,15 @@ SET(INCLUDEDIR "\${prefix}/include")
25  
26  # Set required packages
27  INCLUDE(FindPkgConfig)
28 -pkg_check_modules(pkgs REQUIRED glib-2.0 tcore dlog db-util)
29 +pkg_check_modules(pkgs REQUIRED glib-2.0 tcore dlog db-util libxml-2.0 vconf)
30  
31  FOREACH(flag ${pkgs_CFLAGS})
32         SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
33  ENDFOREACH(flag)
34  
35 -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/)
36 +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
37 +                                       /usr/include/libxml2
38 +                                       )
39  
40  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Werror -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wdeclaration-after-statement -Wmissing-declarations -Wredundant-decls -Wcast-align")
41  
42 diff --git a/src/s_network.c b/src/s_network.c
43 index 0cbdc23..ce1ce34 100644
44 --- a/src/s_network.c
45 +++ b/src/s_network.c
46 @@ -23,6 +23,8 @@
47  #include <string.h>
48  
49  #include <glib.h>
50 +#include <vconf.h>
51 +#include <glib-object.h>
52  
53  #include <tcore.h>
54  #include <hal.h>
55 @@ -103,6 +105,7 @@ static unsigned int lookup_tbl_access_technology[] = {
56         [AT_COPS_ACT_E_UTRAN] = NETWORK_ACT_GSM_UTRAN,
57  };
58  
59 +extern void prepare_and_send_pending_request(TcorePlugin *plugin, char *co_name, const char *at_cmd, const char *prefix, enum tcore_at_command_type at_cmd_type, TcorePendingResponseCallback callback);
60  static gboolean get_serving_network(CoreObject *o, UserRequest *ur);
61  
62  
63 @@ -2165,6 +2168,23 @@ static struct tcore_network_operations network_ops = {
64         .get_serving_network = get_serving_network,
65  };
66  
67 +static void on_screen_status_changed(keynode_t *key, void* data)
68 +{
69 +       TcorePlugin *plugin = NULL;
70 +       int state;
71 +       dbg("Entry");
72 +
73 +       plugin = (TcorePlugin *) data;
74 +       if( vconf_keynode_get_type(key) == VCONF_TYPE_INT) {
75 +               state = vconf_keynode_get_int(key);
76 +
77 +               if (state == VCONFKEY_PM_STATE_NORMAL) //screen on
78 +                       prepare_and_send_pending_request(plugin, "umts_network", "AT+CREG=2;+XREG=2;+XCSQ=1;+XMER=1;+XFDOR=3", NULL, TCORE_AT_NO_RESULT, NULL);
79 +               else if (state == VCONFKEY_PM_STATE_LCDOFF) //screen off
80 +                       prepare_and_send_pending_request(plugin, "umts_network", "AT+CREG=0;+XREG=0;+XCSQ=0;+XMER=0;+XFDOR=2", NULL, TCORE_AT_NO_RESULT, NULL);
81 +       }
82 +}
83 +
84  gboolean s_network_init(TcorePlugin *p, TcoreHal *h)
85  {
86         CoreObject *o = NULL;
87 @@ -2184,6 +2204,8 @@ gboolean s_network_init(TcorePlugin *p, TcoreHal *h)
88  
89         tcore_server_add_notification_hook(tcore_plugin_ref_server(p), TNOTI_SIM_STATUS, on_hook_sim_init, o);
90  
91 +       vconf_notify_key_changed(VCONFKEY_PM_STATE, on_screen_status_changed, p);
92 +
93         _insert_mcc_mnc_oper_list(p, o);
94  
95         return TRUE;
96 @@ -2193,6 +2215,8 @@ void s_network_exit(TcorePlugin *p)
97  {
98         CoreObject *o;
99  
100 +       vconf_ignore_key_changed(VCONFKEY_PM_STATE, on_screen_status_changed);
101 +
102         o = tcore_plugin_ref_core_object(p, "umts_network");
103  
104         tcore_network_free(o);
105 -- 
106 1.7.10.4
107