Files
weather-base-station/display/epdconfig.py
T

119 lines
1.8 KiB
Python

# display/epdconfig.py
import logging
import time
logger = logging.getLogger(__name__)
class DummyGPIO:
BCM = OUT = IN = 0
@staticmethod
def setmode(*args):
pass
@staticmethod
def setwarnings(*args):
pass
@staticmethod
def setup(*args):
pass
@staticmethod
def output(*args):
pass
@staticmethod
def input(*args):
return 0
@staticmethod
def cleanup(*args):
pass
class DummySPI:
max_speed_hz = 4000000
mode = 0b00
@staticmethod
def open(*args):
pass
@staticmethod
def writebytes(*args):
pass
@staticmethod
def writebytes2(*args):
pass
@staticmethod
def close():
pass
try:
import RPi.GPIO as GPIO
import spidev
SPI = spidev.SpiDev()
except ImportError:
logger.warning(
"RPi.GPIO or spidev not found. Using Dummy hardware drivers (Test Mode)."
)
GPIO = DummyGPIO()
SPI = DummySPI()
RST_PIN = 17
DC_PIN = 25
CS_PIN = 8
BUSY_PIN = 24
PWR_PIN = 18
def digital_write(pin, value):
GPIO.output(pin, value)
def digital_read(pin):
return GPIO.input(pin)
def delay_ms(delaytime):
time.sleep(delaytime / 1000.0)
def spi_writebyte(data):
SPI.writebytes(data)
def spi_writebyte2(data):
SPI.writebytes2(data)
def module_init():
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(RST_PIN, GPIO.OUT)
GPIO.setup(DC_PIN, GPIO.OUT)
GPIO.setup(CS_PIN, GPIO.OUT)
GPIO.setup(PWR_PIN, GPIO.OUT)
GPIO.setup(BUSY_PIN, GPIO.IN)
GPIO.output(PWR_PIN, 1)
SPI.open(0, 0)
SPI.max_speed_hz = 4000000
SPI.mode = 0b00
return 0
def module_exit():
SPI.close()
GPIO.output(RST_PIN, 0)
GPIO.output(DC_PIN, 0)
GPIO.output(PWR_PIN, 0)
GPIO.cleanup([RST_PIN, DC_PIN, CS_PIN, BUSY_PIN, PWR_PIN])