diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..42fd8223
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+
+*.obj
+*.ipch
+*.tlog
+*.pdb
+*.idb
+*.ilk
+*.log
+*.exp
+*.db
+BSP/SampleCode/emWin/GUIDemo/VC2022/ARM/Debug/.map
+BSP/SampleCode/emWin/GUIDemo/VC2022/.vs/NuDemo/v17/.suo
+BSP/SampleCode/emWin/GUIDemo/VC2022/ARM/Debug/emWin_GUIDemo.bin
+*.o
+*.d
diff --git a/BSP/Driver/Include/N9H26_USBD.h b/BSP/Driver/Include/N9H26_USBD.h
index 6b86e1f0..76941f0e 100644
--- a/BSP/Driver/Include/N9H26_USBD.h
+++ b/BSP/Driver/Include/N9H26_USBD.h
@@ -152,7 +152,7 @@ typedef void (*PFN_USBD_CALLBACK)(void);
typedef BOOL (PFN_USBD_EXIT_CALLBACK)(void);
typedef void (*PFN_USBD_EP_CALLBACK)(UINT32 u32IntEn,UINT32 u32IntStatus);
-typedef struct __attribute__((__packed__)) {
+typedef PACK(struct {
/* Descriptor pointer */
PUINT32 pu32DevDescriptor;
PUINT32 pu32QulDescriptor;
@@ -257,13 +257,13 @@ typedef struct __attribute__((__packed__)) {
UINT32 u32UVC;
UINT32 USBStartFlag;
-}USBD_INFO_T;
+})USBD_INFO_T;
-typedef struct __attribute__((__packed__)) {
+typedef PACK(struct {
UINT32 appConnected;
UINT32 usbConnected;
UINT32 appConnected_Audio;
-}USBD_STATUS_T;
+})USBD_STATUS_T;
typedef struct
diff --git a/BSP/Driver/Include/port.h b/BSP/Driver/Include/port.h
index 5a9ff038..41549c73 100644
--- a/BSP/Driver/Include/port.h
+++ b/BSP/Driver/Include/port.h
@@ -33,5 +33,25 @@ typedef unsigned short Uint16;
#define M_DEBUG sysprintf
#define printk sysprintf
+#if defined(__GNUC__)
+#define PACK(__Declaration__) __Declaration__ __attribute__((__packed__))
+#elif defined(__CC_ARM)
+#define PACK(__Declaration__) __Declaration__ __attribute__((packed))
+#elif defined(_MSC_VER)
+#define PACK(__Declaration__) __pragma(pack(push, 1)) __Declaration__ __pragma(pack(pop))
+#endif
+
+#if defined(_MSC_VER)
+#define ALIGNED_(x) __declspec(align(x))
+#elif defined(__GNUC__) || defined(__CC_ARM)
+#define ALIGNED_(x) __attribute__ ((aligned(x)))
+#endif
+
+#define ALIGNED_TYPE_(t,x) typedef t ALIGNED_(x)
+
+#if defined (_MSC_VER)
+#define __weak
+#endif
+
#endif
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/BuildCmd.bat b/BSP/SampleCode/emWin/GUIDemo/VC2022/BuildCmd.bat
new file mode 100644
index 00000000..91c77c74
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/BuildCmd.bat
@@ -0,0 +1,32 @@
+
+REM make tool path
+REM set make_tool_provided_by=C:\Program Files (x86)\GNU ARM Eclipse\Build Tools\2.8-201611221915\bin
+set make_tool_provided_by=C:\msys64\usr\bin
+set MAKE_PATH=%make_tool_provided_by%
+
+REM gcc tool path
+set GNU_TOOLS_ARM_EMBEDDED_PATH="C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin"
+
+set PATH=%MAKE_PATH%;%GNU_TOOLS_ARM_EMBEDDED_PATH%;%PATH%
+echo %PATH%
+
+REM Cross Compiler
+SET CROSS_COMPILE=arm-none-eabi-
+
+SET CC=arm-none-eabi-gcc
+SET LD=arm-none-eabi-ld
+SET AS=arm-none-eabi-as
+SET OBJCOPY=arm-none-eabi-objcopy
+SET SIZE=arm-none-eabi-size
+
+SET CXX=
+SET RM=rm -rf
+
+echo ----------------------------------------------------------------------
+echo Current directory is %~dp0
+echo ----------------------------------------------------------------------
+echo Change directory to %2
+REM 'make -C' will change to directory %2
+echo ----------------------------------------------------------------------
+
+make -C %2 -f ../../Makefile.mak %1
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/Makefile.mak b/BSP/SampleCode/emWin/GUIDemo/VC2022/Makefile.mak
new file mode 100644
index 00000000..19ace2f0
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/Makefile.mak
@@ -0,0 +1,189 @@
+
+# Make phony targets .PHONY
+# There isn't really an all file created and there really isn't clean file.
+# There are actually just tags that identify a target whose rules should
+# always be run.
+.PHONY: all clean target
+
+# [SD]
+# 1: enable SD 0: disable
+SD = STORAGE_SD=1
+
+# [LCD Resolution]
+# __800x480__ __320x240__
+LCD_RESOLUTION = __800x480__
+
+# The Preprocessor Macros
+DEFS = \
+ -DN9H26K6=1 \
+ -D$(SD) \
+ -D$(LCD_RESOLUTION) \
+
+# [Include files]
+INCLUDES = \
+ -I../../../../../../../BSP/Driver/Include \
+ -I../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application \
+ -I../../../../../../../BSP/SampleCode/emWin/GUIDemo/tslib \
+ -I../../../../../../../BSP/ThirdParty/emWin/Config \
+ -I../../../../../../../BSP/ThirdParty/emWin/Include \
+
+GFLAGS = \
+ -mcpu=arm926ej-s \
+ -marm \
+ -mlittle-endian \
+ -Os \
+ -fmessage-length=0 \
+ -fsigned-char \
+ -ffunction-sections \
+ -fdata-sections \
+ -g \
+
+CFLAGS = $(DEFS) $(INCLUDES) -std=gnu11
+
+CPPFLAGS =
+CXXFLAGS =
+
+ASFLAG = -g
+TEMPLTFILE = ../../../../../../../BSP/Driver/Source/gcc_arm_SRAM.ld
+LINKFILE = ../../../../../../../BSP/Driver/Source/gcc_arm_SRAM_N9H26K6_64MB.ld
+LDFLAGS =
+
+# [LIBS]
+LIBS = \
+ -lN9H26_SYS \
+ -lN9H26_VPOST_FW050TFT_800x480 \
+ -lN9H26_ADC \
+ -lN9H26_SIC \
+ -lN9H26_GNAND \
+ -lN9H26_NVTFAT \
+ -lNUemWin_ARM9_GNU \
+ -lN9H26_BLT \
+ -lN9H26_JPEG \
+ -lm \
+ -L"../../../../../../../BSP/Library_GCC/IPLib" \
+ -L"../../../../../../../BSP/Library_GCC/GNANDLib" \
+ -L"../../../../../../../BSP/Library_GCC/NVTFATLib" \
+ -L"../../../../../../../BSP/ThirdParty/emWin/Lib" \
+
+
+# define the C source files
+# Don't include paths in filenames
+# Inerting and maintaining paths everywhere is tedious and error prone. Better is to use
+# VPATH within the Makefile like this:
+# VPATH=../src
+SRCS_C = \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/main.c \
+ \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/tslib/N9H26TouchPanel.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/tslib/fbutils.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/tslib/testutils.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/tslib/ts_calibrate.c \
+ \
+ ../../../../../../../BSP/ThirdParty/emWin/Config/GUI_X.c \
+ ../../../../../../../BSP/ThirdParty/emWin/Config/LCDConf.c \
+ \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIConf.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_AntialiasedText.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Automotive.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_BarGraph.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Bitmap.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_ColorBar.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Conf.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Cursor.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Fading.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Graph.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_IconView.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_ImageFlow.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Intro.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Listview.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_RadialMenu.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Resource.c\
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Skinning.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Speed.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Speedometer.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Start.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_TransparentDialog.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_Treeview.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_VScreen.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_WashingMachine.c \
+ ../../../../../../../BSP/SampleCode/emWin/GUIDemo/Application/GUIDEMO_ZoomAndRotate.c \
+
+
+# [Assembly Files]
+SRCS_S = ../../../../../../../BSP/Driver/Source/Startup_GCC.S
+
+
+# Explicitly name sources
+# Lines like this one should be avoided.
+# OS_C_SRCS := $(wildcard *.c)
+
+
+# define the C object files
+#
+# This uses Suffix Replacement within a macro:
+# $(name:string1=string2)
+# For each word in 'name' replace 'string1' with 'string2'
+# Below we are replacing the suffix .c of all words in the macros SRCS_C
+# with the .o suffix
+OBJS = $(SRCS_C:.c=.o) $(SRCS_S:.S=.o)
+
+C_DEPS = $(OBJS:.o=.d)
+
+
+MAIN = emWin_GUIDemo.elf
+
+prebuild:
+ -arm-none-eabi-cpp -E -DN9H26K6_64MB=1 -P $(TEMPLTFILE) -o $(LINKFILE)
+
+$(MAIN): $(OBJS)
+ @echo 'Building target: $@'
+ @echo 'Invoking: GNU ARM Cross C Linker'
+ $(CC) $(GFLAGS) -T "$(LINKFILE)" -Xlinker --gc-sections $(LIBDIR) -Wl,-Map,"$*.map" --specs=rdimon.specs -Wl,--start-group $(LIBS) -Wl,--end-group -o "$@" $(OBJS) $(USER_OBJS) $(LIBS)
+ @echo 'Finished building target: $@'
+ @echo ' '
+
+
+TARGET = emWin_GUIDemo.bin
+
+$(TARGET): $(MAIN)
+ @echo 'Invoking: GNU ARM Cross Create Flash Image'
+ $(OBJCOPY) -O binary "$<" "$@"
+ @echo 'Finished building: $@'
+ @echo ' '
+
+
+# This is a suffix replacement rule for building .o's from .c's
+# it uses automatic variables $< the name of the prerequisite of
+# the rule (a .c file) and $@ the name of the target of the rule (a .o file)
+# (see the GNU make manual section about automatic variables)
+#
+# Define an implicit rule
+#
+.c.o:
+ $(CC) $(GFLAGS) $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c "$<" -o "$@"
+
+
+.S.o:
+ $(CC) $(GFLAGS) -x assembler-with-cpp $(INCLUDES) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -c -o "$@" "$<"
+
+
+# Define an implicit rule other than above
+# The following means to build the target foo.S make should build foo.c
+
+pre-build:
+ -arm-none-eabi-cpp -E -DN9H26K6_64MB=1 -P ../../../../../../../BSP/Driver/Source/gcc_arm_SRAM.ld -o $(LINKFILE)
+
+all: pre-build $(TARGET) finalization
+
+finalization: $(MAIN)
+ @echo 'Invoking: GNU ARM Cross Print Size'
+ arm-none-eabi-size --format=berkeley "$<"
+ @echo ' '
+
+rebuild: all
+ @echo "rebuild done"
+
+clean:
+ -$(RM) $(OBJS) $(LINKFILE) $(ASM_DEPS) $(S_UPPER_DEPS) $(C_DEPS) emWin_GUIDemo.elf
+ -@echo ' '
\ No newline at end of file
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/NuDemo.sln b/BSP/SampleCode/emWin/GUIDemo/VC2022/NuDemo.sln
new file mode 100644
index 00000000..34047697
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/NuDemo.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.32014.148
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "emWin_GUIDemo", "emWin_GUIDemo.vcxproj", "{0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|ARM = Debug|ARM
+ Debug|x86 = Debug|x86
+ Release|ARM = Release|ARM
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}.Debug|ARM.ActiveCfg = Debug|ARM
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}.Debug|ARM.Build.0 = Debug|ARM
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}.Debug|x86.ActiveCfg = Debug|Win32
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}.Debug|x86.Build.0 = Debug|Win32
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}.Release|ARM.ActiveCfg = Release|ARM
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}.Release|ARM.Build.0 = Release|ARM
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}.Release|x86.ActiveCfg = Release|Win32
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {4F0D58D6-EC3A-401E-B3FE-32073F27C5DA}
+ EndGlobalSection
+EndGlobal
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/NuSIM.dll b/BSP/SampleCode/emWin/GUIDemo/VC2022/NuSIM.dll
new file mode 100644
index 00000000..0ac4af75
Binary files /dev/null and b/BSP/SampleCode/emWin/GUIDemo/VC2022/NuSIM.dll differ
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/NuSimDemo.exe b/BSP/SampleCode/emWin/GUIDemo/VC2022/NuSimDemo.exe
new file mode 100644
index 00000000..1e3ad157
Binary files /dev/null and b/BSP/SampleCode/emWin/GUIDemo/VC2022/NuSimDemo.exe differ
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj b/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj
new file mode 100644
index 00000000..a3318e99
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj
@@ -0,0 +1,188 @@
+
+
+
+
+ Debug
+ ARM
+
+
+ Debug
+ Win32
+
+
+ Release
+ ARM
+
+
+ Release
+ Win32
+
+
+
+ 16.0
+ {0DC02475-37AE-4ED0-BAEC-532E3BE13D2C}
+ Win32Proj
+ emWin_GUIDemo
+ 10.0
+
+
+
+ DynamicLibrary
+ true
+ v143
+
+
+ DynamicLibrary
+ false
+ v143
+
+
+ v143
+ Makefile
+
+
+ v143
+ Makefile
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BuildCmd.bat all
+ BuildCmd.bat clean
+ BuildCmd.bat rebuild
+ WIN32;_DEBUG;$(NMakePreprocessorDefinitions)
+ NuDemo
+ $(ProjectDir)
+ $(Platform)\$(Configuration)\
+
+
+ BuildCmd.bat all
+ BuildCmd.bat clean
+ BuildCmd.bat rebuild
+ WIN32;NDEBUG;$(NMakePreprocessorDefinitions)
+ NuDemo
+ $(ProjectDir)
+ $(Platform)\$(Configuration)\
+
+
+ $(MSBuildProjectDirectory)\BuildCmd.bat all $(MSBuildProjectDirectory)\$(Platform)\$(Configuration)
+ $(MSBuildProjectDirectory)\BuildCmd.bat rebuild $(MSBuildProjectDirectory)\$(Platform)\$(Configuration)
+ $(MSBuildProjectDirectory)\BuildCmd.bat clean $(MSBuildProjectDirectory)\$(Platform)\$(Configuration)
+ $(SolutionDir)Driver\Include;$(SolutionDir)SampleCode\emWin_GUIDemo\tslib;$(SolutionDir)ThirdParty\emWin\Include;$(SolutionDir)ThirdParty\emWin\Config;$(SolutionDir)ThirdParty\FATFS\src
+
+
+ $(MSBuildProjectDirectory)\BuildCmd.bat all $(MSBuildProjectDirectory)\$(Platform)\$(Configuration)
+ $(MSBuildProjectDirectory)\BuildCmd.bat rebuild $(MSBuildProjectDirectory)\$(Platform)\$(Configuration)
+ $(MSBuildProjectDirectory)\BuildCmd.bat clean $(MSBuildProjectDirectory)\$(Platform)\$(Configuration)
+ $(SolutionDir)Driver\Include;$(SolutionDir)SampleCode\emWin_GUIDemo\tslib;$(SolutionDir)ThirdParty\emWin\Include;$(SolutionDir)ThirdParty\emWin\Config;$(SolutionDir)ThirdParty\FATFS\src
+
+
+
+
+
+
+
+
+
+ ..\..\..\..\..\BSP\Driver\Include;..\..\..\..\..\BSP\SampleCode\emWin\GUIDemo\tslib;..\..\..\..\..\BSP\ThirdParty\emWin\Include;..\..\..\..\..\BSP\ThirdParty\emWin\Config\Win32;..\..\..\..\..\BSP\ThirdParty\FATFS\src
+ /wd4047 %(AdditionalOptions)
+ _WINDLL;STORAGE_SD=0;%(PreprocessorDefinitions)
+
+
+ false
+ $(ProjectDir)nu_SimApp.def
+ NUGUICore.lib;NUGUISim.lib;winmm.lib;%(AdditionalDependencies)
+ LIBC.lib;
+ ..\..\..\..\..\BSP\ThirdParty\emWin\Lib
+
+
+
+
+
+
+
+
+
+
+ ..\..\..\..\..\BSP\Driver\Include;..\..\..\..\..\BSP\SampleCode\emWin\GUIDemo\tslib;..\..\..\..\..\BSP\ThirdParty\emWin\Include;..\..\..\..\..\BSP\ThirdParty\emWin\Config\Win32;..\..\..\..\..\BSP\ThirdParty\FATFS\src
+ /wd4047 %(AdditionalOptions)
+ _WINDLL;STORAGE_SD=0;%(PreprocessorDefinitions)
+
+
+ false
+ $(ProjectDir)nu_SimApp.def
+ NUGUICore.lib;NUGUISim.lib;winmm.lib;%(AdditionalDependencies)
+ LIBC.lib;
+ ..\..\..\..\..\BSP\ThirdParty\emWin\Lib
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj.filters b/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj.filters
new file mode 100644
index 00000000..eeb8807c
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj.filters
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+
+ {2bdb2240-bfef-47e4-87e4-ad8e7ed36b8a}
+
+
+ {bd837dff-5871-400c-b478-d9d2e406bbde}
+
+
+ {89ed6c89-6f50-4c25-a4ff-410669081035}
+
+
+ {12807805-0a12-4963-b076-e4e45bcff489}
+
+
+ {9da0cd22-deb4-492b-8841-3f581d1051d7}
+
+
+ {84ca9a15-8591-4bcc-bb9d-04f28e56f9da}
+
+
+ {95f60f1c-8448-445c-bdbf-f2695d1943a0}
+
+
+ {3b17b48b-7925-4e44-b889-6ed9741d3561}
+
+
+ {8eb96bb0-13af-4580-8769-605485d3101b}
+
+
+ {9fb9d116-122b-4009-a05c-b17ee574d00f}
+
+
+ {76dd1651-1825-4be6-9605-73fa76cd9b2d}
+
+
+ {9dc1b233-580f-4b16-ad19-33c631b1ce10}
+
+
+
+
+
+ ThirdParty\emWin\Config\ARM
+
+
+ ThirdParty\emWin\Config\ARM
+
+
+ ThirdParty\emWin\Config\WIN32
+
+
+ ThirdParty\emWin\Config\WIN32
+
+
+ ThirdParty\emWin\Config\WIN32
+
+
+
+
+
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+ SampleCode\emWin\GUIDemo\Application
+
+
+
+
+
+ SampleCode\emWin\GUIDemo\tslib
+
+
+ SampleCode\emWin\GUIDemo\tslib
+
+
+ SampleCode\emWin\GUIDemo\tslib
+
+
+ SampleCode\emWin\GUIDemo\tslib
+
+
+
\ No newline at end of file
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj.user b/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj.user
new file mode 100644
index 00000000..c5ad4823
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/emWin_GUIDemo.vcxproj.user
@@ -0,0 +1,11 @@
+
+
+
+ $(ProjectDir)NuSimDemo.exe
+ WindowsLocalDebugger
+
+
+ $(ProjectDir)NuSimDemo.exe
+ WindowsLocalDebugger
+
+
\ No newline at end of file
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.c b/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.c
new file mode 100644
index 00000000..ab5e8f17
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.c
@@ -0,0 +1,50 @@
+#include "GUI.h"
+#include "nu_SimApp.h"
+#include "LCD_SIM.h"
+
+NUSIMAPI int CALLBACK AppMain(void)
+{
+ main();
+ //MainTask();
+ return 0;
+}
+
+NUSIMAPI void CALLBACK NUSIM_GUI_Enable()
+{
+ SIM_GUI_Enable();
+}
+
+NUSIMAPI char* CALLBACK NUSIM_LCD_Init()
+{
+ return LCDSIM_Init();
+}
+
+NUSIMAPI void CALLBACK NUSIM_LCD_Exit()
+{
+ LCDSIM_Exit();
+}
+
+NUSIMAPI void CALLBACK NUSIM_SetMouseState(int x, int y, int KeyStat, int LayerIndex)
+{
+ LCDSIM_SetMouseState(x, y, KeyStat, LayerIndex);
+}
+
+NUSIMAPI void CALLBACK NUSIM_CheckMouseState(int LayerIndex)
+{
+ LCDSIM_CheckMouseState(LayerIndex);
+}
+
+NUSIMAPI int CALLBACK NUSIM_GetXSize(void)
+{
+ return LCD_GetXSize();
+}
+
+NUSIMAPI int CALLBACK NUSIM_GetYSize(void)
+{
+ return LCD_GetYSize();
+}
+
+NUSIMAPI int CALLBACK NUSIM_GUI_Version(void)
+{
+ return GUI_VERSION;
+}
\ No newline at end of file
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.def b/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.def
new file mode 100644
index 00000000..abb21b2e
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.def
@@ -0,0 +1,15 @@
+; Declares the module parameters for the DLL.
+
+LIBRARY NuDemo
+
+EXPORTS
+ ; Explicit exports can go here
+ AppMain @1
+ NUSIM_GUI_Enable @2
+ NUSIM_LCD_Init @3
+ NUSIM_LCD_Exit @4
+ NUSIM_SetMouseState @5
+ NUSIM_CheckMouseState @6
+ NUSIM_GetXSize @7
+ NUSIM_GetYSize @8
+ NUSIM_GUI_Version @9
\ No newline at end of file
diff --git a/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.h b/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.h
new file mode 100644
index 00000000..31ba7898
--- /dev/null
+++ b/BSP/SampleCode/emWin/GUIDemo/VC2022/nu_SimApp.h
@@ -0,0 +1,30 @@
+#if !defined (__NU_SIMAPP_H__)
+#define __NU_SIMAPP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CALLBACK __stdcall
+
+# if defined (_WINDLL)
+# define NUSIMAPI __declspec(dllexport)
+# else
+# define NUSIMAPI __declspec(dllimport)
+# endif
+
+NUSIMAPI int CALLBACK AppMain(void);
+NUSIMAPI void CALLBACK NUSIM_GUI_Enable();
+NUSIMAPI char* CALLBACK NUSIM_LCD_Init();
+NUSIMAPI void CALLBACK NUSIM_LCD_Exit();
+NUSIMAPI void CALLBACK NUSIM_SetMouseState(int x, int y, int KeyStat, int LayerIndex);
+NUSIMAPI void CALLBACK NUSIM_CheckMouseState(int LayerIndex);
+NUSIMAPI int CALLBACK NUSIM_GetXSize(void);
+NUSIMAPI int CALLBACK NUSIM_GetYSize(void);
+NUSIMAPI int CALLBACK NUSIM_GUI_Version(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file
diff --git a/BSP/SampleCode/emWin/GUIDemo/main.c b/BSP/SampleCode/emWin/GUIDemo/main.c
index b7267031..72cbc951 100644
--- a/BSP/SampleCode/emWin/GUIDemo/main.c
+++ b/BSP/SampleCode/emWin/GUIDemo/main.c
@@ -20,7 +20,7 @@
#pragma data_alignment = 32
UINT8 u8FrameBuf[XSIZE_PHYS*YSIZE_PHYS*2];
#else
-UINT8 u8FrameBuf[XSIZE_PHYS*YSIZE_PHYS*2] __attribute__((aligned(32)));
+UINT8 ALIGNED_(32) u8FrameBuf[XSIZE_PHYS * YSIZE_PHYS * 2];
#endif
UINT8 *u8FrameBufPtr;
@@ -33,7 +33,7 @@ extern int ts_readfile(int hFile);
extern int ts_calibrate(int xsize, int ysize);
extern void TouchTask(void);
-#ifndef STORAGE_SD
+#if defined (STORAGE_SD) && (STORAGE_SD == 0)
#define NAND_2 1 // comment to use 1 disk foor NAND, uncomment to use 2 disk
UINT32 StorageForNAND(void);
@@ -111,7 +111,9 @@ UINT32 StorageForNAND(void)
*/
void TMR0_IRQHandler(void)
{
+#ifndef _MSC_VER
OS_TimeMS++;
+#endif
}
/*********************************************************************
@@ -187,7 +189,9 @@ static void _SYS_Init(void)
#endif
/* start timer 0 */
+#ifndef _MSC_VER
OS_TimeMS = 0;
+#endif
sysSetTimerReferenceClock(TIMER0, u32ExtFreq); //External Crystal
sysStartTimer(TIMER0, 1000, PERIODIC_MODE); /* 1000 ticks/per sec ==> 1tick/1ms */
@@ -197,7 +201,7 @@ static void _SYS_Init(void)
sysprintf("fsInitFileSystem.\n");
fsInitFileSystem();
-#ifdef STORAGE_SD
+#if defined (STORAGE_SD) && (STORAGE_SD == 1)
/*-----------------------------------------------------------------------*/
/* Init SD card */
/*-----------------------------------------------------------------------*/
@@ -245,22 +249,32 @@ int main(void)
{
// file does not exists, so do calibration
hFile = fsOpenFile(szCalibrationFile, szFileName, O_CREATE|O_RDWR | O_FSEEK);
- if ( hFile < 0 )
+ if (hFile < 0)
{
sysprintf("CANNOT create the calibration file\n");
- return -1;
+ //return -1;
}
+
GUI_Init();
+
ts_calibrate(LCD_XSIZE, LCD_YSIZE);
- ts_writefile(hFile);
+
+ if (hFile)
+ {
+ ts_writefile(hFile);
+ }
}
else
{
ts_readfile(hFile);
}
- fsCloseFile(hFile);
-#ifndef STORAGE_SD
+ if (hFile)
+ {
+ fsCloseFile(hFile);
+ }
+
+#if defined (STORAGE_SD) && (STORAGE_SD == 0)
GNAND_UnMountNandDisk(&ptNDisk);
sicClose();
#endif
@@ -277,3 +291,193 @@ int main(void)
}
/*************************** End of file ****************************/
+
+#ifdef _MSC_VER
+
+void sysUartPort(UINT32 u32Port) {}
+
+INT32 sysInitializeUART(WB_UART_T* uart)
+{
+ return 0;
+}
+
+VOID sysprintf(PINT8 pcStr, ...) {}
+
+INT nand_ioctl(INT param1, INT param2, INT param3, INT param4)
+{
+ return 0;
+}
+
+INT nandInit0(NDISK_T* NDISK_info)
+{
+ return 0;
+}
+
+INT nandpread0(INT PBA, INT page, UINT8* buff)
+{
+ return 0;
+}
+
+INT nandpwrite0(INT PBA, INT page, UINT8* buff)
+{
+ return 0;
+}
+
+INT nand_is_page_dirty0(INT PBA, INT page)
+{
+ return 0;
+}
+
+INT nand_is_valid_block0(INT PBA)
+{
+ return 0;
+}
+
+INT nand_block_erase0(INT PBA)
+{
+ return 0;
+}
+
+INT nand_chip_erase0(void)
+{
+ return 0;
+}
+
+INT GNAND_InitNAND(NDRV_T* ndriver, NDISK_T* ptNDisk, BOOL bEraseIfNotGnandFormat)
+{
+ return 0;
+}
+
+INT GNAND_MountNandDisk(NDISK_T* ptNDisk)
+{
+ return 0;
+}
+
+VOID GNAND_UnMountNandDisk(NDISK_T* ptNDisk) {}
+
+INT32 sysEnableCache(UINT32 uCacheOpMode)
+{
+ return 0;
+}
+
+VOID sysFlushCache(INT32 nCacheType) {}
+VOID sysInvalidCache() {}
+
+INT32 DrvADC_Open(void)
+{
+ return 0;
+}
+
+INT32 DrvADC_Close(void)
+{
+ return 0;
+}
+
+INT32 adc_read(unsigned char mode, unsigned short int* x, unsigned short int* y)
+{
+ return 0;
+}
+
+INT32 IsPenDown(void)
+{
+ return 0;
+}
+
+INT fsInitFileSystem(VOID)
+{
+ return 0;
+}
+
+INT fsAssignDriveNumber(INT nDriveNo, INT disk_type, INT instance, INT partition)
+{
+ return 0;
+}
+
+INT fsDiskFreeSpace(INT nDriveNo, UINT32* puBlockSize, UINT32* puFreeSize, UINT32* puDiskSize)
+{
+ return 0;
+}
+
+INT fsTwoPartAndFormatAll(PDISK_T* ptPDisk, INT firstPartSize, INT secondPartSize)
+{
+ return 0;
+}
+
+INT fsSetVolumeLabel(INT nDriveNo, CHAR* szLabel, INT nLen)
+{
+ return 0;
+}
+
+INT fsOpenFile(CHAR* suFileName, CHAR* szAsciiName, UINT32 uFlag)
+{
+ return 0;
+}
+
+INT fsCloseFile(INT hFile)
+{
+ return 0;
+}
+
+INT fsAsciiToUnicode(VOID* pvASCII, VOID* pvUniStr, BOOL bIsNullTerm)
+{
+ return 0;
+}
+
+INT fsReadFile(INT hFile, UINT8* pucPtr, INT nBytes, INT* pnReadCnt)
+{
+ return 0;
+}
+
+INT fsWriteFile(INT hFile, UINT8* pucBuff, INT nBytes, INT* pnWriteCnt)
+{
+ return 0;
+}
+
+INT64 fsFileSeek(INT hFile, INT64 n64Offset, INT16 usWhence)
+{
+ return 0;
+}
+
+void sicOpen(void) {}
+void sicClose(void) {}
+
+INT32 vpostLCMInit(PLCDFORMATEX plcdformatex, UINT32* pFramebuf)
+{
+ return 0;
+}
+
+INT32 sysSetTimerReferenceClock(INT32 nTimeNo, UINT32 uClockRate)
+{
+ return 0;
+}
+
+INT32 sysStartTimer(INT32 nTimeNo, UINT32 uTicksPerSecond, INT32 nOpMode)
+{
+ return 0;
+}
+
+INT32 sysSetTimerEvent(INT32 nTimeNo, UINT32 uTimeTick, PVOID pvFun)
+{
+ return 0;
+}
+
+UINT32 sysGetExternalClock(void)
+{
+ return 0;
+}
+
+ERRCODE
+sysSetSystemClock(E_SYS_SRC_CLK eSrcClk, // Specified the system clock come from external clock, APLL or UPLL
+ UINT32 u32PllHz, // Specified the APLL/UPLL clock
+ UINT32 u32SysHz // Specified the system clock
+)
+{
+ return 0;
+}
+
+UINT32 sysSetDramClock(E_SYS_SRC_CLK eSrcClk, UINT32 u32PLLClockHz, UINT32 u32DdrClock)
+{
+ return 0;
+}
+
+#endif
diff --git a/BSP/ThirdParty/emWin/Config/Win32/GUIConf.c b/BSP/ThirdParty/emWin/Config/Win32/GUIConf.c
new file mode 100644
index 00000000..32209556
--- /dev/null
+++ b/BSP/ThirdParty/emWin/Config/Win32/GUIConf.c
@@ -0,0 +1,61 @@
+/*********************************************************************
+* SEGGER Microcontroller GmbH *
+* Solutions for real time microcontroller applications *
+**********************************************************************
+* *
+* (c) 1996 - 2019 SEGGER Microcontroller GmbH *
+* *
+* Internet: www.segger.com Support: support@segger.com *
+* *
+**********************************************************************
+
+** emWin V6.10 - Graphical user interface for embedded applications **
+emWin is protected by international copyright laws. Knowledge of the
+source code may not be used to write a similar product. This file may
+only be used in accordance with a license and should not be re-
+distributed in any way. We appreciate your understanding and fairness.
+----------------------------------------------------------------------
+File : GUIConf.c
+Purpose : Display controller initialization
+---------------------------END-OF-HEADER------------------------------
+*/
+
+#include "GUI.h"
+
+/*********************************************************************
+*
+* Defines
+*
+**********************************************************************
+*/
+//
+// Define the available number of bytes available for the GUI
+//
+#define GUI_NUMBYTES 0x280000
+
+/*********************************************************************
+*
+* Public code
+*
+**********************************************************************
+*/
+/*********************************************************************
+*
+* GUI_X_Config
+*
+* Purpose:
+* Called during the initialization process in order to set up the
+* available memory for the GUI.
+*/
+void GUI_X_Config(void) {
+ //
+ // 32 bit aligned memory area
+ //
+ static U32 aMemory[GUI_NUMBYTES / 4];
+ //
+ // Assign memory to emWin
+ //
+ GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
+}
+
+/*************************** End of file ****************************/
diff --git a/BSP/ThirdParty/emWin/Config/Win32/GUIConf.h b/BSP/ThirdParty/emWin/Config/Win32/GUIConf.h
new file mode 100644
index 00000000..bd553cea
--- /dev/null
+++ b/BSP/ThirdParty/emWin/Config/Win32/GUIConf.h
@@ -0,0 +1,61 @@
+/*********************************************************************
+* SEGGER Microcontroller GmbH *
+* Solutions for real time microcontroller applications *
+**********************************************************************
+* *
+* (c) 1996 - 2019 SEGGER Microcontroller GmbH *
+* *
+* Internet: www.segger.com Support: support@segger.com *
+* *
+**********************************************************************
+
+** emWin V6.10 - Graphical user interface for embedded applications **
+emWin is protected by international copyright laws. Knowledge of the
+source code may not be used to write a similar product. This file may
+only be used in accordance with a license and should not be re-
+distributed in any way. We appreciate your understanding and fairness.
+----------------------------------------------------------------------
+File : GUIConf.h
+Purpose : Configuration of available features and default values
+----------------------------------------------------------------------
+*/
+
+#ifndef GUICONF_H
+#define GUICONF_H
+
+/*********************************************************************
+*
+* Multi layer/display support
+*/
+#define GUI_NUM_LAYERS 16 // Maximum number of available layers
+
+/*********************************************************************
+*
+* Multi tasking support
+*/
+#define GUI_OS (1) // Compile with multitasking support
+
+/*********************************************************************
+*
+* Configuration of available packages
+*/
+#define GUI_SUPPORT_TOUCH (1) // Support a touch screen (req. win-manager)
+#define GUI_SUPPORT_MOUSE (1) // Support a mouse
+#define GUI_WINSUPPORT (1) // Window manager package available
+#define GUI_SUPPORT_MEMDEV (1) // Memory devices available
+
+/*********************************************************************
+*
+* Configuration of window manager
+*/
+#define WM_SUPPORT_NOTIFY_VIS_CHANGED (1) // Enable sending of WM_NOTIFY_VIS_CHANGED messages
+
+/*********************************************************************
+*
+* Default font
+*/
+#define GUI_DEFAULT_FONT &GUI_Font6x8
+
+#endif /* Avoid multiple inclusion */
+
+/*************************** End of file ****************************/
diff --git a/BSP/ThirdParty/emWin/Config/Win32/LCDConf.c b/BSP/ThirdParty/emWin/Config/Win32/LCDConf.c
new file mode 100644
index 00000000..5f530324
--- /dev/null
+++ b/BSP/ThirdParty/emWin/Config/Win32/LCDConf.c
@@ -0,0 +1,199 @@
+/*********************************************************************
+* SEGGER Microcontroller GmbH *
+* Solutions for real time microcontroller applications *
+**********************************************************************
+* *
+* (c) 1996 - 2019 SEGGER Microcontroller GmbH *
+* *
+* Internet: www.segger.com Support: support@segger.com *
+* *
+**********************************************************************
+
+** emWin V6.10 - Graphical user interface for embedded applications **
+emWin is protected by international copyright laws. Knowledge of the
+source code may not be used to write a similar product. This file may
+only be used in accordance with a license and should not be re-
+distributed in any way. We appreciate your understanding and fairness.
+----------------------------------------------------------------------
+File : LCDConf.c
+Purpose : Display controller configuration (single layer)
+---------------------------END-OF-HEADER------------------------------
+*/
+
+#include "GUI.h"
+
+/*********************************************************************
+*
+* Layer configuration (to be modified)
+*
+**********************************************************************
+*/
+//
+// Physical display size
+//
+#define XSIZE_PHYS 375
+#define YSIZE_PHYS 640
+
+//
+// Color conversion
+//
+#if GUI_USE_ARGB
+ #define COLOR_CONVERSION GUICC_M8888I
+#else
+ #define COLOR_CONVERSION GUICC_8888
+#endif
+
+//
+// Display driver
+//
+#define DISPLAY_DRIVER GUIDRV_WIN32
+
+/*********************************************************************
+*
+* Configuration checking
+*
+**********************************************************************
+*/
+#ifndef VXSIZE_PHYS
+ #define VXSIZE_PHYS XSIZE_PHYS
+#endif
+#ifndef VYSIZE_PHYS
+ #define VYSIZE_PHYS YSIZE_PHYS
+#endif
+#ifndef VRAM_ADDR
+ #define VRAM_ADDR 0
+#endif
+
+#ifndef XSIZE_PHYS
+ #error Physical X size of display is not defined!
+#endif
+#ifndef YSIZE_PHYS
+ #error Physical Y size of display is not defined!
+#endif
+#ifndef COLOR_CONVERSION
+ #error Color conversion not defined!
+#endif
+#ifndef DISPLAY_DRIVER
+ #error No display driver defined!
+#endif
+
+/*********************************************************************
+*
+* Public code
+*
+**********************************************************************
+*/
+/*********************************************************************
+*
+* LCD_X_Config
+*
+* Purpose:
+* Called during the initialization process in order to set up the
+* display driver configuration.
+*
+*/
+void LCD_X_Config(void) {
+ //
+ // Set display driver and color conversion for 1st layer
+ //
+ GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
+ //
+ // Display driver configuration
+ //
+ LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS);
+ LCD_SetVSizeEx (0, VXSIZE_PHYS, VYSIZE_PHYS);
+ LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR);
+ //
+ // Set user palette data (only required if no fixed palette is used)
+ //
+ #if defined(PALETTE)
+ LCD_SetLUTEx(0, PALETTE);
+ #endif
+}
+
+/*********************************************************************
+*
+* LCD_X_DisplayDriver
+*
+* Purpose:
+* This function is called by the display driver for several purposes.
+* To support the according task the routine needs to be adapted to
+* the display controller. Please note that the commands marked with
+* 'optional' are not cogently required and should only be adapted if
+* the display controller supports these features.
+*
+* Parameter:
+* LayerIndex - Index of layer to be configured
+* Cmd - Please refer to the details in the switch statement below
+* pData - Pointer to a LCD_X_DATA structure
+*
+* Return Value:
+* < -1 - Error
+* -1 - Command not handled
+* 0 - Ok
+*/
+int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) {
+ int r;
+
+ switch (Cmd) {
+ //
+ // Required
+ //
+ case LCD_X_INITCONTROLLER: {
+ //
+ // Called during the initialization process in order to set up the
+ // display controller and put it into operation. If the display
+ // controller is not initialized by any external routine this needs
+ // to be adapted by the customer...
+ //
+ // ...
+ return 0;
+ }
+ case LCD_X_SETVRAMADDR: {
+ //
+ // Required for setting the address of the video RAM for drivers
+ // with memory mapped video RAM which is passed in the 'pVRAM' element of p
+ //
+ LCD_X_SETVRAMADDR_INFO * p;
+ p = (LCD_X_SETVRAMADDR_INFO *)pData;
+ //...
+ return 0;
+ }
+ case LCD_X_SETORG: {
+ //
+ // Required for setting the display origin which is passed in the 'xPos' and 'yPos' element of p
+ //
+ LCD_X_SETORG_INFO * p;
+ p = (LCD_X_SETORG_INFO *)pData;
+ //...
+ return 0;
+ }
+ case LCD_X_SETLUTENTRY: {
+ //
+ // Required for setting a lookup table entry which is passed in the 'Pos' and 'Color' element of p
+ //
+ LCD_X_SETLUTENTRY_INFO * p;
+ p = (LCD_X_SETLUTENTRY_INFO *)pData;
+ //...
+ return 0;
+ }
+ case LCD_X_ON: {
+ //
+ // Required if the display controller should support switching on and off
+ //
+ return 0;
+ }
+ case LCD_X_OFF: {
+ //
+ // Required if the display controller should support switching on and off
+ //
+ // ...
+ return 0;
+ }
+ default:
+ r = -1;
+ }
+ return r;
+}
+
+/*************************** End of file ****************************/
diff --git a/BSP/ThirdParty/emWin/Config/Win32/LCDConf.h b/BSP/ThirdParty/emWin/Config/Win32/LCDConf.h
new file mode 100644
index 00000000..92363b7c
--- /dev/null
+++ b/BSP/ThirdParty/emWin/Config/Win32/LCDConf.h
@@ -0,0 +1,28 @@
+/*********************************************************************
+* SEGGER Microcontroller GmbH *
+* Solutions for real time microcontroller applications *
+**********************************************************************
+* *
+* (c) 1996 - 2019 SEGGER Microcontroller GmbH *
+* *
+* Internet: www.segger.com Support: support@segger.com *
+* *
+**********************************************************************
+
+** emWin V6.10 - Graphical user interface for embedded applications **
+emWin is protected by international copyright laws. Knowledge of the
+source code may not be used to write a similar product. This file may
+only be used in accordance with a license and should not be re-
+distributed in any way. We appreciate your understanding and fairness.
+----------------------------------------------------------------------
+File : LCDConf.h
+Purpose : Display driver configuration file
+----------------------------------------------------------------------
+*/
+
+#ifndef LCDCONF_H
+#define LCDCONF_H
+
+#endif /* LCDCONF_H */
+
+/*************************** End of file ****************************/
diff --git a/BSP/ThirdParty/emWin/Config/Win32/SIMConf.c b/BSP/ThirdParty/emWin/Config/Win32/SIMConf.c
new file mode 100644
index 00000000..8f936e0a
--- /dev/null
+++ b/BSP/ThirdParty/emWin/Config/Win32/SIMConf.c
@@ -0,0 +1,52 @@
+/*********************************************************************
+* SEGGER Microcontroller GmbH *
+* Solutions for real time microcontroller applications *
+**********************************************************************
+* *
+* (c) 1996 - 2019 SEGGER Microcontroller GmbH *
+* *
+* Internet: www.segger.com Support: support@segger.com *
+* *
+**********************************************************************
+
+** emWin V6.10 - Graphical user interface for embedded applications **
+emWin is protected by international copyright laws. Knowledge of the
+source code may not be used to write a similar product. This file may
+only be used in accordance with a license and should not be re-
+distributed in any way. We appreciate your understanding and fairness.
+----------------------------------------------------------------------
+File : SIMConf.c
+Purpose : Windows Simulator configuration
+---------------------------END-OF-HEADER------------------------------
+*/
+
+#ifdef WIN32
+
+#include "LCD_SIM.h"
+
+/*********************************************************************
+*
+* Public code
+*
+**********************************************************************
+*/
+/*********************************************************************
+*
+* SIM_X_Config
+*
+* Purpose:
+* Called during the initialization process in order to configure
+* the simulator.
+*/
+void SIM_X_Config() {
+ SIM_GUI_SetTransColor(0xff0000); // Define the transparent color
+}
+
+#else
+
+void SIMConf_C(void); // Avoid empty object files
+void SIMConf_C(void) {}
+
+#endif
+
+/*************************** End of file ****************************/
diff --git a/BSP/ThirdParty/emWin/Lib/NUGUICore.lib b/BSP/ThirdParty/emWin/Lib/NUGUICore.lib
new file mode 100644
index 00000000..00b8613c
Binary files /dev/null and b/BSP/ThirdParty/emWin/Lib/NUGUICore.lib differ
diff --git a/BSP/ThirdParty/emWin/Lib/NUGUISim.lib b/BSP/ThirdParty/emWin/Lib/NUGUISim.lib
new file mode 100644
index 00000000..595606d0
Binary files /dev/null and b/BSP/ThirdParty/emWin/Lib/NUGUISim.lib differ