/** * @brief Game window Startup * @param hWin: pointer to the parent handle. * @param xpos: X position * @param ypos: Y position * @retval None */ void VNC_SERVER_StatusChanged (uint8_t status) { WM_HWIN hItem; hItem = WM_GetDialogItem(hVncWin, ID_VNC_CONNECTION); switch (status) { case VNC_IDLE: case VNC_LINK_DOWN: case VNC_ERROR: IMAGE_SetBitmap(hItem, &bmconnection_ko); WM_InvalidateWindow(hItem); WM_Update(hItem); break; case VNC_LINK_UP: case VNC_WAIT_FOR_ADDRESS: IMAGE_SetGIF(hItem, vnc_connection, sizeof(vnc_connection)); WM_InvalidateWindow(hItem); WM_Update(hItem); break; case VNC_ADDRESS_ASSIGNED: case VNC_CONN_ESTABLISHED: IMAGE_SetBitmap(hItem, &bmconnection_ok); hItem = WM_GetDialogItem(hVncWin, START_VNC); WM_InvalidateWindow(hItem); WM_Update(hItem); break; default: break; } }
/** * @brief Start VNC server * @param None * @retval None */ static void VNCServer_Start(void) { WM_HWIN hItem; hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "VNC Server intialization ...\r\n"); /* Start VNC */ if (GUI_VNC_X_StartServer(0, 0)) { VNC_Initialized = 1; hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "The VNC Server is started \r\n"); /* Change connection png pic from connecting to connected */ hItem = WM_GetDialogItem(hWinVNC, ID_IMAGE_STATE); IMAGE_SetBitmap(hItem, &bmok32); } else /* Failed to start VNC server */ { hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "Failed: The VNC server cannot start\r\n"); /* Change connection png pic from connecting to disconnected */ hItem = WM_GetDialogItem(hWinVNC, ID_IMAGE_STATE); IMAGE_SetBitmap(hItem, &bmDelete32); } }
/** * @brief Notify State Change * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ void _cbNotifyStateChange (void) { WM_HWIN hItem; if(AUDIO_RECORDER_GetState() == AUDIO_RECORDER_SUSPENDED) { if(RecorderMode == RECORDER_MODE_PLAYING) { RecorderMode = RECORDER_MODE_PLAY_IDLE; hItem = WM_GetDialogItem(hMainWin, ID_RECORD_REC_CANCEL_PLAY); WM_InvalidateWindow(hItem); WM_Update(hItem); } if(RecorderMode == RECORDER_MODE_RECORDING) { RecorderMode = RECORDER_MODE_REC_IDLE; } hItem = WM_GetDialogItem(hMainWin, ID_EQUAL); IMAGE_SetBitmap(hItem, &bmframe0); WM_InvalidateWindow(hItem); WM_Update(hItem); if(hMainWin != 0) { hItem = WM_GetDialogItem(hMainWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); WM_Update(hItem); } } }
/** * @brief Callback routine of the alarm dialog * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbAlarmDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; char temp[50]; uint8_t asec, amin, ahour; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialization of 'Alarm' */ hItem = pMsg->hWin; FRAMEWIN_SetFont(hItem, GUI_FONT_13HB_ASCII); hItem = WM_GetDialogItem(pMsg->hWin, ID_ALARM); TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII); /* Initialization of 'Image' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_INFO); IMAGE_SetBitmap(hItem, &bmalarmclock); /* Initialization of 'Time' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TIME); ahour = RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours; amin = RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes; asec = RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds; sprintf (temp, "%02d:%02d:%02d", ahour, amin, asec); TEXT_SetText(hItem, temp); TEXT_SetFont(hItem, GUI_FONT_24B_ASCII); TEXT_SetTextColor(hItem, GUI_BROWN); /* Initialization of 'Close' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_INFO_CLOSE); BUTTON_SetFont(hItem, GUI_FONT_13HB_ASCII); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case ID_BUTTON_INFO_CLOSE: GUI_EndDialog(pMsg->hWin, 0); STM_EVAL_LEDOff(LED4); alarm_set=0; break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback function of the CPU window * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMSDConnectionStatus(WM_MESSAGE * pMsg) { static WM_HTIMER hTimerTime; WM_HWIN hItem; static uint8_t msd_connection_Changed = 0; switch (pMsg->MsgId) { case WM_CREATE: /* Create timer */ hTimerTime = WM_CreateTimer(pMsg->hWin, 0, 500, 0); break; case WM_TIMER: if(msd_connection_Changed != k_StorageGetStatus(MSD_DISK_UNIT)) { msd_connection_Changed = k_StorageGetStatus(MSD_DISK_UNIT); if(msd_connection_Changed == 1) { hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_IMAGE2_CONNECTED); IMAGE_SetBitmap(hItem, &bmconnected); } else { hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_IMAGE2_CONNECTED); IMAGE_SetBitmap(hItem, &bmnot_connected); } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: msd_connection_Changed = 0; WM_DeleteTimer(hTimerTime); break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback routine of desktop window title. * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbTitle(WM_MESSAGE * pMsg) { WM_HWIN hItem; // const void * pData; // U32 FileSize; switch (pMsg->MsgId) { case WM_INIT_DIALOG: // // Initialization of 'Window' // hItem = pMsg->hWin; //WINDOW_SetBkColor(hItem, 0x00303030); WINDOW_SetBkColor(hItem, GUI_DARKGRAY); // // Initialization of 'Image' // hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_IMAGE_0); // FileSize = sizeof(_acImage_LZYLogo40x20); // pData = (const void *)_acImage_LZYLogo40x20; // IMAGE_SetBMP(hItem, pData, FileSize); IMAGE_SetBitmap(hItem, &bmbmLZYLogo40x20); // // Initialization of 'Text' // hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_TEXT_0); TEXT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER); TEXT_SetFont(hItem, &GUI_FontHZ_Song_16); TEXT_SetTextColor(hItem, GUI_WHITE); // strcpy(temp, DEF_WT_NAME); // strcat(temp, " "); // strcat(temp, DEF_WT_MODEL); // TEXT_SetText(hItem, temp); // // Initialization of 'Text' // hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_TEXT_1); TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); //GUI_UC_SetEncodeUTF8(); TEXT_SetFont(hItem, &GUI_FontHZ_Song_16); //TEXT_SetBkColor(hItem, GUI_DARKBLUE); TEXT_SetTextColor(hItem, GUI_WHITE); //TEXT_SetText(hItem, "主菜单"); break; default: WM_DefaultProc(pMsg); break; } }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = BUTTON_CreateEx(420, 0, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); /* Initialization of 'Board : STM324x9I' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Firmware Version : 1.0.1' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Board : STM324x9I' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Board : STM32F746G' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_2); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Firmware Version : 1.0' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_COPYRIGHT); TEXT_SetFont(hItem, GUI_FONT_13_ASCII); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_TITLE); TEXT_SetFont(hItem, &GUI_FontLubalGraph20); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); IMAGE_CreateEx(40, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_BOARD); IMAGE_CreateEx(150, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_MCU); IMAGE_CreateEx(260, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_CPU); IMAGE_CreateEx(370, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_FVERSION); break; case WM_PAINT: GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_DrawRoundedRect(30, 80, 120, 230, 30); GUI_AA_DrawRoundedRect(140, 80, 230, 230, 30); GUI_AA_DrawRoundedRect(250, 80, 340, 230, 30); GUI_AA_DrawRoundedRect(360, 80, 450, 230, 30); break; case WM_TIMER: /* draw */ if(frame < 5) { WM_RestartTimer(pMsg->Data.v, 25); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_BOARD); IMAGE_SetBitmap(hItem, open_board[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_MCU); IMAGE_SetBitmap(hItem, open_mcu[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_CPU); IMAGE_SetBitmap(hItem, open_cpu[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_FVERSION); IMAGE_SetBitmap(hItem, open_fversion[frame]); frame++; } else { if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } } break; case WM_DELETE: if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = BUTTON_CreateEx(420, 0, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); hItem = WM_GetDialogItem(pMsg->hWin, ID_VNC_CONNECTION); IMAGE_SetBitmap(hItem, &bmconnection_ko); hItem = BUTTON_CreateEx(315, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, START_VNC); WM_SetCallback(hItem, _cbButton_start); hItem = BUTTON_CreateEx(380, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, GO_BACKGROUND); WM_SetCallback(hItem, _cbButton_bg); hItem = BUTTON_CreateEx(245, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_LOCK); WM_SetCallback(hItem, _cbButton_lock); hItem = WM_GetDialogItem(pMsg->hWin, GO_BACKGROUND); BUTTON_SetFont(hItem, &GUI_FontLubalGraph16B); break; case WM_PAINT: GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_SetPenSize(5); GUI_DrawBitmap(&bmconnect, 7, 45); GUI_DrawCircle(332, 215, 40); GUI_AA_FillCircle(332, 215, 45); GUI_AA_FillRoundedRect(230, 182, 440, 250, 20); GUI_SetColor(GUI_WHITE); GUI_AA_FillCircle(332, 215, 42); GUI_SetBkColor(GUI_WHITE); GUI_AA_FillRoundedRect(233, 185, 437, 247, 20); GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_FillCircle(332, 215, 33); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case START_VNC: /* Notifications sent by 'Start' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: if((VNC_GetState() == VNC_IDLE)|| (VNC_GetState() == VNC_INIT)) { VNC_SERVER_LogMessage("Starting VNC connection..."); hItem = WM_GetDialogItem(pMsg->hWin, ID_VNC_CONNECTION); IMAGE_SetBitmap(hItem, &bmno_connection); VNC_SetState (VNC_INIT); WM_Exec(); VNC_SERVER_Start(); } else { VNC_SERVER_Stop(); } break; case WM_NOTIFICATION_CLICKED: hItem = WM_GetDialogItem(pMsg->hWin, START_VNC); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case GO_BACKGROUND: /* Notifications sent by 'Background' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: WM_HideWindow(pMsg->hWin); module_prop[k_ModuleGetIndex(&vnc_server)].win_state = 1; ST_AnimatedIconView_SetItemText(hIcon,k_ModuleGetIndex(&vnc_server),"vnc server[B]"); ST_AnimatedIconView_SetDualTextColor(hIcon, ICONVIEW_CI_SEL, GUI_STCOLOR_LIGHTBLUE, GUI_STCOLOR_DARKBLUE ); break; } break; case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VNC_GetState() != VNC_IDLE) { VNC_SERVER_Stop(); } GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_LOCK: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VNC_GetState() == VNC_IDLE) { if(VNC_GetLockState()) { VNC_SetLockState(0); } else { VNC_SetLockState(1); } } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialization of 'System Information' */ hItem = pMsg->hWin; FRAMEWIN_AddCloseButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_USB_NOT_CONNECTED); IMAGE_SetBitmap(hItem, &bmUSB_not_connected); hItem = WM_GetDialogItem(pMsg->hWin, ID_MSD_NOT_CONNECTED); IMAGE_SetBitmap(hItem, &bmsdcard_not_connected); USBDSettings.b.connection = DISCONNECTED; WM_CreateWindowAsChild(470, 0, 10, 10, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMSDConnectionStatus , 0); break; case WM_PAINT: DrawRect3D(25, 05, 250, 180); break; case WM_DELETE: USBDSTOR_Stop(); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { /* Notifications sent by 'Connect' Button */ case ID_BUTTON_USB: if(NCode == WM_NOTIFICATION_RELEASED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_USB); if(USBDSettings.b.connection == DISCONNECTED) { BUTTON_SetText(hItem, "Disconnect USB"); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE1_CONNECTED); IMAGE_SetBitmap(hItem, &bmconnected); USBDSettings.b.connection = CONNECTED; USBDSTOR_Connect(); } else { BUTTON_SetText(hItem, "Connect USB "); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE1_CONNECTED); IMAGE_SetBitmap(hItem, &bmnot_connected); USBDSettings.b.connection = DISCONNECTED; USBDSTOR_Disconnect(); } } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the main dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetBitmap(hItem, &bmframe0); hItem = BUTTON_CreateEx(700, 0, 100, 100, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); hItem = BUTTON_CreateEx(540, 350, 80, 80, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_PAUSE); WM_SetCallback(hItem, _cbButton_pause); hItem = BUTTON_CreateEx(320, 350, 80, 80, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_STOP); WM_SetCallback(hItem, _cbButton_stop); hItem = BUTTON_CreateEx(430, 350, 80, 80, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_REC_CANCEL_PLAY); WM_SetCallback(hItem, _cbButton_record); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAMECAPTION); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAME); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); hItem = WM_GetDialogItem(pMsg->hWin, ID_ELAPSED_TIME); TEXT_SetFont(hItem, &GUI_FontLubalGraph20); if((module_prop[k_ModuleGetIndex(&audio_player_board)].in_use) || (k_StorageGetStatus(USB_DISK_UNIT) == 0)) { if(module_prop[k_ModuleGetIndex(&audio_player_board)].in_use) { hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, ">>>"); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAME); TEXT_SetText(hItem, "Audio IF busy"); } if (k_StorageGetStatus(USB_DISK_UNIT) == 0) { hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, ">>>"); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAME); TEXT_SetText(hItem, "USB NOT ready"); } RecorderMode = RECORDER_MODE_REC_DISABLED; hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_DisableWindow(hItem); } else { RecorderMode = RECORDER_MODE_REC_IDLE; WM_CreateWindowAsChild(0, 100, 10, 10, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbAudioProcess, 0); } WM_CreateWindowAsChild(799, 460, 1, 1, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); break; case WM_PAINT: GUI_DrawBitmap(&bmrecorder, 60, 120); GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_FillEllipse(470, 430, 214, 140); GUI_SetColor(GUI_WHITE); GUI_FillEllipse(470, 435, 214, 140); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(module_prop[k_ModuleGetIndex(&audio_player_board)].in_use == 0) { AUDIO_RECORDER_DeInit(); } GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_RECORD_PAUSE: switch(NCode) { case WM_NOTIFICATION_RELEASED: if((AUDIO_RECORDER_GetState() == AUDIO_RECORDER_PLAY_PAUSE)|| (AUDIO_RECORDER_GetState() == AUDIO_RECORDER_RECORD_PAUSE)) { AUDIO_RECORDER_PauseResume(); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } else if((AUDIO_RECORDER_GetState() == AUDIO_RECORDER_PLAYING)|| (AUDIO_RECORDER_GetState() == AUDIO_RECORDER_RECORDING)) { AUDIO_RECORDER_PauseResume(); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetBitmap(hItem, &bmframe0); WM_InvalidateWindow(hItem); WM_Update(hItem); } break; } break; case ID_RECORD_STOP: switch(NCode) { case WM_NOTIFICATION_RELEASED: if( RecorderMode == RECORDER_MODE_RECORDING) { AUDIO_RECORDER_StopRec(); RecorderMode = RECORDER_MODE_PLAY_IDLE; } else if( RecorderMode == RECORDER_MODE_PLAYING) { AUDIO_RECORDER_StopPlayer(); RecorderMode = RECORDER_MODE_PLAY_IDLE; } else if( RecorderMode == RECORDER_MODE_PLAY_IDLE) { RecorderMode = RECORDER_MODE_REC_IDLE; } hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_RECORD_REC_CANCEL_PLAY: switch(NCode) { case WM_NOTIFICATION_RELEASED: /* Start Recored */ if( RecorderMode == RECORDER_MODE_REC_IDLE) { _BuildFileName(); hItem = WM_GetDialogItem(hMainWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, "File : "); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_FILENAME); TEXT_SetText(hItem, FileName); WM_InvalidateWindow(hItem); WM_Update(hItem); AUDIO_RECORDER_SelectFile(FileName, FA_CREATE_ALWAYS | FA_WRITE); AUDIO_RECORDER_StartRec(DEFAULT_AUDIO_IN_FREQ); RecorderMode = RECORDER_MODE_RECORDING; hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } /* Cancel */ else if( RecorderMode == RECORDER_MODE_RECORDING) { AUDIO_RECORDER_StopRec(); RecorderMode = RECORDER_MODE_REC_IDLE; AUDIO_RECORDER_RemoveAudioFile(FileName); } /* Start Play */ else if( RecorderMode == RECORDER_MODE_PLAY_IDLE) { RecorderMode = RECORDER_MODE_PLAYING; AUDIO_RECORDER_SelectFile(FileName, FA_OPEN_EXISTING | FA_READ); AUDIO_RECORDER_Play(DEFAULT_AUDIO_IN_FREQ); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem, Hint; GUI_RECT r; int NCode, Id; uint32_t tmp_param = 0; switch (pMsg->MsgId) { case WM_INIT_DIALOG: pFileInfo = (CHOOSEFILE_INFO *)k_malloc(sizeof(CHOOSEFILE_INFO)); CameraSettings.d32 = k_BkupRestoreParameter(CALIBRATION_CAMERA_SETTING_BKP); /* Initialization of 'Image' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE); IMAGE_SetBitmap(hItem, &bmwizard); /* Initialization of 'Effects' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT); TEXT_SetFont(hItem, GUI_FONT_16B_1); /* Initialization of 'Radio' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_RADIO); RADIO_SetText(hItem, "None", 0); RADIO_SetText(hItem, "B&W", 1); RADIO_SetText(hItem, "Negative", 2); RADIO_SetText(hItem, "Antique", 3); RADIO_SetText(hItem, "Blue", 4); RADIO_SetText(hItem, "Green", 5); RADIO_SetText(hItem, "Red", 6); /* Camera frame initialization */ hItem = WM_GetClientWindow(pMsg->hWin); WM_GetClientRectEx(hItem, &r); hCameraFrame = WM_CreateWindowAsChild(r.x0 + 79, r.y0 + 49, r.x1 - 159, r.y1 - 93, hItem, WM_CF_SHOW | WM_CF_LATE_CLIP, _cbCameraWindow, 0); /* Buttons initialization */ hItem = BUTTON_CreateEx(266, 175, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CLOSE); WM_SetCallback(hItem, _cbButton_close); hItem = BUTTON_CreateEx(256, 79, 50, 50, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAPTURE); WM_SetCallback(hItem, _cbButton_capture); hItem = BUTTON_CreateEx(266, 14, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_SETTINGS); WM_SetCallback(hItem, _cbButton_settings); _Check_DefaultPath (capture_folder); FrameAvailable = 0; break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; if(hSettings == 0) { switch(Id) { case ID_RADIO: if(NCode == WM_NOTIFICATION_VALUE_CHANGED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_RADIO); if(CAMERA_GetState() != CAMERA_ERROR) { CAMERA_SelectEffect(RADIO_GetValue(hItem)); } } break; case ID_BUTTON_CLOSE: /* Notifications sent by 'Close' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: k_free(pFileInfo); CAMERA_Stop(); GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_BUTTON_CAPTURE: /* Notifications sent by 'OK' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: /* Show Hint */ if(CAMERA_GetState() == CAMERA_OK) { Hint = WM_CreateWindowAsChild(100, 90, 120, 32, pMsg->hWin, WM_CF_SHOW , _cbHint, 0); GUI_Exec(); if(CAMERA_GetState() == CAMERA_OK) { CAMERA_SaveToFile(capture_folder); } WM_DeleteWindow(Hint); } break; } break; case ID_BUTTON_SETTINGS: /* Notifications sent by 'Settings' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: camera_disabled = 1; hSettings = GUI_CreateDialogBox(_aSettingsDialogCreate, GUI_COUNTOF(_aSettingsDialogCreate), _cbSettingsDialog, CAMERA_hWin, 0, 0); break; } break; } } break; case WM_DELETE: tmp_param = k_BkupRestoreParameter(CALIBRATION_CAMERA_SETTING_BKP); /* check if new settings have to be saved */ if(CameraSettings.d32 != tmp_param) { k_BkupSaveParameter(CALIBRATION_CAMERA_SETTING_BKP, CameraSettings.d32); } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Process notification received from VNC Application * @param IP: notification ID * @retval None */ void _VNCServer_Notify(uint8_t ID) { WM_HWIN hItem; switch (ID) { case NOTIFY_SERVER_NETIF_UP: { hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "The network cable is connected \n\r"); /* update the link status*/ link_status = 1; if (VNCSettings.dhcp_use.b.dhcp == 0) { /* Display IP address */ _VNCServer_DisplayIPAddress(); if (VNC_Initialized == 0) { VNCServer_Start(); } } break; } case NOTIFY_SERVER_NETIF_DOWN: { hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "The network cable is not connected \n\r"); /* Cange connection png pic from connecting to disconnected */ hItem = WM_GetDialogItem(hWinVNC, ID_IMAGE_STATE); IMAGE_SetBitmap(hItem, &bmDelete32); /* update the link status*/ link_status = 0; break; } case NOTIFY_SERVER_DHCP_START: { hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "Starting DHCP client ...\n\r"); break; } case NOTIFY_SERVER_DHCP_WAIT_ADDRESS: { hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "Looking for a DHCP sever ...\n\r"); /* Cange connection png pic from connected to connecting */ hItem = WM_GetDialogItem(hWinVNC, ID_IMAGE_STATE); IMAGE_SetBitmap(hItem, &bmhourglass32); break; } case NOTIFY_SERVER_DHCP_ADDRESS_ASSIGNED: { hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "IP Address assigned by a DHCP server\n\r"); /* Display IP address */ _VNCServer_DisplayIPAddress(); if (VNC_Initialized == 0) { VNCServer_Start(); } break; } case NOTIFY_SERVER_DHCP_TIMEOUT: { hItem = WM_GetDialogItem(hWinVNC, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "DHCP timeout !!\n\r"); MULTIEDIT_AddText(hItem, (const char *) "A default IP address is assigned:\n\r"); /* Display IP address */ _VNCServer_DisplayIPAddress(); if (VNC_Initialized == 0) { VNCServer_Start(); } break; } default: break; } }
/** * @brief Callback routine of the VNC dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog_VNC(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialization of 'Multi Edit' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_VNC); MULTIEDIT_SetReadOnly(hItem, 1); MULTIEDIT_SetBkColor(hItem, 1, 0); MULTIEDIT_SetTextColor(hItem, 1, 0xFFFFFF); /* Initialization of 'Image 1' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_PCNETWORK); IMAGE_SetBitmap(hItem, &bmpc_network64); /* Initialization of 'Image 2' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_STATE); IMAGE_SetBitmap(hItem, &bmDelete32); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_DHCP); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_DHCP_STATE); TEXT_SetFont(hItem, GUI_FONT_8_ASCII); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_IPADDR); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_IPADDR_VALUE); TEXT_SetFont(hItem, GUI_FONT_8_ASCII); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUBNETMASK); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_SUBNETMASK_VALUE); TEXT_SetFont(hItem, GUI_FONT_8_ASCII); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_GWADDR); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_BLACK); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_GWADDR_VALUE); TEXT_SetFont(hItem, GUI_FONT_8_ASCII); TEXT_SetTextColor(hItem, GUI_BLACK); /* Restore VNC settings */ _VNCServer_RestoreSettings(); if (VNCSettings.maskaddr.b.addr3 != 255) { VNCSettings.dhcp_use.b.dhcp = 1; VNCSettings.ipaddr.b.addr0 = 0; VNCSettings.ipaddr.b.addr1 = 0; VNCSettings.ipaddr.b.addr2 = 0; VNCSettings.ipaddr.b.addr3 = 0; VNCSettings.maskaddr.b.addr0 = 0; VNCSettings.maskaddr.b.addr1 = 0; VNCSettings.maskaddr.b.addr2 = 0; VNCSettings.maskaddr.b.addr3 = 0; VNCSettings.gwaddr.b.addr0 = 0; VNCSettings.gwaddr.b.addr1 = 0; VNCSettings.gwaddr.b.addr2 = 0; VNCSettings.gwaddr.b.addr3 = 0; /* Save VNC settings */ _VNCServer_SaveSettings(); } else { _VNCApp_GetIPAddress(IP_ADDRESS, VNCSettings.ipaddr.b.addr3, VNCSettings.ipaddr.b.addr2, VNCSettings.ipaddr.b.addr1, VNCSettings.ipaddr.b.addr0); _VNCApp_GetIPAddress(SUBNET_MASK, VNCSettings.maskaddr.b.addr3, VNCSettings.maskaddr.b.addr2, VNCSettings.maskaddr.b.addr1, VNCSettings.maskaddr.b.addr0); _VNCApp_GetIPAddress(GW_ADDRESS, VNCSettings.gwaddr.b.addr3, VNCSettings.gwaddr.b.addr2, VNCSettings.gwaddr.b.addr1, VNCSettings.gwaddr.b.addr0); } if (VNCSettings.dhcp_use.b.dhcp == 0) { _VNCServer_DisplayIPAddress(); } break; case WM_PAINT: DrawRect3D(230, 5, 87, 120); DrawRect3D(2, 130, 225, 80); DrawRect3D(230, 130, 87, 80); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case ID_BUTTON_SETTINGS: /* Settings */ if(hWinVNC_Settings == 0) { hWinVNC_Settings = GUI_CreateDialogBox(_aDialog_VNC_SETTINGS, GUI_COUNTOF(_aDialog_VNC_SETTINGS), _cbDialog_VNC_SETTINGS, hWinVNC, 0, 10); hNumPad = GUI_CreateDialogBox(_aDialogNumPad, GUI_COUNTOF(_aDialogNumPad), _cbDialogNumPad, pMsg->hWin, 0, 0); } break; case ID_BUTTON_START: /* Start */ if(hWinVNC_Settings == 0) { if (start_button == VNC_START) { /* change start button to hide */ start_button = VNC_HIDE; hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_START); BUTTON_SetText(hItem, (const char*) "Hide"); /* Cange connection png pic from disconnected to connecting */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_STATE); IMAGE_SetBitmap(hItem, &bmhourglass32); hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_VNC); MULTIEDIT_AddText(hItem, (const char *) "TCP/IP stack initialization ... \n\r"); TCPIP_Initialized = 1; /* Initilaize the LwIP stack */ NetworkInit(VNCSettings.dhcp_use.b.dhcp); } else /* start_button == VNC_HIDE */ { if(hWinVNC_Settings == 0) { WM_HideWindow(pMsg->hWin); } } } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the dialog * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialization of 'System Information' */ hItem = pMsg->hWin; FRAMEWIN_SetFont(hItem, GUI_FONT_13HB_ASCII); /* Initialization of 'Image' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_INFO); IMAGE_SetBitmap(hItem, bminfo); /* Initialization of 'Board : STM324x9I' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD); TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII); TEXT_SetTextColor(hItem, 0x00804000); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE); TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII); TEXT_SetTextColor(hItem, 0x00804000); /* Initialization of 'Firmware Version : 1.0' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU); TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII); TEXT_SetTextColor(hItem, 0x00804000); /* Initialization of 'Copyright 2013 STMicroelectronics' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION); TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII); TEXT_SetTextColor(hItem, 0x00804000); /* Initialization of 'CPU Speed : 168MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_COPYRIGHT); TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII); TEXT_SetTextColor(hItem, 0x00804000); /* Initialization of 'Close' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_INFO_CLOSE); BUTTON_SetFont(hItem, GUI_FONT_13HB_ASCII); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case ID_BUTTON_INFO_CLOSE: GUI_EndDialog(pMsg->hWin, 0); break; } break; case WM_NOTIFICATION_CHILD_DELETED: WM_NotifyParent(WM_GetParent(pMsg->hWin), 0x500); break; } break; default: WM_DefaultProc(pMsg); break; } }