parent
							
								
									603a21c1f4
								
							
						
					
					
						commit
						0c17887c12
					
				
				 1 changed files with 0 additions and 86 deletions
			
			
		@ -1,86 +0,0 @@ | 
				
			|||||||
#!/usr/bin/env python3 | 
					 | 
				
			||||||
import errno | 
					 | 
				
			||||||
import fcntl | 
					 | 
				
			||||||
import os | 
					 | 
				
			||||||
import signal | 
					 | 
				
			||||||
import subprocess | 
					 | 
				
			||||||
import sys | 
					 | 
				
			||||||
import time | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import requests | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from common.params import Params | 
					 | 
				
			||||||
from common.timeout import Timeout | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
HOST = "testing.comma.life" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def unblock_stdout(): | 
					 | 
				
			||||||
  # get a non-blocking stdout | 
					 | 
				
			||||||
  child_pid, child_pty = os.forkpty() | 
					 | 
				
			||||||
  if child_pid != 0:  # parent | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # child is in its own process group, manually pass kill signals | 
					 | 
				
			||||||
    signal.signal(signal.SIGINT, lambda signum, frame: os.kill(child_pid, signal.SIGINT)) | 
					 | 
				
			||||||
    signal.signal(signal.SIGTERM, lambda signum, frame: os.kill(child_pid, signal.SIGTERM)) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    fcntl.fcntl(sys.stdout, fcntl.F_SETFL, fcntl.fcntl(sys.stdout, fcntl.F_GETFL) | os.O_NONBLOCK) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while True: | 
					 | 
				
			||||||
      try: | 
					 | 
				
			||||||
        dat = os.read(child_pty, 4096) | 
					 | 
				
			||||||
      except OSError as e: | 
					 | 
				
			||||||
        if e.errno == errno.EIO: | 
					 | 
				
			||||||
          break | 
					 | 
				
			||||||
        continue | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if not dat: | 
					 | 
				
			||||||
        break | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      try: | 
					 | 
				
			||||||
        sys.stdout.write(dat.decode('utf8')) | 
					 | 
				
			||||||
      except (OSError, IOError, UnicodeDecodeError): | 
					 | 
				
			||||||
        pass | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # os.wait() returns a tuple with the pid and a 16 bit value | 
					 | 
				
			||||||
    # whose low byte is the signal number and whose high byte is the exit satus | 
					 | 
				
			||||||
    exit_status = os.wait()[1] >> 8 | 
					 | 
				
			||||||
    os._exit(exit_status) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def heartbeat(): | 
					 | 
				
			||||||
  work_dir = '/data/openpilot' | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  while True: | 
					 | 
				
			||||||
    try: | 
					 | 
				
			||||||
      with open(os.path.join(work_dir, "selfdrive", "common", "version.h")) as _versionf: | 
					 | 
				
			||||||
        version = _versionf.read().split('"')[1] | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      tmux = "" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # try: | 
					 | 
				
			||||||
      #  tmux = os.popen('tail -n 100 /tmp/tmux_out').read() | 
					 | 
				
			||||||
      # except Exception: | 
					 | 
				
			||||||
      #  pass | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      params = Params() | 
					 | 
				
			||||||
      msg = { | 
					 | 
				
			||||||
        'version': version, | 
					 | 
				
			||||||
        'dongle_id': params.get("DongleId").rstrip().decode('utf8'), | 
					 | 
				
			||||||
        'remote': subprocess.check_output(["git", "config", "--get", "remote.origin.url"], cwd=work_dir).decode('utf8').rstrip(), | 
					 | 
				
			||||||
        'branch': subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=work_dir).decode('utf8').rstrip(), | 
					 | 
				
			||||||
        'revision': subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=work_dir).decode('utf8').rstrip(), | 
					 | 
				
			||||||
        'serial': subprocess.check_output(["getprop", "ro.boot.serialno"]).decode('utf8').rstrip(), | 
					 | 
				
			||||||
        'tmux': tmux, | 
					 | 
				
			||||||
      } | 
					 | 
				
			||||||
      with Timeout(10): | 
					 | 
				
			||||||
        requests.post('http://%s/eon/heartbeat/' % HOST, json=msg, timeout=5.0) | 
					 | 
				
			||||||
    except Exception as e: | 
					 | 
				
			||||||
      print("Unable to send heartbeat", e) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    time.sleep(5) | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == "__main__": | 
					 | 
				
			||||||
  unblock_stdout() | 
					 | 
				
			||||||
  heartbeat() | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue