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
6 Content-Type: text/plain; charset="utf-8"
7 Content-Transfer-Encoding: 8bit
9 Disable modem unsolicited message when screen is off, enable modem
10 unsolicted message when screen is on.
14 packaging/tel-plugin-imc.spec
16 CMakeLists.txt | 6 ++++--
17 src/s_network.c | 24 ++++++++++++++++++++++++
18 2 files changed, 28 insertions(+), 2 deletions(-)
20 diff --git a/CMakeLists.txt b/CMakeLists.txt
21 index 9bbaec3..101137c 100644
24 @@ -10,13 +10,15 @@ SET(INCLUDEDIR "\${prefix}/include")
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)
31 FOREACH(flag ${pkgs_CFLAGS})
32 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
35 -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/)
36 +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
37 + /usr/include/libxml2
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")
42 diff --git a/src/s_network.c b/src/s_network.c
43 index 0cbdc23..ce1ce34 100644
51 +#include <glib-object.h>
55 @@ -103,6 +105,7 @@ static unsigned int lookup_tbl_access_technology[] = {
56 [AT_COPS_ACT_E_UTRAN] = NETWORK_ACT_GSM_UTRAN,
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);
63 @@ -2165,6 +2168,23 @@ static struct tcore_network_operations network_ops = {
64 .get_serving_network = get_serving_network,
67 +static void on_screen_status_changed(keynode_t *key, void* data)
69 + TcorePlugin *plugin = NULL;
73 + plugin = (TcorePlugin *) data;
74 + if( vconf_keynode_get_type(key) == VCONF_TYPE_INT) {
75 + state = vconf_keynode_get_int(key);
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);
84 gboolean s_network_init(TcorePlugin *p, TcoreHal *h)
87 @@ -2184,6 +2204,8 @@ gboolean s_network_init(TcorePlugin *p, TcoreHal *h)
89 tcore_server_add_notification_hook(tcore_plugin_ref_server(p), TNOTI_SIM_STATUS, on_hook_sim_init, o);
91 + vconf_notify_key_changed(VCONFKEY_PM_STATE, on_screen_status_changed, p);
93 _insert_mcc_mnc_oper_list(p, o);
96 @@ -2193,6 +2215,8 @@ void s_network_exit(TcorePlugin *p)
100 + vconf_ignore_key_changed(VCONFKEY_PM_STATE, on_screen_status_changed);
102 o = tcore_plugin_ref_core_object(p, "umts_network");
104 tcore_network_free(o);