39 #include "lpc43xx_dualcore_config.h"
49 #define FREERTOS_LCD_STACK_SZ 512
50 #define FREERTOS_TSC_STACK_SZ 128
56 #define UCOS_LCD_STACK_SZ 1024
57 #define UCOS_TSC_STACK_SZ 512
59 #define UCOS_LCD_TASK_PRIORITY (APP_CFG_TASK_START_PRIO + 1)
60 #define UCOS_TSC_TASK_PRIORITY (APP_CFG_TASK_START_PRIO - 1)
104 #if (defined(OS_FREE_RTOS)) || (defined(OS_UCOS_III))
114 #define ID_FRAMEWIN_0 (GUI_ID_USER + 0x0A)
115 #define ID_TEXT_0 (GUI_ID_USER + 0x0B)
116 #define ID_BUTTON_0 (GUI_ID_USER + 0x0C)
117 #define ID_BUTTON_1 (GUI_ID_USER + 0x0D)
118 #define ID_BUTTON_2 (GUI_ID_USER + 0x0E)
119 #define ID_TEXT_1 (GUI_ID_USER + 0x10)
120 #define ID_TEXT_2 (GUI_ID_USER + 0x11)
121 #define ID_TEXT_3 (GUI_ID_USER + 0x12)
122 #define ID_TEXT_4 (GUI_ID_USER + 0x13)
123 #define ID_TEXT_5 (GUI_ID_USER + 0x14)
124 #define ID_EDIT_0 (GUI_ID_USER + 0x15)
125 #define ID_EDIT_1 (GUI_ID_USER + 0x16)
130 #define TSC_CHECK_DELAY (20)
135 static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
136 {FRAMEWIN_CreateIndirect,
"emWin Demo",
ID_FRAMEWIN_0, 8, 8, 310, 230, 0, 0, 0},
137 {TEXT_CreateIndirect,
"NXP Semiconductors",
ID_TEXT_0, 30, 10, 260, 100, TEXT_CF_HCENTER},
138 {TEXT_CreateIndirect,
"0000",
ID_TEXT_1, 100, 80, 100, 60, TEXT_CF_HCENTER},
139 {BUTTON_CreateIndirect,
"START",
ID_BUTTON_0, 36, 160, 70, 30, 0, 0, 0},
140 {BUTTON_CreateIndirect,
"STOP",
ID_BUTTON_1, 126, 160, 60, 30},
141 {BUTTON_CreateIndirect,
"RESET",
ID_BUTTON_2, 203, 160, 70, 30},
156 #define GUI_BUF_ADDR 0x28050000
157 #define GUI_NUMBYTES ((1024 * 1024) * 2)
158 #define GUI_BLOCKSIZE (0x128)
159 #define GUI_BUF LOCATE_AT(GUI_BUF_ADDR)
161 GUI_BUF U32 GUI_Memory[GUI_NUMBYTES / sizeof(U32)];
162 U32 GUI_Memory_Size = GUI_NUMBYTES;
163 U32 GUI_Block_Size = GUI_BLOCKSIZE;
165 #define FRAME_BUF LOCATE_AT(FRAMEBUFFER_ADDR)
166 FRAME_BUF uint16_t Frame_Buf[C_GLCD_H_SIZE * C_GLCD_V_SIZE];
184 static uint32_t old_hostip = 1, old_remoteip = 1;
188 hItem = WM_GetDialogItem(hWin_up,
ID_EDIT_0);
189 EDIT_SetTextAlign(hItem, GUI_TA_HCENTER);
190 EDIT_SetBkColor(hItem, EDIT_CI_DISABLED, GUI_GREEN);
191 EDIT_SetTextColor(hItem, EDIT_CI_DISABLED, GUI_GREEN);
192 snprintf(tbuff,
sizeof(tbuff) - 1,
"%d.%d.%d.%d",
195 EDIT_SetText(hItem, tbuff);
201 hItem = WM_GetDialogItem(hWin_up,
ID_EDIT_1);
202 EDIT_SetTextAlign(hItem, GUI_TA_HCENTER);
203 EDIT_SetBkColor(hItem, EDIT_CI_DISABLED, GUI_RED);
204 EDIT_SetTextColor(hItem, EDIT_CI_DISABLED, GUI_RED);
205 snprintf(tbuff,
sizeof(tbuff)-1,
"%d.%d.%d.%d",
208 EDIT_SetText(hItem, tbuff);
217 static char name[] = {
"HTTP Server Address"};
218 static char remote_name[] = {
"Remote IP address"};
225 hItem = TEXT_CreateEx(24, 40, 150, 100, WM_GetClientWindow(
hWin), WM_CF_SHOW, 0,
ID_TEXT_2, name);
226 TEXT_SetFont(hItem, &GUI_Font16B_ASCII);
227 TEXT_SetTextAlign(hItem, GUI_TA_HCENTER);
228 TEXT_SetTextColor(hItem, GUI_DARKCYAN);
231 hItem = TEXT_CreateEx(24, 60, 150, 100, WM_GetClientWindow(
hWin), WM_CF_SHOW, 0,
ID_TEXT_3, remote_name);
232 TEXT_SetFont(hItem, &GUI_Font16B_ASCII);
233 TEXT_SetTextAlign(hItem, GUI_TA_HCENTER);
234 TEXT_SetTextColor(hItem, GUI_DARKGREEN);
237 hItem = EDIT_CreateEx(170, 40, 100, 20, WM_GetClientWindow(
hWin), WM_CF_SHOW, 0,
ID_EDIT_0, 16);
240 hItem = EDIT_CreateEx(170, 60, 100, 20, WM_GetClientWindow(
hWin), WM_CF_SHOW, 0,
ID_EDIT_1, 16);
249 static void _cbCallback(WM_MESSAGE *pMsg)
254 int fdig, sdig, tdig, frdig;
255 BUTTON_Handle hButton;
256 char acText[5] = {0};
259 switch (pMsg->MsgId) {
261 WM_DefaultProc(pMsg);
265 FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER | GUI_TA_VCENTER);
266 FRAMEWIN_SetFont(hDlg, GUI_FONT_24_ASCII);
269 hItem = WM_GetDialogItem(pMsg->hWin,
ID_TEXT_0);
270 TEXT_SetText(hItem,
"NXP SEMICONDUCTORS");
271 TEXT_SetFont(hItem, &GUI_Font24B_ASCII);
272 TEXT_SetTextAlign(hItem, (GUI_TA_HCENTER));
273 TEXT_SetTextColor(hItem, GUI_YELLOW);
275 hItem = WM_GetDialogItem(pMsg->hWin,
ID_TEXT_1);
278 sdig = (
counter - (fdig * 1000)) / 100;
279 tdig = (
counter - ((fdig * 1000) + (sdig * 100))) / 10;
281 acText[0] =
'0' + fdig;
282 acText[1] =
'0' + sdig;
283 acText[2] =
'0' + tdig;
284 acText[3] =
'0' + frdig;
285 TEXT_SetFont(hItem, &GUI_Font8x16x1x2);
286 TEXT_SetTextAlign(hItem, (GUI_TA_HCENTER));
287 TEXT_SetTextColor(hItem, GUI_RED);
288 TEXT_SetText(hItem, acText);
294 case WM_NOTIFY_PARENT:
296 Id = WM_GetId(pMsg->hWinSrc);
297 NCode = pMsg->Data.v;
299 case WM_NOTIFICATION_RELEASED:
303 WM_InvalidateWindow(hButton);
309 WM_InvalidateWindow(hButton);
317 WM_InvalidateWindow(hButton);
324 WM_DefaultProc(pMsg);
331 #if (defined(OS_FREE_RTOS)) || (defined(OS_UCOS_III))
337 static void lcd_app_task(
void *arg)
341 int fdig, sdig, tdig, frdig;
342 char acText[5] = {0};
345 WM_SetDesktopColor(GUI_GREEN);
346 WM_SetCreateFlags(WM_CF_MEMDEV);
347 hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
361 sdig = (
counter - (fdig * 1000)) / 100;
362 tdig = (
counter - ((fdig * 1000) + (sdig * 100))) / 10;
364 acText[0] =
'0' + fdig;
365 acText[1] =
'0' + sdig;
366 acText[2] =
'0' + tdig;
367 acText[3] =
'0' + frdig;
368 TEXT_SetFont(hItem, &GUI_Font8x16x3x3);
369 TEXT_SetTextAlign(hItem, (GUI_TA_HCENTER));
370 TEXT_SetTextColor(hItem, GUI_RED);
371 TEXT_SetText(hItem, acText);
385 static void tsc_app_task(
void *arg)
388 int16_t tmp_x = -1, tmp_y = -1;
389 int16_t tmp_x1 = -1, tmp_y1 = -1;
390 static uint8_t pressed = 0;
406 if (touched ==
true) {
411 GUI_TOUCH_StoreState(320 - tmp_x1, tmp_y1);
417 GUI_TOUCH_StoreState(320 - tmp_x1, tmp_y1);
425 GUI_TOUCH_StoreState(-1, -1);
467 #if !defined(OS_UCOS_III) && !defined(OS_FREE_RTOS)
473 WM_SetDesktopColor(GUI_GREEN);
474 WM_SetCreateFlags(WM_CF_MEMDEV);
475 hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
484 #if (defined(OS_FREE_RTOS)) || (defined(OS_UCOS_III))
489 xTaskCreate(vTSCTask, (
signed char *)
"vTSCTask",
491 (xTaskHandle *)
NULL);
492 xTaskCreate(vLcdTask, (
signed char *)
"vLCDTask",
494 (xTaskHandle *)
NULL);
497 static OS_TCB lcd_app_taskTCB;
498 static CPU_STK lcd_app_taskSTK[UCOS_LCD_STACK_SZ];
499 static OS_TCB tsc_app_taskTCB;
500 static CPU_STK tsc_app_taskSTK[UCOS_TSC_STACK_SZ];
507 (
CPU_STK *) &lcd_app_taskSTK[0],
516 printf(
"Unable to create vLCDTask task!\r\n");
524 (
CPU_STK *) &tsc_app_taskSTK[0],
533 printf(
"Unable to create vTSCTask task!\r\n");
544 int fdig, sdig, tdig, frdig;
545 char acText[5] = {0};
559 sdig = (
counter - (fdig * 1000)) / 100;
560 tdig = (
counter - ((fdig * 1000) + (sdig * 100))) / 10;
562 acText[0] =
'0' + fdig;
563 acText[1] =
'0' + sdig;
564 acText[2] =
'0' + tdig;
565 acText[3] =
'0' + frdig;
566 TEXT_SetFont(hItem, &GUI_Font8x16x3x3);
567 TEXT_SetTextAlign(hItem, (GUI_TA_HCENTER));
568 TEXT_SetTextColor(hItem, GUI_RED);
569 TEXT_SetText(hItem, acText);