Better is_raspberrypi

This commit is contained in:
jtc42 2019-11-27 19:28:55 +00:00
parent 02afe06655
commit e9d203ae7b

View file

@ -1,15 +1,49 @@
from openflexure_microscope.api.views import MicroscopeView
import subprocess
import os
import io
from sys import platform
def is_raspberrypi():
if (platform != "linux"):
return False
else:
return (os.uname()[1] == 'raspberrypi')
def is_raspberrypi(raise_on_errors=False):
"""
Checks if Raspberry Pi.
"""
try:
with io.open('/proc/cpuinfo', 'r') as cpuinfo:
found = False
for line in cpuinfo:
if line.startswith('Hardware'):
found = True
label, value = line.strip().split(':', 1)
value = value.strip()
if value not in (
'BCM2708',
'BCM2709',
'BCM2835',
'BCM2836'
):
if raise_on_errors:
raise ValueError(
'This system does not appear to be a '
'Raspberry Pi.'
)
else:
return False
if not found:
if raise_on_errors:
raise ValueError(
'Unable to determine if this system is a Raspberry Pi.'
)
else:
return False
except IOError:
if raise_on_errors:
raise ValueError('Unable to open `/proc/cpuinfo`.')
else:
return False
return True
class ShutdownAPI(MicroscopeView):
"""