firmware_Cr50CCDServoCap: wait until ccdstate is done debouncing
Sometimes the test sees 'debouncing' as a state and fails, because that
doesn't fit into the off and on categories. This changes get_ccdstate to
wait until the state is done debouncing
BUG=none
BRANCH=none
TEST=run firmware_Cr50CCDServoCap
Change-Id: I5495f6df9f446058722ea414a31eca5968a7389b
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/1612286
Reviewed-by: Kevin Shelton <kmshelton@chromium.org>
diff --git a/server/site_tests/firmware_Cr50CCDServoCap/firmware_Cr50CCDServoCap.py b/server/site_tests/firmware_Cr50CCDServoCap/firmware_Cr50CCDServoCap.py
index 9e1e8d2..6c61292 100644
--- a/server/site_tests/firmware_Cr50CCDServoCap/firmware_Cr50CCDServoCap.py
+++ b/server/site_tests/firmware_Cr50CCDServoCap/firmware_Cr50CCDServoCap.py
@@ -159,8 +159,13 @@
def get_ccdstate(self):
"""Get the current Cr50 CCD states"""
- rv = self.cr50.send_command_get_output('ccdstate',
- ['ccdstate(.*)>'])[0][0]
+ for i in range(self.cr50.MAX_RETRY_COUNT):
+ rv = self.cr50.send_command_get_output('ccdstate',
+ ['ccdstate(.*)>'])[0][0]
+ if 'debouncing' not in rv:
+ break
+ time.sleep(self.cr50.SHORT_WAIT)
+
# I2C isn't a reliable flag, because the hardware often doesn't support
# it. Remove any I2C flags from the ccdstate output.
rv = rv.replace(' I2C', '')