38 #include "lpc43xx_dualcore_config.h"
53 #define UCOS_LCD_STACK_SZ 1024
54 #define UCOS_TSC_STACK_SZ 512
56 #define UCOS_LCD_TASK_PRIORITY (APP_CFG_TASK_START_PRIO + 1)
57 #define UCOS_TSC_TASK_PRIORITY (APP_CFG_TASK_START_PRIO - 1)
86 #if (defined(OS_FREE_RTOS)) || (defined(OS_UCOS_III))
96 #define ID_FRAMEWIN_0 (GUI_ID_USER + 0x0A)
97 #define ID_TEXT_0 (GUI_ID_USER + 0x0B)
98 #define ID_BUTTON_0 (GUI_ID_USER + 0x0C)
99 #define ID_BUTTON_1 (GUI_ID_USER + 0x0D)
100 #define ID_BUTTON_2 (GUI_ID_USER + 0x0E)
101 #define ID_TEXT_1 (GUI_ID_USER + 0x10)
102 #define ID_TEXT_2 (GUI_ID_USER + 0x11)
103 #define ID_TEXT_3 (GUI_ID_USER + 0x12)
104 #define ID_TEXT_4 (GUI_ID_USER + 0x13)
105 #define ID_TEXT_5 (GUI_ID_USER + 0x14)
106 #define ID_EDIT_0 (GUI_ID_USER + 0x15)
107 #define ID_EDIT_1 (GUI_ID_USER + 0x16)
112 #define TSC_CHECK_DELAY (20)
117 static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
118 {FRAMEWIN_CreateIndirect,
"emWin Demo",
ID_FRAMEWIN_0, 8, 8, 310, 230, 0, 0, 0},
119 {TEXT_CreateIndirect,
"NXP Semiconductors",
ID_TEXT_0, 30, 10, 260, 100, TEXT_CF_HCENTER},
120 {TEXT_CreateIndirect,
"0000",
ID_TEXT_1, 100, 80, 100, 60, TEXT_CF_HCENTER},
121 {BUTTON_CreateIndirect,
"START",
ID_BUTTON_0, 36, 160, 70, 30, 0, 0, 0},
122 {BUTTON_CreateIndirect,
"STOP",
ID_BUTTON_1, 126, 160, 60, 30},
123 {BUTTON_CreateIndirect,
"RESET",
ID_BUTTON_2, 203, 160, 70, 30},
138 #define GUI_BUF_ADDR 0x28050000
139 #define GUI_NUMBYTES ((1024 * 1024) * 2)
140 #define GUI_BLOCKSIZE (0x128)
141 #define GUI_BUF LOCATE_AT(GUI_BUF_ADDR)
143 GUI_BUF U32 GUI_Memory[GUI_NUMBYTES / sizeof(U32)];
144 U32 GUI_Memory_Size = GUI_NUMBYTES;
145 U32 GUI_Block_Size = GUI_BLOCKSIZE;
166 ap = (uint8_t *) &s_addr;
167 for (n = 0; n < 4; n++) {
170 rem = *ap % (uint8_t) 10;
172 inv[i++] =
'0' + rem;
175 if (len++ >= buflen) {
180 if (len++ >= buflen) {
196 static char *hostp, host_ip[16] = {0};
197 static char *remotep, remote_ip[16] = {0};
198 static uint32_t old_hostip = 1, old_remoteip = 1;
202 hItem = WM_GetDialogItem(hWin_up,
ID_EDIT_0);
203 EDIT_SetTextAlign(hItem, GUI_TA_HCENTER);
204 EDIT_SetBkColor(hItem, EDIT_CI_DISABLED, GUI_GREEN);
205 EDIT_SetTextColor(hItem, EDIT_CI_DISABLED, GUI_GREEN);
207 EDIT_SetText(hItem, hostp);
213 hItem = WM_GetDialogItem(hWin_up,
ID_EDIT_1);
214 EDIT_SetTextAlign(hItem, GUI_TA_HCENTER);
215 EDIT_SetBkColor(hItem, EDIT_CI_DISABLED, GUI_RED);
216 EDIT_SetTextColor(hItem, EDIT_CI_DISABLED, GUI_RED);
218 EDIT_SetText(hItem, remotep);
226 static void _cbCallback(WM_MESSAGE *pMsg)
231 int fdig, sdig, tdig, frdig;
232 BUTTON_Handle hButton;
233 char acText[5] = {0};
236 switch (pMsg->MsgId) {
238 WM_DefaultProc(pMsg);
242 FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER | GUI_TA_VCENTER);
243 FRAMEWIN_SetFont(hDlg, GUI_FONT_24_ASCII);
246 hItem = WM_GetDialogItem(pMsg->hWin,
ID_TEXT_0);
247 TEXT_SetText(hItem,
"NXP SEMICONDUCTORS");
248 TEXT_SetFont(hItem, &GUI_Font24B_ASCII);
249 TEXT_SetTextAlign(hItem, (GUI_TA_HCENTER));
250 TEXT_SetTextColor(hItem, GUI_YELLOW);
252 hItem = WM_GetDialogItem(pMsg->hWin,
ID_TEXT_1);
255 sdig = (
counter - (fdig * 1000)) / 100;
256 tdig = (
counter - ((fdig * 1000) + (sdig * 100))) / 10;
258 acText[0] =
'0' + fdig;
259 acText[1] =
'0' + sdig;
260 acText[2] =
'0' + tdig;
261 acText[3] =
'0' + frdig;
262 TEXT_SetFont(hItem, &GUI_Font8x16x1x2);
263 TEXT_SetTextAlign(hItem, (GUI_TA_HCENTER));
264 TEXT_SetTextColor(hItem, GUI_RED);
265 TEXT_SetText(hItem, acText);
271 case WM_NOTIFY_PARENT:
273 Id = WM_GetId(pMsg->hWinSrc);
274 NCode = pMsg->Data.v;
276 case WM_NOTIFICATION_RELEASED:
280 WM_InvalidateWindow(hButton);
286 WM_InvalidateWindow(hButton);
294 WM_InvalidateWindow(hButton);
301 WM_DefaultProc(pMsg);
321 static char name[] = {
"HTTP Server Address"};
322 static char remote_name[] = {
"Remote IP address"};
329 hItem = TEXT_CreateEx(24, 40, 150, 100, WM_GetClientWindow(
hWin), WM_CF_SHOW, 0,
ID_TEXT_2, name);
330 TEXT_SetFont(hItem, &GUI_Font16B_ASCII);
331 TEXT_SetTextAlign(hItem, GUI_TA_HCENTER);
332 TEXT_SetTextColor(hItem, GUI_DARKCYAN);
335 hItem = TEXT_CreateEx(24, 60, 150, 100, WM_GetClientWindow(
hWin), WM_CF_SHOW, 0,
ID_TEXT_3, remote_name);
336 TEXT_SetFont(hItem, &GUI_Font16B_ASCII);
337 TEXT_SetTextAlign(hItem, GUI_TA_HCENTER);
338 TEXT_SetTextColor(hItem, GUI_DARKGREEN);
341 hItem = EDIT_CreateEx(170, 40, 100, 20, WM_GetClientWindow(
hWin), WM_CF_SHOW, 0,
ID_EDIT_0, 16);
344 hItem = EDIT_CreateEx(170, 60, 100, 20, WM_GetClientWindow(
hWin), WM_CF_SHOW, 0,
ID_EDIT_1, 16);
353 #if (defined(OS_FREE_RTOS)) || (defined(OS_UCOS_III))
359 static void lcd_app_task(
void *arg)
363 int fdig, sdig, tdig, frdig;
364 char acText[5] = {0};
367 WM_SetDesktopColor(GUI_GREEN);
368 WM_SetCreateFlags(WM_CF_MEMDEV);
369 hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
383 sdig = (
counter - (fdig * 1000)) / 100;
384 tdig = (
counter - ((fdig * 1000) + (sdig * 100))) / 10;
386 acText[0] =
'0' + fdig;
387 acText[1] =
'0' + sdig;
388 acText[2] =
'0' + tdig;
389 acText[3] =
'0' + frdig;
390 TEXT_SetFont(hItem, &GUI_Font8x16x3x3);
391 TEXT_SetTextAlign(hItem, (GUI_TA_HCENTER));
392 TEXT_SetTextColor(hItem, GUI_RED);
393 TEXT_SetText(hItem, acText);
407 static void tsc_app_task(
void *arg)
410 int16_t tmp_x = -1, tmp_y = -1;
411 int16_t tmp_x1 = -1, tmp_y1 = -1;
412 static uint8_t pressed = 0;
427 touched =
GetTouchPos((int16_t *) &tmp_x, (int16_t *) &tmp_y);
428 if (touched ==
true) {
433 GUI_TOUCH_StoreState(320 - tmp_x1, tmp_y1);
439 GUI_TOUCH_StoreState(320 - tmp_x1, tmp_y1);
447 GUI_TOUCH_StoreState(-1, -1);
477 #if !defined(OS_UCOS_III) && !defined(OS_FREE_RTOS)
483 WM_SetDesktopColor(GUI_GREEN);
484 WM_SetCreateFlags(WM_CF_MEMDEV);
485 hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
494 #if (defined(OS_FREE_RTOS)) || (defined(OS_UCOS_III))
499 xTaskCreate(vTSCTask, (
signed char *)
"vTSCTask",
501 (xTaskHandle *)
NULL);
502 xTaskCreate(vLcdTask, (
signed char *)
"vLCDTask",
504 (xTaskHandle *)
NULL);
507 static OS_TCB lcd_app_taskTCB;
508 static CPU_STK lcd_app_taskSTK[UCOS_LCD_STACK_SZ];
509 static OS_TCB tsc_app_taskTCB;
510 static CPU_STK tsc_app_taskSTK[UCOS_TSC_STACK_SZ];
512 OSTaskCreate((OS_TCB *) &lcd_app_taskTCB,
513 (CPU_CHAR *)
"vLCDTask",
514 (OS_TASK_PTR) lcd_app_task,
517 (CPU_STK *) &lcd_app_taskSTK[0],
519 (CPU_STK_SIZE) UCOS_LCD_STACK_SZ,
523 (OS_OPT) (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
525 if (os_err != OS_ERR_NONE) {
526 printf(
"Unable to create vLCDTask task!\r\n");
529 OSTaskCreate((OS_TCB *) &tsc_app_taskTCB,
530 (CPU_CHAR *)
"vTSCTask",
531 (OS_TASK_PTR) tsc_app_task,
534 (CPU_STK *) &tsc_app_taskSTK[0],
536 (CPU_STK_SIZE) UCOS_TSC_STACK_SZ,
540 (OS_OPT) (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
542 if (os_err != OS_ERR_NONE) {
543 printf(
"Unable to create vTSCTask task!\r\n");
554 int fdig, sdig, tdig, frdig;
555 char acText[5] = {0};
569 sdig = (
counter - (fdig * 1000)) / 100;
570 tdig = (
counter - ((fdig * 1000) + (sdig * 100))) / 10;
572 acText[0] =
'0' + fdig;
573 acText[1] =
'0' + sdig;
574 acText[2] =
'0' + tdig;
575 acText[3] =
'0' + frdig;
576 TEXT_SetFont(hItem, &GUI_Font8x16x3x3);
577 TEXT_SetTextAlign(hItem, (GUI_TA_HCENTER));
578 TEXT_SetTextColor(hItem, GUI_RED);
579 TEXT_SetText(hItem, acText);