12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # -*- coding: utf-8 -*-
- # Copyright (C) 2015-2016 Peter Magnusson <peter@birchroad.net>
- """Various utility functions"""
- from platform import system
- from os import environ
- from wrapt import ObjectProxy
- from sys import version_info
- __all__ = ['default_port', 'system']
- PY2 = version_info.major == 2
- ENCODING = 'latin1'
- def default_port(sysname=system()):
- """This returns the default port used for different systems if SERIALPORT env variable is not set"""
- system_default = {
- 'Windows': 'COM1',
- 'Darwin': '/dev/tty.SLAB_USBtoUART'
- }.get(sysname, '/dev/ttyUSB0')
- return environ.get('SERIALPORT', system_default)
- def bytefy(x):
- return x if type(x) == bytes else x.encode(ENCODING)
- def to_hex(x):
- return hex(ord(x))
- def hexify(byte_arr):
- return ':'.join((to_hex(x)[2:] for x in byte_arr))
- def from_file(path):
- with open(path, 'rb') as f:
- content = f.read()
- return content if PY2 else content.decode(ENCODING)
- class DecoderWrapper(ObjectProxy):
- def read(self, *args, **kwargs):
- res = self.__wrapped__.read(*args, **kwargs)
- return res if PY2 else res.decode(ENCODING)
- def write(self, data):
- data = data if PY2 else data.encode(ENCODING)
- return self.__wrapped__.write(data)
- def wrap(x):
- return DecoderWrapper(x)
|