Skip to content

Commit

Permalink
Split waveshare red/yellow drivers (#84)
Browse files Browse the repository at this point in the history
  • Loading branch information
mariusandra committed May 10, 2024
1 parent 46f3ce9 commit 9242e2a
Show file tree
Hide file tree
Showing 12 changed files with 507 additions and 6 deletions.
8 changes: 7 additions & 1 deletion backend/app/tasks/deploy_frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,13 @@ def create_local_build_archive(frame: Frame, build_dir: str, build_id: str, nim_
util_files = ["Debug.h", "DEV_Config.c", "DEV_Config.h"]
for file in util_files:
shutil.copy(os.path.join(source_dir, "src", "drivers", "waveshare", variant_folder, file), os.path.join(build_dir, file))
variant_files = [f"{waveshare.variant}.nim", f"{waveshare.variant}.c", f"{waveshare.variant}.h"]

if waveshare.variant in ["EPD_2in9b", "EPD_2in9c", "EPD_2in13b", "EPD_2in13c", "EPD_4in2b", "EPD_4in2c", "EPD_5in83b", "EPD_5in83c", "EPD_7in5b", "EPD_7in5c"]:
c_file = re.sub(r'[bc]', 'bc', waveshare.variant)
variant_files = [f"{waveshare.variant}.nim", f"{c_file}.c", f"{c_file}.h"]
else:
variant_files = [f"{waveshare.variant}.nim", f"{waveshare.variant}.c", f"{waveshare.variant}.h"]

for file in variant_files:
shutil.copy(os.path.join(source_dir, "src", "drivers", "waveshare", variant_folder, file), os.path.join(build_dir, file))

Expand Down
96 changes: 96 additions & 0 deletions frameos/src/drivers/waveshare/ePaper/EPD_2in13c.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
{.compile: "EPD_2in13bc.c".}
## ***************************************************************************
## | File : EPD_2in13bc.h
## | Author : Waveshare team
## | Function : 2.13inch e-paper b&c
## | Info :
## ----------------
## | This version: V3.0
## | Date : 2019-06-13
## | Info :
## -----------------------------------------------------------------------------
## V3.0(2019-06-13):
## 1.Change:
## EPD_Reset() => EPD_2IN13BC_Reset()
## EPD_SendCommand() => EPD_2IN13BC_SendCommand()
## EPD_SendData() => EPD_2IN13BC_SendData()
## EPD_WaitUntilIdle() => EPD_2IN13BC_ReadBusy()
## EPD_Init() => EPD_2IN13BC_Init()
## EPD_Clear() => EPD_2IN13BC_Clear()
## EPD_Display() => EPD_2IN13BC_Display()
## EPD_Sleep() => EPD_2IN13BC_Sleep()
## 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 VCOM_LUT 0x20
## #define W2W_LUT 0x21
## #define B2W_LUT 0x22
## #define W2B_LUT 0x23
## #define B2B_LUT 0x24
## #define PLL_CONTROL 0x30
## #define TEMPERATURE_SENSOR_CALIBRATION 0x40
## #define TEMPERATURE_SENSOR_SELECTION 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 RESOLUTION_SETTING 0x61
## #define GET_STATUS 0x71
## #define AUTO_MEASURE_VCOM 0x80
## #define READ_VCOM_VALUE 0x81
## #define VCM_DC_SETTING 0x82
## #define PARTIAL_WINDOW 0x90
## #define PARTIAL_IN 0x91
## #define PARTIAL_OUT 0x92
## #define PROGRAM_MODE 0xA0
## #define ACTIVE_PROGRAM 0xA1
## #define READ_OTP_DATA 0xA2
## #define POWER_SAVING 0xE3
## V2.0(2018-11-13):
## 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
## 2.Change:EPD_Display(UBYTE *Image)
## Need to pass parameters: pointer to cached data
## #
## # 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
DEV_Config

const
EPD_2IN13BC_WIDTH* = 104
EPD_2IN13BC_HEIGHT* = 212

proc EPD_2IN13BC_Init*() {.importc: "EPD_2IN13BC_Init".}
proc EPD_2IN13BC_Clear*() {.importc: "EPD_2IN13BC_Clear".}
proc EPD_2IN13BC_Display*(blackimage: ptr UBYTE; ryimage: ptr UBYTE) {.
importc: "EPD_2IN13BC_Display".}
proc EPD_2IN13BC_Sleep*() {.importc: "EPD_2IN13BC_Sleep".}
97 changes: 97 additions & 0 deletions frameos/src/drivers/waveshare/ePaper/EPD_2in9c.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{.compile: "EPD_2in9bc.c".}
## ***************************************************************************
## | File : EPD_2in9bc.h
## | Author : Waveshare team
## | Function : 2.9inch e-paper b&c
## | Info :
## ----------------
## | This version: V3.0
## | Date : 2019-06-12
## | Info :
## -----------------------------------------------------------------------------
## V3.0(2019-06-12):
## 1.Change:
## EPD_Reset() => EPD_2IN9BC_Reset()
## EPD_SendCommand() => EPD_2IN9BC_SendCommand()
## EPD_SendData() => EPD_2IN9BC_SendData()
## EPD_WaitUntilIdle() => EPD_2IN9BC_ReadBusy()
## EPD_Init() => EPD_2IN9BC_Init()
## EPD_Clear() => EPD_2IN9BC_Clear()
## EPD_Display() => EPD_2IN9BC_Display()
## EPD_Sleep() => EPD_2IN9BC_Sleep()
## 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 GET_STATUS 0x71
## #define AUTO_MEASURE_VCOM 0x80
## #define VCOM_VALUE 0x81
## #define VCM_DC_SETTING_REGISTER 0x82
## #define PARTIAL_WINDOW 0x90
## #define PARTIAL_IN 0x91
## #define PARTIAL_OUT 0x92
## #define PROGRAM_MODE 0xA0
## #define ACTIVE_PROGRAM 0xA1
## #define READ_OTP_DATA 0xA2
## #define POWER_SAVING 0xE3
## -----------------------------------------------------------------------------
## V2.0(2018-11-06):
## 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
## 2.Change:EPD_Display(UBYTE *Image)
## Need to pass parameters: pointer to cached data
## 3.Change:
## EPD_RST -> EPD_RST_PIN
## EPD_DC -> EPD_DC_PIN
## EPD_CS -> EPD_CS_PIN
## EPD_BUSY -> EPD_BUSY_PIN
## #
## # 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
DEV_Config

const
EPD_2IN9BC_WIDTH* = 128
EPD_2IN9BC_HEIGHT* = 296

proc EPD_2IN9BC_Init*() {.importc: "EPD_2IN9BC_Init".}
proc EPD_2IN9BC_Clear*() {.importc: "EPD_2IN9BC_Clear".}
proc EPD_2IN9BC_Display*(blackimage: ptr UBYTE; ryimage: ptr UBYTE) {.
importc: "EPD_2IN9BC_Display".}
proc EPD_2IN9BC_Sleep*() {.importc: "EPD_2IN9BC_Sleep".}
97 changes: 97 additions & 0 deletions frameos/src/drivers/waveshare/ePaper/EPD_4in2c.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{.compile: "EPD_4in2bc.c".}
## ***************************************************************************
## | File : EPD_4in2b.h
## | Author : Waveshare team
## | Function : 4.2inch e-paper b&c
## | Info :
## ----------------
## | This version: V3.0
## | Date : 2019-06-13
## | Info :
## -----------------------------------------------------------------------------
## V3.0(2019-06-13):
## 1.Change:
## EPD_Reset() => EPD_4IN2BC_Reset()
## EPD_SendCommand() => EPD_4IN2BC_SendCommand()
## EPD_SendData() => EPD_4IN2BC_SendData()
## EPD_WaitUntilIdle() => EPD_4IN2BC_ReadBusy()
## EPD_Init() => EPD_4IN2BC_Init()
## EPD_Clear() => EPD_4IN2BC_Clear()
## EPD_Display() => EPD_4IN2BC_Display()
## EPD_Sleep() => EPD_4IN2BC_Sleep()
## 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 VCOM_LUT 0x20
## #define W2W_LUT 0x21
## #define B2W_LUT 0x22
## #define W2B_LUT 0x23
## #define B2B_LUT 0x24
## #define PLL_CONTROL 0x30
## #define TEMPERATURE_SENSOR_CALIBRATION 0x40
## #define TEMPERATURE_SENSOR_SELECTION 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 RESOLUTION_SETTING 0x61
## #define GET_STATUS 0x71
## #define AUTO_MEASURE_VCOM 0x80
## #define READ_VCOM_VALUE 0x81
## #define VCM_DC_SETTING 0x82
## #define PARTIAL_WINDOW 0x90
## #define PARTIAL_IN 0x91
## #define PARTIAL_OUT 0x92
## #define PROGRAM_MODE 0xA0
## #define ACTIVE_PROGRAM 0xA1
## #define READ_OTP_DATA 0xA2
## #define POWER_SAVING 0xE3
## -----------------------------------------------------------------------------
## V2.0(2018-11-09):
## 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
## 2.Change:EPD_Display(UBYTE *Image)
## Need to pass parameters: pointer to cached data
## #
## # 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
DEV_Config

const
EPD_4IN2BC_WIDTH* = 400
EPD_4IN2BC_HEIGHT* = 300

proc EPD_4IN2BC_Init*() {.importc: "EPD_4IN2BC_Init".}
proc EPD_4IN2BC_Clear*() {.importc: "EPD_4IN2BC_Clear".}
proc EPD_4IN2BC_Display*(blackimage: ptr UBYTE; ryimage: ptr UBYTE) {.
importc: "EPD_4IN2BC_Display".}
proc EPD_4IN2BC_Sleep*() {.importc: "EPD_4IN2BC_Sleep".}
Loading

0 comments on commit 9242e2a

Please sign in to comment.