5 changed files with 1203 additions and 448 deletions
@ -1,409 +1,410 @@ |
|||
***************************************************************************** |
|||
*** Releases *** |
|||
***************************************************************************** |
|||
|
|||
*** Changes after 2.7 *** |
|||
FEATURE: Added support for 128x32 SSD1306 based displays |
|||
FIX: Fixed recursion bug in console history |
|||
FIX: Multithreading issue with slow window redraws and large images |
|||
FIX: Ensure valid thread stack sizes on platforms where it matters |
|||
FEATURE: Added support for a GFILE user provided file system |
|||
FEATURE: Added gwinListItemSetText() to replace text in a GWIN list item |
|||
FEATURE: Added GDISP_IMAGE_BMP_BLIT_BUFFER_SIZE configuration option |
|||
FEATURE: Added GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE configuration option |
|||
FEATURE: Added GDISP_IMAGE_PNG_FILE_BUFFER_SIZE configuration option |
|||
FEATURE: Added GDISP_IMAGE_PNG_Z_BUFFER_SIZE configuration option |
|||
FEATURE: Added GDISP_IMAGE_GIF_BLIT_BUFFER_SIZE configuration option |
|||
FIX: Fixed extra dots when drawing anti-aliased fonts with wordwrap |
|||
FEATURE: Increase non-UTF8 font support to 0 to 255 rather than just the true ascii set |
|||
FEATURE: Added Fb24bpp driver for RGB888 and BGR888 packed framebuffer displays |
|||
FEATURE: Added UC8173 driver |
|||
FEATURE: Added complete support for Altera Terasic MAX10 NEEK board |
|||
FEATURE: Significantly improved the FreeRTOS port |
|||
FEATURE: Added support for operating system initialisation in FreeRTOS |
|||
FEATURE: Added GFX_OS_CALL_UGFXMAIN configuration option to allow uGFXMain() to be automatically called |
|||
FEATURE: Added GFX_OS_UGFXMAIN_STACKSIZE configuration option to control uGFXMain() stack size |
|||
FIX: Fixed where a font with more than 255 glyphs could fail to display some glyphs |
|||
FIX: Fixed where a font with a large x baseline could be incorrectly clipped or word-wrapped |
|||
IMPROVE: Significantly decrease the stack usage required for word-wrapping |
|||
FEATURE: Added justifyTop, justifyMiddle & justifyBottom text justification to GDISP |
|||
FEATURE: Added justifyWordWrap, justifyNoWordWrap text justification to GDISP (requires GDISP_NEED_TEXT_WORDWRAP) |
|||
FEATURE: Added justifyPad, justifyNoPad text justification to GDISP |
|||
FEATURE: Added GDISP_NEED_TEXT_BOXPADLR and GDISP_NEED_TEXT_BOXPADTB configuration options |
|||
FIX: Fixed an issue on FreeRTOS where thread stacks were being created too large |
|||
FEATURE: Added UC1601s driver |
|||
FIX: Fixed issues with the STM746-Discovery board with ChibiOS |
|||
FEATURE: Added partial definition for the STM32F469i-Discovery board |
|||
FIX: Fixed issue where the variable type of the syncflags of the STM32LTDC driver was too small |
|||
FEATURE: Added KS0108 driver |
|||
|
|||
|
|||
*** Release 2.7 *** |
|||
FEATURE: Added EXC7200 driver |
|||
FEATURE: Added STM32F439i-EVAL board files |
|||
FIX: Fixed crash when passing NULL to gwinSetStyle() |
|||
FIX: Fixed potential crash when GDISP_NEED_TEXT_WORDWRAP is turned on |
|||
FEATURE: Added SDL driver |
|||
FEATURE: Added ILI9225 driver |
|||
FEATURE: Added ST7735 driver |
|||
FEATURE: Added Linux event input driver |
|||
FIX: Fixed an issue with color formats in Linux-Framebuffer board files |
|||
FIX: Fixed and improving arc rendering functions |
|||
FIX: Preventing possible crash when no valid GWIN default font has been set |
|||
FIX: Updating Windows binaries of the font encoder to improve compatibility |
|||
FIX: Fixed progressbar bounds checking and decrementing |
|||
FEATURE: Added gdispFillDualCircle() |
|||
FIX: Fixed an issue in the filled polygon drawing function which caused irregularities |
|||
FEATURE: Added high-level functions to modify image color palettes |
|||
FIX: Improving gdispDrawThickLine() |
|||
FEATURE: Added gdispAddFont() for adding a dynamic font to the permanent font list |
|||
FEATURE: Added gmiscHittestPoly() for checking whether a point is inside of a polygon |
|||
FIX: Fixed strange multi-thread issues in GEVENT |
|||
FEATURE: Added ILI9488 driver |
|||
FEATURE: Added the ability to display the detected compiler |
|||
FIX: Fixed an illegal instruction in the Cortex M0 task switcher |
|||
FEATURE: Added RAW32 task switching functions which work with ARMCC (the compiler used by Keil) for Cortex M0,M1,M3,M4 and M7 |
|||
FEATURE: Added gdispGDrawThickArc() |
|||
FIX: Fixed a memory merging issue with the RAW32 memory allocator |
|||
FIX: Update RAW32 libc threads support for more recent versions of the MinGW compiler |
|||
|
|||
|
|||
*** Release 2.6 *** |
|||
FIX: Fixed bug where the list item count wasn't decremented when an item was removed |
|||
FEATURE: Added options GFILE_FATFS_EXTERNAL_LIB and GFILE_PETITFSFS_EXTERNAL_LIB |
|||
FEATURE: Added FT6x06 driver |
|||
FIX: Fixed issue in STM32F746G-Discovery board file that resulted in bad color reproduction |
|||
FEATURE: Added gwinPrintg() |
|||
FIX: Fixed sprintg and related functions handling of NULL pointers. |
|||
FIX: Fixed width calculation of gdispGDrawString() and gdispGFillString(). |
|||
FEATURE: Added QImage display driver. |
|||
FEATURE: Added QWidget touch driver |
|||
FEATURE: Added support for Qt as a GOS platform |
|||
FEATURE: Added ability to set a parent for a win32 ugfx emulator window |
|||
FEATURE: Added ability to inject mouse events for a Win32 ugfx emulator window |
|||
FEATURE: Added ability to turn on and off mouse processing for a win32 ugfx emulator window |
|||
FEATURE: Added ability to capture mouse events on the win32 ugfx emaultor window |
|||
FIX: Fixed issue where children of (nested) containers were not properly handled when callin gwinRaise() |
|||
FEATURE: Automatically close all open files in gfileDeinit() |
|||
FEATURE: Added support for IAR and EDG compilers |
|||
FIX: Fixed crash when loading GIF image without enough memory available |
|||
FEATURE: Added games/minesweeper demo |
|||
FEATURE: Added games/justget10 demo |
|||
|
|||
|
|||
*** Release 2.5 *** |
|||
FEATURE: Added support for numerous compilers |
|||
FIX: Improving STM32LTDC driver |
|||
FEATURE: Added support for NIOS-II platform |
|||
FEATURE: Added Altera-MAX10-NEEK board support |
|||
FIX: Vastly improving keyboard widget default rendering |
|||
FEATURE: Added ILI9342 driver |
|||
FIX: Fixing issues where wrong 'progress' color from widget style palette was used |
|||
FEATURE: Added GWIN_FRAME_KEEPONCLOSE flag to prevent destruction of a frame on close |
|||
FEATURE: Added support for PNG images |
|||
FEATURE: Added new module 'GTRANS' which allows handling application translations |
|||
FEATURE: Added SSD1848 driver |
|||
|
|||
|
|||
*** Release 2.4 *** |
|||
FIX: Add missing stm32m3 cpu makefile option. Update doc to match. |
|||
FEATURE: Added ability to compile ugfx as a single file. Simply compile src/gfx_mk.c |
|||
FEATURE: Added GFXSINGLEMAKE=yes|no to the ugfx makefile to compile ugfx as a single file. |
|||
FEATURE: New board STM32F746G-Discovery |
|||
FEATURE: New gdisp driver STM32LTDC |
|||
FEATURE: Better support for Raw32 platforms |
|||
FEATURE: Renaming GFX_NO_OS_INIT to GFX_OS_NO_INIT |
|||
FEATURE: New demo applications/combo |
|||
FEATURE: Adding more font metrics (BaselineX and BaselineY) |
|||
FEATURE: Adding gdispGetStringWidthCount() |
|||
FEATURE: Implementing widget focusing. See gwinSetFocus() and gwinGetFocus() |
|||
FEATURE: Adding TextEdit widget |
|||
FEATURE: Added color to widget style for focused widgets |
|||
FEATURE: Added GWIN_FOCUS_HIGHLIGHT_WIDTH as an option in the configuration file |
|||
FEATURE: Added support for CMSIS RTOS |
|||
FEATURE: Added support for KEIL RTX |
|||
FEATURE: Replace all references to inline with a reference to GFXINLINE |
|||
FEATURE: Added config option GFX_NO_INLINE to run off inlining of ugfx functions. |
|||
FEATURE: Added word-wrapping support for gdispDrawStringBox() and gdispFillStringBox() |
|||
FIX: Fixing issue in touchscreen calibration code |
|||
FEATURE: Added GFX_OS_PRE_INIT_FUNCTION for early hardware initialization |
|||
FEATURE: Added label rendering functions that allow to set text justification |
|||
FIX: Fixing GTIMER for high clock rate devices |
|||
FEATURE: Added GFX_COMPILER_KEIL and GFX_COMPILER_ARMCC macros |
|||
|
|||
|
|||
*** Release 2.3 *** |
|||
FEATURE: Added more events to the slider widget |
|||
FIX: Clean up visibility issues |
|||
FIX: Correct moving of containers |
|||
FIX: Fix GTIMER bug that could cause all timers to stop. |
|||
FIX: Various minor driver fixes |
|||
FEATURE: Add support for STM32 CCM memory with DMA in SSD1289 and SSD2119 |
|||
FEATURE: New Tabset GWIN widget |
|||
FEATURE: New keyboard driver interface with drivers for Win32 and X |
|||
FEATURE: Support for keyboard layouts for non-english keyboards |
|||
FEATURE: GDISP now supports pixmaps (in memory drawing) |
|||
FEATURE: Rename files to improve experience in certain brain-dead IDE's |
|||
FEATURE: Add a checkbox "Toggle Button" custom draw |
|||
FEATURE: Add Tetris as a game demo |
|||
FEATURE: Add HY-MiniSTM32V board support |
|||
FEATURE: Add GWIN feature to flash any window/widget |
|||
FIX: Lots of GDISP monochrome drivers fixed |
|||
FEATURE: Added TLS8204 GDISP driver |
|||
FIX: Fixes for the board files for Olimex SAM7EX256 |
|||
FEATURE: Add a number of UEXT connector board files for Olimex SAM7EX256 |
|||
FIX: Fix for error rounding in gdispFillConvexPoly() |
|||
FEATURE: Vastly improved gwin arrow button drawing |
|||
FIX: GINPUT toggle fixes |
|||
FIX: GFILE_ALLOW_FLOAT compile error fixed |
|||
FIX: GFILE_NEED_STDIO compile and emulation errors fixed |
|||
FEATURE: Added STMPE610 driver by lliypuk |
|||
FIX: Corrected self calibration code for driver STMPE811 |
|||
FEATURE: Added Mikromedia Plus STM32-M4 board based on work by lliypuk & inmarket |
|||
FIX: Work to improve the gdisp SSD1963 driver |
|||
FEATURE: Added SSD1351 gdisp driver |
|||
FEATURE: Added SSD1331 gdisp driver |
|||
FEATURE: Added arduino as a GOS supported operating system |
|||
FEATURE: Added additional pixel format's |
|||
FIX: Color components fixed for some strange compilers |
|||
FEATURE: Added GWIN virtual keyboard widget |
|||
FEATURE: Added gwinListSetSelected() |
|||
FEATURE: Added gwinListViewItem() |
|||
FIX: GDISP driver color conversion when GDISP_PIXEL_FORMAT != GDISP_LLD_PIXEL_FORMAT |
|||
|
|||
|
|||
*** Release 2.2 *** |
|||
FEATURE: Added nested containers demo |
|||
FEATURE: Revised GWIN redraw strategy |
|||
FEATURE: Added generic framebuffer driver |
|||
FEATURE: Added Linux-Framebuffer board definition |
|||
FEATURE: Added FatFS support for GFILE |
|||
FEATURE: Added gfileMount() and gfileUnmount() |
|||
FEATURE: Added gfileSync() |
|||
FEATURE: Added gwinDrawThickLine() |
|||
FEATURE: Added support for eCos |
|||
FEATURE: Added PCF8812 gdisp driver |
|||
FEATURE: Added PCD8544 gdisp driver |
|||
FEATURE: Added Raspberry Pi board support |
|||
FEATURE: Added R61505U gdisp driver |
|||
FIX: Fix threading issues in GEvent for callbacks |
|||
FEATURE: Added geventEventComplete() |
|||
FEATURE: Added support for the RawOS real time operating system |
|||
FEATURE: Operating System initialisation is now optional |
|||
FEATURE: Prevent mouse events going to obscured widgets |
|||
FEATURE: Add GFILE support for file lists |
|||
FEATURE: Add GFILE support for C strings as files |
|||
FEATURE: Add GFILE support for PetitFS |
|||
FEATURE: Added SPFD54124B GDISP driver by user shilow |
|||
FEATURE: Added GWIN GL3D window type |
|||
FEATURE: Generalised all GWIN events to use a common prefix structure. |
|||
FIX: Improve memory usage for the GWIN Frame widget. |
|||
FEATURE: Added transparent custom draws for GWIN containers and frame widgets |
|||
FEATURE: Added image custom draws for GWIN containers and frame widgets |
|||
FEATURE: Added GDRIVER infrastructure. Ported GDISP to use it. |
|||
FEATURE: Added gdispDrawArcSectors() and gdispFillArcSectors(). |
|||
FEATURE: Ported GINPUT MOUSE to GDRIVER infrastructure. |
|||
FEATURE: Mouse/Touch now support both pen and finger mode. |
|||
DEPRECATE: gwinAttachMouse() is now handled automaticly. |
|||
FEATURE: Added MAX11802 touch driver by user steved |
|||
FEATURE: Added STM32F429i-Discovery board support |
|||
FEATURE: Added DejaVuSans20 and DejaVuSans20_aa built-in fonts |
|||
FEATURE: Added MatrixFloat2D and MatrixFixed2D operations to GMISC |
|||
FEATURE: Added polygon drawing demo (with rotation, scaling and translation) |
|||
|
|||
|
|||
*** Release 2.1 *** |
|||
FIX: Significant improvements to the way the MCU touch driver works. |
|||
FEATURE: Add support for edge to edge touch calibration. |
|||
FEATURE: Added progressbar widget |
|||
FEATURE: Added gdispGDrawThickLine() by user jpa- |
|||
DEPRECATE: TDISP module removed |
|||
FIX: Console does not execute gwinPrintf() anymore if not visible |
|||
FEATURE: Added gwinGetColor() and gwinGetBgColor() |
|||
FEATURE: Console now has an optional backing store buffer (GWIN_CONSOLE_USE_HISTORY) |
|||
FEATURE: Added smooth scrolling to list widget |
|||
FEATURE: Increased performance of gwinListAddItem() |
|||
FEATURE: Added FreeRTOS port |
|||
FEATURE: Added gfxDeinit() |
|||
FEATURE: Allow touch screen calibration in any display orientation |
|||
FEATURE: New GFILE module to abstract File IO. |
|||
FEATURE: Image file handling changed to use new GFILE module. |
|||
DEPRECTATE: Old image opening functions deprecated. |
|||
FEATURE: Restructure and simplify the include path for GFX |
|||
FEATURE: Added LGDP4532 driver by user shilow |
|||
FIX: Updated board files to support api changes in ChibiOS/RT 2.6.4 |
|||
FEATURE: Support for ChibiOS/RT 3.x |
|||
FEATURE: Added gwinProgressbarStop() and gwinProgressbarReset() |
|||
FEATURE: Added generic ILI93xx driver by xlh1460 |
|||
FEATURE: Added gwinListEnableRender() |
|||
FEATURE: Added gwinLabelSetAttribute() |
|||
FEATURE: Complete restructure of the GAUDIN and GAUDOUT into a common GAUDIO module |
|||
FEATURE: Added a PWM audio play driver |
|||
FEATURE: Update GADC audio recording driver to new GAUDIO format |
|||
FEATURE: Added vs1053 audio play driver |
|||
FEATURE: Added GAUDIO wave-play demo |
|||
FEATURE: Added many GWIN simple demo's and updated the combined widget demo |
|||
FEATURE: Added gwinEnable() and gwinDisable() |
|||
FIX: Progressbar widget bug fix that could gwinProgressbarStop() to crash |
|||
FIX: Imagebox widget bug fix that could cause gwinImageOpenFile() to crash |
|||
FEATURE: GWIN containers such as "container" and "frame" which provides parent/children widget management |
|||
FEATURE: Added gdispContrastColor() |
|||
FEATURE: Added gwinShow() and gwinHide() |
|||
FEATURE: ChibiOS/RT 3.x support and example for the Mikromedia STM32-M4 board. |
|||
|
|||
|
|||
*** Release 2.0 *** |
|||
FEATURE: GDISP Streaming API and demos. |
|||
DEPRECATE: GDISP_NEED_ASYNC is now deprecated. |
|||
DEPRECATE: 3rd party boing demo is now deprecated (replaced by GDISP Streaming demo) |
|||
FIX: Remove GOS definitions from demo conf files so that it can be supplied by a makefile. |
|||
FEATURE: Repair GDISP low level driver interfaces so they can now be included in the doxygen documentation. |
|||
FEATURE: New driver interface for GDISP |
|||
FEATURE: Multiple display support |
|||
FEATURE: Multiple controller support |
|||
FEATURE: Application pixel format no longer has to match the low level driver pixel format. |
|||
FEATURE: Many more pixel formats are now supported. |
|||
FEATURE: Many performance optimisations |
|||
FEATURE: Vertical scrolling is now supported if the low level driver supports read_pixel. |
|||
FEATURE: Add gdispFlush() for those controllers that need it |
|||
FEATURE: Add GDISP_NEED_AUTOFLUSH and GDISP_NEED_TIMERFLUSH to automatically flush when required. |
|||
FEATURE: Add support for generic portrait and landscape orientation modes |
|||
FEATURE: Add macro GDISP_DEFAULT_ORIENTATION so an application can specify a default orientation. |
|||
FEATURE: Driver files renamed to allow compiles when all object files go in the same directory |
|||
FEATURE: New directory structure for board files. Predefined boards have all the hardware definitions predefined. |
|||
FEATURE: Board definotions, example projects and makefiles for Win32. |
|||
FEATURE: Board definitions, example projects and makefiles for X. |
|||
FEATURE: Board definitions, example projects and makefiles for the Olimex SAM7-EX256 board. |
|||
Feature: Board definitions, example projects and makefiles for the Olimex STM32-LCD board. |
|||
FEATURE: Board definitions, example projects and makefiles for the Mikromedia STM32-M4 board. |
|||
FEATURE: Board definitions, example projects and makefiles for the Marlin board. |
|||
FEATURE: New invsqrt() routine added to GMISC |
|||
|
|||
|
|||
*** Release 1.9 *** |
|||
FEATURE: GWIN list boxes. |
|||
FIX: POSIX port removed, now dedicated OS-X and Linux ports |
|||
FIX: Several bugfixes |
|||
FEATURE: mcufont integration |
|||
FEATURE: SSD1306 driver by user goeck |
|||
FEATURE: ST7565 driver by user sam0737 |
|||
FEATURE: ED060SC4 driver by user jpa- |
|||
FIX: SSD1289 area filling bug fix by user samofab |
|||
FEATURE: Added gwinListGetSelectedText() |
|||
FEATURE: Added gwinListSetScroll() |
|||
FEATURE: Added gwinLabelSetBorder() |
|||
|
|||
|
|||
*** Release 1.8 *** |
|||
FEATURE: Rename of the project from ChibiOS/GFX to uGFX |
|||
FEATURE: Moved from github.com to bitbucket.org |
|||
FEATURE: New website with a lot more of documentation |
|||
FEATURE: Introduced dedicated discussion forum |
|||
FEATURE: Complete rework of the widget manager (GWIN) |
|||
FEATURE: Added a lot of new widgets |
|||
FEATURE: Added gfxRealloc() to the GOS module |
|||
FIX: gfxHalt() fix for the Win32 port |
|||
FIX: Cleaned up board file mess |
|||
|
|||
|
|||
*** Release 1.7 *** |
|||
FEATURE: Added RA8875 GDISP driver |
|||
FEATURE: Added FT5x06 GINPUT/touch driver |
|||
FIX: Several bugfixes |
|||
|
|||
|
|||
*** Release 1.6 *** |
|||
FEATURE: Added ILI9325 driver - Thanks to Chris van Dongen aka _Sjaak |
|||
FEATURE: Added TDISP module |
|||
FIX: tdispGotoXY() renamed to tdispSetCursor() |
|||
FEATURE: Addition of GADC, GMISC, GAUDIN, GAUDOUT subsystems |
|||
FIX: Removal of the GDISP_LLD() macro |
|||
DEPRECATE: Removal of the GDISP VMT |
|||
FEATURE: Added SSD2119 GDISP driver |
|||
FEATURE: Added GWIN_BUTTON_LAZY_RELEASE macro to disable cancel feature of buttons |
|||
FEATURE: Implemented all four orientation modes for the ILI9320 GDISP driver |
|||
FIX: Renamed every '__inline' macro to 'inline' for compiler compatibilities |
|||
FEATURE: Supporting all standard functions in GDISP Nokia6610GE8 driver |
|||
FEATURE: Added STMPE811 GINPUT driver |
|||
FEATURE: Added gdispDrawPoly() and gdispFillConvexPoly() |
|||
FEATURE: Added arrow button style to GWIN buttons |
|||
FEATURE: Added the ability to specify a custom button drawing routine |
|||
FEATURE: SSD1963 rework by username 'fred' |
|||
FEATURE: Added Picture converter tool |
|||
FEATURE: Added slider widget |
|||
FEATURE: First MIPS32 (PIC32) board files contributed by user 'Dmytro' |
|||
FEATURE: Added gwinDraw() routine |
|||
FEATURE: Added GINPUT Dial support and driver using GADC |
|||
FEATURE: Simplified assigning inputs to buttons and sliders |
|||
FIX: Some fixes for the HD44780 TDISP driver by the user 'Frysk' |
|||
FEATURE: Added ILI9481 by user 'Abhishek' |
|||
FEATURE: Added enable/disable functions for widgets (Buttons) |
|||
FEATURE: Added HX8347D driver by user 'Eddie' |
|||
FEATURE: Added enhanced notepad demo by user 'Abhishek' |
|||
FEATURE: Added GOS module (including sub modules such as GQUEUE) |
|||
FEATURE: Added some functionalities to the TDISP module by user 'Frysk' |
|||
|
|||
|
|||
*** Release 1.5 *** |
|||
FEATURE: GEVENT - for passing event structures from Sources to Listeners |
|||
FEATURE: GTIMER - thread context based once-off and periodic timers. |
|||
FEATURE: GINPUT - extensible, multiple device-type, input sub-system. |
|||
FEATURE: GWIN - full button, console and graph support |
|||
FEATURE: Numerous touch calibration improvements |
|||
FEATURE: Win32 driver - now support gdisp & ginput mouse/touch/toggle |
|||
FEATURE: Win32 driver - full gdisp orientation support |
|||
FEATURE: ILI9320 GDISP driver |
|||
FEATURE: Nokia6610 GDISP driver split in to GE8 and GE12 variants |
|||
FEATURE: Many GDISP drivers changed to use a board interface definition |
|||
FEATURE: GFX source restructure with new gfx.h include file. |
|||
DEPRECATE: console deprecated - replaced with gwin functionality |
|||
DEPRECATE: graph deprecated - replaced with gwin functionality |
|||
DEPRECATE: touchscreen deprecated - replaced with ginput functionality |
|||
FEATURE: Numerous documentation improvements |
|||
FEATURE: Added a number of module demo and test programs |
|||
DEPRECATE: Remove of XPT2046 since full compatibility with ADS7843 |
|||
|
|||
|
|||
*** Release 1.4 *** |
|||
FIX: Nokia 6610 fix |
|||
FEATURE: New driver: Win32 |
|||
FEATURE: implementation of gdispFillArc() |
|||
FIX: Hardware accelerate Arc routines |
|||
FIX: Fix axis orientation for Arc routines |
|||
FEATURE: new gdisp rounded box routines |
|||
FEATURE: new gdispDrawStringBox() |
|||
FEATURE: GWIN infrastructure |
|||
FEATURE: now we fully support doxygen |
|||
|
|||
|
|||
*** Release 1.3 *** |
|||
FEATURE: added FSMC for SSD1289 / F4 |
|||
FEATURE: added calibration storage interface |
|||
FIX: bugfix in filling functions for SSD1289 |
|||
FEATURE: added point_t struct in gdisp.h |
|||
FEATURE: added graph module |
|||
|
|||
|
|||
*** Release 1.2 *** |
|||
FIX: orientation macros changed |
|||
FIX: huge internal bugfix in orientation stuff (big thanks to Abhishek) |
|||
FEATURE: added TOUCHPAD_XY_INVERTED macro |
|||
FIX: struct cal renamed to struct cal_t |
|||
FIX: SCREEN_WIDTH and SCREEN_HEIGHT renamed to GDISP_SCREEN_WIDTH and GDISP_SCREEN_HEIGHT |
|||
FIX: struct TOUCHPAD_t renamed to struct TOUCHPADDriver_t |
|||
FIX: struct GConsole renamed to struct GConsole_t |
|||
FIX: lcdConsoleXXX() functions have been renamed to gfxConsoleXXX() |
|||
FEATURE: FSMC for SSD1289 F2/F4 |
|||
|
|||
|
|||
*** Release 1.1 *** |
|||
FIX: removed gdisp and touchpad prefix of driver directories |
|||
UPDATE: added SSD1963 driver |
|||
FIX: fixed Validation, VMT driver, console and BitBlit |
|||
FEATURE: added clipping support |
|||
FEATURE: addad gdispDrawArc() |
|||
FEATURE: added SSD1963 DMA support |
|||
FEATURE: added touchpad interface for storing calibration values (#define TOUCHPAD_STORE_CALIBRATION) |
|||
CHANGE: replaced every GDISP_XXX macro with GDISP_XXX |
|||
CHANGE: removed last digit of version number |
|||
|
|||
***************************************************************************** |
|||
*** Releases *** |
|||
***************************************************************************** |
|||
|
|||
*** Changes after 2.7 *** |
|||
FEATURE: Added support for 128x32 SSD1306 based displays |
|||
FIX: Fixed recursion bug in console history |
|||
FIX: Multithreading issue with slow window redraws and large images |
|||
FIX: Ensure valid thread stack sizes on platforms where it matters |
|||
FEATURE: Added support for a GFILE user provided file system |
|||
FEATURE: Added gwinListItemSetText() to replace text in a GWIN list item |
|||
FEATURE: Added GDISP_IMAGE_BMP_BLIT_BUFFER_SIZE configuration option |
|||
FEATURE: Added GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE configuration option |
|||
FEATURE: Added GDISP_IMAGE_PNG_FILE_BUFFER_SIZE configuration option |
|||
FEATURE: Added GDISP_IMAGE_PNG_Z_BUFFER_SIZE configuration option |
|||
FEATURE: Added GDISP_IMAGE_GIF_BLIT_BUFFER_SIZE configuration option |
|||
FIX: Fixed extra dots when drawing anti-aliased fonts with wordwrap |
|||
FEATURE: Increase non-UTF8 font support to 0 to 255 rather than just the true ascii set |
|||
FEATURE: Added Fb24bpp driver for RGB888 and BGR888 packed framebuffer displays |
|||
FEATURE: Added UC8173 driver |
|||
FEATURE: Added complete support for Altera Terasic MAX10 NEEK board |
|||
FEATURE: Significantly improved the FreeRTOS port |
|||
FEATURE: Added support for operating system initialisation in FreeRTOS |
|||
FEATURE: Added GFX_OS_CALL_UGFXMAIN configuration option to allow uGFXMain() to be automatically called |
|||
FEATURE: Added GFX_OS_UGFXMAIN_STACKSIZE configuration option to control uGFXMain() stack size |
|||
FIX: Fixed where a font with more than 255 glyphs could fail to display some glyphs |
|||
FIX: Fixed where a font with a large x baseline could be incorrectly clipped or word-wrapped |
|||
IMPROVE: Significantly decrease the stack usage required for word-wrapping |
|||
FEATURE: Added justifyTop, justifyMiddle & justifyBottom text justification to GDISP |
|||
FEATURE: Added justifyWordWrap, justifyNoWordWrap text justification to GDISP (requires GDISP_NEED_TEXT_WORDWRAP) |
|||
FEATURE: Added justifyPad, justifyNoPad text justification to GDISP |
|||
FEATURE: Added GDISP_NEED_TEXT_BOXPADLR and GDISP_NEED_TEXT_BOXPADTB configuration options |
|||
FIX: Fixed an issue on FreeRTOS where thread stacks were being created too large |
|||
FEATURE: Added UC1601s driver |
|||
FIX: Fixed issues with the STM746-Discovery board with ChibiOS |
|||
FEATURE: Added partial definition for the STM32F469i-Discovery board |
|||
FIX: Fixed issue where the variable type of the syncflags of the STM32LTDC driver was too small |
|||
FEATURE: Added KS0108 driver |
|||
FEATURE: Added RA6963 driver |
|||
|
|||
|
|||
*** Release 2.7 *** |
|||
FEATURE: Added EXC7200 driver |
|||
FEATURE: Added STM32F439i-EVAL board files |
|||
FIX: Fixed crash when passing NULL to gwinSetStyle() |
|||
FIX: Fixed potential crash when GDISP_NEED_TEXT_WORDWRAP is turned on |
|||
FEATURE: Added SDL driver |
|||
FEATURE: Added ILI9225 driver |
|||
FEATURE: Added ST7735 driver |
|||
FEATURE: Added Linux event input driver |
|||
FIX: Fixed an issue with color formats in Linux-Framebuffer board files |
|||
FIX: Fixed and improving arc rendering functions |
|||
FIX: Preventing possible crash when no valid GWIN default font has been set |
|||
FIX: Updating Windows binaries of the font encoder to improve compatibility |
|||
FIX: Fixed progressbar bounds checking and decrementing |
|||
FEATURE: Added gdispFillDualCircle() |
|||
FIX: Fixed an issue in the filled polygon drawing function which caused irregularities |
|||
FEATURE: Added high-level functions to modify image color palettes |
|||
FIX: Improving gdispDrawThickLine() |
|||
FEATURE: Added gdispAddFont() for adding a dynamic font to the permanent font list |
|||
FEATURE: Added gmiscHittestPoly() for checking whether a point is inside of a polygon |
|||
FIX: Fixed strange multi-thread issues in GEVENT |
|||
FEATURE: Added ILI9488 driver |
|||
FEATURE: Added the ability to display the detected compiler |
|||
FIX: Fixed an illegal instruction in the Cortex M0 task switcher |
|||
FEATURE: Added RAW32 task switching functions which work with ARMCC (the compiler used by Keil) for Cortex M0,M1,M3,M4 and M7 |
|||
FEATURE: Added gdispGDrawThickArc() |
|||
FIX: Fixed a memory merging issue with the RAW32 memory allocator |
|||
FIX: Update RAW32 libc threads support for more recent versions of the MinGW compiler |
|||
|
|||
|
|||
*** Release 2.6 *** |
|||
FIX: Fixed bug where the list item count wasn't decremented when an item was removed |
|||
FEATURE: Added options GFILE_FATFS_EXTERNAL_LIB and GFILE_PETITFSFS_EXTERNAL_LIB |
|||
FEATURE: Added FT6x06 driver |
|||
FIX: Fixed issue in STM32F746G-Discovery board file that resulted in bad color reproduction |
|||
FEATURE: Added gwinPrintg() |
|||
FIX: Fixed sprintg and related functions handling of NULL pointers. |
|||
FIX: Fixed width calculation of gdispGDrawString() and gdispGFillString(). |
|||
FEATURE: Added QImage display driver. |
|||
FEATURE: Added QWidget touch driver |
|||
FEATURE: Added support for Qt as a GOS platform |
|||
FEATURE: Added ability to set a parent for a win32 ugfx emulator window |
|||
FEATURE: Added ability to inject mouse events for a Win32 ugfx emulator window |
|||
FEATURE: Added ability to turn on and off mouse processing for a win32 ugfx emulator window |
|||
FEATURE: Added ability to capture mouse events on the win32 ugfx emaultor window |
|||
FIX: Fixed issue where children of (nested) containers were not properly handled when callin gwinRaise() |
|||
FEATURE: Automatically close all open files in gfileDeinit() |
|||
FEATURE: Added support for IAR and EDG compilers |
|||
FIX: Fixed crash when loading GIF image without enough memory available |
|||
FEATURE: Added games/minesweeper demo |
|||
FEATURE: Added games/justget10 demo |
|||
|
|||
|
|||
*** Release 2.5 *** |
|||
FEATURE: Added support for numerous compilers |
|||
FIX: Improving STM32LTDC driver |
|||
FEATURE: Added support for NIOS-II platform |
|||
FEATURE: Added Altera-MAX10-NEEK board support |
|||
FIX: Vastly improving keyboard widget default rendering |
|||
FEATURE: Added ILI9342 driver |
|||
FIX: Fixing issues where wrong 'progress' color from widget style palette was used |
|||
FEATURE: Added GWIN_FRAME_KEEPONCLOSE flag to prevent destruction of a frame on close |
|||
FEATURE: Added support for PNG images |
|||
FEATURE: Added new module 'GTRANS' which allows handling application translations |
|||
FEATURE: Added SSD1848 driver |
|||
|
|||
|
|||
*** Release 2.4 *** |
|||
FIX: Add missing stm32m3 cpu makefile option. Update doc to match. |
|||
FEATURE: Added ability to compile ugfx as a single file. Simply compile src/gfx_mk.c |
|||
FEATURE: Added GFXSINGLEMAKE=yes|no to the ugfx makefile to compile ugfx as a single file. |
|||
FEATURE: New board STM32F746G-Discovery |
|||
FEATURE: New gdisp driver STM32LTDC |
|||
FEATURE: Better support for Raw32 platforms |
|||
FEATURE: Renaming GFX_NO_OS_INIT to GFX_OS_NO_INIT |
|||
FEATURE: New demo applications/combo |
|||
FEATURE: Adding more font metrics (BaselineX and BaselineY) |
|||
FEATURE: Adding gdispGetStringWidthCount() |
|||
FEATURE: Implementing widget focusing. See gwinSetFocus() and gwinGetFocus() |
|||
FEATURE: Adding TextEdit widget |
|||
FEATURE: Added color to widget style for focused widgets |
|||
FEATURE: Added GWIN_FOCUS_HIGHLIGHT_WIDTH as an option in the configuration file |
|||
FEATURE: Added support for CMSIS RTOS |
|||
FEATURE: Added support for KEIL RTX |
|||
FEATURE: Replace all references to inline with a reference to GFXINLINE |
|||
FEATURE: Added config option GFX_NO_INLINE to run off inlining of ugfx functions. |
|||
FEATURE: Added word-wrapping support for gdispDrawStringBox() and gdispFillStringBox() |
|||
FIX: Fixing issue in touchscreen calibration code |
|||
FEATURE: Added GFX_OS_PRE_INIT_FUNCTION for early hardware initialization |
|||
FEATURE: Added label rendering functions that allow to set text justification |
|||
FIX: Fixing GTIMER for high clock rate devices |
|||
FEATURE: Added GFX_COMPILER_KEIL and GFX_COMPILER_ARMCC macros |
|||
|
|||
|
|||
*** Release 2.3 *** |
|||
FEATURE: Added more events to the slider widget |
|||
FIX: Clean up visibility issues |
|||
FIX: Correct moving of containers |
|||
FIX: Fix GTIMER bug that could cause all timers to stop. |
|||
FIX: Various minor driver fixes |
|||
FEATURE: Add support for STM32 CCM memory with DMA in SSD1289 and SSD2119 |
|||
FEATURE: New Tabset GWIN widget |
|||
FEATURE: New keyboard driver interface with drivers for Win32 and X |
|||
FEATURE: Support for keyboard layouts for non-english keyboards |
|||
FEATURE: GDISP now supports pixmaps (in memory drawing) |
|||
FEATURE: Rename files to improve experience in certain brain-dead IDE's |
|||
FEATURE: Add a checkbox "Toggle Button" custom draw |
|||
FEATURE: Add Tetris as a game demo |
|||
FEATURE: Add HY-MiniSTM32V board support |
|||
FEATURE: Add GWIN feature to flash any window/widget |
|||
FIX: Lots of GDISP monochrome drivers fixed |
|||
FEATURE: Added TLS8204 GDISP driver |
|||
FIX: Fixes for the board files for Olimex SAM7EX256 |
|||
FEATURE: Add a number of UEXT connector board files for Olimex SAM7EX256 |
|||
FIX: Fix for error rounding in gdispFillConvexPoly() |
|||
FEATURE: Vastly improved gwin arrow button drawing |
|||
FIX: GINPUT toggle fixes |
|||
FIX: GFILE_ALLOW_FLOAT compile error fixed |
|||
FIX: GFILE_NEED_STDIO compile and emulation errors fixed |
|||
FEATURE: Added STMPE610 driver by lliypuk |
|||
FIX: Corrected self calibration code for driver STMPE811 |
|||
FEATURE: Added Mikromedia Plus STM32-M4 board based on work by lliypuk & inmarket |
|||
FIX: Work to improve the gdisp SSD1963 driver |
|||
FEATURE: Added SSD1351 gdisp driver |
|||
FEATURE: Added SSD1331 gdisp driver |
|||
FEATURE: Added arduino as a GOS supported operating system |
|||
FEATURE: Added additional pixel format's |
|||
FIX: Color components fixed for some strange compilers |
|||
FEATURE: Added GWIN virtual keyboard widget |
|||
FEATURE: Added gwinListSetSelected() |
|||
FEATURE: Added gwinListViewItem() |
|||
FIX: GDISP driver color conversion when GDISP_PIXEL_FORMAT != GDISP_LLD_PIXEL_FORMAT |
|||
|
|||
|
|||
*** Release 2.2 *** |
|||
FEATURE: Added nested containers demo |
|||
FEATURE: Revised GWIN redraw strategy |
|||
FEATURE: Added generic framebuffer driver |
|||
FEATURE: Added Linux-Framebuffer board definition |
|||
FEATURE: Added FatFS support for GFILE |
|||
FEATURE: Added gfileMount() and gfileUnmount() |
|||
FEATURE: Added gfileSync() |
|||
FEATURE: Added gwinDrawThickLine() |
|||
FEATURE: Added support for eCos |
|||
FEATURE: Added PCF8812 gdisp driver |
|||
FEATURE: Added PCD8544 gdisp driver |
|||
FEATURE: Added Raspberry Pi board support |
|||
FEATURE: Added R61505U gdisp driver |
|||
FIX: Fix threading issues in GEvent for callbacks |
|||
FEATURE: Added geventEventComplete() |
|||
FEATURE: Added support for the RawOS real time operating system |
|||
FEATURE: Operating System initialisation is now optional |
|||
FEATURE: Prevent mouse events going to obscured widgets |
|||
FEATURE: Add GFILE support for file lists |
|||
FEATURE: Add GFILE support for C strings as files |
|||
FEATURE: Add GFILE support for PetitFS |
|||
FEATURE: Added SPFD54124B GDISP driver by user shilow |
|||
FEATURE: Added GWIN GL3D window type |
|||
FEATURE: Generalised all GWIN events to use a common prefix structure. |
|||
FIX: Improve memory usage for the GWIN Frame widget. |
|||
FEATURE: Added transparent custom draws for GWIN containers and frame widgets |
|||
FEATURE: Added image custom draws for GWIN containers and frame widgets |
|||
FEATURE: Added GDRIVER infrastructure. Ported GDISP to use it. |
|||
FEATURE: Added gdispDrawArcSectors() and gdispFillArcSectors(). |
|||
FEATURE: Ported GINPUT MOUSE to GDRIVER infrastructure. |
|||
FEATURE: Mouse/Touch now support both pen and finger mode. |
|||
DEPRECATE: gwinAttachMouse() is now handled automaticly. |
|||
FEATURE: Added MAX11802 touch driver by user steved |
|||
FEATURE: Added STM32F429i-Discovery board support |
|||
FEATURE: Added DejaVuSans20 and DejaVuSans20_aa built-in fonts |
|||
FEATURE: Added MatrixFloat2D and MatrixFixed2D operations to GMISC |
|||
FEATURE: Added polygon drawing demo (with rotation, scaling and translation) |
|||
|
|||
|
|||
*** Release 2.1 *** |
|||
FIX: Significant improvements to the way the MCU touch driver works. |
|||
FEATURE: Add support for edge to edge touch calibration. |
|||
FEATURE: Added progressbar widget |
|||
FEATURE: Added gdispGDrawThickLine() by user jpa- |
|||
DEPRECATE: TDISP module removed |
|||
FIX: Console does not execute gwinPrintf() anymore if not visible |
|||
FEATURE: Added gwinGetColor() and gwinGetBgColor() |
|||
FEATURE: Console now has an optional backing store buffer (GWIN_CONSOLE_USE_HISTORY) |
|||
FEATURE: Added smooth scrolling to list widget |
|||
FEATURE: Increased performance of gwinListAddItem() |
|||
FEATURE: Added FreeRTOS port |
|||
FEATURE: Added gfxDeinit() |
|||
FEATURE: Allow touch screen calibration in any display orientation |
|||
FEATURE: New GFILE module to abstract File IO. |
|||
FEATURE: Image file handling changed to use new GFILE module. |
|||
DEPRECTATE: Old image opening functions deprecated. |
|||
FEATURE: Restructure and simplify the include path for GFX |
|||
FEATURE: Added LGDP4532 driver by user shilow |
|||
FIX: Updated board files to support api changes in ChibiOS/RT 2.6.4 |
|||
FEATURE: Support for ChibiOS/RT 3.x |
|||
FEATURE: Added gwinProgressbarStop() and gwinProgressbarReset() |
|||
FEATURE: Added generic ILI93xx driver by xlh1460 |
|||
FEATURE: Added gwinListEnableRender() |
|||
FEATURE: Added gwinLabelSetAttribute() |
|||
FEATURE: Complete restructure of the GAUDIN and GAUDOUT into a common GAUDIO module |
|||
FEATURE: Added a PWM audio play driver |
|||
FEATURE: Update GADC audio recording driver to new GAUDIO format |
|||
FEATURE: Added vs1053 audio play driver |
|||
FEATURE: Added GAUDIO wave-play demo |
|||
FEATURE: Added many GWIN simple demo's and updated the combined widget demo |
|||
FEATURE: Added gwinEnable() and gwinDisable() |
|||
FIX: Progressbar widget bug fix that could gwinProgressbarStop() to crash |
|||
FIX: Imagebox widget bug fix that could cause gwinImageOpenFile() to crash |
|||
FEATURE: GWIN containers such as "container" and "frame" which provides parent/children widget management |
|||
FEATURE: Added gdispContrastColor() |
|||
FEATURE: Added gwinShow() and gwinHide() |
|||
FEATURE: ChibiOS/RT 3.x support and example for the Mikromedia STM32-M4 board. |
|||
|
|||
|
|||
*** Release 2.0 *** |
|||
FEATURE: GDISP Streaming API and demos. |
|||
DEPRECATE: GDISP_NEED_ASYNC is now deprecated. |
|||
DEPRECATE: 3rd party boing demo is now deprecated (replaced by GDISP Streaming demo) |
|||
FIX: Remove GOS definitions from demo conf files so that it can be supplied by a makefile. |
|||
FEATURE: Repair GDISP low level driver interfaces so they can now be included in the doxygen documentation. |
|||
FEATURE: New driver interface for GDISP |
|||
FEATURE: Multiple display support |
|||
FEATURE: Multiple controller support |
|||
FEATURE: Application pixel format no longer has to match the low level driver pixel format. |
|||
FEATURE: Many more pixel formats are now supported. |
|||
FEATURE: Many performance optimisations |
|||
FEATURE: Vertical scrolling is now supported if the low level driver supports read_pixel. |
|||
FEATURE: Add gdispFlush() for those controllers that need it |
|||
FEATURE: Add GDISP_NEED_AUTOFLUSH and GDISP_NEED_TIMERFLUSH to automatically flush when required. |
|||
FEATURE: Add support for generic portrait and landscape orientation modes |
|||
FEATURE: Add macro GDISP_DEFAULT_ORIENTATION so an application can specify a default orientation. |
|||
FEATURE: Driver files renamed to allow compiles when all object files go in the same directory |
|||
FEATURE: New directory structure for board files. Predefined boards have all the hardware definitions predefined. |
|||
FEATURE: Board definotions, example projects and makefiles for Win32. |
|||
FEATURE: Board definitions, example projects and makefiles for X. |
|||
FEATURE: Board definitions, example projects and makefiles for the Olimex SAM7-EX256 board. |
|||
Feature: Board definitions, example projects and makefiles for the Olimex STM32-LCD board. |
|||
FEATURE: Board definitions, example projects and makefiles for the Mikromedia STM32-M4 board. |
|||
FEATURE: Board definitions, example projects and makefiles for the Marlin board. |
|||
FEATURE: New invsqrt() routine added to GMISC |
|||
|
|||
|
|||
*** Release 1.9 *** |
|||
FEATURE: GWIN list boxes. |
|||
FIX: POSIX port removed, now dedicated OS-X and Linux ports |
|||
FIX: Several bugfixes |
|||
FEATURE: mcufont integration |
|||
FEATURE: SSD1306 driver by user goeck |
|||
FEATURE: ST7565 driver by user sam0737 |
|||
FEATURE: ED060SC4 driver by user jpa- |
|||
FIX: SSD1289 area filling bug fix by user samofab |
|||
FEATURE: Added gwinListGetSelectedText() |
|||
FEATURE: Added gwinListSetScroll() |
|||
FEATURE: Added gwinLabelSetBorder() |
|||
|
|||
|
|||
*** Release 1.8 *** |
|||
FEATURE: Rename of the project from ChibiOS/GFX to uGFX |
|||
FEATURE: Moved from github.com to bitbucket.org |
|||
FEATURE: New website with a lot more of documentation |
|||
FEATURE: Introduced dedicated discussion forum |
|||
FEATURE: Complete rework of the widget manager (GWIN) |
|||
FEATURE: Added a lot of new widgets |
|||
FEATURE: Added gfxRealloc() to the GOS module |
|||
FIX: gfxHalt() fix for the Win32 port |
|||
FIX: Cleaned up board file mess |
|||
|
|||
|
|||
*** Release 1.7 *** |
|||
FEATURE: Added RA8875 GDISP driver |
|||
FEATURE: Added FT5x06 GINPUT/touch driver |
|||
FIX: Several bugfixes |
|||
|
|||
|
|||
*** Release 1.6 *** |
|||
FEATURE: Added ILI9325 driver - Thanks to Chris van Dongen aka _Sjaak |
|||
FEATURE: Added TDISP module |
|||
FIX: tdispGotoXY() renamed to tdispSetCursor() |
|||
FEATURE: Addition of GADC, GMISC, GAUDIN, GAUDOUT subsystems |
|||
FIX: Removal of the GDISP_LLD() macro |
|||
DEPRECATE: Removal of the GDISP VMT |
|||
FEATURE: Added SSD2119 GDISP driver |
|||
FEATURE: Added GWIN_BUTTON_LAZY_RELEASE macro to disable cancel feature of buttons |
|||
FEATURE: Implemented all four orientation modes for the ILI9320 GDISP driver |
|||
FIX: Renamed every '__inline' macro to 'inline' for compiler compatibilities |
|||
FEATURE: Supporting all standard functions in GDISP Nokia6610GE8 driver |
|||
FEATURE: Added STMPE811 GINPUT driver |
|||
FEATURE: Added gdispDrawPoly() and gdispFillConvexPoly() |
|||
FEATURE: Added arrow button style to GWIN buttons |
|||
FEATURE: Added the ability to specify a custom button drawing routine |
|||
FEATURE: SSD1963 rework by username 'fred' |
|||
FEATURE: Added Picture converter tool |
|||
FEATURE: Added slider widget |
|||
FEATURE: First MIPS32 (PIC32) board files contributed by user 'Dmytro' |
|||
FEATURE: Added gwinDraw() routine |
|||
FEATURE: Added GINPUT Dial support and driver using GADC |
|||
FEATURE: Simplified assigning inputs to buttons and sliders |
|||
FIX: Some fixes for the HD44780 TDISP driver by the user 'Frysk' |
|||
FEATURE: Added ILI9481 by user 'Abhishek' |
|||
FEATURE: Added enable/disable functions for widgets (Buttons) |
|||
FEATURE: Added HX8347D driver by user 'Eddie' |
|||
FEATURE: Added enhanced notepad demo by user 'Abhishek' |
|||
FEATURE: Added GOS module (including sub modules such as GQUEUE) |
|||
FEATURE: Added some functionalities to the TDISP module by user 'Frysk' |
|||
|
|||
|
|||
*** Release 1.5 *** |
|||
FEATURE: GEVENT - for passing event structures from Sources to Listeners |
|||
FEATURE: GTIMER - thread context based once-off and periodic timers. |
|||
FEATURE: GINPUT - extensible, multiple device-type, input sub-system. |
|||
FEATURE: GWIN - full button, console and graph support |
|||
FEATURE: Numerous touch calibration improvements |
|||
FEATURE: Win32 driver - now support gdisp & ginput mouse/touch/toggle |
|||
FEATURE: Win32 driver - full gdisp orientation support |
|||
FEATURE: ILI9320 GDISP driver |
|||
FEATURE: Nokia6610 GDISP driver split in to GE8 and GE12 variants |
|||
FEATURE: Many GDISP drivers changed to use a board interface definition |
|||
FEATURE: GFX source restructure with new gfx.h include file. |
|||
DEPRECATE: console deprecated - replaced with gwin functionality |
|||
DEPRECATE: graph deprecated - replaced with gwin functionality |
|||
DEPRECATE: touchscreen deprecated - replaced with ginput functionality |
|||
FEATURE: Numerous documentation improvements |
|||
FEATURE: Added a number of module demo and test programs |
|||
DEPRECATE: Remove of XPT2046 since full compatibility with ADS7843 |
|||
|
|||
|
|||
*** Release 1.4 *** |
|||
FIX: Nokia 6610 fix |
|||
FEATURE: New driver: Win32 |
|||
FEATURE: implementation of gdispFillArc() |
|||
FIX: Hardware accelerate Arc routines |
|||
FIX: Fix axis orientation for Arc routines |
|||
FEATURE: new gdisp rounded box routines |
|||
FEATURE: new gdispDrawStringBox() |
|||
FEATURE: GWIN infrastructure |
|||
FEATURE: now we fully support doxygen |
|||
|
|||
|
|||
*** Release 1.3 *** |
|||
FEATURE: added FSMC for SSD1289 / F4 |
|||
FEATURE: added calibration storage interface |
|||
FIX: bugfix in filling functions for SSD1289 |
|||
FEATURE: added point_t struct in gdisp.h |
|||
FEATURE: added graph module |
|||
|
|||
|
|||
*** Release 1.2 *** |
|||
FIX: orientation macros changed |
|||
FIX: huge internal bugfix in orientation stuff (big thanks to Abhishek) |
|||
FEATURE: added TOUCHPAD_XY_INVERTED macro |
|||
FIX: struct cal renamed to struct cal_t |
|||
FIX: SCREEN_WIDTH and SCREEN_HEIGHT renamed to GDISP_SCREEN_WIDTH and GDISP_SCREEN_HEIGHT |
|||
FIX: struct TOUCHPAD_t renamed to struct TOUCHPADDriver_t |
|||
FIX: struct GConsole renamed to struct GConsole_t |
|||
FIX: lcdConsoleXXX() functions have been renamed to gfxConsoleXXX() |
|||
FEATURE: FSMC for SSD1289 F2/F4 |
|||
|
|||
|
|||
*** Release 1.1 *** |
|||
FIX: removed gdisp and touchpad prefix of driver directories |
|||
UPDATE: added SSD1963 driver |
|||
FIX: fixed Validation, VMT driver, console and BitBlit |
|||
FEATURE: added clipping support |
|||
FEATURE: addad gdispDrawArc() |
|||
FEATURE: added SSD1963 DMA support |
|||
FEATURE: added touchpad interface for storing calibration values (#define TOUCHPAD_STORE_CALIBRATION) |
|||
CHANGE: replaced every GDISP_XXX macro with GDISP_XXX |
|||
CHANGE: removed last digit of version number |
|||
|
|||
|
@ -0,0 +1,320 @@ |
|||
/*
|
|||
* This file is subject to the terms of the GFX License. If a copy of |
|||
* the license was not distributed with this file, you can obtain one at: |
|||
* |
|||
* http://ugfx.org/license.html
|
|||
*/ |
|||
|
|||
/* RA6963 Driver
|
|||
* Pinout: |
|||
* Version 1: |
|||
* 1 - Vee Negative Voltage Output |
|||
* 2 - GND GND |
|||
* 3 - +5V |
|||
* 4 - Vo LCD Driver Supply (10-20k Pot between +5V and Vee) |
|||
* 5 - /WR Write (Low active) |
|||
* 6 - /RD Read (Low active) |
|||
* 7 - /CE Chip Enable (Low active) |
|||
* 8 - C/D Command or Data |
|||
* 9 - /RST Reset (Low active) |
|||
* 10..17 - D0..7 |
|||
* 18 - FS Font Select |
|||
* 19 - A Backlight Anode (~4.3V) |
|||
* 20 - K Backlight Cathode (GND) |
|||
*/ |
|||
#ifndef _GDISP_LLD_BOARD_H |
|||
#define _GDISP_LLD_BOARD_H |
|||
|
|||
// My Settings
|
|||
#define RA6963_NEED_READ FALSE //works, but is very slow!
|
|||
#define RA6963_HAS_RESET FALSE |
|||
#define RA6963_NEED_FONT_SELECT FALSE |
|||
#define RA6963_NEED_BACKLIGHT FALSE |
|||
#define RA6963_NEED_PWMBACKLIGHT FALSE |
|||
#define GDISP_SCREEN_HEIGHT 64 |
|||
#define GDISP_SCREEN_WIDTH 128 |
|||
#define GDISP_INITIAL_CONTRAST 50 |
|||
#define GDISP_INITIAL_BACKLIGHT 100 |
|||
|
|||
#define RA6963_delay(n) {asm("nop");asm("nop");asm("nop");asm("nop");} |
|||
|
|||
#define LINE_WR PAL_LINE(GPIOB, 8U) |
|||
#if RA6963_NEED_READ |
|||
#define LINE_RD PAL_LINE(GPIOB, 9U) |
|||
#endif |
|||
#define LINE_CE PAL_LINE(GPIOB, 10U) |
|||
#define LINE_CD PAL_LINE(GPIOB, 11U) |
|||
#if RA6963_HAS_RESET |
|||
#define LINE_RST PAL_LINE(GPIOB, 12U) |
|||
#endif |
|||
#define LINE_D0 PAL_LINE(GPIOB, 0U) |
|||
#define LINE_D1 PAL_LINE(GPIOB, 1U) |
|||
#define LINE_D2 PAL_LINE(GPIOB, 2U) |
|||
#define LINE_D3 PAL_LINE(GPIOB, 3U) |
|||
#define LINE_D4 PAL_LINE(GPIOB, 4U) |
|||
#define LINE_D5 PAL_LINE(GPIOB, 5U) |
|||
#define LINE_D6 PAL_LINE(GPIOB, 6U) |
|||
#define LINE_D7 PAL_LINE(GPIOB, 7U) |
|||
#if RA6963_NEED_FONT_SELECT |
|||
#define LINE_FS PAL_LINE(GPIOA, 13U) |
|||
#endif |
|||
#if RA6963_NEED_BACKLIGHT |
|||
#define LINE_BL PAL_LINE(GPIOA, 14U) |
|||
#endif |
|||
|
|||
typedef struct { |
|||
ioline_t WR; //Write PIN
|
|||
#if RA6963_NEED_READ |
|||
ioline_t RD; //Read PIN (tie to +5V if not needed)
|
|||
#endif |
|||
ioline_t CE; //Chip Enable PIN
|
|||
ioline_t CD; //Command/Data Select PIN
|
|||
#if RA6963_HAS_RESET |
|||
ioline_t RST; //Reset PIN (tie to +5V if not needed)
|
|||
#endif |
|||
ioline_t D[8]; //Data PINs
|
|||
#if RA6963_NEED_BACKLIGHT |
|||
ioline_t BL; //Backlight PIN
|
|||
#endif |
|||
#if RA6963_NEED_FONT_SELECT |
|||
ioline_t FS; //Font Select PIN (tie to GND if not needed)
|
|||
#endif |
|||
} lcd_pins_t; |
|||
|
|||
/*===========================================================================*/ |
|||
/* Driver local variables. */ |
|||
/*===========================================================================*/ |
|||
static const lcd_pins_t lcdpins = { |
|||
LINE_WR, |
|||
#if RA6963_NEED_READ |
|||
LINE_RD, |
|||
#endif |
|||
LINE_CE, |
|||
LINE_CD, |
|||
#if RA6963_HAS_RESET |
|||
LINE_RST, |
|||
#endif |
|||
{ |
|||
LINE_D0, |
|||
LINE_D1, |
|||
LINE_D2, |
|||
LINE_D3, |
|||
LINE_D4, |
|||
LINE_D5, |
|||
LINE_D6, |
|||
LINE_D7 |
|||
}, |
|||
#if RA6963_NEED_BACKLIGHT |
|||
LINE_BL, |
|||
#endif |
|||
#if RA6963_NEED_FONT_SELECT |
|||
LINE_FS, |
|||
#endif |
|||
}; |
|||
|
|||
static GFXINLINE void init_board(GDisplay* g){ |
|||
(void) g; |
|||
g->board = 0; |
|||
int ii; |
|||
//################################DEBUG#######################################
|
|||
#define DEB13_ON palClearLine(PAL_LINE(GPIOB, 13U)) |
|||
#define DEB13_OFF palSetLine(PAL_LINE(GPIOB, 13U)) |
|||
#define DEB14_ON palClearLine(PAL_LINE(GPIOB, 14U)) |
|||
#define DEB14_OFF palSetLine(PAL_LINE(GPIOB, 14U)) |
|||
|
|||
palSetLineMode(PAL_LINE(GPIOB, 13U), PAL_MODE_OUTPUT_PUSHPULL); |
|||
DEB13_OFF; |
|||
palSetLineMode(PAL_LINE(GPIOB, 14U), PAL_MODE_OUTPUT_PUSHPULL); |
|||
DEB14_OFF; |
|||
|
|||
//################################DEBUG#######################################
|
|||
|
|||
palSetLineMode(lcdpins.WR, PAL_MODE_OUTPUT_PUSHPULL); |
|||
palSetLine(lcdpins.WR); |
|||
#if RA6963_NEED_READ |
|||
palSetLineMode(lcdpins.RD, PAL_MODE_OUTPUT_PUSHPULL); |
|||
palSetLine(lcdpins.RD); |
|||
#endif |
|||
palSetLineMode(lcdpins.CE, PAL_MODE_OUTPUT_PUSHPULL); |
|||
palSetLine(lcdpins.CE); |
|||
palSetLineMode(lcdpins.CD, PAL_MODE_OUTPUT_PUSHPULL); |
|||
palSetLine(lcdpins.CD); |
|||
#if RA6963_HAS_RESET |
|||
palSetLine(lcdpins.RST); |
|||
palSetLineMode(lcdpins.RST, PAL_MODE_OUTPUT_PUSHPULL); |
|||
|
|||
#endif |
|||
for(ii = 0; ii < 8; ii++) { |
|||
palSetLineMode(lcdpins.D[ii], PAL_MODE_OUTPUT_PUSHPULL); |
|||
palClearLine(lcdpins.D[ii]); |
|||
} |
|||
#if RA6963_NEED_BACKLIGHT |
|||
#if RA6963_NEED_PWMBACKLIGHT |
|||
palSetLineMode(lcdpins.BL, PAL_MODE_ALTERNATE(1)); |
|||
#else |
|||
palSetLineMode(lcdpins.BL, PAL_MODE_OUTPUT_PUSHPULL); |
|||
#endif |
|||
#endif |
|||
#if RA6963_NEED_FONT_SELECT |
|||
palSetLineMode(lcdpins.FS, PAL_MODE_OUTPUT_PUSHPULL); |
|||
palSetLine(lcdpins.FS); |
|||
#endif |
|||
} |
|||
|
|||
static GFXINLINE void post_init_board(GDisplay *g) { |
|||
(void) g; |
|||
} |
|||
|
|||
static GFXINLINE void setpin_reset(GDisplay *g, bool_t state) { |
|||
(void) g; |
|||
#if RA6963_HAS_RESET //Make Hardware Reset
|
|||
if (state) |
|||
palClearLine(lcdpins.RST); |
|||
else |
|||
palSetLine(lcdpins.RST); |
|||
#else |
|||
(void) state; |
|||
#endif |
|||
} |
|||
|
|||
static GFXINLINE void set_backlight(GDisplay *g, uint8_t percent) { |
|||
(void) g; |
|||
(void) percent; |
|||
#if RA6963_NEED_BACKLIGHT |
|||
#if RA6963_NEED_PWMBACKLIGHT |
|||
|
|||
#else |
|||
|
|||
#endif |
|||
#endif |
|||
} |
|||
|
|||
static GFXINLINE void acquire_bus(GDisplay *g) { |
|||
(void) g; |
|||
} |
|||
|
|||
static GFXINLINE void release_bus(GDisplay *g) { |
|||
(void) g; |
|||
} |
|||
|
|||
|
|||
#if RA6963_NEED_READ |
|||
static GFXINLINE uint8_t RA6963_busy_wait(uint8_t pattern, bool_t lh){ |
|||
|
|||
uint8_t data; |
|||
int ii; |
|||
|
|||
for(ii = 0; ii < 2; ii++) //Only interested in Bit 0 and 1
|
|||
palSetLineMode(lcdpins.D[ii], PAL_MODE_INPUT); //Set pads to input
|
|||
|
|||
palClearLine(lcdpins.CE); |
|||
palClearLine(lcdpins.RD); |
|||
do{ |
|||
data = 0; |
|||
|
|||
for(ii = 0; ii < 2; ii++){ |
|||
if (palReadLine(lcdpins.D[ii]) == PAL_HIGH){ //Read output
|
|||
data |= (1<<ii); |
|||
} |
|||
} |
|||
} while ((data & pattern) == lh); |
|||
|
|||
palSetLine(lcdpins.CE); |
|||
palSetLine(lcdpins.RD); |
|||
for(ii = 0; ii < 2; ii++) { |
|||
palSetLineMode(lcdpins.D[ii], PAL_MODE_OUTPUT_PUSHPULL); //Set pads to output
|
|||
} |
|||
|
|||
return data; |
|||
} |
|||
#endif |
|||
|
|||
static GFXINLINE void RA6963_write(uint8_t value){ |
|||
int ii; |
|||
for(ii = 0; ii < 8; ii++){ |
|||
if(value & (1 << ii)) |
|||
palSetLine(lcdpins.D[ii]); |
|||
else |
|||
palClearLine(lcdpins.D[ii]); |
|||
} |
|||
} |
|||
|
|||
static GFXINLINE void write_data(GDisplay* g, uint8_t data){ |
|||
(void)g; |
|||
#if RA6963_NEED_READ |
|||
RA6963_busy_wait(RA6963_STATUS_BUSY1 | RA6963_STATUS_BUSY2, ~(RA6963_STATUS_BUSY1 | RA6963_STATUS_BUSY2)); |
|||
#endif |
|||
RA6963_write(data); |
|||
palClearLine(lcdpins.CD); |
|||
palClearLine(lcdpins.CE); |
|||
palClearLine(lcdpins.WR); |
|||
RA6963_delay(1); |
|||
palSetLine(lcdpins.WR); |
|||
palSetLine(lcdpins.CE); |
|||
palSetLine(lcdpins.CD); |
|||
} |
|||
|
|||
static GFXINLINE void write_cmd(GDisplay* g, uint8_t data){ |
|||
(void)g; |
|||
#if RA6963_NEED_READ |
|||
RA6963_busy_wait(RA6963_STATUS_BUSY1 | RA6963_STATUS_BUSY2, ~(RA6963_STATUS_BUSY1 | RA6963_STATUS_BUSY2)); |
|||
#endif |
|||
RA6963_write(data); |
|||
palClearLine(lcdpins.CE); |
|||
palClearLine(lcdpins.WR); |
|||
RA6963_delay(1); |
|||
palSetLine(lcdpins.WR); |
|||
palSetLine(lcdpins.CE); |
|||
} |
|||
|
|||
static GFXINLINE void setreadmode(GDisplay *g) { |
|||
(void) g; |
|||
} |
|||
|
|||
static GFXINLINE void setwritemode(GDisplay *g) { |
|||
(void) g; |
|||
} |
|||
|
|||
static GFXINLINE uint8_t read_data(GDisplay *g) { |
|||
(void) g; |
|||
#if RA6963_NEED_READ |
|||
int ii; |
|||
uint8_t data; |
|||
write_cmd(g, RA6963_DATA_READ_AND_NONVARIABLE); |
|||
//RA6963_busy_wait(RA6963_STATUS_BUSY1 | RA6963_STATUS_BUSY2, ~(RA6963_STATUS_BUSY1 | RA6963_STATUS_BUSY2));
|
|||
|
|||
for(ii = 0; ii < 8; ii++) |
|||
palSetLineMode(lcdpins.D[ii], PAL_MODE_INPUT); //Set pads to input
|
|||
|
|||
palClearLine(lcdpins.CE); |
|||
palClearLine(lcdpins.RD); |
|||
do{ |
|||
data = 0; |
|||
|
|||
for(ii = 0; ii < 2; ii++){ |
|||
if (palReadLine(lcdpins.D[ii]) == PAL_HIGH){ //Read output
|
|||
data |= (1<<ii); |
|||
} |
|||
} |
|||
} while ((data & (RA6963_STATUS_BUSY1 | RA6963_STATUS_BUSY2)) == ~(RA6963_STATUS_BUSY1 | RA6963_STATUS_BUSY2)); |
|||
|
|||
palClearLine(lcdpins.CD); |
|||
// RA6963_delay(1);
|
|||
data = 0; |
|||
for(ii = 0; ii < 8; ii++){ |
|||
if (palReadLine(lcdpins.D[ii]) == PAL_HIGH){ //Read output
|
|||
data |= (1<<ii); |
|||
} |
|||
} |
|||
palSetLine(lcdpins.CE); |
|||
palSetLine(lcdpins.RD); |
|||
palSetLine(lcdpins.CD); |
|||
for(ii = 0; ii < 8; ii++) { |
|||
palSetLineMode(lcdpins.D[ii], PAL_MODE_OUTPUT_PUSHPULL); //Set pads to output
|
|||
} |
|||
return data; |
|||
#else |
|||
return 0; |
|||
#endif |
|||
} |
|||
#endif /* _GDISP_LLD_BOARD_H */ |
@ -0,0 +1,407 @@ |
|||
/*
|
|||
* This file is subject to the terms of the GFX License. If a copy of |
|||
* the license was not distributed with this file, you can obtain one at: |
|||
* |
|||
* http://ugfx.org/license.html
|
|||
*/ |
|||
/* Robert Offner 2017
|
|||
* This is a driver for the RA6963 or T6963 Displays. |
|||
* It should work with displays up to 240 pixel in width and 64 pixel in height |
|||
* ATTENTION some newer displays on ebay look like T6963 Type but they're not! |
|||
* They use a new controller: ST7920. These are easy to identify: NO CS pin but |
|||
* a PSB Pin which switches from parallel to serial communication mode. |
|||
* If it cost less than 10.- it is probably a ST7920. |
|||
* |
|||
* Version: 0.1 |
|||
* |
|||
* History: |
|||
* |
|||
* v0.1 Initial Release |
|||
* .) tested with readback and without on a 72MHz STM32F103. Display ws a 128x64 |
|||
* type Graphic LCD (Looks like KS0108 Types). STREAM_READ is not implemented. |
|||
*/ |
|||
#include "gfx.h" |
|||
|
|||
#if GFX_USE_GDISP |
|||
#define GDISP_DRIVER_VMT GDISPVMT_RA6963 |
|||
|
|||
#include "gdisp_lld_config.h" |
|||
#include "src/gdisp/gdisp_driver.h" |
|||
|
|||
/*===========================================================================*/ |
|||
/* Driver local definitions. */ |
|||
/*===========================================================================*/ |
|||
#if defined(GDISP_SCREEN_HEIGHT) |
|||
#warning "GDISP: This low level driver does not support setting a screen size. It is being ignored." |
|||
#undef GISP_SCREEN_HEIGHT |
|||
#endif |
|||
#if defined(GDISP_SCREEN_WIDTH) |
|||
#warning "GDISP: This low level driver does not support setting a screen size. It is being ignored." |
|||
#undef GDISP_SCREEN_WIDTH |
|||
#endif |
|||
#include "board_RA6963.h" |
|||
|
|||
// RA6963 Commands
|
|||
//Register Setting
|
|||
#define RA6963_SET_CURSOR_POINTER 0x21 |
|||
#define RA6963_SET_OFFSET_REGISTER 0x22 |
|||
#define RA6963_SET_ADDRESS_POINTER 0x24 |
|||
//Set Control Word
|
|||
#define RA6963_SET_TEXT_HOME_ADDRESS 0x40 |
|||
#define RA6963_SET_TEXT_AREA 0x41 |
|||
#define RA6963_SET_GRAPHIC_HOME_ADDRESS 0x42 |
|||
#define RA6963_SET_GRAPHIC_AREA 0x43 |
|||
//Mode Set
|
|||
#define RA6963_MODE_SET 0x80 |
|||
#define RA6963_MODE_OR 0x00 |
|||
#define RA6963_MODE_XOR 0x01 |
|||
#define RA6963_MODE_AND 0x03 |
|||
#define RA6963_MODE_TEXT_ATTRIBUTE 0x04 |
|||
#define RA6963_MODE_INTERNAL_CGROM 0x00 |
|||
#define RA6963_MODE_EXTERNAL_CGRAM 0x08 |
|||
//Display Mode
|
|||
#define RA6963_DISPLAY_MODE 0x90 |
|||
#define RA6963_CURSOR_BLINK_ON 0x01 |
|||
#define RA6963_CURSOR_DISPLAY_ON 0x02 |
|||
#define RA6963_TEXT_DISPLAY_ON 0x04 |
|||
#define RA6963_GRAPHIC_DISPLAY_ON 0x08 |
|||
//Cursor Pattern Select
|
|||
#define RA6963_CURSOR_PATTERN_SELECT 0xA0 |
|||
#define RA6963_CURSOR_1_LINE 0x00 |
|||
#define RA6963_CURSOR_2_LINE 0x01 |
|||
#define RA6963_CURSOR_3_LINE 0x02 |
|||
#define RA6963_CURSOR_4_LINE 0x03 |
|||
#define RA6963_CURSOR_5_LINE 0x04 |
|||
#define RA6963_CURSOR_6_LINE 0x05 |
|||
#define RA6963_CURSOR_7_LINE 0x06 |
|||
#define RA6963_CURSOR_8_LINE 0x07 |
|||
//Data Read/Write
|
|||
#define RA6963_DATA_WRITE_AND_INCREMENT 0xC0 |
|||
#define RA6963_DATA_READ_AND_INCREMENT 0xC1 |
|||
#define RA6963_DATA_WRITE_AND_DECREMENT 0xC2 |
|||
#define RA6963_DATA_READ_AND_DECREMENT 0xC3 |
|||
#define RA6963_DATA_WRITE_AND_NONVARIALBE 0xC4 |
|||
#define RA6963_DATA_READ_AND_NONVARIABLE 0xC5 |
|||
//Data auto Read/Write
|
|||
#define RA6963_SET_DATA_AUTO_WRITE 0xB0 |
|||
#define RA6963_SET_DATA_AUTO_READ 0xB1 |
|||
#define RA6963_AUTO_RESET 0xB2 |
|||
//Screen Peek
|
|||
#define RA6963_SCREEN_PEEK 0xE0 |
|||
//Screen copy
|
|||
#define RA6963_SCREEN_COPY 0xE8 |
|||
// Status Register Bits
|
|||
#define RA6963_STATUS_BUSY1 0x01 |
|||
#define RA6963_STATUS_BUSY2 0x02 |
|||
#define RA6963_STATUS_DARRDY 0x04 |
|||
#define RA6963_STATUS_DAWRDY 0x08 |
|||
|
|||
#ifndef GDISP_SCREEN_HEIGHT |
|||
#define GDISP_SCREEN_HEIGHT 64 |
|||
#endif |
|||
#ifndef GDISP_SCREEN_WIDTH |
|||
#define GDISP_SCREEN_WIDTH 128 |
|||
#endif |
|||
|
|||
#define RA6963_FONT_WIDTH 8 |
|||
|
|||
#define RA6963_GRAPHIC_AREA (GDISP_SCREEN_WIDTH / RA6963_FONT_WIDTH) //16
|
|||
#define RA6963_TEXT_AREA (GDISP_SCREEN_WIDTH / RA6963_FONT_WIDTH) //16
|
|||
#define RA6963_GRAPHIC_SIZE (RA6963_GRAPHIC_AREA * GDISP_SCREEN_HEIGHT) //1024
|
|||
#define RA6963_TEXT_SIZE (RA6963_TEXT_AREA * (GDISP_SCREEN_HEIGHT/8))//128
|
|||
//#define RA6963_TEXT_HOME 0
|
|||
//#define RA6963_GRAPHIC_HOME (RA6963_TEXT_HOME + RA6963_TEXT_SIZE) //128
|
|||
#define RA6963_GRAPHIC_HOME 0 |
|||
#define RA6963_TEXT_HOME (RA6963_GRAPHIC_HOME + RA6963_GRAPHIC_SIZE) |
|||
//#define RA6963_OFFSET_REGISTER 2
|
|||
|
|||
#if (RA6963_NEED_READ == FALSE) |
|||
#define BUFFSZ (RA6963_GRAPHIC_SIZE) |
|||
#define RAM(g) ((uint8_t *)g->priv) |
|||
#define POS (((g->p.x) / RA6963_FONT_WIDTH) + ((g->p.y) * RA6963_GRAPHIC_AREA)) |
|||
#endif |
|||
#ifndef GDISP_INITIAL_CONTRAST |
|||
#define GDISP_INITIAL_CONTRAST 50 |
|||
#endif |
|||
#ifndef GDISP_INITIAL_BACKLIGHT |
|||
#define GDISP_INITIAL_BACKLIGHT 100 |
|||
#endif |
|||
|
|||
|
|||
/*===========================================================================*/ |
|||
/* Driver local functions. */ |
|||
/*===========================================================================*/ |
|||
#ifndef write_data_repeat |
|||
#define write_data_repeat(g, data, count) { int i; for (i = 0; i < count; ++i) write_data (g, data); } |
|||
#endif |
|||
|
|||
/*===========================================================================*/ |
|||
/* Driver exported functions. */ |
|||
/*===========================================================================*/ |
|||
|
|||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { |
|||
#if (RA6963_NEED_READ == FALSE) |
|||
// The private area is the display surface.
|
|||
g->priv = gfxAlloc(BUFFSZ); |
|||
#else |
|||
g->priv = 0; |
|||
#endif |
|||
// Initialise the board interface
|
|||
init_board(g); |
|||
|
|||
#if RA6963_HAS_RESET //Make Hardware Reset
|
|||
setpin_reset(g, TRUE); |
|||
gfxSleepMilliseconds(100); |
|||
setpin_reset(g, FALSE); |
|||
#endif |
|||
gfxSleepMilliseconds(50); |
|||
//RA6963 needs Data first THEN command!
|
|||
|
|||
write_data(g, (uint8_t)RA6963_GRAPHIC_HOME); //0
|
|||
write_data(g, (uint8_t)(RA6963_GRAPHIC_HOME>>8)); //0
|
|||
write_cmd(g, RA6963_SET_GRAPHIC_HOME_ADDRESS); //0x42
|
|||
|
|||
write_data(g, (uint8_t)RA6963_GRAPHIC_AREA); //16
|
|||
write_data(g, 0); //0
|
|||
write_cmd(g, RA6963_SET_GRAPHIC_AREA); //0x43
|
|||
|
|||
write_data(g, (uint8_t)RA6963_TEXT_HOME); //0x00
|
|||
write_data(g, (uint8_t)(RA6963_TEXT_HOME>>8)); //0x04 = 0x400
|
|||
write_cmd(g, RA6963_SET_TEXT_HOME_ADDRESS); //0x40
|
|||
|
|||
write_data(g, (uint8_t)RA6963_TEXT_AREA); //16
|
|||
write_data(g, (uint8_t)(RA6963_TEXT_AREA>>8)); //0
|
|||
write_cmd(g, RA6963_SET_TEXT_AREA); //0x41
|
|||
|
|||
/* write_data(g, (uint8_t)RA6963_OFFSET_REGISTER);
|
|||
write_data(g, 0); |
|||
write_cmd(g, RA6963_SET_OFFSET_REGISTER);*/ |
|||
|
|||
write_data(g, 0x00); |
|||
write_data(g, 0x00); |
|||
write_cmd(g, RA6963_SET_ADDRESS_POINTER); |
|||
|
|||
write_data(g, 0x00); |
|||
write_data(g, 0x00); |
|||
write_cmd(g, RA6963_SET_CURSOR_POINTER); |
|||
|
|||
|
|||
//write_cmd(g, RA6963_CURSOR_PATTERN_SELECT | RA6963_CURSOR_1_LINE);
|
|||
write_cmd(g, RA6963_MODE_SET | RA6963_MODE_OR); |
|||
//write_cmd(g, RA6963_DISPLAY_MODE | RA6963_TEXT_DISPLAY_ON | RA6963_GRAPHIC_DISPLAY_ON);
|
|||
write_cmd(g, RA6963_DISPLAY_MODE | RA6963_GRAPHIC_DISPLAY_ON); |
|||
|
|||
// Finish Init
|
|||
post_init_board(g); |
|||
#if RA6963_NEED_BACKLIGHT |
|||
// Turn on the back-light
|
|||
set_backlight(g, GDISP_INITIAL_BACKLIGHT); |
|||
#endif |
|||
// Initialise the GDISP structure
|
|||
g->g.Width = GDISP_SCREEN_WIDTH; |
|||
g->g.Height = GDISP_SCREEN_HEIGHT; |
|||
g->g.Orientation = GDISP_ROTATE_0; |
|||
g->g.Powermode = powerOn; |
|||
g->g.Backlight = GDISP_INITIAL_BACKLIGHT; |
|||
g->g.Contrast = GDISP_INITIAL_CONTRAST; |
|||
|
|||
return TRUE; |
|||
} |
|||
|
|||
static void set_viewport(GDisplay *g) { |
|||
if ((g->p.x >= GDISP_SCREEN_WIDTH) || (g->p.y >= GDISP_SCREEN_HEIGHT)) |
|||
return; // 0 + ( x / 8 ) + ( y * 16 )
|
|||
//uint16_t addr = (RA6963_GRAPHIC_HOME + ((g->p.x) / RA6963_FONT_WIDTH) + ((g->p.y) * RA6963_GRAPHIC_AREA));
|
|||
uint16_t addr = (RA6963_GRAPHIC_HOME + ((g->p.x >> 3) + (g->p.y << 4))); |
|||
#warning "check function set_viewport about the shift operations if you change the resolution!" |
|||
write_data(g, (uint8_t)addr); |
|||
write_data(g, (uint8_t)(addr>>8)); |
|||
write_cmd(g, RA6963_SET_ADDRESS_POINTER); |
|||
} |
|||
|
|||
LLDSPEC void gdisp_lld_write_color(GDisplay *g) { |
|||
uint8_t temp; |
|||
|
|||
#if (RA6963_NEED_READ == FALSE) |
|||
temp = RAM(g)[POS]; |
|||
#else |
|||
temp = read_data(g); |
|||
#endif |
|||
|
|||
if (g->p.color != White) { |
|||
temp |= (1 << (RA6963_FONT_WIDTH - 1 - ((g->p.x) % RA6963_FONT_WIDTH))); |
|||
} |
|||
else { |
|||
temp &= ~(1 << (RA6963_FONT_WIDTH - 1 - ((g->p.x) % RA6963_FONT_WIDTH))); |
|||
} |
|||
|
|||
write_data(g, temp); |
|||
#if (RA6963_NEED_READ == FALSE) |
|||
RAM(g)[POS] = temp; |
|||
#endif |
|||
//write_cmd(g, RA6963_DATA_WRITE_AND_INCREMENT);
|
|||
write_cmd(g, RA6963_DATA_WRITE_AND_NONVARIALBE); |
|||
|
|||
} |
|||
|
|||
LLDSPEC void gdisp_lld_draw_pixel(GDisplay *g) { |
|||
set_viewport(g); |
|||
gdisp_lld_write_color(g); |
|||
} |
|||
|
|||
#if GDISP_HARDWARE_STREAM_WRITE |
|||
LLDSPEC void gdisp_lld_write_start(GDisplay *g) { |
|||
//acquire_bus(g);
|
|||
set_viewport(g); |
|||
} |
|||
|
|||
LLDSPEC void gdisp_lld_write_stop(GDisplay *g) { |
|||
//release_bus(g);
|
|||
} |
|||
#endif |
|||
|
|||
#if GDISP_HARDWARE_STREAM_READ |
|||
LLDSPEC void gdisp_lld_read_start(GDisplay *g) { |
|||
acquire_bus(g); |
|||
set_viewport(g); |
|||
setreadmode(g); |
|||
dummy_read(g); |
|||
} |
|||
|
|||
LLDSPEC color_t gdisp_lld_read_color(GDisplay *g) { |
|||
uint16_t data; |
|||
|
|||
data = read_data(g); |
|||
return gdispNative2Color(data); |
|||
} |
|||
|
|||
LLDSPEC void gdisp_lld_read_stop(GDisplay *g) { |
|||
setwritemode(g); |
|||
release_bus(g); |
|||
} |
|||
#endif |
|||
|
|||
#if GDISP_HARDWARE_FILLS |
|||
LLDSPEC void gdisp_lld_fill_area(GDisplay *g) { |
|||
uint8_t data, j; |
|||
set_viewport(g); |
|||
|
|||
if (g->p.color != White) { |
|||
data = 0xFF; // set dot
|
|||
} |
|||
else { |
|||
data = 0; // clr dot
|
|||
} |
|||
for (j=0; j < (g->p.cy)/8; j++) { |
|||
write_data_repeat(g, data, (g->p.cx)); |
|||
(g->p.cy) +=8; |
|||
set_viewport(g); |
|||
} |
|||
|
|||
} |
|||
#endif // GDISP_HARDWARE_FILLS
|
|||
|
|||
#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL |
|||
LLDSPEC void gdisp_lld_control(GDisplay *g) { |
|||
switch(g->p.x) { |
|||
case GDISP_CONTROL_POWER: |
|||
if (g->g.Powermode == (powermode_t)g->p.ptr) |
|||
return; |
|||
|
|||
switch((powermode_t)g->p.ptr) { |
|||
case powerOff: |
|||
acquire_bus(g); |
|||
write_index(g, 0x28); |
|||
gfxSleepMilliseconds(10); |
|||
write_index(g, 0x10); |
|||
release_bus(g); |
|||
break; |
|||
|
|||
case powerOn: |
|||
acquire_bus(g); |
|||
write_index(g, 0x11); |
|||
gfxSleepMilliseconds(120); |
|||
write_index(g, 0x29); |
|||
release_bus(g); |
|||
if (g->g.Powermode != powerSleep) |
|||
gdisp_lld_init(g); |
|||
break; |
|||
|
|||
case powerSleep: |
|||
acquire_bus(g); |
|||
write_index(g, 0x28); |
|||
gfxSleepMilliseconds(10); |
|||
write_index(g, 0x10); |
|||
release_bus(g); |
|||
break; |
|||
|
|||
default: |
|||
return; |
|||
} |
|||
|
|||
g->g.Powermode = (powermode_t)g->p.ptr; |
|||
return; |
|||
|
|||
case GDISP_CONTROL_ORIENTATION: |
|||
if (g->g.Orientation == (orientation_t)g->p.ptr) |
|||
return; |
|||
|
|||
switch((orientation_t)g->p.ptr) { |
|||
case GDISP_ROTATE_0: |
|||
acquire_bus(g); |
|||
|
|||
write_index(g, 0x36); |
|||
write_data(g, 0x08); |
|||
|
|||
release_bus(g); |
|||
g->g.Height = GDISP_SCREEN_HEIGHT; |
|||
g->g.Width = GDISP_SCREEN_WIDTH; |
|||
break; |
|||
|
|||
case GDISP_ROTATE_90: |
|||
acquire_bus(g); |
|||
|
|||
write_index(g, 0x36); |
|||
write_data(g, 0x68); |
|||
|
|||
release_bus(g); |
|||
g->g.Height = GDISP_SCREEN_WIDTH; |
|||
g->g.Width = GDISP_SCREEN_HEIGHT; |
|||
break; |
|||
|
|||
case GDISP_ROTATE_180: |
|||
acquire_bus(g); |
|||
|
|||
write_index(g, 0x36); |
|||
write_data(g, 0xC8); |
|||
|
|||
release_bus(g); |
|||
g->g.Height = GDISP_SCREEN_HEIGHT; |
|||
g->g.Width = GDISP_SCREEN_WIDTH; |
|||
break; |
|||
|
|||
case GDISP_ROTATE_270: |
|||
acquire_bus(g); |
|||
|
|||
write_index(g, 0x36); |
|||
write_data(g, 0xA8); |
|||
|
|||
release_bus(g); |
|||
g->g.Height = GDISP_SCREEN_WIDTH; |
|||
g->g.Width = GDISP_SCREEN_HEIGHT; |
|||
break; |
|||
|
|||
default: |
|||
return; |
|||
} |
|||
|
|||
g->g.Orientation = (orientation_t)g->p.ptr; |
|||
return; |
|||
|
|||
default: |
|||
return; |
|||
} |
|||
} |
|||
#endif |
|||
|
|||
#endif /* GFX_USE_GDISP */ |
@ -0,0 +1,25 @@ |
|||
/*
|
|||
* This file is subject to the terms of the GFX License. If a copy of |
|||
* the license was not distributed with this file, you can obtain one at: |
|||
* |
|||
* http://ugfx.org/license.html
|
|||
*/ |
|||
|
|||
//#ifndef _GDISP_LLD_CONFIG_H
|
|||
//#define _GDISP_LLD_CONFIG_H
|
|||
|
|||
#if GFX_USE_GDISP |
|||
/*===========================================================================*/ |
|||
/* Driver hardware support. */ |
|||
/*===========================================================================*/ |
|||
|
|||
#define GDISP_HARDWARE_STREAM_WRITE FALSE |
|||
#define GDISP_HARDWARE_STREAM_READ FALSE |
|||
#define GDISP_HARDWARE_CONTROL FALSE |
|||
#define GDISP_HARDWARE_DRAWPIXEL TRUE |
|||
#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO |
|||
#define GDISP_HARDWARE_FILLS FALSE |
|||
|
|||
#endif /* GFX_USE_GDISP */ |
|||
|
|||
//#endif /* _GDISP_LLD_CONFIG_H */
|
@ -1,39 +1,41 @@ |
|||
A list of current display drivers: |
|||
|
|||
AlteraFramereader - Support for the "Altera Frame Reader IP Core" |
|||
ED060SC4 - E-Ink display |
|||
framebuffer - Supports any non-palletized, non-bitpacked color display with a framebuffer |
|||
Fb24bpp - Same as 'framebuffer' driver but supports RGB888 and BGR888 packed framebuffer formats. |
|||
HX8347D - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI9320 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI9325 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI9341 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI9342 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI93xx - Mid-sized color LCD displays eg RGB565 320x240 (attempt at a common driver) |
|||
ILI9481 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
LGDP4532 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
Nokia6610GE8 - Small (130x130) 12bit color LCD |
|||
Nokia6610GE12 - Small (130x130) 12bit color LCD (untested) |
|||
PCD8544 - Small monochrome LCD |
|||
PCF8812 - Small monochrome LCD |
|||
R61505U - Mid-sized color LCD displays eg RGB565 320x240 |
|||
RA8875 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
S6D1121 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SPFD54124B - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SSD1289 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SSD1306 - Small monochrome LCD |
|||
SSD1331 - Small hardware accelerated OLED display RGB565 96x64 |
|||
SSD1351 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SSD1848 - Small grayscale LCD eg 2-Bit 130x130 |
|||
SSD1963 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SSD2119 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ST7565 - Small monochrome LCD |
|||
STM32LTDC - STM32 ART graphics STM32F4 and STM32F7 series CPU's |
|||
TestStub - NULL driver just to test compile |
|||
TLS8204 - Small monochrome LCD |
|||
UC8173 - E-Ink display driver |
|||
UC1601s - Small (64x132) monochrome LCD |
|||
QImage - Driver that allows rendering into a QImage object (of the Qt framework) |
|||
uGFXnet - Remote Network display (in drivers/multiple/uGFXnet directory) |
|||
Win32 - Microsoft Windows (in drivers/multiple/Win32 directory) |
|||
X - X Windows (Xlib) (in drivers/multiple/X directory) |
|||
A list of current display drivers: |
|||
|
|||
AlteraFramereader - Support for the "Altera Frame Reader IP Core" |
|||
ED060SC4 - E-Ink display |
|||
framebuffer - Supports any non-palletized, non-bitpacked color display with a framebuffer |
|||
Fb24bpp - Same as 'framebuffer' driver but supports RGB888 and BGR888 packed framebuffer formats. |
|||
HX8347D - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI9320 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI9325 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI9341 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI9342 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ILI93xx - Mid-sized color LCD displays eg RGB565 320x240 (attempt at a common driver) |
|||
ILI9481 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
KS0108 - Small monochrome LCD |
|||
LGDP4532 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
Nokia6610GE8 - Small (130x130) 12bit color LCD |
|||
Nokia6610GE12 - Small (130x130) 12bit color LCD (untested) |
|||
PCD8544 - Small monochrome LCD |
|||
PCF8812 - Small monochrome LCD |
|||
R61505U - Mid-sized color LCD displays eg RGB565 320x240 |
|||
RA6963 - Small monochrom LCD |
|||
RA8875 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
S6D1121 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SPFD54124B - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SSD1289 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SSD1306 - Small monochrome LCD |
|||
SSD1331 - Small hardware accelerated OLED display RGB565 96x64 |
|||
SSD1351 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SSD1848 - Small grayscale LCD eg 2-Bit 130x130 |
|||
SSD1963 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
SSD2119 - Mid-sized color LCD displays eg RGB565 320x240 |
|||
ST7565 - Small monochrome LCD |
|||
STM32LTDC - STM32 ART graphics STM32F4 and STM32F7 series CPU's |
|||
TestStub - NULL driver just to test compile |
|||
TLS8204 - Small monochrome LCD |
|||
UC8173 - E-Ink display driver |
|||
UC1601s - Small (64x132) monochrome LCD |
|||
QImage - Driver that allows rendering into a QImage object (of the Qt framework) |
|||
uGFXnet - Remote Network display (in drivers/multiple/uGFXnet directory) |
|||
Win32 - Microsoft Windows (in drivers/multiple/Win32 directory) |
|||
X - X Windows (Xlib) (in drivers/multiple/X directory) |
|||
|
Loading…
Reference in new issue