#!/usr/bin/env python
#
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Sends a heart beat pulse to the currently online Android devices.
This heart beat lets the devices know that they are connected to a host.
"""
# pylint: disable=W0702

import sys
import time

import devil_chromium
from devil.android import device_utils

PULSE_PERIOD = 20

def main():
  devil_chromium.Initialize()

  while True:
    try:
      devices = device_utils.DeviceUtils.HealthyDevices(blacklist=None)
      for d in devices:
        d.RunShellCommand(['touch', '/sdcard/host_heartbeat'],
                          check_return=True)
    except:
      # Keep the heatbeat running bypassing all errors.
      pass
    time.sleep(PULSE_PERIOD)


if __name__ == '__main__':
  sys.exit(main())
