MCUXpresso_LPC55S69/boards/lpcxpresso55s69/ew_gui_examples/ew_gui_waveform_generator/ewmain.h

221 lines
7.2 KiB
C

/*******************************************************************************
*
* E M B E D D E D W I Z A R D P R O J E C T
*
* Copyright (c) TARA Systems GmbH
* written by Paul Banach and Manfred Schweyer
*
********************************************************************************
*
* This software is delivered "as is" and shows the usage of other software
* components. It is provided as an example software which is intended to be
* modified and extended according to particular requirements.
*
* TARA Systems hereby disclaims all warranties and conditions with regard to the
* software, including all implied warranties and conditions of merchantability
* and non-infringement of any third party IPR or other rights which may result
* from the use or the inability to use the software.
*
********************************************************************************
*
* DESCRIPTION:
* This file implements a generic framework for running Embedded Wizard
* generated GUI applications on a dedicated target with or without the usage
* of an operating system.
* The module ewmain contains three major functions that are used within
* every Embedded Wizard GUI application: EwInit() - EwProcess() - EwDone().
* These functions represent the lifecycle of the entire GUI application.
*
* EwInit() is responsible to initialize the system, to configure the display,
* to get access to the desired input devices (like keyboard or touch),
* to initialize the Embedded Wizard Runtime Environment / Graphics Engine,
* to create an instance of the application class and to initialize all
* needed peripheral components.
*
* EwProcess() implements one cycle of the main loop. This function has to be
* called in an (endless) loop and contains typically the following steps:
* 1. Processing data from your device driver(s)
* 2. Processing key events
* 3. Processing cursor or touch screen events
* 4. Processing timers
* 5. Processing signals
* 6. Updating the screen
* 7. Triggering the garbage collection
*
* EwDone() is responsible to shutdown the application and to release all
* used resources.
*
* Important: Please be aware that every Embedded Wizard GUI application
* requires the execution in a single GUI task!
* If you are working with an operating system and your software is using
* several threads/tasks, please take care to access your GUI application
* only within the context of your GUI thread/task. Use operating system
* services to exchange data or events between the GUI thread/task and other
* worker threads/tasks.
*
* In order to keep this framework independent from the particular GUI
* application, the application class and the screen size are taken from the
* generated code. In this manner, it is not necessary to modify this file
* when creating new GUI applications. Just set the attributes 'ScreenSize'
* and 'ApplicationClass' of the profile in the Embedded Wizard IDE.
*
* For more information concerning the integration of an Embedded Wizard
* generated GUI application into your main application, please see
* https://doc.embedded-wizard.de/main-loop
*
*******************************************************************************/
#ifndef EWMAIN_H
#define EWMAIN_H
#if defined __ICCARM__
#define TOOLCHAIN_STRING "IAR Embedded Workbench"
#define COMPILER_VERSION_STRING EW_STRINGIZE(__VER__)
#elif defined __CC_ARM || (__ARMCC_VERSION >= 6000000)
#define TOOLCHAIN_STRING "Keil MDK"
#define COMPILER_VERSION_STRING EW_STRINGIZE(__ARMCC_VERSION)
#elif defined __GNUC__
#define TOOLCHAIN_STRING "GCC"
#define COMPILER_VERSION_STRING EW_STRINGIZE(__GNUC__) "." \
EW_STRINGIZE(__GNUC_MINOR__) "." EW_STRINGIZE(__GNUC_PATCHLEVEL__)
#else
#define TOOLCHAIN_STRING "unknown"
#endif
#ifdef EW_DONT_USE_PATH_FUNCTIONS
#define VECTOR_GRAPHICS_SUPPORT_STRING "disabled"
#else
#define VECTOR_GRAPHICS_SUPPORT_STRING "enabled"
#endif
#ifdef EW_DONT_USE_WARP_FUNCTIONS
#define WARP_FUNCTION_SUPPORT_STRING "disabled"
#else
#define WARP_FUNCTION_SUPPORT_STRING "enabled"
#endif
#ifdef EW_DONT_USE_INDEX8_SURFACES
#define INDEX8_SURFACE_SUPPORT_STRING "disabled"
#else
#define INDEX8_SURFACE_SUPPORT_STRING "enabled"
#endif
#ifdef EW_DONT_USE_RGB565_SURFACES
#define RGB565_SURFACE_SUPPORT_STRING "disabled"
#else
#define RGB565_SURFACE_SUPPORT_STRING "enabled"
#endif
#ifdef EW_DONT_USE_BIDI_FUNCTIONS
#define BIDI_TEXT_SUPPORT_STRING "disabled"
#else
#define BIDI_TEXT_SUPPORT_STRING "enabled"
#endif
#if EW_USE_GRAPHICS_ACCELERATOR == 1
#define GRAPHICS_ACCELERATOR_STRING "none"
#else
#define GRAPHICS_ACCELERATOR_STRING "none"
#endif
#if ( EW_USE_FREE_RTOS == 1 )
#define OPERATING_SYSTEM_STRING "FreeRTOS"
#else
#define OPERATING_SYSTEM_STRING "none"
#endif
#if ( EW_USE_EXTERNAL_FLASH == 1 )
#define EXTERNAL_FLASH_STRING "QSPI Flash"
#else
#define EXTERNAL_FLASH_STRING "none"
#endif
/*******************************************************************************
* FUNCTION:
* EwInit
*
* DESCRIPTION:
* EwInit() is responsible to initialize the system, to configure the display,
* to get access to the desired input devices (like keyboard or touch),
* to initialize the Embedded Wizard Runtime Environment / Graphics Engine,
* to create an instance of the application class and to initialize all
* needed peripheral components.
*
* ARGUMENTS:
* None
*
* RETURN VALUE:
* 1 if successful, 0 otherwise.
*
*******************************************************************************/
int EwInit( void );
/*******************************************************************************
* FUNCTION:
* EwDone
*
* DESCRIPTION:
* EwDone() is responsible to shutdown the application and to release all
* used resources.
*
* ARGUMENTS:
* None
*
* RETURN VALUE:
* None.
*
*******************************************************************************/
void EwDone( void );
/*******************************************************************************
* FUNCTION:
* EwProcess
*
* DESCRIPTION:
* EwProcess() implements one cycle of the main loop. This function has to be
* called in an (endless) loop and contains typically the following steps:
* 1. Processing data from your device driver(s)
* 2. Processing key events
* 3. Processing cursor or touch screen events
* 4. Processing timers
* 5. Processing signals
* 6. Updating the screen
* 7. Triggering the garbage collection
* For more information concerning the integration of an Embedded Wizard
* generated GUI application into your main application, please see
* https://doc.embedded-wizard.de/main-loop
*
* ARGUMENTS:
* None.
*
* RETURN VALUE:
* 1, if further processing is needed, 0 otherwise.
*
*******************************************************************************/
int EwProcess( void );
/*******************************************************************************
* FUNCTION:
* EwPrintSystemInfo
*
* DESCRIPTION:
* This function prints system and configuration information - very helpful in
* case of any support issues.
*
* ARGUMENTS:
* None
*
* RETURN VALUE:
* None
*
*******************************************************************************/
void EwPrintSystemInfo( void );
#endif
/* msy, mli */