blob: 427c70c237d19ed26c90739cecd19d8ff4061798 [file] [log] [blame]
#!/bin/sh
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# The script provides utility for detecting whether a base is currently
# connected.
# base_connected will block for at most 5 * 0.01 = ~50ms, and some
# ectool overhead (total ~80ms, experimentally)
base_connected() {
local logger_name="$1"
local retries=5
# Detect if the base is connected:
# - Tablet mode is used on Soraka-like devices
# - Base attached on Nocturne-like devices with CBAS/hammer driver.
# The EC driver may not be immediately available, so retry 5 times
while true; do
: $((retries -= 1))
if ectool mkbpget switches 2>/dev/null; then
break
fi
if [ "${retries}" -lt 1 ]; then
logger -t "${logger_name}" "Error: ectool cannot talk to the EC."
return 1
fi
sleep 0.01
done | grep -qE "(Tablet mode: OFF|Base attached: ON)"
}