summaryrefslogtreecommitdiff
diff options
authorUbuntu <ubuntu@cert-jenkins-slave-1-201406-15260.maas>2021-11-07 16:31:32 +0000
committerUbuntu <ubuntu@cert-jenkins-slave-1-201406-15260.maas>2021-11-07 16:31:32 +0000
commit76c8334e9a0ad8f14930c1588e4b47a15a6c992a (patch)
tree28846f3daef4c0aa996fb4fae9e789dc43b3ad83
parentcdd6f886d5265b6f41b1f189899e74ffd078dbe8 (diff)
parentb33f9c0fb2d95681bcf75975861e26236668e75b (diff)
Merge #410367 from ~kchsieh/plainbox-provider-checkbox/+git/plainbox-provider-checkbox:screenoff
Change: Use key event to simulate screen off
-rwxr-xr-xbin/screenoff.sh35
-rw-r--r--units/power-management/jobs.pxu10
-rw-r--r--units/power-management/packaging.pxu4
3 files changed, 42 insertions, 7 deletions
diff --git a/bin/screenoff.sh b/bin/screenoff.sh
new file mode 100755
index 0000000..8a565c7
--- /dev/null
+++ b/bin/screenoff.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+while read -r line;
+do
+ if [ "${line:0:7}" = "N: Name" ]; then
+ name="${line:9:-1}"
+ fi
+ if [ "${line:0:8}" = "S: Sysfs" ] && [ "$keyboard" -eq 1 ]; then
+ sysfs="${line:9}"
+ break
+ fi
+ if [ "$name" = "AT Translated Set 2 keyboard" ]; then
+ keyboard=1
+ else
+ keyboard=0
+ fi
+done </proc/bus/input/devices
+
+event_sysfs=$(find "/sys$sysfs" -name "event*")
+event_idx=$(echo "$event_sysfs" | awk -F/ '{print $NF}')
+device="/dev/input/$event_idx"
+
+evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 219
+evemu-event --sync "${device}" --type EV_KEY --code KEY_LEFTMETA --value 1
+evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 38
+evemu-event --sync "${device}" --type EV_KEY --code KEY_L --value 1
+evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 38
+evemu-event --sync "${device}" --type EV_KEY --code KEY_L --value 0
+evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 219
+evemu-event --sync "${device}" --type EV_KEY --code KEY_LEFTMETA --value 0
+sleep "$1"
+evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 28
+evemu-event --sync "${device}" --type EV_KEY --code KEY_ENTER --value 1
+evemu-event "${device}" --type EV_MSC --code MSC_SCAN --value 28
+evemu-event --sync "${device}" --type EV_KEY --code KEY_ENTER --value 0
diff --git a/units/power-management/jobs.pxu b/units/power-management/jobs.pxu
index 726b4ae..d449564 100644
--- a/units/power-management/jobs.pxu
+++ b/units/power-management/jobs.pxu
@@ -366,15 +366,13 @@ unit: job
plugin: shell
requires:
cpuinfo.cpu_lpi_file in ('low_power_idle_cpu_residency_us', 'package_cstate_show')
- package.name == 'x11-xserver-utils'
sleep.mem_sleep == 's2idle'
+ package.name == 'evemu-tools'
command:
cpu_lpi_file=$(cpuinfo_resource.py | grep cpu_lpi_file | awk '{ print $2 }')
if [ "$cpu_lpi_file" == "low_power_idle_cpu_residency_us" ]; then
before=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us)
- xset dpms force off
- sleep 20
- xset dpms force on
+ screenoff.sh 20
after=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us)
residency=$((after-before))
echo "/sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us after/before screen off is $residency"
@@ -382,9 +380,7 @@ command:
echo "The system doesn't have hardware-based residency counter."
echo "please check https://www.uefi.org/sites/default/files/resources/Intel_ACPI_Low_Power_S0_Idle.pdf"
before=$(cat < /sys/kernel/debug/pmc_core/package_cstate_show | grep C10 | awk '{ print $4 }')
- xset dpms force off
- sleep 20
- xset dpms force on
+ screenoff.sh 20
after=$(cat < /sys/kernel/debug/pmc_core/package_cstate_show | grep C10 | awk '{ print $4 }')
residency=$((after-before))
echo "/sys/kernel/debug/pmc_core/package_cstate_show after/before screen off is $residency"
diff --git a/units/power-management/packaging.pxu b/units/power-management/packaging.pxu
new file mode 100644
index 0000000..a03242e
--- /dev/null
+++ b/units/power-management/packaging.pxu
@@ -0,0 +1,4 @@
+# This is to install evemu-tools for the screen lock key event simulation
+unit: packaging meta-data
+os-id: debian
+Depends: evemu-tools