diff --git a/src/libs/__init__.py b/src/libs/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/libs/lib/__init__.py b/src/libs/lib/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/libs/lib/waveshare_epd/__init__.py b/src/libs/lib/waveshare_epd/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/libs/lib/waveshare_epd/epd1in54.py b/src/libs/lib/waveshare_epd/epd1in54.py
deleted file mode 100644
index afed50ee50611d872070c85c3094a6f4779f69d5..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd1in54.py
+++ /dev/null
@@ -1,258 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd1in54.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V3.1
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# V3.1(2019-06-18):
-# 2.remove commands define:
-#   #define PANEL_SETTING                               0x00
-#   #define POWER_SETTING                               0x01
-#   #define POWER_OFF                                   0x02
-#   #define POWER_OFF_SEQUENCE_SETTING                  0x03
-#   #define POWER_ON                                    0x04
-#   #define POWER_ON_MEASURE                            0x05
-#   #define BOOSTER_SOFT_START                          0x06
-#   #define DEEP_SLEEP                                  0x07
-#   #define DATA_START_TRANSMISSION_1                   0x10
-#   #define DATA_STOP                                   0x11
-#   #define DISPLAY_REFRESH                             0x12
-#   #define DATA_START_TRANSMISSION_2                   0x13
-#   #define PLL_CONTROL                                 0x30
-#   #define TEMPERATURE_SENSOR_COMMAND                  0x40
-#   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
-#   #define TEMPERATURE_SENSOR_WRITE                    0x42
-#   #define TEMPERATURE_SENSOR_READ                     0x43
-#   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
-#   #define LOW_POWER_DETECTION                         0x51
-#   #define TCON_SETTING                                0x60
-#   #define TCON_RESOLUTION                             0x61
-#   #define SOURCE_AND_GATE_START_SETTING               0x62
-#   #define GET_STATUS                                  0x71
-#   #define AUTO_MEASURE_VCOM                           0x80
-#   #define VCOM_VALUE                                  0x81
-#   #define VCM_DC_SETTING_REGISTER                     0x82
-#   #define PROGRAM_MODE                                0xA0
-#   #define ACTIVE_PROGRAM                              0xA1
-#   #define READ_OTP_DATA                               0xA2
-# -----------------------------------------------------------------------------
-# V3.0(2018-11-01):
-# # 1.Remove:
-#   digital_write(self, pin, value)
-#   digital_read(self, pin)
-#   delay_ms(self, delaytime)
-#   set_lut(self, lut)
-#   self.lut = self.lut_full_update
-# * 2.Change:
-#   display_frame -> TurnOnDisplay
-#   set_memory_area -> SetWindow
-#   set_memory_pointer -> SetCursor
-# * 3.How to use
-#   epd = epd1in54.EPD()
-#   epd.init(epd.lut_full_update)
-#   image = Image.new('1', (epd1in54.EPD_WIDTH, epd1in54.EPD_HEIGHT), 255)
-#   ...
-#   drawing ......
-#   ...
-#   epd.display(getbuffer(image))
-# ******************************************************************************/
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 200
-EPD_HEIGHT      = 200
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    lut_full_update = [
-        0x02, 0x02, 0x01, 0x11, 0x12, 0x12, 0x22, 0x22, 
-        0x66, 0x69, 0x69, 0x59, 0x58, 0x99, 0x99, 0x88, 
-        0x00, 0x00, 0x00, 0x00, 0xF8, 0xB4, 0x13, 0x51, 
-        0x35, 0x51, 0x51, 0x19, 0x01, 0x00
-    ]
-
-    lut_partial_update  = [
-        0x10, 0x18, 0x18, 0x08, 0x18, 0x18, 0x08, 0x00, 
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-        0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x44, 0x12, 
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ]
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)         # module reset
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 1):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)
-        logging.debug("e-Paper busy release")
-
-    def TurnOnDisplay(self):
-        self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
-        self.send_data(0xC4)
-        self.send_command(0x20) # MASTER_ACTIVATION
-        self.send_command(0xFF) # TERMINATE_FRAME_READ_WRITE
-        
-        self.ReadBusy()
-
-    def SetWindow(self, x_start, y_start, x_end, y_end):
-        self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION
-        # x point must be the multiple of 8 or the last 3 bits will be ignored
-        self.send_data((x_start >> 3) & 0xFF)
-        self.send_data((x_end >> 3) & 0xFF)
-        self.send_command(0x45) # SET_RAM_Y_ADDRESS_START_END_POSITION
-        self.send_data(y_start & 0xFF)
-        self.send_data((y_start >> 8) & 0xFF)
-        self.send_data(y_end & 0xFF)
-        self.send_data((y_end >> 8) & 0xFF)
-
-    def SetCursor(self, x, y):
-        self.send_command(0x4E) # SET_RAM_X_ADDRESS_COUNTER
-        # x point must be the multiple of 8 or the last 3 bits will be ignored
-        self.send_data((x >> 3) & 0xFF)
-        
-        self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER
-        self.send_data(y & 0xFF)
-        self.send_data((y >> 8) & 0xFF)
-        # self.ReadBusy()
-        
-    def init(self, lut):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01) # DRIVER_OUTPUT_CONTROL
-        self.send_data((EPD_HEIGHT - 1) & 0xFF)
-        self.send_data(((EPD_HEIGHT - 1) >> 8) & 0xFF)
-        self.send_data(0x00) # GD = 0 SM = 0 TB = 0
-        
-        self.send_command(0x0C) # BOOSTER_SOFT_START_CONTROL
-        self.send_data(0xD7)
-        self.send_data(0xD6)
-        self.send_data(0x9D)
-        
-        self.send_command(0x2C) # WRITE_VCOM_REGISTER
-        self.send_data(0xA8) # VCOM 7C
-        
-        self.send_command(0x3A) # SET_DUMMY_LINE_PERIOD
-        self.send_data(0x1A) # 4 dummy lines per gate
-        
-        self.send_command(0x3B) # SET_GATE_TIME
-        self.send_data(0x08) # 2us per line
-        
-        self.send_command(0x11) # DATA_ENTRY_MODE_SETTING
-        self.send_data(0x03) # X increment Y increment
-        
-        # set the look-up table register
-        self.send_command(0x32)
-        for i in range(0, len(lut)):
-            self.send_data(lut[i])
-        # EPD hardware init end
-        return 0
-
-    def getbuffer(self, image):
-        buf = [0xFF] * (int(self.width / 8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, image):
-        if (image == None):
-            return
-            
-        self.SetWindow(0, 0, self.width, self.height)
-        for j in range(0, self.height):
-            self.SetCursor(0, j)
-            self.send_command(0x24)
-            for i in range(0, int(self.width / 8)):
-                self.send_data(image[i + j * int(self.width / 8)])   
-        self.TurnOnDisplay()
-        
-    def Clear(self, color):
-        # self.SetWindow(0, 0, self.width - 1, self.height - 1)
-        # send the color data
-        self.SetWindow(0, 0, self.width, self.height)
-        # epdconfig.digital_write(self.dc_pin, 1)
-        # epdconfig.digital_write(self.cs_pin, 0)
-        for j in range(0, self.height):
-            self.SetCursor(0, j)
-            self.send_command(0x24)
-            for i in range(0, int(self.width / 8)):
-                self.send_data(color)
-        # epdconfig.digital_write(self.cs_pin, 1)
-        self.TurnOnDisplay()
-
-    def sleep(self):
-        self.send_command(0x10) # DEEP_SLEEP_MODE
-        self.send_data(0x01)
-        
-        epdconfig.module_exit()
-
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd1in54_V2.py b/src/libs/lib/waveshare_epd/epd1in54_V2.py
deleted file mode 100644
index 8c8f09adcaa7d44774ba3a928e63714f945b9da4..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd1in54_V2.py
+++ /dev/null
@@ -1,207 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd1in54_V2.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V1
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 200
-EPD_HEIGHT      = 200
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 1):
-            epdconfig.delay_ms(100)
-        logging.debug("e-Paper busy release")
-
-    def TurnOnDisplay(self):
-        self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
-        self.send_data(0xF7)
-        self.send_command(0x20) # MASTER_ACTIVATION
-        
-        self.ReadBusy()
-    
-    def TurnOnDisplayPart(self):
-        self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
-        self.send_data(0xFF)
-        self.send_command(0x20) # MASTER_ACTIVATION
-        
-        self.ReadBusy()
-
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-            
-        # EPD hardware init start
-        self.reset()
-        
-        self.ReadBusy()
-        self.send_command(0x12) # SWRESET
-        self.ReadBusy()
-        
-        self.send_command(0x01) # DRIVER_OUTPUT_CONTROL
-        self.send_data(0xC7) # (EPD_HEIGHT - 1) & 0xFF
-        self.send_data(0x00) # ((EPD_HEIGHT - 1) >> 8) & 0xFF
-        self.send_data(0x01) # GD = 0 SM = 0 TB = 0
-        
-        self.send_command(0x11) # data entry mode
-        self.send_data(0x01)
-        
-        self.send_command(0x44) # set Ram-X address start/end position
-        self.send_data(0x00)
-        self.send_data(0x18) # 0x0C-->(18+1)*8=200
-        
-        self.send_command(0x45) # set Ram-Y address start/end position
-        self.send_data(0xC7) # 0xC7-->(199+1)=200
-        self.send_data(0x00)
-        self.send_data(0x00)
-        self.send_data(0x00)
-
-        self.send_command(0x3C) # BorderWavefrom
-        self.send_data(0x01)
-
-        self.send_command(0x18)
-        self.send_data(0x80)
-
-        self.send_command(0x22) # #Load Temperature and waveform setting.
-        self.send_data(0XB1)
-        self.send_command(0x20)
-
-        self.send_command(0x4E) # set RAM x address count to 0;
-        self.send_data(0x00)
-        self.send_command(0x4F) # set RAM y address count to 0X199;
-        self.send_data(0xC7)
-        self.send_data(0x00)
-        
-        self.ReadBusy()
-        
-    def Clear(self, color):
-        self.send_command(0x24)
-        for j in range(0, self.height):
-            for i in range(0, int(self.width / 8)):
-                self.send_data(color)
-        self.TurnOnDisplay()
-        
-    def getbuffer(self, image):
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, image):
-        if (image == None):
-            return
-            
-        self.send_command(0x24)
-        for j in range(0, self.height):
-            for i in range(0, int(self.width / 8)):
-                self.send_data(image[i + j * int(self.width / 8)])   
-        self.TurnOnDisplay()
-        
-    def displayPartBaseImage(self, image):
-        if (image == None):
-            return
-            
-        self.send_command(0x24)
-        for j in range(0, self.height):
-            for i in range(0, int(self.width / 8)):
-                self.send_data(image[i + j * int(self.width / 8)])
-        
-        self.send_command(0x26)
-        for j in range(0, self.height):
-            for i in range(0, self.width / 8):
-                self.send_data(image[i + j * int(self.width / 8)])
-                
-        self.TurnOnDisplayPart()
-        
-    def displayPart(self, image):
-        if (image == None):
-            return
-            
-        self.send_command(0x24)
-        for j in range(0, self.height):
-            for i in range(0, int(self.width / 8)):
-                self.send_data(image[i + j * int(self.width / 8)])
-                
-        self.TurnOnDisplayPart()
-        
-    def sleep(self):
-        self.send_command(0x10) # DEEP_SLEEP_MODE
-        self.send_data(0x01)
-        
-        epdconfig.module_exit()
-
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd1in54b.py b/src/libs/lib/waveshare_epd/epd1in54b.py
deleted file mode 100644
index 7b241c9d898553d5730e808eaf19ad325d261582..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd1in54b.py
+++ /dev/null
@@ -1,219 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd1in54b.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 200
-EPD_HEIGHT      = 200
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    lut_vcom0 = [0x0E, 0x14, 0x01, 0x0A, 0x06, 0x04, 0x0A, 0x0A, 0x0F, 0x03, 0x03, 0x0C, 0x06, 0x0A, 0x00]
-    lut_w = [0x0E, 0x14, 0x01, 0x0A, 0x46, 0x04, 0x8A, 0x4A, 0x0F, 0x83, 0x43, 0x0C, 0x86, 0x0A, 0x04]
-    lut_b = [0x0E, 0x14, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A, 0x0F, 0x83, 0x43, 0x0C, 0x06, 0x4A, 0x04]
-    lut_g1 = [0x8E, 0x94, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A, 0x0F, 0x83, 0x43, 0x0C, 0x06, 0x0A, 0x04]
-    lut_g2 = [0x8E, 0x94, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A, 0x0F, 0x83, 0x43, 0x0C, 0x06, 0x0A, 0x04]
-    lut_vcom1 = [0x03, 0x1D, 0x01, 0x01, 0x08, 0x23, 0x37, 0x37, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-    lut_red0 = [0x83, 0x5D, 0x01, 0x81, 0x48, 0x23, 0x77, 0x77, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
-    lut_red1 = [0x03, 0x1D, 0x01, 0x01, 0x08, 0x23, 0x37, 0x37, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 
-    
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0) # module reset
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):
-            epdconfig.delay_ms(100)    
-        logging.debug("e-Paper busy release")
-      
-    def set_lut_bw(self):
-        self.send_command(0x20) # vcom
-        for count in range(0, 15):
-            self.send_data(self.lut_vcom0[count])
-        self.send_command(0x21) # ww --
-        for count in range(0, 15):
-            self.send_data(self.lut_w[count])
-        self.send_command(0x22) # bw r
-        for count in range(0, 15):
-            self.send_data(self.lut_b[count])
-        self.send_command(0x23) # wb w
-        for count in range(0, 15):
-            self.send_data(self.lut_g1[count])
-        self.send_command(0x24) # bb b
-        for count in range(0, 15):
-            self.send_data(self.lut_g2[count])
-
-    def set_lut_red(self):
-        self.send_command(0x25)
-        for count in range(0, 15):
-            self.send_data(self.lut_vcom1[count])
-        self.send_command(0x26)
-        for count in range(0, 15):
-            self.send_data(self.lut_red0[count])
-        self.send_command(0x27)
-        for count in range(0, 15):
-            self.send_data(self.lut_red1[count])
-            
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01) # POWER_SETTING
-        self.send_data(0x07)
-        self.send_data(0x00)
-        self.send_data(0x08)
-        self.send_data(0x00)
-        self.send_command(0x06) # BOOSTER_SOFT_START
-        self.send_data(0x07)
-        self.send_data(0x07)
-        self.send_data(0x07)
-        self.send_command(0x04) # POWER_ON
-
-        self.ReadBusy()
-
-        self.send_command(0X00) # PANEL_SETTING
-        self.send_data(0xCF)
-        self.send_command(0X50) # VCOM_AND_DATA_INTERVAL_SETTING
-        self.send_data(0x17)
-        self.send_command(0x30) # PLL_CONTROL
-        self.send_data(0x39)
-        self.send_command(0x61) # TCON_RESOLUTION set x and y
-        self.send_data(0xC8)
-        self.send_data(0x00)
-        self.send_data(0xC8)
-        self.send_command(0x82) # VCM_DC_SETTING_REGISTER
-        self.send_data(0x0E)
-        
-        self.set_lut_bw()
-        self.set_lut_red()
-        return 0
-
-    def getbuffer(self, image):
-        buf = [0xFF] * int(self.width * self.height / 8)
-        # Set buffer to value of Python Imaging Library image.
-        # Image must be in mode 1.
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        if imwidth != self.width or imheight != self.height:
-            raise ValueError('Image must be same dimensions as display \
-                ({0}x{1}).' .format(self.width, self.height))
-
-        pixels = image_monocolor.load()
-        for y in range(self.height):
-            for x in range(self.width):
-                # Set the bits for the column of pixels at the current position.
-                if pixels[x, y] == 0:
-                    buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        return buf
-
-    def display(self, blackimage, redimage):
-        # send black data
-        if (blackimage != None):
-            self.send_command(0x10) # DATA_START_TRANSMISSION_1
-            for i in range(0, int(self.width * self.height / 8)):
-                temp = 0x00
-                for bit in range(0, 4):
-                    if (blackimage[i] & (0x80 >> bit) != 0):
-                        temp |= 0xC0 >> (bit * 2)
-                self.send_data(temp)  
-                temp = 0x00
-                for bit in range(4, 8):
-                    if (blackimage[i] & (0x80 >> bit) != 0):
-                        temp |= 0xC0 >> ((bit - 4) * 2)
-                self.send_data(temp)
-                
-        # send red data        
-        if (redimage != None):
-            self.send_command(0x13) # DATA_START_TRANSMISSION_2
-            for i in range(0, int(self.width * self.height / 8)):
-                self.send_data(redimage[i])  
-
-        self.send_command(0x12) # DISPLAY_REFRESH
-        self.ReadBusy()
-
-    def Clear(self):
-        self.send_command(0x10) # DATA_START_TRANSMISSION_1
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-            self.send_data(0xFF)
-            
-        self.send_command(0x13) # DATA_START_TRANSMISSION_2
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-
-        self.send_command(0x12) # DISPLAY_REFRESH
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0x50) # VCOM_AND_DATA_INTERVAL_SETTING
-        self.send_data(0x17)
-        self.send_command(0x82) # to solve Vcom drop 
-        self.send_data(0x00)        
-        self.send_command(0x01) # power setting      
-        self.send_data(0x02) # gate switch to external
-        self.send_data(0x00)
-        self.send_data(0x00) 
-        self.send_data(0x00) 
-        self.ReadBusy()
-        
-        self.send_command(0x02) # power off
-        
-        epdconfig.module_exit()
-
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd1in54c.py b/src/libs/lib/waveshare_epd/epd1in54c.py
deleted file mode 100644
index 11f9c6f869e8066296a3dfab6fa36b082ecdcea2..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd1in54c.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd1in54c.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 152
-EPD_HEIGHT      = 152
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(10) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(1)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(10)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):        
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      #  0: idle, 1: busy
-            epdconfig.delay_ms(200)                
-        logging.debug("e-Paper busy release")
-     
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x06) # boost soft start
-        self.send_data(0x17)
-        self.send_data(0x17)
-        self.send_data(0x17)
-        self.send_command(0x04) # power on
-        
-        self.ReadBusy()
-        
-        self.send_command(0x00) # panel setting
-        self.send_data(0x0f) # LUT from OTP,160x296
-        self.send_data(0x0d) # VCOM to 0V fast
-        
-        self.send_command(0x61) # resolution setting
-        self.send_data(0x98)
-        self.send_data(0x00)
-        self.send_data(0x98)
-        
-        self.send_command(0x50)
-        self.send_data(0x77)
-
-    def getbuffer(self, image):
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    #  Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, blackimage, yellowimage):
-        self.send_command(0x10)
-        logging.debug("blackimage")
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(blackimage[i])
-        self.send_command(0x13)
-        logging.debug("yellowimage")
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(yellowimage[i])
-            
-        self.send_command(0x12)
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)            
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-            
-        self.send_command(0x12)
-        self.ReadBusy()
-
-    #  after this, call epd.init() to awaken the module
-    def sleep(self):
-        self.send_command(0X02)  #  power off
-        self.ReadBusy() 
-        self.send_command(0X07)  #  deep sleep
-        self.send_data(0xA5)
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in13.py b/src/libs/lib/waveshare_epd/epd2in13.py
deleted file mode 100644
index 3039b59daa3169152fc8c3a198a66b7fbfc0be5f..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in13.py
+++ /dev/null
@@ -1,225 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in13.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-import numpy as np
-
-# Display resolution
-EPD_WIDTH       = 122
-EPD_HEIGHT      = 250
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-        
-    lut_full_update = [
-        0x22, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x11,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
-        0x01, 0x00, 0x00, 0x00, 0x00, 0x00
-    ]
-
-    lut_partial_update  = [
-        0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ]
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):        
-        while(epdconfig.digital_read(self.busy_pin) == 1):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)            
-
-    def TurnOnDisplay(self):
-        self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
-        self.send_data(0xC4)
-        self.send_command(0x20) # MASTER_ACTIVATION
-        self.send_command(0xFF) # TERMINATE_FRAME_READ_WRITE
-        
-        logging.debug("e-Paper busy")
-        self.ReadBusy()
-        logging.debug("e-Paper busy release")
-
-    def init(self, lut):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        self.send_command(0x01) # DRIVER_OUTPUT_CONTROL
-        self.send_data((EPD_HEIGHT - 1) & 0xFF)
-        self.send_data(((EPD_HEIGHT - 1) >> 8) & 0xFF)
-        self.send_data(0x00) # GD = 0 SM = 0 TB = 0
-        
-        self.send_command(0x0C) # BOOSTER_SOFT_START_CONTROL
-        self.send_data(0xD7)
-        self.send_data(0xD6)
-        self.send_data(0x9D)
-        
-        self.send_command(0x2C) # WRITE_VCOM_REGISTER
-        self.send_data(0xA8) # VCOM 7C
-        
-        self.send_command(0x3A) # SET_DUMMY_LINE_PERIOD
-        self.send_data(0x1A) # 4 dummy lines per gate
-        
-        self.send_command(0x3B) # SET_GATE_TIME
-        self.send_data(0x08) # 2us per line
-        
-        self.send_command(0X3C) # BORDER_WAVEFORM_CONTROL
-        self.send_data(0x03)      
-        
-        self.send_command(0X11) # DATA_ENTRY_MODE_SETTING
-        self.send_data(0x03) # X increment; Y increment
-        
-        # WRITE_LUT_REGISTER
-        self.send_command(0x32)
-        for count in range(30):
-            self.send_data(lut[count])
-
-        return 0
-        
-##
- #  @brief: specify the memory area for data R/W
- ##
-    def SetWindows(self, x_start, y_start, x_end, y_end):
-        self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION
-        self.send_data((x_start >> 3) & 0xFF)
-        self.send_data((x_end >> 3) & 0xFF)
-        self.send_command(0x45) # SET_RAM_Y_ADDRESS_START_END_POSITION
-        self.send_data(y_start & 0xFF)
-        self.send_data((y_start >> 8) & 0xFF)
-        self.send_data(y_end & 0xFF)
-        self.send_data((y_end >> 8) & 0xFF)
-
-##
- #  @brief: specify the start point for data R/W
- ##
-    def SetCursor(self, x, y):
-        self.send_command(0x4E) # SET_RAM_X_ADDRESS_COUNTER
-        # x point must be the multiple of 8 or the last 3 bits will be ignored
-        self.send_data((x >> 3) & 0xFF)
-        self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER
-        self.send_data(y & 0xFF)
-        self.send_data((y >> 8) & 0xFF)
-        self.ReadBusy()
-        
-    def getbuffer(self, image):
-        if self.width%8 == 0:
-            linewidth = int(self.width/8)
-        else:
-            linewidth = int(self.width/8) + 1
-         
-        buf = [0xFF] * (linewidth * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):                    
-                    if pixels[x, y] == 0:
-                        # x = imwidth - x
-                        buf[int(x / 8) + y * linewidth] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        # newy = imwidth - newy - 1
-                        buf[int(newx / 8) + newy*linewidth] &= ~(0x80 >> (y % 8))
-        return buf   
-
-        
-    def display(self, image):
-        if self.width%8 == 0:
-            linewidth = int(self.width/8)
-        else:
-            linewidth = int(self.width/8) + 1
-
-        self.SetWindows(0, 0, self.width, self.height);
-        for j in range(0, self.height):
-            self.SetCursor(0, j);
-            self.send_command(0x24);
-            for i in range(0, linewidth):
-                self.send_data(image[i + j * linewidth])   
-        self.TurnOnDisplay()
-    
-    def Clear(self, color):
-        if self.width%8 == 0:
-            linewidth = int(self.width/8)
-        else:
-            linewidth = int(self.width/8) + 1
-
-        self.SetWindows(0, 0, self.width, self.height);
-        for j in range(0, self.height):
-            self.SetCursor(0, j);
-            self.send_command(0x24);
-            for i in range(0, linewidth):
-                self.send_data(color)   
-        self.TurnOnDisplay()
-
-    def sleep(self):
-        self.send_command(0x10) #enter deep sleep
-        self.send_data(0x01)
-        epdconfig.delay_ms(100)
-         
-        epdconfig.module_exit()
-        
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in13_V2.py b/src/libs/lib/waveshare_epd/epd2in13_V2.py
deleted file mode 100644
index fe532f46c7b3ef4d1d0ee799c1189415581fbef9..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in13_V2.py
+++ /dev/null
@@ -1,316 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in13_V2.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-import numpy as np
-
-# Display resolution
-EPD_WIDTH       = 122
-EPD_HEIGHT      = 250
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-        
-    FULL_UPDATE = 0
-    PART_UPDATE = 1
-    lut_full_update= [
-        0x80,0x60,0x40,0x00,0x00,0x00,0x00,             #LUT0: BB:     VS 0 ~7
-        0x10,0x60,0x20,0x00,0x00,0x00,0x00,             #LUT1: BW:     VS 0 ~7
-        0x80,0x60,0x40,0x00,0x00,0x00,0x00,             #LUT2: WB:     VS 0 ~7
-        0x10,0x60,0x20,0x00,0x00,0x00,0x00,             #LUT3: WW:     VS 0 ~7
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,             #LUT4: VCOM:   VS 0 ~7
-
-        0x03,0x03,0x00,0x00,0x02,                       # TP0 A~D RP0
-        0x09,0x09,0x00,0x00,0x02,                       # TP1 A~D RP1
-        0x03,0x03,0x00,0x00,0x02,                       # TP2 A~D RP2
-        0x00,0x00,0x00,0x00,0x00,                       # TP3 A~D RP3
-        0x00,0x00,0x00,0x00,0x00,                       # TP4 A~D RP4
-        0x00,0x00,0x00,0x00,0x00,                       # TP5 A~D RP5
-        0x00,0x00,0x00,0x00,0x00,                       # TP6 A~D RP6
-
-        0x15,0x41,0xA8,0x32,0x30,0x0A,
-    ]
-
-    lut_partial_update = [ #20 bytes
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,             #LUT0: BB:     VS 0 ~7
-        0x80,0x00,0x00,0x00,0x00,0x00,0x00,             #LUT1: BW:     VS 0 ~7
-        0x40,0x00,0x00,0x00,0x00,0x00,0x00,             #LUT2: WB:     VS 0 ~7
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,             #LUT3: WW:     VS 0 ~7
-        0x00,0x00,0x00,0x00,0x00,0x00,0x00,             #LUT4: VCOM:   VS 0 ~7
-
-        0x0A,0x00,0x00,0x00,0x00,                       # TP0 A~D RP0
-        0x00,0x00,0x00,0x00,0x00,                       # TP1 A~D RP1
-        0x00,0x00,0x00,0x00,0x00,                       # TP2 A~D RP2
-        0x00,0x00,0x00,0x00,0x00,                       # TP3 A~D RP3
-        0x00,0x00,0x00,0x00,0x00,                       # TP4 A~D RP4
-        0x00,0x00,0x00,0x00,0x00,                       # TP5 A~D RP5
-        0x00,0x00,0x00,0x00,0x00,                       # TP6 A~D RP6
-
-        0x15,0x41,0xA8,0x32,0x30,0x0A,
-    ]
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        while(epdconfig.digital_read(self.busy_pin) == 1):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)    
-
-    def TurnOnDisplay(self):
-        self.send_command(0x22)
-        self.send_data(0xC7)
-        self.send_command(0x20)        
-        self.ReadBusy()
-        
-    def TurnOnDisplayPart(self):
-        self.send_command(0x22)
-        self.send_data(0x0c)
-        self.send_command(0x20)        
-        self.ReadBusy()
-        
-    def init(self, update):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        if(update == self.FULL_UPDATE):
-            self.ReadBusy()
-            self.send_command(0x12) # soft reset
-            self.ReadBusy()
-
-            self.send_command(0x74) #set analog block control
-            self.send_data(0x54)
-            self.send_command(0x7E) #set digital block control
-            self.send_data(0x3B)
-
-            self.send_command(0x01) #Driver output control
-            self.send_data(0xF9)
-            self.send_data(0x00)
-            self.send_data(0x00)
-
-            self.send_command(0x11) #data entry mode
-            self.send_data(0x01)
-
-            self.send_command(0x44) #set Ram-X address start/end position
-            self.send_data(0x00)
-            self.send_data(0x0F)    #0x0C-->(15+1)*8=128
-
-            self.send_command(0x45) #set Ram-Y address start/end position
-            self.send_data(0xF9)   #0xF9-->(249+1)=250
-            self.send_data(0x00)
-            self.send_data(0x00)
-            self.send_data(0x00)
-            
-            self.send_command(0x3C) #BorderWavefrom
-            self.send_data(0x03)
-
-            self.send_command(0x2C)     #VCOM Voltage
-            self.send_data(0x55)    #
-
-            self.send_command(0x03)
-            self.send_data(self.lut_full_update[70])
-
-            self.send_command(0x04) #
-            self.send_data(self.lut_full_update[71])
-            self.send_data(self.lut_full_update[72])
-            self.send_data(self.lut_full_update[73])
-
-            self.send_command(0x3A)     #Dummy Line
-            self.send_data(self.lut_full_update[74])
-            self.send_command(0x3B)     #Gate time
-            self.send_data(self.lut_full_update[75])
-
-            self.send_command(0x32)
-            for count in range(70):
-                self.send_data(self.lut_full_update[count])
-
-            self.send_command(0x4E)   # set RAM x address count to 0
-            self.send_data(0x00)
-            self.send_command(0x4F)   # set RAM y address count to 0X127
-            self.send_data(0xF9)
-            self.send_data(0x00)
-            self.ReadBusy()
-        else:
-            self.send_command(0x2C)     #VCOM Voltage
-            self.send_data(0x26)
-
-            self.ReadBusy()
-
-            self.send_command(0x32)
-            for count in range(70):
-                self.send_data(self.lut_partial_update[count])
-
-            self.send_command(0x37)
-            self.send_data(0x00)
-            self.send_data(0x00)
-            self.send_data(0x00)
-            self.send_data(0x00)
-            self.send_data(0x40)
-            self.send_data(0x00)
-            self.send_data(0x00)
-
-            self.send_command(0x22)
-            self.send_data(0xC0)
-            self.send_command(0x20)
-            self.ReadBusy()
-
-            self.send_command(0x3C) #BorderWavefrom
-            self.send_data(0x01)
-        return 0
-
-    def getbuffer(self, image):
-        if self.width%8 == 0:
-            linewidth = int(self.width/8)
-        else:
-            linewidth = int(self.width/8) + 1
-         
-        buf = [0xFF] * (linewidth * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):                    
-                    if pixels[x, y] == 0:
-                        x = imwidth - x
-                        buf[int(x / 8) + y * linewidth] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        newy = imwidth - newy - 1
-                        buf[int(newx / 8) + newy*linewidth] &= ~(0x80 >> (y % 8))
-        return buf   
-        
-        
-    def display(self, image):
-        if self.width%8 == 0:
-            linewidth = int(self.width/8)
-        else:
-            linewidth = int(self.width/8) + 1
-
-        self.send_command(0x24)
-        for j in range(0, self.height):
-            for i in range(0, linewidth):
-                self.send_data(image[i + j * linewidth])   
-        self.TurnOnDisplay()
-        
-    def displayPartial(self, image):
-        if self.width%8 == 0:
-            linewidth = int(self.width/8)
-        else:
-            linewidth = int(self.width/8) + 1
-
-        self.send_command(0x24)
-        for j in range(0, self.height):
-            for i in range(0, linewidth):
-                self.send_data(image[i + j * linewidth])   
-                
-                
-        # self.send_command(0x26)
-        # for j in range(0, self.height):
-            # for i in range(0, linewidth):
-                # self.send_data(~image[i + j * linewidth])  
-        self.TurnOnDisplayPart()
-
-    def displayPartBaseImage(self, image):
-        if self.width%8 == 0:
-            linewidth = int(self.width/8)
-        else:
-            linewidth = int(self.width/8) + 1
-
-        self.send_command(0x24)
-        for j in range(0, self.height):
-            for i in range(0, linewidth):
-                self.send_data(image[i + j * linewidth])   
-                
-                
-        self.send_command(0x26)
-        for j in range(0, self.height):
-            for i in range(0, linewidth):
-                self.send_data(image[i + j * linewidth])  
-        self.TurnOnDisplay()
-    
-    def Clear(self, color):
-        if self.width%8 == 0:
-            linewidth = int(self.width/8)
-        else:
-            linewidth = int(self.width/8) + 1
-        # logging.debug(linewidth)
-        
-        self.send_command(0x24)
-        for j in range(0, self.height):
-            for i in range(0, linewidth):
-                self.send_data(color)   
-        self.TurnOnDisplay()
-
-    def sleep(self):
-        self.send_command(0x22) #POWER OFF
-        self.send_data(0xC3)
-        self.send_command(0x20)
-
-        self.send_command(0x10) #enter deep sleep
-        self.send_data(0x01)
-        epdconfig.delay_ms(100)
-
-        epdconfig.module_exit()
-
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in13bc.py b/src/libs/lib/waveshare_epd/epd2in13bc.py
deleted file mode 100644
index 864d8c51bd16e6205cca5ac5ef4c13f2fc570edb..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in13bc.py
+++ /dev/null
@@ -1,159 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in13bc.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 104
-EPD_HEIGHT      = 212
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)
-        logging.debug("e-Paper busy release")
-
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-            
-        self.reset()
-
-        self.send_command(0x06) # BOOSTER_SOFT_START
-        self.send_data(0x17)
-        self.send_data(0x17)
-        self.send_data(0x17)
-        
-        self.send_command(0x04) # POWER_ON
-        self.ReadBusy()
-        
-        self.send_command(0x00) # PANEL_SETTING
-        self.send_data(0x8F)
-        
-        self.send_command(0x50) # VCOM_AND_DATA_INTERVAL_SETTING
-        self.send_data(0xF0)
-        
-        self.send_command(0x61) # RESOLUTION_SETTING
-        self.send_data(self.width & 0xff)
-        self.send_data(self.height >> 8)
-        self.send_data(self.height & 0xff)
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, imageblack, imagered):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(imageblack[i])
-        self.send_command(0x92)
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(imagered[i])
-        self.send_command(0x92)
-        
-        self.send_command(0x12) # REFRESH
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-        self.send_command(0x92) 
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-        self.send_command(0x92)
-        
-        self.send_command(0x12) # REFRESH
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0x02) # POWER_OFF
-        self.ReadBusy()
-        self.send_command(0x07) # DEEP_SLEEP
-        self.send_data(0xA5) # check code
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in13d.py b/src/libs/lib/waveshare_epd/epd2in13d.py
deleted file mode 100644
index de02f869e6fb79646141c173dc910649c578d2f5..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in13d.py
+++ /dev/null
@@ -1,358 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in13d.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-from PIL import Image
-import RPi.GPIO as GPIO
-
-# Display resolution
-EPD_WIDTH       = 104
-EPD_HEIGHT      = 212
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    lut_vcomDC = [  
-        0x00, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x60, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x00, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x00, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00,
-    ]
-
-    lut_ww = [  
-        0x40, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x40, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0xA0, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_bw = [  
-        0x40, 0x17, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x0F, 0x0F, 0x00, 0x00, 0x03,
-        0x40, 0x0A, 0x01, 0x00, 0x00, 0x01,
-        0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_wb = [
-        0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_bb = [ 
-        0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    
-    lut_vcom1 = [  
-        0x00, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00,
-    ]
-
-    lut_ww1 = [  
-        0x00, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_bw1 = [  
-        0x80, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_wb1 = [
-        0x40, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_bb1 = [ 
-        0x00, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            self.send_command(0x71)
-            epdconfig.delay_ms(100)  
-        logging.debug("e-Paper busy release")
-        
-    def TurnOnDisplay(self):
-        self.send_command(0x12)
-        epdconfig.delay_ms(10)
-        self.ReadBusy()
-        
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01)	# POWER SETTING
-        self.send_data(0x03)
-        self.send_data(0x00)
-        self.send_data(0x2b)
-        self.send_data(0x2b)
-        self.send_data(0x03)
-
-        self.send_command(0x06)	# boost soft start
-        self.send_data(0x17) # A
-        self.send_data(0x17) # B
-        self.send_data(0x17) # C
-
-        self.send_command(0x04)
-        self.ReadBusy()
-
-        self.send_command(0x00)	# panel setting
-        self.send_data(0xbf) # LUT from OTP,128x296
-        self.send_data(0x0d) # VCOM to 0V fast
-
-        self.send_command(0x30)	# PLL setting
-        self.send_data(0x3a) # 3a 100HZ   29 150Hz 39 200HZ	31 171HZ
-
-        self.send_command(0x61)	# resolution setting
-        self.send_data(self.width)
-        self.send_data((self.height >> 8) & 0xff)
-        self.send_data(self.height& 0xff)
-
-        self.send_command(0x82)	# vcom_DC setting
-        self.send_data(0x28)
-        return 0
-        
-    def SetFullReg(self):
-        self.send_command(0x82)
-        self.send_data(0x00)
-        self.send_command(0X50)
-        self.send_data(0x97)
-        
-        self.send_command(0x20) # vcom
-        for count in range(0, 44):
-            self.send_data(self.lut_vcomDC[count])
-        self.send_command(0x21) # ww --
-        for count in range(0, 42):
-            self.send_data(self.lut_ww[count])
-        self.send_command(0x22) # bw r
-        for count in range(0, 42):
-            self.send_data(self.lut_bw[count])
-        self.send_command(0x23) # wb w
-        for count in range(0, 42):
-            self.send_data(self.lut_wb[count])
-        self.send_command(0x24) # bb b
-        for count in range(0, 42):
-            self.send_data(self.lut_bb[count])
-    
-    def SetPartReg(self):
-        self.send_command(0x82)
-        self.send_data(0x03)
-        self.send_command(0X50)
-        self.send_data(0x47)
-        
-        self.send_command(0x20) # vcom
-        for count in range(0, 44):
-            self.send_data(self.lut_vcom1[count])
-        self.send_command(0x21) # ww --
-        for count in range(0, 42):
-            self.send_data(self.lut_ww1[count])
-        self.send_command(0x22) # bw r
-        for count in range(0, 42):
-            self.send_data(self.lut_bw1[count])
-        self.send_command(0x23) # wb w
-        for count in range(0, 42):
-            self.send_data(self.lut_wb1[count])
-        self.send_command(0x24) # bb b
-        for count in range(0, 42):
-            self.send_data(self.lut_bb1[count])
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, image):
-        if (Image == None):
-            return
-            
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0x00)
-        epdconfig.delay_ms(10)
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(image[i])
-        epdconfig.delay_ms(10)
-        
-        self.SetFullReg()
-        self.TurnOnDisplay()
-        
-    def DisplayPartial(self, image):   
-        if (Image == None):
-            return
-            
-        self.SetPartReg()
-        self.send_command(0x91)
-        self.send_command(0x90)
-        self.send_data(0)
-        self.send_data(self.width - 1)
-
-        self.send_data(0)
-        self.send_data(0)
-        self.send_data(int(self.height / 256))
-        self.send_data(self.height % 256 - 1)
-        self.send_data(0x28)
-            
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(image[i])
-        epdconfig.delay_ms(10)
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(~image[i])
-        epdconfig.delay_ms(10)
-          
-        self.TurnOnDisplay()
-        
-    def Clear(self, color):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0x00)
-        epdconfig.delay_ms(10)
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-        epdconfig.delay_ms(10)
-        
-        self.SetFullReg()
-        self.TurnOnDisplay()
-
-    def sleep(self):
-        self.send_command(0X50)
-        self.send_data(0xf7)
-        self.send_command(0X02) # power off
-        self.send_command(0X07) # deep sleep  
-        self.send_data(0xA5)
-
-        epdconfig.module_exit()
-
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in7.py b/src/libs/lib/waveshare_epd/epd2in7.py
deleted file mode 100644
index e4741ca4ba3a09d062ff6a5f2f71fd04e9b681ae..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in7.py
+++ /dev/null
@@ -1,259 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in7.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 176
-EPD_HEIGHT      = 264
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    lut_vcom_dc = [0x00, 0x00,
-        0x00, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x60, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x00, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x00, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ]
-    lut_ww = [
-        0x40, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x40, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0xA0, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    lut_bw = [
-        0x40, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x40, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0xA0, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    lut_bb = [
-        0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    lut_wb = [
-        0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):        
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      #  0: idle, 1: busy
-            epdconfig.delay_ms(200)                
-        logging.debug("e-Paper busy release")
-
-    def set_lut(self):
-        self.send_command(0x20) # vcom
-        for count in range(0, 44):
-            self.send_data(self.lut_vcom_dc[count])
-        self.send_command(0x21) # ww --
-        for count in range(0, 42):
-            self.send_data(self.lut_ww[count])
-        self.send_command(0x22) # bw r
-        for count in range(0, 42):
-            self.send_data(self.lut_bw[count])
-        self.send_command(0x23) # wb w
-        for count in range(0, 42):
-            self.send_data(self.lut_bb[count])
-        self.send_command(0x24) # bb b
-        for count in range(0, 42):
-            self.send_data(self.lut_wb[count])
-            
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-            
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01) # POWER_SETTING
-        self.send_data(0x03) # VDS_EN, VDG_EN
-        self.send_data(0x00) # VCOM_HV, VGHL_LV[1], VGHL_LV[0]
-        self.send_data(0x2b) # VDH
-        self.send_data(0x2b) # VDL
-        self.send_data(0x09) # VDHR
-        
-        self.send_command(0x06) # BOOSTER_SOFT_START
-        self.send_data(0x07)
-        self.send_data(0x07)
-        self.send_data(0x17)
-        
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x60)
-        self.send_data(0xA5)
-        
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x89)
-        self.send_data(0xA5)
-        
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x90)
-        self.send_data(0x00)
-        
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x93)
-        self.send_data(0x2A)
-        
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0xA0)
-        self.send_data(0xA5)
-        
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0xA1)
-        self.send_data(0x00)
-        
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x73)
-        self.send_data(0x41)
-        
-        self.send_command(0x16) # PARTIAL_DISPLAY_REFRESH
-        self.send_data(0x00)
-        self.send_command(0x04) # POWER_ON
-        self.ReadBusy()
-
-        self.send_command(0x00) # PANEL_SETTING
-        self.send_data(0xAF) # KW-BF   KWR-AF    BWROTP 0f
-        
-        self.send_command(0x30) # PLL_CONTROL
-        self.send_data(0x3A) # 3A 100HZ   29 150Hz 39 200HZ    31 171HZ
-        
-        self.send_command(0x82) # VCM_DC_SETTING_REGISTER
-        self.send_data(0x12)
-        self.set_lut()
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, image):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(image[i])
-        self.send_command(0x12) 
-        self.ReadBusy()
-        
-    def Clear(self, color):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-        self.send_command(0x12) 
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0X50)
-        self.send_data(0xf7)
-        self.send_command(0X02)
-        self.send_command(0X07)
-        self.send_data(0xA5)
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in7b.py b/src/libs/lib/waveshare_epd/epd2in7b.py
deleted file mode 100644
index 4e938f02df8ca578c4c70b9180f7331613f8b422..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in7b.py
+++ /dev/null
@@ -1,269 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in7b.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 176
-EPD_HEIGHT      = 264
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    lut_vcom_dc = [
-        0x00, 0x00,
-        0x00, 0x1A, 0x1A, 0x00, 0x00, 0x01,
-        0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x00, 0x0E, 0x01, 0x0E, 0x01, 0x10,
-        0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
-        0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
-        0x00, 0x23, 0x00, 0x00, 0x00, 0x01
-    ]
-
-    lut_ww = [
-        0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
-        0x40, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
-        0x80, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
-        0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
-        0x00, 0x23, 0x00, 0x00, 0x00, 0x01
-    ]
-
-    # R22H    r
-    lut_bw = [
-        0xA0, 0x1A, 0x1A, 0x00, 0x00, 0x01,
-        0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
-        0x90, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0xB0, 0x04, 0x10, 0x00, 0x00, 0x05,
-        0xB0, 0x03, 0x0E, 0x00, 0x00, 0x0A,
-        0xC0, 0x23, 0x00, 0x00, 0x00, 0x01
-    ]
-
-    # R23H    w
-    lut_bb = [
-        0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
-        0x40, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
-        0x80, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
-        0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
-        0x00, 0x23, 0x00, 0x00, 0x00, 0x01
-    ]
-    # R24H    b
-    lut_wb = [
-        0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
-        0x20, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
-        0x10, 0x0A, 0x0A, 0x00, 0x00, 0x08,
-        0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
-        0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
-        0x00, 0x23, 0x00, 0x00, 0x00, 0x01
-    ]
-
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)
-        logging.debug("e-Paper busy release")
-        
-    def set_lut(self):
-        self.send_command(0x20)               # vcom
-        for count in range(0, 44):
-            self.send_data(self.lut_vcom_dc[count])
-        self.send_command(0x21)         # ww --
-        for count in range(0, 42):
-            self.send_data(self.lut_ww[count])
-        self.send_command(0x22)         # bw r
-        for count in range(0, 42):
-            self.send_data(self.lut_bw[count])
-        self.send_command(0x23)         # wb w
-        for count in range(0, 42):
-            self.send_data(self.lut_bb[count])
-        self.send_command(0x24)         # bb b
-        for count in range(0, 42):
-            self.send_data(self.lut_wb[count])
-            
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-            
-        self.reset()
-
-        self.send_command(0x04) # POWER_ON
-        self.ReadBusy()
-
-        self.send_command(0x00) # PANEL_SETTING
-        self.send_data(0xaf) #KW-BF   KWR-AF    BWROTP 0f
-        
-        self.send_command(0x30) # PLL_CONTROL
-        self.send_data(0x3a) #3A 100HZ   29 150Hz 39 200HZ    31 171HZ
-
-        self.send_command(0x01) # POWER_SETTING
-        self.send_data(0x03) # VDS_EN, VDG_EN
-        self.send_data(0x00) # VCOM_HV, VGHL_LV[1], VGHL_LV[0]
-        self.send_data(0x2b) # VDH
-        self.send_data(0x2b) # VDL
-        self.send_data(0x09) # VDHR
-
-        self.send_command(0x06) # BOOSTER_SOFT_START
-        self.send_data(0x07)
-        self.send_data(0x07)
-        self.send_data(0x17)
-
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x60)
-        self.send_data(0xA5)
-
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x89)
-        self.send_data(0xA5)
-
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x90)
-        self.send_data(0x00)
-        
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x93)
-        self.send_data(0x2A)
-
-        # Power optimization
-        self.send_command(0xF8)
-        self.send_data(0x73)
-        self.send_data(0x41)
-
-        self.send_command(0x82) # VCM_DC_SETTING_REGISTER
-        self.send_data(0x12)                   
-        self.send_command(0x50) # VCOM_AND_DATA_INTERVAL_SETTING
-        self.send_data(0x87) # define by OTP
-
-        self.set_lut()
-
-        self.send_command(0x16) # PARTIAL_DISPLAY_REFRESH
-        self.send_data(0x00)
-        
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, imageblack, imagered):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(~imageblack[i])
-        self.send_command(0x11)
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(~imagered[i])
-        self.send_command(0x11)
-        
-        self.send_command(0x12) 
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0x00)
-        self.send_command(0x11) 
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0x00)
-        self.send_command(0x11)
-        
-        self.send_command(0x12) 
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0X50)
-        self.send_data(0xf7)
-        self.send_command(0X02)
-        self.send_command(0X07)
-        self.send_data(0xA5)
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in9.py b/src/libs/lib/waveshare_epd/epd2in9.py
deleted file mode 100644
index 80671a457a1667770b696bd4683996fa03de011e..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in9.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in9.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 128
-EPD_HEIGHT      = 296
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    lut_full_update = [
-        0x50, 0xAA, 0x55, 0xAA, 0x11, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ]
-
-    lut_partial_update  = [
-        0x10, 0x18, 0x18, 0x08, 0x18, 0x18,
-        0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x13, 0x14, 0x44, 0x12,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-    ]
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        while(epdconfig.digital_read(self.busy_pin) == 1):      #  0: idle, 1: busy
-            epdconfig.delay_ms(200) 
-
-    def TurnOnDisplay(self):
-        self.send_command(0x22) # DISPLAY_UPDATE_CONTROL_2
-        self.send_data(0xC4)
-        self.send_command(0x20) # MASTER_ACTIVATION
-        self.send_command(0xFF) # TERMINATE_FRAME_READ_WRITE
-        
-        logging.debug("e-Paper busy")
-        self.ReadBusy()
-        logging.debug("e-Paper busy release")  
-
-    def SetWindow(self, x_start, y_start, x_end, y_end):
-        self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION
-        # x point must be the multiple of 8 or the last 3 bits will be ignored
-        self.send_data((x_start >> 3) & 0xFF)
-        self.send_data((x_end >> 3) & 0xFF)
-        self.send_command(0x45) # SET_RAM_Y_ADDRESS_START_END_POSITION
-        self.send_data(y_start & 0xFF)
-        self.send_data((y_start >> 8) & 0xFF)
-        self.send_data(y_end & 0xFF)
-        self.send_data((y_end >> 8) & 0xFF)
-
-    def SetCursor(self, x, y):
-        self.send_command(0x4E) # SET_RAM_X_ADDRESS_COUNTER
-        # x point must be the multiple of 8 or the last 3 bits will be ignored
-        self.send_data((x >> 3) & 0xFF)
-        self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER
-        self.send_data(y & 0xFF)
-        self.send_data((y >> 8) & 0xFF)
-        self.ReadBusy()
-        
-    def init(self, lut):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01) # DRIVER_OUTPUT_CONTROL
-        self.send_data((EPD_HEIGHT - 1) & 0xFF)
-        self.send_data(((EPD_HEIGHT - 1) >> 8) & 0xFF)
-        self.send_data(0x00) # GD = 0 SM = 0 TB = 0
-        
-        self.send_command(0x0C) # BOOSTER_SOFT_START_CONTROL 
-        self.send_data(0xD7)
-        self.send_data(0xD6)
-        self.send_data(0x9D)
-        
-        self.send_command(0x2C) # WRITE_VCOM_REGISTER
-        self.send_data(0xA8) # VCOM 7C
-        
-        self.send_command(0x3A) # SET_DUMMY_LINE_PERIOD
-        self.send_data(0x1A) # 4 dummy lines per gate
-        
-        self.send_command(0x3B) # SET_GATE_TIME
-        self.send_data(0x08) # 2us per line
-        
-        self.send_command(0x11) # DATA_ENTRY_MODE_SETTING
-        self.send_data(0x03) # X increment Y increment
-        
-        self.send_command(0x32) # WRITE_LUT_REGISTER
-        for i in range(0, len(lut)):
-            self.send_data(lut[i])
-        # EPD hardware init end
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, image):
-        if (image == None):
-            return            
-        self.SetWindow(0, 0, self.width - 1, self.height - 1)
-        for j in range(0, self.height):
-            self.SetCursor(0, j)
-            self.send_command(0x24) # WRITE_RAM
-            for i in range(0, int(self.width / 8)):
-                self.send_data(image[i + j * int(self.width / 8)])   
-        self.TurnOnDisplay()
-        
-    def Clear(self, color):
-        self.SetWindow(0, 0, self.width - 1, self.height - 1)
-        for j in range(0, self.height):
-            self.SetCursor(0, j)
-            self.send_command(0x24) # WRITE_RAM
-            for i in range(0, int(self.width / 8)):
-                self.send_data(color)   
-        self.TurnOnDisplay()
-
-    def sleep(self):
-        self.send_command(0x10) # DEEP_SLEEP_MODE
-        self.send_data(0x01)
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in9bc.py b/src/libs/lib/waveshare_epd/epd2in9bc.py
deleted file mode 100644
index 1d116eb0d0809ca240e2b66fb86ebb3c034362a3..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in9bc.py
+++ /dev/null
@@ -1,155 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in9bc.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 128
-EPD_HEIGHT      = 296
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      #  0: idle, 1: busy
-            epdconfig.delay_ms(200)                
-        logging.debug("e-Paper busy release")
-        
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x06) # boost
-        self.send_data (0x17)
-        self.send_data (0x17)
-        self.send_data (0x17)
-        self.send_command(0x04) # POWER_ON
-        self.ReadBusy()
-        self.send_command(0X00) # PANEL_SETTING
-        self.send_data(0x8F)
-        self.send_command(0X50) # VCOM_AND_DATA_INTERVAL_SETTING
-        self.send_data(0x77)
-        self.send_command(0x61) # TCON_RESOLUTION
-        self.send_data (0x80)
-        self.send_data (0x01)
-        self.send_data (0x28)
-        # self.send_command(VCM_DC_SETTING_REGISTER)
-        # self.send_data (0x0A)
-        
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, blackimage, ryimage): # ryimage: red or yellow image
-        if (blackimage != None):
-            self.send_command(0X10)
-            for i in range(0, int(self.width * self.height / 8)):
-                self.send_data(blackimage[i])        
-        if (ryimage != None):
-            self.send_command(0X13)
-            for i in range(0, int(self.width * self.height / 8)):
-                self.send_data(ryimage[i])
-
-        self.send_command(0x12)
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0X10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xff)
-        self.send_command(0X13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xff)
-
-        self.send_command(0x12)
-        self.ReadBusy()
-        
-    def sleep(self):
-        self.send_command(0X02) # power off
-        self.ReadBusy()
-        self.send_command(0X07) # deep sleep
-        self.send_data(0xA5)
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd2in9d.py b/src/libs/lib/waveshare_epd/epd2in9d.py
deleted file mode 100644
index 67c0a7a73832450be99e9ceeeb0f93ec4a7be965..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd2in9d.py
+++ /dev/null
@@ -1,351 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd2in9d.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V2.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-from PIL import Image
-import RPi.GPIO as GPIO
-
-# Display resolution
-EPD_WIDTH       = 128
-EPD_HEIGHT      = 296
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    lut_vcomDC = [  
-        0x00, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x60, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x00, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x00, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00,
-    ]
-
-    lut_ww = [  
-        0x40, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x40, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0xA0, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_bw = [  
-        0x40, 0x17, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x0F, 0x0F, 0x00, 0x00, 0x03,
-        0x40, 0x0A, 0x01, 0x00, 0x00, 0x01,
-        0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_wb = [
-        0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_bb = [ 
-        0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
-        0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
-        0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
-        0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    
-    lut_vcom1 = [  
-        0x00, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00,
-    ]
-
-    lut_ww1 = [  
-        0x00, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_bw1 = [  
-        0x80, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_wb1 = [
-        0x40, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-
-    lut_bb1 = [ 
-        0x00, 0x19, 0x01, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-        
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            self.send_command(0x71)
-            epdconfig.delay_ms(100)  
-        logging.debug("e-Paper busy release")
-    def TurnOnDisplay(self):
-        self.send_command(0x12)
-        epdconfig.delay_ms(10)
-        self.ReadBusy()
-        
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01)	# POWER SETTING
-        self.send_data(0x03)
-        self.send_data(0x00)
-        self.send_data(0x2b)
-        self.send_data(0x2b)
-        self.send_data(0x03)
-
-        self.send_command(0x06)	# boost soft start
-        self.send_data(0x17) # A
-        self.send_data(0x17) # B
-        self.send_data(0x17) # C
-
-        self.send_command(0x04)
-        self.ReadBusy()
-
-        self.send_command(0x00)	# panel setting
-        self.send_data(0xbf) # LUT from OTP,128x296
-        self.send_data(0x0d) # VCOM to 0V fast
-
-        self.send_command(0x30)	#PLL setting
-        self.send_data(0x3a)     # 3a 100HZ   29 150Hz 39 200HZ	31 171HZ
-
-        self.send_command(0x61)	# resolution setting
-        self.send_data(self.width)
-        self.send_data((self.height >> 8) & 0xff)
-        self.send_data(self.height& 0xff)
-
-        self.send_command(0x82)	# vcom_DC setting
-        self.send_data(0x28)
-        return 0
-        
-    def SetFullReg(self):
-        self.send_command(0x82)
-        self.send_data(0x00)
-        self.send_command(0X50)
-        self.send_data(0x97)
-        
-        self.send_command(0x20)         # vcom
-        for count in range(0, 44):
-            self.send_data(self.lut_vcomDC[count])
-        self.send_command(0x21)         # ww --
-        for count in range(0, 42):
-            self.send_data(self.lut_ww[count])
-        self.send_command(0x22)         # bw r
-        for count in range(0, 42):
-            self.send_data(self.lut_bw[count])
-        self.send_command(0x23)         # wb w
-        for count in range(0, 42):
-            self.send_data(self.lut_wb[count])
-        self.send_command(0x24)         # bb b
-        for count in range(0, 42):
-            self.send_data(self.lut_bb[count])
-    
-    def SetPartReg(self):
-        self.send_command(0x82)
-        self.send_data(0x03)
-        self.send_command(0X50)
-        self.send_data(0x47)
-        
-        self.send_command(0x20)         # vcom
-        for count in range(0, 44):
-            self.send_data(self.lut_vcom1[count])
-        self.send_command(0x21)         # ww --
-        for count in range(0, 42):
-            self.send_data(self.lut_ww1[count])
-        self.send_command(0x22)         # bw r
-        for count in range(0, 42):
-            self.send_data(self.lut_bw1[count])
-        self.send_command(0x23)         # wb w
-        for count in range(0, 42):
-            self.send_data(self.lut_wb1[count])
-        self.send_command(0x24)         # bb b
-        for count in range(0, 42):
-            self.send_data(self.lut_bb1[count])
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, image):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0x00)
-        epdconfig.delay_ms(10)
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(image[i])
-        epdconfig.delay_ms(10)
-        
-        self.SetFullReg()
-        self.TurnOnDisplay()
-        
-    def DisplayPartial(self, image):
-        self.SetPartReg()
-        self.send_command(0x91)
-        self.send_command(0x90)
-        self.send_data(0)
-        self.send_data(self.width - 1)
-
-        self.send_data(0)
-        self.send_data(0)
-        self.send_data(int(self.height / 256))
-        self.send_data(self.height % 256 - 1)
-        self.send_data(0x28)
-            
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(image[i])
-        epdconfig.delay_ms(10)
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(~image[i])
-        epdconfig.delay_ms(10)
-          
-        self.TurnOnDisplay()
-        
-    def Clear(self, color):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0x00)
-        epdconfig.delay_ms(10)
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-        epdconfig.delay_ms(10)
-        
-        self.SetFullReg()
-        self.TurnOnDisplay()
-
-    def sleep(self):
-        self.send_command(0X50)
-        self.send_data(0xf7)
-        self.send_command(0X02)         #power off
-        self.send_command(0X07)         #deep sleep  
-        self.send_data(0xA5)
-        
-        epdconfig.module_exit()
-
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd4in2.py b/src/libs/lib/waveshare_epd/epd4in2.py
deleted file mode 100644
index 47ba04c10aac34fd74d1cf0f257fd819c31cfb84..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd4in2.py
+++ /dev/null
@@ -1,241 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd4in2.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-from PIL import Image
-import RPi.GPIO as GPIO
-
-# Display resolution
-EPD_WIDTH       = 400
-EPD_HEIGHT      = 300
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    lut_vcom0 = [
-    0x00, 0x17, 0x00, 0x00, 0x00, 0x02,        
-    0x00, 0x17, 0x17, 0x00, 0x00, 0x02,        
-    0x00, 0x0A, 0x01, 0x00, 0x00, 0x01,        
-    0x00, 0x0E, 0x0E, 0x00, 0x00, 0x02,        
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,        
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,        
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    lut_ww = [
-    0x40, 0x17, 0x00, 0x00, 0x00, 0x02,
-    0x90, 0x17, 0x17, 0x00, 0x00, 0x02,
-    0x40, 0x0A, 0x01, 0x00, 0x00, 0x01,
-    0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    lut_bw = [
-    0x40, 0x17, 0x00, 0x00, 0x00, 0x02,
-    0x90, 0x17, 0x17, 0x00, 0x00, 0x02,
-    0x40, 0x0A, 0x01, 0x00, 0x00, 0x01,
-    0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    lut_wb = [
-    0x80, 0x17, 0x00, 0x00, 0x00, 0x02,
-    0x90, 0x17, 0x17, 0x00, 0x00, 0x02,
-    0x80, 0x0A, 0x01, 0x00, 0x00, 0x01,
-    0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    lut_bb = [
-    0x80, 0x17, 0x00, 0x00, 0x00, 0x02,
-    0x90, 0x17, 0x17, 0x00, 0x00, 0x02,
-    0x80, 0x0A, 0x01, 0x00, 0x00, 0x01,
-    0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-    ]
-    
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):        
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)    
-
-    def set_lut(self):
-        self.send_command(0x20)               # vcom
-        for count in range(0, 44):
-            self.send_data(self.lut_vcom0[count])
-            
-        self.send_command(0x21)         # ww --
-        for count in range(0, 42):
-            self.send_data(self.lut_ww[count])
-            
-        self.send_command(0x22)         # bw r
-        for count in range(0, 42):
-            self.send_data(self.lut_bw[count])
-            
-        self.send_command(0x23)         # wb w
-        for count in range(0, 42):
-            self.send_data(self.lut_bb[count])
-            
-        self.send_command(0x24)         # bb b
-        for count in range(0, 42):
-            self.send_data(self.lut_wb[count])
-            
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01) # POWER SETTING
-        self.send_data(0x03) # VDS_EN, VDG_EN
-        self.send_data(0x00) # VCOM_HV, VGHL_LV[1], VGHL_LV[0]
-        self.send_data(0x2b) # VDH
-        self.send_data(0x2b) # VDL
-        
-        self.send_command(0x06) # boost soft start
-        self.send_data(0x17)
-        self.send_data(0x17)
-        self.send_data(0x17)
-        
-        self.send_command(0x04) # POWER_ON
-        self.ReadBusy()
-        
-        self.send_command(0x00) # panel setting
-        self.send_data(0xbf) # KW-BF   KWR-AF  BWROTP 0f
-        self.send_data(0x0d)
-        
-        self.send_command(0x30) # PLL setting
-        self.send_data(0x3c) # 3A 100HZ   29 150Hz 39 200HZ  31 171HZ
-
-        self.send_command(0x61)	# resolution setting
-        self.send_data(0x01)
-        self.send_data(0x90) # 128
-        self.send_data(0x01)		
-        self.send_data(0x2c)
-
-        self.send_command(0x82)	# vcom_DC setting
-        self.send_data(0x28)
-
-        self.send_command(0X50)	# VCOM AND DATA INTERVAL SETTING
-        self.send_data(0x97) # 97white border 77black border		VBDF 17|D7 VBDW 97 VBDB 57		VBDF F7 VBDW 77 VBDB 37  VBDR B7
-    
-        self.set_lut()
-        # EPD hardware init end
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, image):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-            
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(image[i])
-            
-        self.send_command(0x12) 
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-            
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-            
-        self.send_command(0x12) 
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0x02) # POWER_OFF
-        self.ReadBusy()
-        self.send_command(0x07) # DEEP_SLEEP
-        self.send_data(0XA5)
-        
-        epdconfig.module_exit()
-        
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd4in2bc.py b/src/libs/lib/waveshare_epd/epd4in2bc.py
deleted file mode 100644
index d29465aa1eaf85a698cf010ab31bbc7d744c64c9..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd4in2bc.py
+++ /dev/null
@@ -1,148 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd4in2bc.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 400
-EPD_HEIGHT      = 300
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0): # 0: idle, 1: busy
-            epdconfig.delay_ms(100)
-        logging.debug("e-Paper busy release")
-            
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-            
-        self.reset()
-
-        self.send_command(0x06) # BOOSTER_SOFT_START
-        self.send_data (0x17)
-        self.send_data (0x17)
-        self.send_data (0x17) # 07 0f 17 1f 27 2F 37 2f
-        
-        self.send_command(0x04) # POWER_ON
-        self.ReadBusy()
-        
-        self.send_command(0x00) # PANEL_SETTING
-        self.send_data(0x0F) # LUT from OTP
-        
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        # logging.debug("imwidth = %d, imheight = %d",imwidth,imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, imageblack, imagered):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(imageblack[i])
-        
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(imagered[i])
-        
-        self.send_command(0x12) 
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-            
-        self.send_command(0x13)
-        for i in range(0, int(self.width * self.height / 8)):
-            self.send_data(0xFF)
-        
-        self.send_command(0x12) 
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0x02) # POWER_OFF
-        self.ReadBusy()
-        self.send_command(0x07) # DEEP_SLEEP
-        self.send_data(0xA5) # check code
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd5in83.py b/src/libs/lib/waveshare_epd/epd5in83.py
deleted file mode 100644
index a0131b75bb0a3e477af929b222b31dc3602f50ab..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd5in83.py
+++ /dev/null
@@ -1,200 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd5in83.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 600
-EPD_HEIGHT      = 448
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-    
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)    
-        logging.debug("e-Paper busy release")
-        
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01) # POWER_SETTING
-        self.send_data(0x37)
-        self.send_data(0x00)
-        
-        self.send_command(0x00) # PANEL_SETTING
-        self.send_data(0xCF)
-        self.send_data(0x08)
-        
-        self.send_command(0x06) # BOOSTER_SOFT_START
-        self.send_data(0xc7)
-        self.send_data(0xcc)
-        self.send_data(0x28)
-        
-        self.send_command(0x04) # POWER_ON
-        self.ReadBusy()
-        
-        self.send_command(0x30) # PLL_CONTROL
-        self.send_data(0x3c)
-        
-        self.send_command(0x41) # TEMPERATURE_CALIBRATION
-        self.send_data(0x00)
-        
-        self.send_command(0x50) # VCOM_AND_DATA_INTERVAL_SETTING
-        self.send_data(0x77)
-        
-        self.send_command(0x60) # TCON_SETTING
-        self.send_data(0x22)
-        
-        self.send_command(0x61) # TCON_RESOLUTION
-        self.send_data(0x02) # source 600
-        self.send_data(0x58)
-        self.send_data(0x01) # gate 448
-        self.send_data(0xC0)
-        
-        self.send_command(0x82) # VCM_DC_SETTING
-        self.send_data(0x1E) # decide by LUT file
-        
-        self.send_command(0xe5) # FLASH MODE
-        self.send_data(0x03)
-        
-        # EPD hardware init end
-        return 0
-
-    def getbuffer(self, image):
-        buf = [0x00] * int(self.width * self.height / 4)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        logging.debug('imwidth = %d  imheight =  %d ',imwidth, imheight)
-        if(imwidth == self.width and imheight == self.height):
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] < 64:           # black
-                        buf[int((x + y * self.width) / 4)] &= ~(0xC0 >> (x % 4 * 2))
-                    elif pixels[x, y] < 192:     # convert gray to red
-                        buf[int((x + y * self.width) / 4)] &= ~(0xC0 >> (x % 4 * 2))
-                        buf[int((x + y * self.width) / 4)] |= 0x40 >> (x % 4 * 2)
-                    else:                           # white
-                        buf[int((x + y * self.width) / 4)] |= 0xC0 >> (x % 4 * 2)
-        elif(imwidth == self.height and imheight == self.width):
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1                    
-                    if pixels[x, y] < 64:           # black
-                        buf[int((newx + newy*self.width) / 4)] &= ~(0xC0 >> (y % 4 * 2))
-                    elif pixels[x, y] < 192:     # convert gray to red
-                        buf[int((newx + newy*self.width) / 4)] &= ~(0xC0 >> (y % 4 * 2))
-                        buf[int((newx + newy*self.width) / 4)] |= 0x40 >> (y % 4 * 2)
-                    else:                           # white
-                        buf[int((newx + newy*self.width) / 4)] |= 0xC0 >> (y % 4 * 2)
-        return buf
-
-    def display(self, image):
-        self.send_command(0x10)
-        for i in range(0, int(self.width / 4 * self.height)):
-            temp1 = image[i]
-            j = 0
-            while (j < 4):
-                if ((temp1 & 0xC0) == 0xC0):
-                    temp2 = 0x03
-                elif ((temp1 & 0xC0) == 0x00):
-                    temp2 = 0x00
-                else:
-                    temp2 = 0x04
-                temp2 = (temp2 << 4) & 0xFF
-                temp1 = (temp1 << 2) & 0xFF
-                j += 1
-                if((temp1 & 0xC0) == 0xC0):
-                    temp2 |= 0x03
-                elif ((temp1 & 0xC0) == 0x00):
-                    temp2 |= 0x00
-                else:
-                    temp2 |= 0x04
-                temp1 = (temp1 << 2) & 0xFF
-                self.send_data(temp2)
-                j += 1
-                
-        self.send_command(0x12)
-        epdconfig.delay_ms(100)
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width / 4 * self.height)):
-            for j in range(0, 4):
-                self.send_data(0x33)
-        self.send_command(0x12)
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0x02) # POWER_OFF
-        self.ReadBusy()
-        self.send_command(0x07) # DEEP_SLEEP
-        self.send_data(0XA5)
-        
-        epdconfig.module_exit()        
-        
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd5in83bc.py b/src/libs/lib/waveshare_epd/epd5in83bc.py
deleted file mode 100644
index 19c8a404d8e5f38be7c373ef448bca39cc9a90d1..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd5in83bc.py
+++ /dev/null
@@ -1,200 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd5in83b.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 600
-EPD_HEIGHT      = 448
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)
-        logging.debug("e-Paper busy release")
-            
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-            
-        self.reset()
-
-        self.send_command(0x01) # POWER_SETTING
-        self.send_data(0x37)
-        self.send_data(0x00)
-        
-        self.send_command(0x00) # PANEL_SETTING
-        self.send_data(0xCF)
-        self.send_data(0x08)
-        
-        self.send_command(0x30) # PLL_CONTROL
-        self.send_data(0x3A) # PLL:  0-15:0x3C, 15+:0x3A
-        self.send_command(0X82) # VCOM VOLTAGE SETTING
-        self.send_data(0x28) # all temperature  range
-
-        self.send_command(0x06) # boost
-        self.send_data(0xc7) 	   	
-        self.send_data(0xcc) 
-        self.send_data(0x15) 
-
-        self.send_command(0X50) # VCOM AND DATA INTERVAL SETTING
-        self.send_data(0x77) 
-
-        self.send_command(0X60) # TCON SETTING
-        self.send_data(0x22) 
-
-        self.send_command(0X65) # FLASH CONTROL
-        self.send_data(0x00)
-
-        self.send_command(0x61) # tres			
-        self.send_data(0x02) # source 600
-        self.send_data(0x58) 
-        self.send_data(0x01) # gate 448
-        self.send_data(0xc0)
-
-        self.send_command(0xe5) # FLASH MODE		   	
-        self.send_data(0x03) 
-        self.send_data(0x03)
-        
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        logging.debug('imwidth = %d  imheight =  %d ',imwidth, imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, imageblack, imagered):
-        self.send_command(0x10)
-        for i in range(0, int(self.width / 8 * self.height)):
-            temp1 = imageblack[i]
-            temp2 = imagered[i]
-            j = 0
-            while (j < 8):
-                if ((temp2 & 0x80) == 0x00):
-                    temp3 = 0x04                #red
-                elif ((temp1 & 0x80) == 0x00):
-                    temp3 = 0x00                #black
-                else:
-                    temp3 = 0x03                #white
-					
-                temp3 = (temp3 << 4) & 0xFF
-                temp1 = (temp1 << 1) & 0xFF
-                temp2 = (temp2 << 1) & 0xFF
-                j += 1
-                if((temp2 & 0x80) == 0x00):
-                    temp3 |= 0x04              #red
-                elif ((temp1 & 0x80) == 0x00):
-                    temp3 |= 0x00              #black
-                else:
-                    temp3 |= 0x03              #white
-                temp1 = (temp1 << 1) & 0xFF
-                temp2 = (temp2 << 1) & 0xFF
-                self.send_data(temp3)
-                j += 1
-                
-        self.send_command(0x04) # POWER ON
-        self.ReadBusy()
-        self.send_command(0x12) # display refresh
-        epdconfig.delay_ms(100)
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width / 8 * self.height)):
-            self.send_data(0x33)
-            self.send_data(0x33)
-            self.send_data(0x33)
-            self.send_data(0x33)
-            
-        self.send_command(0x04) # POWER ON
-        self.ReadBusy()
-        self.send_command(0x12) # display refresh
-        epdconfig.delay_ms(100)
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0x02) # POWER_OFF
-        self.ReadBusy()
-        self.send_command(0x07) # DEEP_SLEEP
-        self.send_data(0xA5) # check code
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd7in5.py b/src/libs/lib/waveshare_epd/epd7in5.py
deleted file mode 100644
index 80f488debf9022050cad965fa22af751297fdf82..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd7in5.py
+++ /dev/null
@@ -1,202 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd7in5.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 640
-EPD_HEIGHT      = 384
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-    
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)    
-        logging.debug("e-Paper busy release")
-        
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-        # EPD hardware init start
-        self.reset()
-        
-        self.send_command(0x01) # POWER_SETTING
-        self.send_data(0x37)
-        self.send_data(0x00)
-        
-        self.send_command(0x00) # PANEL_SETTING
-        self.send_data(0xCF)
-        self.send_data(0x08)
-        
-        self.send_command(0x06) # BOOSTER_SOFT_START
-        self.send_data(0xc7)
-        self.send_data(0xcc)
-        self.send_data(0x28)
-        
-        self.send_command(0x04) # POWER_ON
-        self.ReadBusy()
-        
-        self.send_command(0x30) # PLL_CONTROL
-        self.send_data(0x3c)
-        
-        self.send_command(0x41) # TEMPERATURE_CALIBRATION
-        self.send_data(0x00)
-        
-        self.send_command(0x50) # VCOM_AND_DATA_INTERVAL_SETTING
-        self.send_data(0x77)
-        
-        self.send_command(0x60) # TCON_SETTING
-        self.send_data(0x22)
-        
-        self.send_command(0x61) # TCON_RESOLUTION
-        self.send_data(EPD_WIDTH >> 8)     #source 640
-        self.send_data(EPD_WIDTH & 0xff)
-        self.send_data(EPD_HEIGHT >> 8)     #gate 384
-        self.send_data(EPD_HEIGHT & 0xff)
-        
-        self.send_command(0x82) # VCM_DC_SETTING
-        self.send_data(0x1E) # decide by LUT file
-        
-        self.send_command(0xe5) # FLASH MODE
-        self.send_data(0x03)
-        
-        # EPD hardware init end
-        return 0
-
-    def getbuffer(self, image):
-        logging.debug("1234")
-        buf = [0x00] * int(self.width * self.height / 4)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        logging.debug('imwidth = %d  imheight =  %d ',imwidth, imheight)
-        if(imwidth == self.width and imheight == self.height):
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] < 64:           # black
-                        buf[int((x + y * self.width) / 4)] &= ~(0xC0 >> (x % 4 * 2))
-                    elif pixels[x, y] < 192:     # convert gray to red
-                        buf[int((x + y * self.width) / 4)] &= ~(0xC0 >> (x % 4 * 2))
-                        buf[int((x + y * self.width) / 4)] |= 0x40 >> (x % 4 * 2)
-                    else:                           # white
-                        buf[int((x + y * self.width) / 4)] |= 0xC0 >> (x % 4 * 2)
-        elif(imwidth == self.height and imheight == self.width):
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1                    
-                    if pixels[x, y] < 64:           # black
-                        buf[int((newx + newy*self.width) / 4)] &= ~(0xC0 >> (y % 4 * 2))
-                    elif pixels[x, y] < 192:     # convert gray to red
-                        buf[int((newx + newy*self.width) / 4)] &= ~(0xC0 >> (y % 4 * 2))
-                        buf[int((newx + newy*self.width) / 4)] |= 0x40 >> (y % 4 * 2)
-                    else:                           # white
-                        buf[int((newx + newy*self.width) / 4)] |= 0xC0 >> (y % 4 * 2)
-        return buf    
-        
-    def display(self, image):
-        self.send_command(0x10)
-        for i in range(0, int(self.width / 4 * self.height)):
-            temp1 = image[i]
-            j = 0
-            while (j < 4):
-                if ((temp1 & 0xC0) == 0xC0):
-                    temp2 = 0x03
-                elif ((temp1 & 0xC0) == 0x00):
-                    temp2 = 0x00
-                else:
-                    temp2 = 0x04
-                temp2 = (temp2 << 4) & 0xFF
-                temp1 = (temp1 << 2) & 0xFF
-                j += 1
-                if((temp1 & 0xC0) == 0xC0):
-                    temp2 |= 0x03
-                elif ((temp1 & 0xC0) == 0x00):
-                    temp2 |= 0x00
-                else:
-                    temp2 |= 0x04
-                temp1 = (temp1 << 2) & 0xFF
-                self.send_data(temp2)
-                j += 1
-                
-        self.send_command(0x12)
-        epdconfig.delay_ms(100)
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width / 4 * self.height)):
-            for j in range(0, 4):
-                self.send_data(0x33)
-                
-        self.send_command(0x12)
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0x02) # POWER_OFF
-        self.ReadBusy()
-        
-        self.send_command(0x07) # DEEP_SLEEP
-        self.send_data(0XA5)
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epd7in5bc.py b/src/libs/lib/waveshare_epd/epd7in5bc.py
deleted file mode 100644
index 7ec3959940832ac627cb479d4723d39890b2e9f5..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epd7in5bc.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# *****************************************************************************
-# * | File        :	  epd7in5bc.py
-# * | Author      :   Waveshare team
-# * | Function    :   Electronic paper driver
-# * | Info        :
-# *----------------
-# * | This version:   V4.0
-# * | Date        :   2019-06-20
-# # | Info        :   python demo
-# -----------------------------------------------------------------------------
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-
-import logging
-from . import epdconfig
-
-# Display resolution
-EPD_WIDTH       = 640
-EPD_HEIGHT      = 384
-
-class EPD:
-    def __init__(self):
-        self.reset_pin = epdconfig.RST_PIN
-        self.dc_pin = epdconfig.DC_PIN
-        self.busy_pin = epdconfig.BUSY_PIN
-        self.cs_pin = epdconfig.CS_PIN
-        self.width = EPD_WIDTH
-        self.height = EPD_HEIGHT
-
-    # Hardware reset
-    def reset(self):
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200) 
-        epdconfig.digital_write(self.reset_pin, 0)
-        epdconfig.delay_ms(10)
-        epdconfig.digital_write(self.reset_pin, 1)
-        epdconfig.delay_ms(200)   
-
-    def send_command(self, command):
-        epdconfig.digital_write(self.dc_pin, 0)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([command])
-        epdconfig.digital_write(self.cs_pin, 1)
-
-    def send_data(self, data):
-        epdconfig.digital_write(self.dc_pin, 1)
-        epdconfig.digital_write(self.cs_pin, 0)
-        epdconfig.spi_writebyte([data])
-        epdconfig.digital_write(self.cs_pin, 1)
-        
-    def ReadBusy(self):
-        logging.debug("e-Paper busy")
-        while(epdconfig.digital_read(self.busy_pin) == 0):      # 0: idle, 1: busy
-            epdconfig.delay_ms(100)
-        logging.debug("e-Paper busy release")
-            
-    def init(self):
-        if (epdconfig.module_init() != 0):
-            return -1
-            
-        self.reset()
-
-        self.send_command(0x01) # POWER_SETTING
-        self.send_data(0x37)
-        self.send_data(0x00)
-        
-        self.send_command(0x00) # PANEL_SETTING
-        self.send_data(0xCF)
-        self.send_data(0x08)
-        
-        self.send_command(0x30) # PLL_CONTROL
-        self.send_data(0x3A) # PLL:  0-15:0x3C, 15+:0x3A
-        
-        self.send_command(0x82) # VCM_DC_SETTING
-        self.send_data(0x28) #all temperature  range
-
-        self.send_command(0x06) # BOOSTER_SOFT_START
-        self.send_data(0xc7)
-        self.send_data(0xcc)
-        self.send_data(0x15)
-
-        self.send_command(0x50) # VCOM AND DATA INTERVAL SETTING
-        self.send_data(0x77)
-
-        self.send_command(0x60) # TCON_SETTING
-        self.send_data(0x22)
-
-        self.send_command(0x65) # FLASH CONTROL
-        self.send_data(0x00)
-
-        self.send_command(0x61) # TCON_RESOLUTION
-        self.send_data(self.width >> 8) # source 640
-        self.send_data(self.width & 0xff)
-        self.send_data(self.height >> 8) # gate 384
-        self.send_data(self.height & 0xff)
-
-        self.send_command(0xe5) # FLASH MODE
-        self.send_data(0x03)
-        
-        return 0
-
-    def getbuffer(self, image):
-        # logging.debug("bufsiz = ",int(self.width/8) * self.height)
-        buf = [0xFF] * (int(self.width/8) * self.height)
-        image_monocolor = image.convert('1')
-        imwidth, imheight = image_monocolor.size
-        pixels = image_monocolor.load()
-        logging.debug('imwidth = %d  imheight =  %d ',imwidth, imheight)
-        if(imwidth == self.width and imheight == self.height):
-            logging.debug("Horizontal")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    # Set the bits for the column of pixels at the current position.
-                    if pixels[x, y] == 0:
-                        buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8))
-        elif(imwidth == self.height and imheight == self.width):
-            logging.debug("Vertical")
-            for y in range(imheight):
-                for x in range(imwidth):
-                    newx = y
-                    newy = self.height - x - 1
-                    if pixels[x, y] == 0:
-                        buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8))
-        return buf
-
-    def display(self, imageblack, imagered):
-        self.send_command(0x10)
-        for i in range(0, int(self.width / 8 * self.height)):
-            temp1 = imageblack[i]
-            temp2 = imagered[i]
-            j = 0
-            while (j < 8):
-                if ((temp2 & 0x80) == 0x00):
-                    temp3 = 0x04                #red
-                elif ((temp1 & 0x80) == 0x00):
-                    temp3 = 0x00                #black
-                else:
-                    temp3 = 0x03                #white
-					
-                temp3 = (temp3 << 4) & 0xFF
-                temp1 = (temp1 << 1) & 0xFF
-                temp2 = (temp2 << 1) & 0xFF
-                j += 1
-                if((temp2 & 0x80) == 0x00):
-                    temp3 |= 0x04              #red
-                elif ((temp1 & 0x80) == 0x00):
-                    temp3 |= 0x00              #black
-                else:
-                    temp3 |= 0x03              #white
-                temp1 = (temp1 << 1) & 0xFF
-                temp2 = (temp2 << 1) & 0xFF
-                self.send_data(temp3)
-                j += 1
-                
-        self.send_command(0x04) # POWER ON
-        self.ReadBusy()
-        self.send_command(0x12) # display refresh
-        epdconfig.delay_ms(100)
-        self.ReadBusy()
-        
-    def Clear(self):
-        self.send_command(0x10)
-        for i in range(0, int(self.width / 8 * self.height)):
-            self.send_data(0x33)
-            self.send_data(0x33)
-            self.send_data(0x33)
-            self.send_data(0x33)
-            
-        self.send_command(0x04) # POWER ON
-        self.ReadBusy()
-        self.send_command(0x12) # display refresh
-        epdconfig.delay_ms(100)
-        self.ReadBusy()
-
-    def sleep(self):
-        self.send_command(0x02) # POWER_OFF
-        self.ReadBusy()
-        
-        self.send_command(0x07) # DEEP_SLEEP
-        self.send_data(0XA5)
-        
-        epdconfig.module_exit()
-### END OF FILE ###
-
diff --git a/src/libs/lib/waveshare_epd/epdconfig.py b/src/libs/lib/waveshare_epd/epdconfig.py
deleted file mode 100644
index 5244b1d3ed6dfa304827a74b76a14951b139d1a4..0000000000000000000000000000000000000000
--- a/src/libs/lib/waveshare_epd/epdconfig.py
+++ /dev/null
@@ -1,154 +0,0 @@
-# /*****************************************************************************
-# * | File        :	  epdconfig.py
-# * | Author      :   Waveshare team
-# * | Function    :   Hardware underlying interface
-# * | Info        :
-# *----------------
-# * | This version:   V1.0
-# * | Date        :   2019-06-21
-# * | Info        :   
-# ******************************************************************************
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documnetation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to  whom the Software is
-# furished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-
-import os
-import logging
-import sys
-import time
-
-
-class RaspberryPi:
-    # Pin definition
-    RST_PIN         = 17
-    DC_PIN          = 25
-    CS_PIN          = 8
-    BUSY_PIN        = 24
-
-    def __init__(self):
-        import spidev
-        import RPi.GPIO
-
-        self.GPIO = RPi.GPIO
-
-        # SPI device, bus = 0, device = 0
-        self.SPI = spidev.SpiDev(0, 0)
-
-    def digital_write(self, pin, value):
-        self.GPIO.output(pin, value)
-
-    def digital_read(self, pin):
-        return self.GPIO.input(self.BUSY_PIN)
-
-    def delay_ms(self, delaytime):
-        time.sleep(delaytime / 1000.0)
-
-    def spi_writebyte(self, data):
-        self.SPI.writebytes(data)
-
-    def module_init(self):
-        self.GPIO.setmode(self.GPIO.BCM)
-        self.GPIO.setwarnings(False)
-        self.GPIO.setup(self.RST_PIN, self.GPIO.OUT)
-        self.GPIO.setup(self.DC_PIN, self.GPIO.OUT)
-        self.GPIO.setup(self.CS_PIN, self.GPIO.OUT)
-        self.GPIO.setup(self.BUSY_PIN, self.GPIO.IN)
-        self.SPI.max_speed_hz = 4000000
-        self.SPI.mode = 0b00
-        return 0
-
-    def module_exit(self):
-        logging.debug("spi end")
-        self.SPI.close()
-
-        logging.debug("close 5V, Module enters 0 power consumption ...")
-        self.GPIO.output(self.RST_PIN, 0)
-        self.GPIO.output(self.DC_PIN, 0)
-
-        self.GPIO.cleanup()
-
-
-class JetsonNano:
-    # Pin definition
-    RST_PIN         = 17
-    DC_PIN          = 25
-    CS_PIN          = 8
-    BUSY_PIN        = 24
-
-    def __init__(self):
-        import ctypes
-        find_dirs = [
-            os.path.dirname(os.path.realpath(__file__)),
-            '/usr/local/libs',
-            '/usr/libs',
-        ]
-        self.SPI = None
-        for find_dir in find_dirs:
-            so_filename = os.path.join(find_dir, 'sysfs_software_spi.so')
-            if os.path.exists(so_filename):
-                self.SPI = ctypes.cdll.LoadLibrary(so_filename)
-                break
-        if self.SPI is None:
-            raise RuntimeError('Cannot find sysfs_software_spi.so')
-
-        import Jetson.GPIO
-        self.GPIO = Jetson.GPIO
-
-    def digital_write(self, pin, value):
-        self.GPIO.output(pin, value)
-
-    def digital_read(self, pin):
-        return self.GPIO.input(self.BUSY_PIN)
-
-    def delay_ms(self, delaytime):
-        time.sleep(delaytime / 1000.0)
-
-    def spi_writebyte(self, data):
-        self.SPI.SYSFS_software_spi_transfer(data[0])
-
-    def module_init(self):
-        self.GPIO.setmode(self.GPIO.BCM)
-        self.GPIO.setwarnings(False)
-        self.GPIO.setup(self.RST_PIN, self.GPIO.OUT)
-        self.GPIO.setup(self.DC_PIN, self.GPIO.OUT)
-        self.GPIO.setup(self.CS_PIN, self.GPIO.OUT)
-        self.GPIO.setup(self.BUSY_PIN, self.GPIO.IN)
-        self.SPI.SYSFS_software_spi_begin()
-        return 0
-
-    def module_exit(self):
-        logging.debug("spi end")
-        self.SPI.SYSFS_software_spi_end()
-
-        logging.debug("close 5V, Module enters 0 power consumption ...")
-        self.GPIO.output(self.RST_PIN, 0)
-        self.GPIO.output(self.DC_PIN, 0)
-
-        self.GPIO.cleanup()
-
-
-if os.path.exists('/sys/bus/platform/drivers/gpiomem-bcm2835'):
-    implementation = RaspberryPi()
-else:
-    implementation = JetsonNano()
-
-for func in [x for x in dir(implementation) if not x.startswith('_')]:
-    setattr(sys.modules[__name__], func, getattr(implementation, func))
-
-
-### END OF FILE ###
diff --git a/src/libs/lib/waveshare_epd/sysfs_gpio.so b/src/libs/lib/waveshare_epd/sysfs_gpio.so
deleted file mode 100644
index b8d9cdd954324bf6ba5ead689374bdf27c39406b..0000000000000000000000000000000000000000
Binary files a/src/libs/lib/waveshare_epd/sysfs_gpio.so and /dev/null differ
diff --git a/src/libs/lib/waveshare_epd/sysfs_software_spi.so b/src/libs/lib/waveshare_epd/sysfs_software_spi.so
deleted file mode 100644
index f9ff3a6dd3d60ffc961fe02ac6ffd8c8cbc61fd7..0000000000000000000000000000000000000000
Binary files a/src/libs/lib/waveshare_epd/sysfs_software_spi.so and /dev/null differ
diff --git a/src/libs/pic/100x100.bmp b/src/libs/pic/100x100.bmp
deleted file mode 100644
index 70f4584b2bd33adb6c463f81d84c4222b30c9161..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/100x100.bmp and /dev/null differ
diff --git a/src/libs/pic/1in54.bmp b/src/libs/pic/1in54.bmp
deleted file mode 100644
index a877bfa910c6a93b8730357e67dd9cb022909b07..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/1in54.bmp and /dev/null differ
diff --git a/src/libs/pic/1in54b-b.bmp b/src/libs/pic/1in54b-b.bmp
deleted file mode 100644
index e992aead1225f99c7b20cf9a6dc64dfbbf401c70..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/1in54b-b.bmp and /dev/null differ
diff --git a/src/libs/pic/1in54b-r.bmp b/src/libs/pic/1in54b-r.bmp
deleted file mode 100644
index 68c339b6fd054c73df4a4fad1604289632826ee6..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/1in54b-r.bmp and /dev/null differ
diff --git a/src/libs/pic/1in54c-b.bmp b/src/libs/pic/1in54c-b.bmp
deleted file mode 100644
index 159795e1972c55b3166c295b531b4063acd98ab8..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/1in54c-b.bmp and /dev/null differ
diff --git a/src/libs/pic/1in54c-y.bmp b/src/libs/pic/1in54c-y.bmp
deleted file mode 100644
index fe37382ff5f3a8d69ed071bb1e4b2b860c34bf2d..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/1in54c-y.bmp and /dev/null differ
diff --git a/src/libs/pic/2in13-v2.bmp b/src/libs/pic/2in13-v2.bmp
deleted file mode 100644
index 5156852cce538170425ff6079b58c9d37ed61100..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in13-v2.bmp and /dev/null differ
diff --git a/src/libs/pic/2in13.bmp b/src/libs/pic/2in13.bmp
deleted file mode 100644
index a579e2a6523ac1c63017cb089cb73f4c44b324eb..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in13.bmp and /dev/null differ
diff --git a/src/libs/pic/2in13bc-b.bmp b/src/libs/pic/2in13bc-b.bmp
deleted file mode 100644
index 6b70b26d6ceff9709f0b0060b02f358c23744e5c..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in13bc-b.bmp and /dev/null differ
diff --git a/src/libs/pic/2in13bc-ry.bmp b/src/libs/pic/2in13bc-ry.bmp
deleted file mode 100644
index ec5cf0259459a32806719f350df46e1edea9c69d..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in13bc-ry.bmp and /dev/null differ
diff --git a/src/libs/pic/2in13d.bmp b/src/libs/pic/2in13d.bmp
deleted file mode 100644
index 6f0a83ddaea18b2e57aeac8a5ababacd41874c4a..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in13d.bmp and /dev/null differ
diff --git a/src/libs/pic/2in7.bmp b/src/libs/pic/2in7.bmp
deleted file mode 100644
index 48138bb08553638a9be380d295c588aaa8c487de..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in7.bmp and /dev/null differ
diff --git a/src/libs/pic/2in7b-b.bmp b/src/libs/pic/2in7b-b.bmp
deleted file mode 100644
index d25dec3182358dd76b5bf67f99e2f0e7c6ece2fe..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in7b-b.bmp and /dev/null differ
diff --git a/src/libs/pic/2in7b-r.bmp b/src/libs/pic/2in7b-r.bmp
deleted file mode 100644
index 66d51b1a5cd3ef1ef054591e8102e59d1065b1ed..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in7b-r.bmp and /dev/null differ
diff --git a/src/libs/pic/2in9.bmp b/src/libs/pic/2in9.bmp
deleted file mode 100644
index c3e01819ba7c791007ffdbf82302873e1edf4f20..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in9.bmp and /dev/null differ
diff --git a/src/libs/pic/2in9bc-b.bmp b/src/libs/pic/2in9bc-b.bmp
deleted file mode 100644
index d45ff4899e631d0255dcc7621e3b437cc16f83e5..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in9bc-b.bmp and /dev/null differ
diff --git a/src/libs/pic/2in9bc-ry.bmp b/src/libs/pic/2in9bc-ry.bmp
deleted file mode 100644
index 402727c8e4b1650ecf98cc415f957bfdc222bd37..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in9bc-ry.bmp and /dev/null differ
diff --git a/src/libs/pic/2in9d.bmp b/src/libs/pic/2in9d.bmp
deleted file mode 100644
index 61e0fd377a3e164d088b154892e9497405c7937b..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/2in9d.bmp and /dev/null differ
diff --git a/src/libs/pic/4in2.bmp b/src/libs/pic/4in2.bmp
deleted file mode 100644
index b380a1cbfc4d437e7eac77fa2e86631ef7cfbe32..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/4in2.bmp and /dev/null differ
diff --git a/src/libs/pic/4in2b-b.bmp b/src/libs/pic/4in2b-b.bmp
deleted file mode 100644
index 7c537a4f92c46603313a6b7b22dc817ea85d02f2..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/4in2b-b.bmp and /dev/null differ
diff --git a/src/libs/pic/4in2b-r.bmp b/src/libs/pic/4in2b-r.bmp
deleted file mode 100644
index 3de854c245511e3e1e06acef89ea7f89f2b9f6be..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/4in2b-r.bmp and /dev/null differ
diff --git a/src/libs/pic/4in2c-b.bmp b/src/libs/pic/4in2c-b.bmp
deleted file mode 100644
index b380a1cbfc4d437e7eac77fa2e86631ef7cfbe32..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/4in2c-b.bmp and /dev/null differ
diff --git a/src/libs/pic/4in2c-y.bmp b/src/libs/pic/4in2c-y.bmp
deleted file mode 100644
index cd5c0d6430e31f87062f7e176d892e223e258e2a..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/4in2c-y.bmp and /dev/null differ
diff --git a/src/libs/pic/5in83.bmp b/src/libs/pic/5in83.bmp
deleted file mode 100644
index 6b8f604cb6beeefb8852880697eb97813a9ff1b6..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/5in83.bmp and /dev/null differ
diff --git a/src/libs/pic/5in83bc-b.bmp b/src/libs/pic/5in83bc-b.bmp
deleted file mode 100644
index 545e060a4835f43945548d74381409d1f9608397..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/5in83bc-b.bmp and /dev/null differ
diff --git a/src/libs/pic/5in83bc-ry.bmp b/src/libs/pic/5in83bc-ry.bmp
deleted file mode 100644
index 41884b32ff15b4981727ca3788cff197baf1723b..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/5in83bc-ry.bmp and /dev/null differ
diff --git a/src/libs/pic/7in5.bmp b/src/libs/pic/7in5.bmp
deleted file mode 100644
index b997800d66f36646cdf09b27a31de4c04f7446de..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/7in5.bmp and /dev/null differ
diff --git a/src/libs/pic/7in5b-b.bmp b/src/libs/pic/7in5b-b.bmp
deleted file mode 100644
index 8f84025ea70cfb382a82841cfc736e3464012d97..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/7in5b-b.bmp and /dev/null differ
diff --git a/src/libs/pic/7in5b-r.bmp b/src/libs/pic/7in5b-r.bmp
deleted file mode 100644
index 3f81b2cf2104ccb2962b9b302b030d0d949e7e45..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/7in5b-r.bmp and /dev/null differ
diff --git a/src/libs/pic/7in5c-b.bmp b/src/libs/pic/7in5c-b.bmp
deleted file mode 100644
index a69ddbc30ba5df2e89c58ed90d027e2a74c3cfdd..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/7in5c-b.bmp and /dev/null differ
diff --git a/src/libs/pic/7in5c-r.bmp b/src/libs/pic/7in5c-r.bmp
deleted file mode 100644
index be84903a21f7618b46c228a15fc6479c7df58413..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/7in5c-r.bmp and /dev/null differ
diff --git a/src/libs/pic/Font.ttc b/src/libs/pic/Font.ttc
deleted file mode 100644
index 4cbb7c54cc4cdb418c41c0306e70bd709aaf470c..0000000000000000000000000000000000000000
Binary files a/src/libs/pic/Font.ttc and /dev/null differ
diff --git a/src/logic/display/Main.py b/src/logic/display/Main.py
deleted file mode 100644
index 2afee08ba43250c9b4ef060d40ff296f59ced8d1..0000000000000000000000000000000000000000
--- a/src/logic/display/Main.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import logging
-import os
-import sys
-import time
-
-from PIL import Image, ImageDraw, ImageFont
-
-from logic.display.Image import DebugImage, EPDImage, AbstractImage
-from libs.lib.waveshare_epd import epd4in2bc
-
-logging.basicConfig(level=logging.DEBUG)
-
-# python3 Main.py debug
-debugMode = sys.argv[1] == "debug" if len(sys.argv) == 2 else False
-
-if debugMode:
-    logging.warning("Running in debug mode")
-
-try:
-    epd = epd4in2bc.EPD()
-    image = DebugImage(epd.width, epd.height)
-    if not debugMode:
-        logging.info("init and Clear")
-        epd.init()
-        epd.Clear()
-        time.sleep(1)
-
-        image = EPDImage(epd.width, epd.height)
-
-    picdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'libs/pic')
-    font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
-    font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
-
-    blackImage = Image.new('1', (epd.width, epd.height), 255)  # 298*126
-    redImage = Image.new('1', (epd.width, epd.height), 255)  # 298*126  ryimage: red or yellow image
-
-    drawBlack = ImageDraw.Draw(blackImage)
-    drawRed = ImageDraw.Draw(redImage)
-
-    if debugMode:
-        drawRed = drawBlack
-
-    image.text((10, 0), 'Jenkins Build Status', font=font24, fill=AbstractImage.BLACK)
-    image.line((5, 30, 395, 30), fill=AbstractImage.BLACK)
-
-    image.line((20, 50, 70, 100), fill=AbstractImage.BLACK)
-    image.line((70, 50, 20, 100), fill=AbstractImage.BLACK)
-    image.rectangle((20, 50, 70, 100), outline=0, fill=AbstractImage.BLACK)
-    image.line((165, 50, 165, 100), fill=AbstractImage.RED)
-    image.line((140, 75, 190, 75), fill=AbstractImage.RED)
-    image.rectangle((80, 50, 130, 100), outline=0, fill=AbstractImage.RED)
-    if debugMode:
-        image.get_black_image().save("img.png")
-    else:
-        epd.display(epd.getbuffer(image.get_black_image()), epd.getbuffer(image.get_red_image()))
-
-    time.sleep(2)
-
-    logging.info("Goto Sleep...")
-    if not debugMode:
-        epd.sleep()
-
-except IOError as e:
-    logging.info(e)
-
-except KeyboardInterrupt:
-    logging.info("ctrl + c:")
-    epd4in2bc.epdconfig.module_exit()
-    exit()