Source code for flexsea.utilities.system
import platform
import sys
from typing import List
# We use sys instead of platform because that's what poetry uses to
# determine if a dependency should be installed or not
if sys.platform == "linux":
import pyudev
# ============================================
# get_os
# ============================================
[docs]def get_os() -> str:
"""
Returns the operating system and "bitness" (64 or 32 bit).
Can be:
* windows_32bit
* windows_64bit
* pi_32bit
* pi_64bit
* linux_32bit
* linux_64bit
Returns
-------
os : str
The name and "bitness" of the current operating system.
"""
system = platform.system().lower()
if system == "linux":
machine = platform.machine()
if machine.startswith("arm") or machine.startswith("aarch"):
system = "pi"
return system + "_" + platform.architecture()[0]
# ============================================
# find_stm_ports
# ============================================
def find_stm_ports() -> List[str]:
if "windows" in get_os():
raise OSError("This function only works on Linux.")
# pylint: disable-next=used-before-assignment
context = pyudev.Context()
devicePorts = []
for device in context.list_devices(ID_VENDOR="STMicroelectronics", block="tty"):
devicePorts.append(device.device_node)
return devicePorts