/** * Init function for the powerkey component * * @return TRUE on success, FALSE on failure */ gboolean mce_powerkey_init(void) { gboolean status = FALSE; gchar *tmp = NULL; /* Append triggers/filters to datapipes */ append_input_trigger_to_datapipe(&keypress_pipe, powerkey_trigger); /* req_trigger_powerkey_event */ if (mce_dbus_handler_add(MCE_REQUEST_IF, MCE_TRIGGER_POWERKEY_EVENT_REQ, NULL, DBUS_MESSAGE_TYPE_METHOD_CALL, trigger_powerkey_event_req_dbus_cb) == NULL) goto EXIT; /* Get configuration options */ longdelay = mce_conf_get_int(MCE_CONF_POWERKEY_GROUP, MCE_CONF_POWERKEY_LONG_DELAY, DEFAULT_POWER_LONG_DELAY); mediumdelay = mce_conf_get_int(MCE_CONF_POWERKEY_GROUP, MCE_CONF_POWERKEY_MEDIUM_DELAY, DEFAULT_POWER_MEDIUM_DELAY); tmp = mce_conf_get_string(MCE_CONF_POWERKEY_GROUP, MCE_CONF_POWERKEY_SHORT_ACTION, ""); /* Since we've set a default, error handling is unnecessary */ (void)parse_action(tmp, &shortpresssignal, &shortpressaction); g_free(tmp); tmp = mce_conf_get_string(MCE_CONF_POWERKEY_GROUP, MCE_CONF_POWERKEY_LONG_ACTION, ""); /* Since we've set a default, error handling is unnecessary */ (void)parse_action(tmp, &longpresssignal, &longpressaction); g_free(tmp); doublepressdelay = mce_conf_get_int(MCE_CONF_POWERKEY_GROUP, MCE_CONF_POWERKEY_DOUBLE_DELAY, DEFAULT_POWER_DOUBLE_DELAY); tmp = mce_conf_get_string(MCE_CONF_POWERKEY_GROUP, MCE_CONF_POWERKEY_DOUBLE_ACTION, ""); /* Since we've set a default, error handling is unnecessary */ (void)parse_action(tmp, &doublepresssignal, &doublepressaction); g_free(tmp); status = TRUE; EXIT: return status; }
const gchar *g_module_check_init(GModule *module) { (void)module; /* Config from ini-files */ dbltap_ctrl_path = mce_conf_get_string(MCE_CONF_DOUBLETAP_GROUP, MCE_CONF_DOUBLETAP_CONTROL_PATH, NULL); dbltap_enable_val = mce_conf_get_string(MCE_CONF_DOUBLETAP_GROUP, MCE_CONF_DOUBLETAP_ENABLE_VALUE, "1"); dbltap_disable_val = mce_conf_get_string(MCE_CONF_DOUBLETAP_GROUP, MCE_CONF_DOUBLETAP_DISABLE_VALUE, "0"); if( !dbltap_ctrl_path || !dbltap_enable_val || !dbltap_disable_val ) { mce_log(LL_NOTICE, "no double tap wakeup controls defined"); goto EXIT; } dbltap_probe_sleep_mode_controls(); /* Runtime configuration settings */ mce_gconf_notifier_add(MCE_GCONF_DOUBLETAP_PATH, MCE_GCONF_DOUBLETAP_MODE, dbltap_mode_gconf_cb, &dbltap_mode_gconf_id); gint mode = DBLTAP_ENABLE_DEFAULT; mce_gconf_get_int(MCE_GCONF_DOUBLETAP_MODE, &mode); dbltap_mode = mode; /* Append triggers/filters to datapipes */ append_output_trigger_to_datapipe(&proximity_sensor_pipe, dbltap_proximity_trigger); append_output_trigger_to_datapipe(&proximity_blank_pipe, dbltap_proximity_blank_trigger); append_output_trigger_to_datapipe(&lid_cover_policy_pipe, dbltap_lid_cover_policy_trigger); /* Get initial state of datapipes */ dbltap_ps_state = datapipe_get_gint(proximity_sensor_pipe); dbltap_ps_blank = datapipe_get_gint(proximity_blank_pipe); dbltap_lid_cover_policy = datapipe_get_gint(lid_cover_policy_pipe); /* enable/disable double tap wakeups based on initial conditions */ dbltap_rethink(); EXIT: return NULL; }
/** Check if touch panel sleep mode controls are available */ static void dbltap_probe_sleep_mode_controls(void) { static const char def_ctrl[] = "/sys/class/i2c-adapter/i2c-3/3-0020/block_sleep_mode"; static const char def_allow[] = "0"; static const char def_deny[] = "1"; bool success = false; sleep_mode_ctrl_path = mce_conf_get_string(MCE_CONF_TPSLEEP_GROUP, MCE_CONF_TPSLEEP_CONTROL_PATH, def_ctrl); if( !sleep_mode_ctrl_path || access(sleep_mode_ctrl_path, F_OK) == -1 ) goto EXIT; sleep_mode_allow_val = mce_conf_get_string(MCE_CONF_TPSLEEP_GROUP, MCE_CONF_TPSLEEP_ALLOW_VALUE, def_allow); sleep_mode_deny_val = mce_conf_get_string(MCE_CONF_TPSLEEP_GROUP, MCE_CONF_TPSLEEP_DENY_VALUE, def_deny); if( !sleep_mode_allow_val || !sleep_mode_deny_val ) goto EXIT; /* Start from kernel boot time default */ dbltap_allow_sleep_mode(true); success = true; EXIT: /* All or nothing */ if( !success ) { g_free(sleep_mode_ctrl_path), sleep_mode_ctrl_path = 0; g_free(sleep_mode_allow_val), sleep_mode_allow_val = 0; g_free(sleep_mode_deny_val), sleep_mode_deny_val = 0;; } return; }
/** * Init function for the mce-dsme component * * @param debug_mode TRUE - do not exit if dsme fails * @return TRUE on success, FALSE on failure */ gboolean mce_dsme_init(gboolean debug_mode) { gboolean status = FALSE; gchar *tmp = NULL; /* Append triggers/filters to datapipes */ append_output_trigger_to_datapipe(&charger_state_pipe, charger_state_trigger); mce_log(LL_DEBUG, "Connecting to DSME sock"); if (init_dsmesock() == FALSE) { if (debug_mode == TRUE) { dsme_disabled = TRUE; } else { goto EXIT; } } /* Register with DSME's process watchdog */ dsme_init_processwd(); /* init_done */ if (mce_dbus_handler_add("com.nokia.startup.signal", "init_done", NULL, DBUS_MESSAGE_TYPE_SIGNAL, init_done_dbus_cb) == NULL) goto EXIT; /* Get configuration options */ tmp = mce_conf_get_string(MCE_CONF_SOFTPOWEROFF_GROUP, MCE_CONF_SOFTPOWEROFF_CHARGER_POLICY_CONNECT, ""); softoff_charger_connect_policy = mce_translate_string_to_int_with_default(soft_poweroff_charger_connect_translation, tmp, DEFAULT_SOFTOFF_CHARGER_CONNECT); g_free(tmp); status = TRUE; EXIT: return status; }
/** * Init function for the mce-modules component * * @return TRUE on success, FALSE on failure */ gboolean mce_modules_init(void) { gchar **modlist = NULL; gsize length; gchar *path = NULL; /* Get the module path */ path = mce_conf_get_string(MCE_CONF_MODULES_GROUP, MCE_CONF_MODULES_PATH, DEFAULT_MCE_MODULE_PATH); /* Get the list modules to load */ modlist = mce_conf_get_string_list(MCE_CONF_MODULES_GROUP, MCE_CONF_MODULES_MODULES, &length); if (modlist != NULL) { gint i; for (i = 0; modlist[i]; i++) { GModule *module; gchar *tmp = mce_modules_build_path(path, modlist[i]); mce_log(LL_INFO, "Loading module: %s from %s", modlist[i], path); if ((module = g_module_open(tmp, 0)) != NULL) { /* XXX: check dependencies, conflicts, et al */ modules = g_slist_prepend(modules, module); } else { const char *err = g_module_error(); mce_log(LL_ERR, "%s", err ?: "unknown error"); mce_log(LL_ERR, "Failed to load module: %s; skipping", modlist[i]); } g_free(tmp); } g_strfreev(modlist); }
/** * Read the default color profile id from conf file * * @return Pointer to allocated string if success; NULL otherwise */ static gchar *read_default_color_profile(void) { return mce_conf_get_string(MCE_CONF_COMMON_GROUP, MCE_CONF_DEFAULT_PROFILE_ID_KEY, NULL); }