diff --git a/inkycal/display/drivers/epd_12_in_48_lib.so b/inkycal/display/drivers/epd_12_in_48_lib.so deleted file mode 100644 index 61482b5..0000000 Binary files a/inkycal/display/drivers/epd_12_in_48_lib.so and /dev/null differ diff --git a/inkycal/display/drivers/epd_12_in_48_lib_32bit.so b/inkycal/display/drivers/epd_12_in_48_lib_32bit.so new file mode 100644 index 0000000..acdbb26 Binary files /dev/null and b/inkycal/display/drivers/epd_12_in_48_lib_32bit.so differ diff --git a/inkycal/display/drivers/epd_12_in_48_lib_64bit.so b/inkycal/display/drivers/epd_12_in_48_lib_64bit.so new file mode 100644 index 0000000..ed8ae87 Binary files /dev/null and b/inkycal/display/drivers/epd_12_in_48_lib_64bit.so differ diff --git a/inkycal/display/drivers/epdconfig_12_in_48.py b/inkycal/display/drivers/epdconfig_12_in_48.py index 1fc1f34..cdc84bc 100644 --- a/inkycal/display/drivers/epdconfig_12_in_48.py +++ b/inkycal/display/drivers/epdconfig_12_in_48.py @@ -31,8 +31,6 @@ import os import time from ctypes import * -import RPi.GPIO as GPIO - EPD_SCK_PIN = 11 EPD_MOSI_PIN = 10 @@ -59,20 +57,25 @@ find_dirs = [ ] spi = None for find_dir in find_dirs: - so_filename = os.path.join(find_dir, 'epd_12_in_48_lib.so') + val = int(os.popen('getconf LONG_BIT').read()) + logging.debug("System is %d bit" % val) + if val == 64: + so_filename = os.path.join(find_dir, 'epd_12_in_48_lib_64bit.so') + else: + so_filename = os.path.join(find_dir, 'epd_12_in_48_lib_32bit.so') if os.path.exists(so_filename): spi = CDLL(so_filename) break if spi is None: - RuntimeError('Cannot find epd_12_in_48_lib.so') + RuntimeError('Cannot find DEV_Config.so') def digital_write(pin, value): - GPIO.output(pin, value) + spi.DEV_Digital_Write(pin, value) def digital_read(pin): - return GPIO.input(pin) + return spi.DEV_Digital_Read(pin) def spi_writebyte(value): @@ -84,68 +87,15 @@ def delay_ms(delaytime): def module_init(): - GPIO.setmode(GPIO.BCM) - GPIO.setwarnings(False) - GPIO.setup(EPD_SCK_PIN, GPIO.OUT) - GPIO.setup(EPD_MOSI_PIN, GPIO.OUT) - - logging.debug("python call wiringPi Lib") - - GPIO.setup(EPD_M2S2_RST_PIN, GPIO.OUT) - GPIO.setup(EPD_M1S1_RST_PIN, GPIO.OUT) - GPIO.setup(EPD_M2S2_DC_PIN, GPIO.OUT) - GPIO.setup(EPD_M1S1_DC_PIN, GPIO.OUT) - GPIO.setup(EPD_S1_CS_PIN, GPIO.OUT) - GPIO.setup(EPD_S2_CS_PIN, GPIO.OUT) - GPIO.setup(EPD_M1_CS_PIN, GPIO.OUT) - GPIO.setup(EPD_M2_CS_PIN, GPIO.OUT) - - GPIO.setup(EPD_S1_BUSY_PIN, GPIO.IN) - GPIO.setup(EPD_S2_BUSY_PIN, GPIO.IN) - GPIO.setup(EPD_M1_BUSY_PIN, GPIO.IN) - GPIO.setup(EPD_M2_BUSY_PIN, GPIO.IN) - - digital_write(EPD_M1_CS_PIN, 1) - digital_write(EPD_S1_CS_PIN, 1) - digital_write(EPD_M2_CS_PIN, 1) - digital_write(EPD_S2_CS_PIN, 1) - - digital_write(EPD_M2S2_RST_PIN, 0) - digital_write(EPD_M1S1_RST_PIN, 0) - digital_write(EPD_M2S2_DC_PIN, 1) - digital_write(EPD_M1S1_DC_PIN, 1) - spi.DEV_ModuleInit() def module_exit(): - digital_write(EPD_M2S2_RST_PIN, 0) - digital_write(EPD_M1S1_RST_PIN, 0) - digital_write(EPD_M2S2_DC_PIN, 0) - digital_write(EPD_M1S1_DC_PIN, 0) - digital_write(EPD_S1_CS_PIN, 1) - digital_write(EPD_S2_CS_PIN, 1) - digital_write(EPD_M1_CS_PIN, 1) - digital_write(EPD_M2_CS_PIN, 1) + spi.DEV_ModuleExit() def spi_readbyte(Reg): - GPIO.setup(EPD_MOSI_PIN, GPIO.IN) - j = 0 - # time.sleep(0.01) - for i in range(0, 8): - GPIO.output(EPD_SCK_PIN, GPIO.LOW) - # time.sleep(0.01) - j = j << 1 - if (GPIO.input(EPD_MOSI_PIN) == GPIO.HIGH): - j |= 0x01 - else: - j &= 0xfe - # time.sleep(0.01) - GPIO.output(EPD_SCK_PIN, GPIO.HIGH) - # time.sleep(0.01) - GPIO.setup(EPD_MOSI_PIN, GPIO.OUT) - return j + return spi.DEV_SPI_ReadByte(Reg) def delay_ms(delaytime):