/**
 * @file lv_drv_conf.h
 *
 */

/*
 * COPY THIS FILE AS lv_drv_conf.h
 */

#if 1 /*Set it to "1" to enable the content*/

#ifndef LV_DRV_CONF_H
#define LV_DRV_CONF_H

#include "lv_conf.h"

/*********************
 * DELAY INTERFACE
 *********************/
#define LV_DRV_DELAY_INCLUDE <stdint.h>      /*Dummy include by default*/
#define LV_DRV_DELAY_US(us) /*delay_us(us)*/ /*Delay the given number of microseconds*/
#define LV_DRV_DELAY_MS(ms) /*delay_ms(ms)*/ /*Delay the given number of milliseconds*/

/*********************
 * DISPLAY INTERFACE
 *********************/

/*------------
 *  Common
 *------------*/
#define LV_DRV_DISP_INCLUDE <stdint.h>               /*Dummy include by default*/
#define LV_DRV_DISP_CMD_DATA(val) /*pin_x_set(val)*/ /*Set the command/data pin to 'val'*/
#define LV_DRV_DISP_RST(val) /*pin_x_set(val)*/      /*Set the reset pin to 'val'*/

/*---------
 *  SPI
 *---------*/
#define LV_DRV_DISP_SPI_CS(val) /*spi_cs_set(val)*/             /*Set the SPI's Chip select to 'val'*/
#define LV_DRV_DISP_SPI_WR_BYTE(data) /*spi_wr(data)*/          /*Write a byte the SPI bus*/
#define LV_DRV_DISP_SPI_WR_ARRAY(adr, n) /*spi_wr_mem(adr, n)*/ /*Write 'n' bytes to SPI bus from 'adr'*/

/*------------------
 *  Parallel port
 *-----------------*/
#define LV_DRV_DISP_PAR_CS(val) /*par_cs_set(val)*/            /*Set the Parallel port's Chip select to 'val'*/
#define LV_DRV_DISP_PAR_SLOW /*par_slow()*/                    /*Set low speed on the parallel port*/
#define LV_DRV_DISP_PAR_FAST /*par_fast()*/                    /*Set high speed on the parallel port*/
#define LV_DRV_DISP_PAR_WR_WORD(data) /*par_wr(data)*/         /*Write a word to the parallel port*/
#define LV_DRV_DISP_PAR_WR_ARRAY(adr, n) /*par_wr_mem(adr,n)*/ /*Write 'n' bytes to Parallel ports from 'adr'*/

/***************************
 * INPUT DEVICE INTERFACE
 ***************************/

/*----------
 *  Common
 *----------*/
#define LV_DRV_INDEV_INCLUDE <stdint.h>          /*Dummy include by default*/
#define LV_DRV_INDEV_RST(val) /*pin_x_set(val)*/ /*Set the reset pin to 'val'*/
#define LV_DRV_INDEV_IRQ_READ 0 /*pn_x_read()*/  /*Read the IRQ pin*/

/*---------
 *  SPI
 *---------*/
#define LV_DRV_INDEV_SPI_CS(val) /*spi_cs_set(val)*/         /*Set the SPI's Chip select to 'val'*/
#define LV_DRV_INDEV_SPI_XCHG_BYTE(data) 0 /*spi_xchg(val)*/ /*Write 'val' to SPI and give the read value*/

/*---------
 *  I2C
 *---------*/
#define LV_DRV_INDEV_I2C_START /*i2c_start()*/          /*Make an I2C start*/
#define LV_DRV_INDEV_I2C_STOP /*i2c_stop()*/            /*Make an I2C stop*/
#define LV_DRV_INDEV_I2C_RESTART /*i2c_restart()*/      /*Make an I2C restart*/
#define LV_DRV_INDEV_I2C_WR(data) /*i2c_wr(data)*/      /*Write a byte to the I1C bus*/
#define LV_DRV_INDEV_I2C_READ(last_read) 0 /*i2c_rd()*/ /*Read a byte from the I2C bud*/

/*********************
 *  DISPLAY DRIVERS
 *********************/
#ifndef USE_WAYLAND
#define USE_WAYLAND 0
#endif

#if USE_WAYLAND
#define WAYLAND_HOR_RES 480
#define WAYLAND_VER_RES 320
#define WAYLAND_SURF_TITLE "LVGL"
#endif
/*-------------------
 *  Monitor of PC
 *-------------------*/
#ifndef USE_MONITOR
#define USE_MONITOR 1
#endif

#if USE_MONITOR
#define MONITOR_HOR_RES 320
#define MONITOR_VER_RES 240

/* Scale window by this factor (useful when simulating small screens) */
#define MONITOR_ZOOM 1

/* Used to test true double buffering with only address changing.
 * Set LV_draw_buf_SIZE = (LV_HOR_RES * LV_VER_RES) and  LV_draw_buf_DOUBLE = 1 and LV_COLOR_DEPTH = 32" */
#define MONITOR_DOUBLE_BUFFERED 0

/*Eclipse: <SDL2/SDL.h>    Visual Studio: <SDL.h>*/
#define MONITOR_SDL_INCLUDE_PATH <SDL2/SDL.h>

/*Different rendering might be used if running in a Virtual machine*/
#define MONITOR_VIRTUAL_MACHINE 0

/*Open two windows to test multi display support*/
#define MONITOR_DUAL 0
#endif

/*-----------------------------------
 *  Native Windows (including mouse)
 *----------------------------------*/
#ifndef USE_WINDOWS
#define USE_WINDOWS 0
#endif

#define USE_WINDOWS 0
#if USE_WINDOWS
#define WINDOW_HOR_RES 480
#define WINDOW_VER_RES 320
#endif

/*----------------------------------------
 *  GTK drivers (monitor, mouse, keyboard
 *---------------------------------------*/
#ifndef USE_GTK
#define USE_GTK 0
#endif

/*----------------
 *    SSD1963
 *--------------*/
#ifndef USE_SSD1963
#define USE_SSD1963 0
#endif

#if USE_SSD1963
#define SSD1963_HOR_RES LV_HOR_RES
#define SSD1963_VER_RES LV_VER_RES
#define SSD1963_HT 531
#define SSD1963_HPS 43
#define SSD1963_LPS 8
#define SSD1963_HPW 10
#define SSD1963_VT 288
#define SSD1963_VPS 12
#define SSD1963_FPS 4
#define SSD1963_VPW 10
#define SSD1963_HS_NEG 0 /*Negative hsync*/
#define SSD1963_VS_NEG 0 /*Negative vsync*/
#define SSD1963_ORI 0    /*0, 90, 180, 270*/
#define SSD1963_COLOR_DEPTH 16
#endif

/*----------------
 *    R61581
 *--------------*/
#ifndef USE_R61581
#define USE_R61581 0
#endif

#if USE_R61581
#define R61581_HOR_RES LV_HOR_RES
#define R61581_VER_RES LV_VER_RES
#define R61581_HSPL 0            /*HSYNC signal polarity*/
#define R61581_HSL 10            /*HSYNC length (Not Implemented)*/
#define R61581_HFP 10            /*Horitontal Front poarch (Not Implemented)*/
#define R61581_HBP 10            /*Horitontal Back poarch (Not Implemented */
#define R61581_VSPL 0            /*VSYNC signal polarity*/
#define R61581_VSL 10            /*VSYNC length (Not Implemented)*/
#define R61581_VFP 8             /*Vertical Front poarch*/
#define R61581_VBP 8             /*Vertical Back poarch */
#define R61581_DPL 0             /*DCLK signal polarity*/
#define R61581_EPL 1             /*ENABLE signal polarity*/
#define R61581_ORI 0             /*0, 180*/
#define R61581_LV_COLOR_DEPTH 16 /*Fix 16 bit*/
#endif

/*------------------------------
 *  ST7565 (Monochrome, low res.)
 *-----------------------------*/
#ifndef USE_ST7565
#define USE_ST7565 0
#endif

#if USE_ST7565
/*No settings*/
#endif /*USE_ST7565*/

/*------------------------------
 *  GC9A01 (color, low res.)
 *-----------------------------*/
#ifndef USE_GC9A01
#define USE_GC9A01 0
#endif

#if USE_GC9A01
/*No settings*/
#endif /*USE_GC9A01*/

/*------------------------------------------
 *  UC1610 (4 gray 160*[104|128])
 *  (EA DOGXL160 160x104 tested)
 *-----------------------------------------*/
#ifndef USE_UC1610
#define USE_UC1610 0
#endif

#if USE_UC1610
#define UC1610_HOR_RES LV_HOR_RES
#define UC1610_VER_RES LV_VER_RES
#define UC1610_INIT_CONTRAST 33 /* init contrast, values in [%] */
#define UC1610_INIT_HARD_RST 0  /* 1 : hardware reset at init, 0 : software reset */
#define UC1610_TOP_VIEW 0       /* 0 : Bottom View, 1 : Top View */
#endif                          /*USE_UC1610*/

/*-------------------------------------------------
 *  SHARP memory in pixel monochrome display series
 *      LS012B7DD01 (184x38  pixels.)
 *      LS013B7DH03 (128x128 pixels.)
 *      LS013B7DH05 (144x168 pixels.)
 *      LS027B7DH01 (400x240 pixels.) (tested)
 *      LS032B7DD02 (336x536 pixels.)
 *      LS044Q7DH01 (320x240 pixels.)
 *------------------------------------------------*/
#ifndef USE_SHARP_MIP
#define USE_SHARP_MIP 0
#endif

#if USE_SHARP_MIP
#define SHARP_MIP_HOR_RES LV_HOR_RES
#define SHARP_MIP_VER_RES LV_VER_RES
#define SHARP_MIP_SOFT_COM_INVERSION 0
#define SHARP_MIP_REV_BYTE(b) /*((uint8_t) __REV(__RBIT(b)))*/ /*Architecture / compiler dependent byte bits order reverse*/
#endif                                                         /*USE_SHARP_MIP*/

/*-------------------------------------------------
 *  ILI9341 240X320 TFT LCD
 *------------------------------------------------*/
#ifndef USE_ILI9341
#define USE_ILI9341 0
#endif

#if USE_ILI9341
#define ILI9341_HOR_RES LV_HOR_RES
#define ILI9341_VER_RES LV_VER_RES
#define ILI9341_GAMMA 1
#define ILI9341_TEARING 0
#endif /*USE_ILI9341*/

/*-----------------------------------------
 *  Linux frame buffer device (/dev/fbx)
 *-----------------------------------------*/
#ifndef USE_FBDEV
#define USE_FBDEV 1
#endif

#if USE_FBDEV
#define FBDEV_PATH "/dev/fb0"
#endif

/*-----------------------------------------
 *  FreeBSD frame buffer device (/dev/fbx)
 *.........................................*/
#ifndef USE_BSD_FBDEV
#define USE_BSD_FBDEV 0
#endif

#if USE_BSD_FBDEV
#define FBDEV_PATH "/dev/fb0"
#endif

/*-----------------------------------------
 *  DRM/KMS device (/dev/dri/cardX)
 *-----------------------------------------*/
#ifndef USE_DRM
#define USE_DRM 0
#endif

#if USE_DRM
#define DRM_CARD "/dev/dri/card0"
#define DRM_CONNECTOR_ID -1 /* -1 for the first connected one */
#endif

/*********************
 *  INPUT DEVICES
 *********************/

/*--------------
 *    XPT2046
 *--------------*/
#ifndef USE_XPT2046
#define USE_XPT2046 0
#endif

#if USE_XPT2046
#define XPT2046_HOR_RES 480
#define XPT2046_VER_RES 320
#define XPT2046_X_MIN 200
#define XPT2046_Y_MIN 200
#define XPT2046_X_MAX 3800
#define XPT2046_Y_MAX 3800
#define XPT2046_AVG 4
#define XPT2046_X_INV 0
#define XPT2046_Y_INV 0
#define XPT2046_XY_SWAP 0
#endif

/*-----------------
 *    FT5406EE8
 *-----------------*/
#ifndef USE_FT5406EE8
#define USE_FT5406EE8 0
#endif

#if USE_FT5406EE8
#define FT5406EE8_I2C_ADR 0x38 /*7 bit address*/
#endif

/*---------------
 *  AD TOUCH
 *--------------*/
#ifndef USE_AD_TOUCH
#define USE_AD_TOUCH 0
#endif

#if USE_AD_TOUCH
/*No settings*/
#endif

/*---------------------------------------
 * Mouse or touchpad on PC (using SDL)
 *-------------------------------------*/
#ifndef USE_MOUSE
#define USE_MOUSE 1
#endif

#if USE_MOUSE
/*No settings*/
#endif

/*-------------------------------------------
 * Mousewheel as encoder on PC (using SDL)
 *------------------------------------------*/
#ifndef USE_MOUSEWHEEL
#define USE_MOUSEWHEEL 1
#endif

#if USE_MOUSEWHEEL
/*No settings*/
#endif

/*-------------------------------------------------
 * Touchscreen as libinput interface (for Linux based systems)
 *------------------------------------------------*/
#ifndef USE_LIBINPUT
#define USE_LIBINPUT 0
#endif

#if USE_LIBINPUT
#define LIBINPUT_NAME "/dev/input/event0" /*You can use the "evtest" Linux tool to get the list of devices and test them*/
#endif                                    /*USE_LIBINPUT*/

/*-------------------------------------------------
 * Mouse or touchpad as evdev interface (for Linux based systems)
 *------------------------------------------------*/
#ifndef USE_EVDEV
#define USE_EVDEV 0
#endif

#ifndef USE_BSD_EVDEV
#define USE_BSD_EVDEV 0
#endif

#if USE_EVDEV || USE_BSD_EVDEV
#define EVDEV_NAME "/dev/input/event0" /*You can use the "evtest" Linux tool to get the list of devices and test them*/
#define EVDEV_SWAP_AXES 0              /*Swap the x and y axes of the touchscreen*/

#define EVDEV_CALIBRATE 0 /*Scale and offset the touchscreen coordinates by using maximum and minimum values for each axis*/

#if EVDEV_CALIBRATE
#define EVDEV_HOR_MIN 0    /*to invert axis swap EVDEV_XXX_MIN by EVDEV_XXX_MAX*/
#define EVDEV_HOR_MAX 4096 /*"evtest" Linux tool can help to get the correct calibraion values>*/
#define EVDEV_VER_MIN 0
#define EVDEV_VER_MAX 4096
#endif /*EVDEV_CALIBRATE*/
#endif /*USE_EVDEV*/

/*-------------------------------
 *   Keyboard of a PC (using SDL)
 *------------------------------*/
#ifndef USE_KEYBOARD
#define USE_KEYBOARD 1
#endif

#if USE_KEYBOARD
/*No settings*/
#endif

#endif /*LV_DRV_CONF_H*/

#endif /*End of "Content enable"*/
