/** * @file tklock.h * Headers for the touchscreen/keypad lock component * of the Mode Control Entity *

* Copyright © 2004-2011 Nokia Corporation and/or its subsidiary(-ies). * Copyright (C) 2013-2019 Jolla Ltd. *

* @author David Weinehall * @author Tapio Rantala * @author Santtu Lakkala * @author Jukka Turunen * @author Mika Laitio * @author Markus Lehtonen * @author Simo Piiroinen * * mce is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License * version 2.1 as published by the Free Software Foundation. * * mce is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with mce. If not, see . */ #ifndef TKLOCK_H_ # define TKLOCK_H_ # include "mce.h" /* ========================================================================= * * Settings * ========================================================================= */ /** Prefix for tklock setting keys */ # define MCE_SETTING_TK_PATH "/system/osso/dsm/locks" /** Whether lockscreen should be activated when display turns off */ # define MCE_SETTING_TK_AUTOLOCK_ENABLED MCE_SETTING_TK_PATH "/touchscreen_keypad_autolock_enabled" # define MCE_DEFAULT_TK_AUTOLOCK_ENABLED true /** Whether automatic blanking from lockscreen is disabled */ # define MCE_SETTING_TK_AUTO_BLANK_DISABLE MCE_SETTING_TK_PATH "/tklock_blank_disable" # define MCE_DEFAULT_TK_AUTO_BLANK_DISABLE 0 /** Automatic lpm triggering modes */ enum { /** Automatic triggering disabled */ LPMUI_TRIGGERING_NONE = 0, /** Proximity sensor based out-of-pocket triggering */ LPMUI_TRIGGERING_FROM_POCKET = 1<<0, /** Proximity sensor based hover-over triggering */ LPMUI_TRIGGERING_HOVER_OVER = 1<<1, }; /** What conditions can trigger lpm mode display */ # define MCE_SETTING_TK_LPMUI_TRIGGERING MCE_SETTING_TK_PATH "/lpm_triggering" # define MCE_DEFAULT_TK_LPMUI_TRIGGERING 1 // = LPMUI_TRIGGERING_FROM_POCKET /** Whether touch input should remain blocked until ps is not covered * * To avoid accidental touch interaction related to lipstick * crashes/restarts occurring while the device is in a pocket, * it would be highly desirable to block touch input while * proximity sensor is covered. However, this causes massive * problems during bootup for devices with unreliably working * proximity sensor, so this must remain disabled by default. */ # define MCE_SETTING_TK_PROXIMITY_BLOCKS_TOUCH MCE_SETTING_TK_PATH "/proximity_blocks_touch" # define MCE_DEFAULT_TK_PROXIMITY_BLOCKS_TOUCH false /** Whether device unlocking happens in lockscreen * * Deactivating lockscreen must not be allowed if device unlock code * is entered in lockscreen context. */ # define MCE_SETTING_TK_DEVICELOCK_IN_LOCKSCREEN MCE_SETTING_TK_PATH "/devicelock_in_lockscreen" # define MCE_DEFAULT_TK_DEVICELOCK_IN_LOCKSCREEN false /** Whether MCE is allowed to use lid sensor * * Note: Unlike other sensors that are powered on/off via sensorfw, * it is assumed that lid sensor is powered on if present and * this settings just controls whether mce uses or ignores the * lid events that it receives. */ # define MCE_SETTING_TK_LID_SENSOR_ENABLED MCE_SETTING_TK_PATH "/lid_sensor_enabled" # define MCE_DEFAULT_TK_LID_SENSOR_ENABLED true /** Whether lid sensor state should be verified with light sensor * * If enabled, lid sensor state changes are ignored unless they * occur in close proximity to ambient light level changes. This * is mainly useful for filtering out false state changes reported * by hall effect sensors confused by unexpected magnetic fields. */ # define MCE_SETTING_TK_FILTER_LID_WITH_ALS MCE_SETTING_TK_PATH"/filter_lid_with_als" # define MCE_DEFAULT_TK_FILTER_LID_WITH_ALS false /** Maximum amount of light ALS is expected to report when LID is closed */ # define MCE_SETTING_TK_FILTER_LID_ALS_LIMIT MCE_SETTING_TK_PATH"/filter_lid_als_limit" # define MCE_DEFAULT_TK_FILTER_LID_ALS_LIMIT 0 /** Lid sensor open actions */ typedef enum { /** Actions disabled */ LID_OPEN_ACTION_DISABLED = 0, /** Just show lockscreen */ LID_OPEN_ACTION_UNBLANK = 1, /* Deactivate lockscreen */ LID_OPEN_ACTION_TKUNLOCK = 2, } lid_open_action_t; /** Actions to be taken when lid is opened */ # define MCE_SETTING_TK_LID_OPEN_ACTIONS MCE_SETTING_TK_PATH "/lid_open_actions" # define MCE_DEFAULT_TK_LID_OPEN_ACTIONS 1 // = LID_OPEN_ACTION_UNBLANK /** Lid sensor close actions */ typedef enum { /** Actions disabled */ LID_CLOSE_ACTION_DISABLED = 0, /** Just blank screen */ LID_CLOSE_ACTION_BLANK = 1, /* Activate lockscreen */ LID_CLOSE_ACTION_TKLOCK = 2, } lid_close_action_t; /** Actions to be taken when lid is closed */ # define MCE_SETTING_TK_LID_CLOSE_ACTIONS MCE_SETTING_TK_PATH "/lid_close_actions" # define MCE_DEFAULT_TK_LID_CLOSE_ACTIONS 2 // = LID_CLOSE_ACTION_TKLOCK /** When to react to kbd slide closed events */ typedef enum { KBD_OPEN_TRIGGER_NEVER = 0, KBD_OPEN_TRIGGER_ALWAYS = 1, KBD_OPEN_TRIGGER_NO_PROXIMITY = 2, } kbd_open_trigger_t; /** When MCE should react to kbd slide open */ # define MCE_SETTING_TK_KBD_OPEN_TRIGGER MCE_SETTING_TK_PATH "/keyboard_open_trigger" # define MCE_DEFAULT_TK_KBD_OPEN_TRIGGER 2 // = KBD_OPEN_TRIGGER_NO_PROXIMITY /** Actions to be taken when kbd slide is opened */ # define MCE_SETTING_TK_KBD_OPEN_ACTIONS MCE_SETTING_TK_PATH "/keyboard_open_actions" # define MCE_DEFAULT_TK_KBD_OPEN_ACTIONS 1 // = LID_OPEN_ACTION_UNBLANK /* When to react to kbd slide opened events */ typedef enum { KBD_CLOSE_TRIGGER_NEVER = 0, KBD_CLOSE_TRIGGER_ALWAYS = 1, KBD_CLOSE_TRIGGER_AFTER_OPEN = 2, } kbd_close_trigger_t; /** When MCE should react to kbd slide close */ # define MCE_SETTING_TK_KBD_CLOSE_TRIGGER MCE_SETTING_TK_PATH "/keyboard_close_trigger" # define MCE_DEFAULT_TK_KBD_CLOSE_TRIGGER 2 // = KBD_CLOSE_TRIGGER_AFTER_OPEN /** Actions to be taken when kbd slide is closed */ # define MCE_SETTING_TK_KBD_CLOSE_ACTIONS MCE_SETTING_TK_PATH "/keyboard_close_actions" # define MCE_DEFAULT_TK_KBD_CLOSE_ACTIONS 2 // = LID_CLOSE_ACTION_TKLOCK /** Autolock delay after display off [ms] * * When display gets dimmed and then blanked, there is * a "grace period" before the application that was * active gets backgrounded and lockscreen activated. */ # define MCE_SETTING_TK_AUTOLOCK_DELAY MCE_SETTING_TK_PATH "/autolock_delay" # define MCE_DEFAULT_TK_AUTOLOCK_DELAY 30000 # define MINIMUM_AUTOLOCK_DELAY 0 # define MAXIMUM_AUTOLOCK_DELAY 600000 /** Volume key input policy modes */ typedef enum { /** Default rules apply */ VOLKEY_POLICY_DEFAULT = 0, /** Volume keys are enabled only when there is music playback. */ VOLKEY_POLICY_MEDIA_ONLY = 1, } volkey_policy_t; /** When MCE should block/allow volume key events */ # define MCE_SETTING_TK_VOLKEY_POLICY MCE_SETTING_TK_PATH "/volume_key_input_policy" # define MCE_DEFAULT_TK_VOLKEY_POLICY 0 // = VOLKEY_POLICY_DEFAULT /** How long to keep display on after incoming call ends [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_CALL_IN MCE_SETTING_TK_PATH"/exception_length_call_in" # define MCE_DEFAULT_TK_EXCEPT_LEN_CALL_IN 5000 /** How long to keep display on after outgoing call ends [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_CALL_OUT MCE_SETTING_TK_PATH"/exception_length_call_out" # define MCE_DEFAULT_TK_EXCEPT_LEN_CALL_OUT 2500 /** How long to keep display on after alarm is handled [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_ALARM MCE_SETTING_TK_PATH"/exception_length_alarm" # define MCE_DEFAULT_TK_EXCEPT_LEN_ALARM 1250 /** How long to keep display on when usb cable is connected [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_USB_CONNECT MCE_SETTING_TK_PATH"/exception_length_usb_connect" # define MCE_DEFAULT_TK_EXCEPT_LEN_USB_CONNECT 5000 /** How long to keep display on when usb mode dialog is shown [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_USB_DIALOG MCE_SETTING_TK_PATH"/exception_length_usb_dialog" # define MCE_DEFAULT_TK_EXCEPT_LEN_USB_DIALOG 10000 /** How long to keep display on when charging starts [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_CHARGER MCE_SETTING_TK_PATH"/exception_length_charger" # define MCE_DEFAULT_TK_EXCEPT_LEN_CHARGER 3000 /** How long to keep display on after battery full [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_BATTERY MCE_SETTING_TK_PATH"/exception_length_battery" # define MCE_DEFAULT_TK_EXCEPT_LEN_BATTERY 0 /** How long to keep display on when audio jack is inserted [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_JACK_IN MCE_SETTING_TK_PATH"/exception_length_jack_in" # define MCE_DEFAULT_TK_EXCEPT_LEN_JACK_IN 3000 /** How long to keep display on when audio jack is removed [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_JACK_OUT MCE_SETTING_TK_PATH"/exception_length_jack_out" # define MCE_DEFAULT_TK_EXCEPT_LEN_JACK_OUT 3000 /** How long to keep display on when camera button is pressed [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_CAMERA MCE_SETTING_TK_PATH"/exception_length_camera" # define MCE_DEFAULT_TK_EXCEPT_LEN_CAMERA 3000 /** How long to keep display on when volume button is pressed [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_VOLUME MCE_SETTING_TK_PATH"/exception_length_volume" # define MCE_DEFAULT_TK_EXCEPT_LEN_VOLUME 2000 /** How long to extend display on when there is user activity [ms] */ # define MCE_SETTING_TK_EXCEPT_LEN_ACTIVITY MCE_SETTING_TK_PATH"/exception_length_activity" # define MCE_DEFAULT_TK_EXCEPT_LEN_ACTIVITY 2000 /** Is mce allowed to grab input devices */ # define MCE_SETTING_TK_INPUT_POLICY_ENABLED MCE_SETTING_TK_PATH "/touchscreen_policy_enabled" # define MCE_DEFAULT_TK_INPUT_POLICY_ENABLED true /** Whether mce should allow lockscreen animations on unblank */ # define MCE_SETTING_TK_LOCKSCREEN_ANIM_ENABLED MCE_SETTING_TK_PATH "/lockscreen_animation_enabled" # define MCE_DEFAULT_TK_LOCKSCREEN_ANIM_ENABLED true /** Default proximity sensor uncover handling [ms]*/ # define MCE_SETTING_TK_PROXIMITY_DELAY_DEFAULT MCE_SETTING_TK_PATH "/proximity_delay_default" # define MCE_DEFAULT_TK_PROXIMITY_DELAY_DEFAULT 100 /** In-call proximity sensor uncover handling [ms]*/ # define MCE_SETTING_TK_PROXIMITY_DELAY_INCALL MCE_SETTING_TK_PATH "/proximity_delay_incall" # define MCE_DEFAULT_TK_PROXIMITY_DELAY_INCALL 500 /** Accpeted range for proximity sensor uncover delay: [0s, 1h] */ # define MCE_MINIMUM_TK_PROXIMITY_DELAY 0 # define MCE_MAXIMUM_TK_PROXIMITY_DELAY (60 * 60 * 1000) /* ========================================================================= * * Configuration * ========================================================================= */ /** Name of Touchscreen/Keypad lock configuration group */ # define MCE_CONF_TKLOCK_GROUP "TKLock" /** Name of configuration key for camera popout unlock */ # define MCE_CONF_CAMERA_POPOUT_UNLOCK "CameraPopoutUnlock" /* ========================================================================= * * HW Constants * ========================================================================= */ /** SysFS interface to enable/disable RX-51 keyboard IRQs */ # define MCE_RX51_KEYBOARD_SYSFS_DISABLE_PATH "/sys/class/i2c-adapter/i2c-1/1-004a/twl4030_keypad/disable_kp" /** SysFS interface to enable/disable keypad IRQs */ # define MCE_KEYPAD_SYSFS_DISABLE_PATH "/sys/devices/platform/omap2_mcspi.1/spi1.0/disable_kp" /** SysFS interface to enable/disable the RX-44/RX-48 keyboard IRQs */ # define MCE_RX44_KEYBOARD_SYSFS_DISABLE_PATH "/sys/devices/platform/i2c_omap.2/i2c-0/0-0045/disable_kp" /** * SysFS interface to enable/disable * RM-680/RM-690/RM-696/RM-716 double tap gesture recognition */ # define MCE_RM680_DOUBLETAP_SYSFS_PATH "/sys/class/i2c-adapter/i2c-2/2-004b/wait_for_gesture" /** * SysFS interface to recalibrate * RM-680/RM-690/RM-696/RM-716 touchscreen */ # define MCE_RM680_TOUCHSCREEN_CALIBRATION_PATH "/sys/class/i2c-adapter/i2c-2/2-004b/calibrate" /** * SysFS interface to enable/disable * RM-680/RM-690/RM-696/RM-716 touchscreen IRQs */ # define MCE_RM680_TOUCHSCREEN_SYSFS_DISABLE_PATH "/sys/class/i2c-adapter/i2c-2/2-004b/disable_ts" /** SysFS interface to enable/disable RX-44/RX-48/RX-51 touchscreen IRQs */ # define MCE_RX44_TOUCHSCREEN_SYSFS_DISABLE_PATH "/sys/devices/platform/omap2_mcspi.1/spi1.0/disable_ts" # define MCE_RX44_TOUCHSCREEN_SYSFS_DISABLE_PATH_KERNEL2637 "/sys/devices/platform/omap2_mcspi.1/spi1.0/disable" /** Touch screen enable delay for calibration **/ # define MCE_TOUCHSCREEN_CALIBRATION_DELAY 100000 /* 100 milliseconds */ /* ========================================================================= * * Functions * ========================================================================= */ gboolean mce_tklock_init(void); void mce_tklock_exit(void); void mce_tklock_unblank(display_state_t to_state); #endif /* TKLOCK_H_ */