/** * @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 function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { static WM_HTIMER hStatusTimer; static uint8_t prev_sd_status = 0; static uint8_t prev_usb_status = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_sd_status = k_StorageGetStatus(MSD_DISK_UNIT); prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, 0, 500, 0); break; case WM_TIMER: if(prev_sd_status != k_StorageGetStatus(MSD_DISK_UNIT)) { prev_sd_status = k_StorageGetStatus(MSD_DISK_UNIT); _RefreshBrowser(hExplorerWin); } else if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); _RefreshBrowser(hExplorerWin); } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
/*---------------------------------------------------------------------------*/ static TBool IHandlePlayPause(WM_MESSAGE * pMsg, int aNCode, int aID) { WM_HWIN hItem; if (aNCode == WM_NOTIFICATION_RELEASED) { IHideButtonsAndText(pMsg); G_AutoPlayOn = !G_AutoPlayOn; WM_RestartTimer(G_PictureChangeTimer, 5000); if(G_AutoPlayOn) { hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &PAUSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &PAUSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &PAUSE_BUTTON); } else { hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &PLAY_BUTTON); } } return EFalse; }
/** * @brief Callback function of the Task window * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbTaskWindow(WM_MESSAGE * pMsg) { static WM_HTIMER hTimerTime; switch (pMsg->MsgId) { case WM_CREATE: /* Create timer */ hTimerTime = WM_CreateTimer(pMsg->hWin, 0, 1000, 0); break; case WM_TIMER: WM_InvalidateWindow(WM_GetParent(pMsg->hWin)); WM_RestartTimer(pMsg->Data.v, 1000); break; case WM_DELETE: WM_DeleteTimer(hTimerTime); break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the CPU window * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbCpuWindow(WM_MESSAGE * pMsg) { static WM_HTIMER hTimerTime; switch (pMsg->MsgId) { case WM_CREATE: /* Create timer */ hTimerTime = WM_CreateTimer(pMsg->hWin, 0, 400, 0); break; case WM_TIMER: GRAPH_DATA_YT_AddValue(hData , osGetCPUUsage()); WM_InvalidateWindow(pMsg->hWin); WM_RestartTimer(pMsg->Data.v, 400); break; case WM_DELETE: WM_DeleteTimer(hTimerTime); break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { WM_HWIN hItem; static WM_HTIMER hStatusTimer; static uint8_t prev_usb_status = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, 0, 500, 0); break; case WM_TIMER: if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); if(prev_usb_status == 0) { if( RecorderMode == RECORDER_MODE_RECORDING) { AUDIO_RECORDER_StopRec(); } else if( RecorderMode == RECORDER_MODE_PLAYING) { AUDIO_RECORDER_StopPlayer(); } hItem = WM_GetDialogItem(hMainWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, ">>>"); hItem = WM_GetDialogItem(hMainWin, ID_FILENAME); TEXT_SetText(hItem, "USB NOT ready"); RecorderMode = RECORDER_MODE_REC_DISABLED; hItem = WM_GetDialogItem(hMainWin, ID_RECORD_STOP); WM_DisableWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_RECORD_REC_CANCEL_PLAY); WM_DisableWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_RECORD_PAUSE); WM_DisableWindow(hItem); WM_Update(hItem); } else { hItem = WM_GetDialogItem(hMainWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, "Press"); hItem = WM_GetDialogItem(hMainWin, ID_FILENAME); TEXT_SetText(hItem, "[Record] to start"); RecorderMode = RECORDER_MODE_REC_IDLE; hItem = WM_GetDialogItem(hMainWin, ID_RECORD_STOP); WM_EnableWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_RECORD_REC_CANCEL_PLAY); WM_EnableWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_RECORD_PAUSE); WM_EnableWindow(hItem); WM_Update(hItem); } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the settings frame * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbSettingsDialog(WM_MESSAGE * pMsg) { int Id, NCode; WM_HWIN hItem; uint32_t tmp_param = 0; switch (pMsg->MsgId) { case WM_INIT_DIALOG: WM_MakeModal(pMsg->hWin); /* Settings frame initialization */ hItem = pMsg->hWin; FRAMEWIN_AddCloseButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0); /* Create and attache the MULTIPAGE dialog windows */ hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIPAGE); /* 'OK' button initialization */ hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK); BUTTON_SetFont(hItem, GUI_FONT_13B_1); /* 'Cancel' button initialization */ hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL); BUTTON_SetFont(hItem, GUI_FONT_13B_1); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetFont(hItem, GUI_FONT_13B_1); hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0); SPINBOX_SetRange(hItem, 1, 10); if(ImSettings.b.ss_timer > 0) { SPINBOX_SetValue(hItem, ImSettings.b.ss_timer); } else { ImSettings.b.ss_timer = 1; SPINBOX_SetValue(hItem, 1); } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (Id) { /* Notification sent by "OK" button */ case ID_BUTTON_OK: switch (NCode) { case WM_NOTIFICATION_RELEASED: /* Save image settings before delete settings frame */ hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0); ImSettings.b.ss_timer = SPINBOX_GetValue(hItem); WM_RestartTimer(hTimerTime, (ImSettings.b.ss_timer * 1000)); tmp_param = k_BkupRestoreParameter(CALIBRATION_IMAGE_SETTINGS_BKP); /* check if new settings have to be saved */ if(ImSettings.d32 != tmp_param) { k_BkupSaveParameter(CALIBRATION_IMAGE_SETTINGS_BKP, ImSettings.d32); } GUI_EndDialog(pMsg->hWin, 0); break; } break; /* Notification sent by "Cancel" button */ case ID_BUTTON_CANCEL: switch (NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; } }
/** * @brief Callback function of the image frame * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbImageWindow(WM_MESSAGE * pMsg) { WM_HWIN hItem; GUI_RECT r; int Id; const GUI_PID_STATE * pState; switch (pMsg->MsgId) { case WM_TOUCH: pState = (const GUI_PID_STATE *)pMsg->Data.p; if(pImageList->ptr > 0) { if (pState) { if (pState->Pressed == 1) { IMAGE_Enlarge ^= 1; if (IMAGE_Enlarge) { WM_AttachWindowAt(pMsg->hWin, WM_HBKWIN, 0, 0); WM_SetSize(pMsg->hWin, LCD_GetXSize(), LCD_GetYSize()); } else { WM_AttachWindowAt(pMsg->hWin, IMAGE_hWin, 6, 6); WM_SetSize(pMsg->hWin, 220, 134); } WM_InvalidateWindow(pMsg->hWin); } } } break; case WM_PAINT: WM_GetInsideRect(&r); GUI_ClearRectEx(&r); if (pImageList->ptr > 0) { if(_DrawImage(&Image_File, IMAGE_Enlarge, IMAGE_Type) > 0) { f_close(&Image_File); GUI_ClearRectEx(&r); GUI_DispStringAt("Error : Image cannot be displayed", 20, 80); if(hTimerTime != 0) { slideshow_state = OFF; hItem = WM_GetDialogItem(IMAGE_hWin, ID_SLIDE_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); WM_DeleteTimer(hTimerTime); hTimerTime = 0; } } } break; case WM_TIMER: Id = WM_GetTimerId(pMsg->Data.v); if(Id == ID_SLIDER_TIMER) { if(pImageList->ptr > 1) { if (file_pos < (pImageList->ptr - 1)) { file_pos++; } else if (file_pos == (pImageList->ptr - 1)) { file_pos=0; } if((strstr((char *)pImageList->file[file_pos].name, ".bmp")) || (strstr((char *)pImageList->file[file_pos].name, ".BMP"))) { IMAGE_Type = IMAGE_TYPE_BMP; } else if((strstr((char *)pImageList->file[file_pos].name, ".jpg")) || (strstr((char *)pImageList->file[file_pos].name, ".JPG"))) { IMAGE_Type = IMAGE_TYPE_JPG; } f_close(&Image_File); f_open(&Image_File, (char const *)pImageList->file[file_pos].name, FA_OPEN_EXISTING | FA_READ); WM_InvalidateWindow(imFrame); hItem = WM_GetDialogItem(IMAGE_hWin, ID_IMAGE_LIST); LISTBOX_SetSel(hItem, file_pos); } WM_RestartTimer(pMsg->Data.v, (ImSettings.b.ss_timer * 1000)); } else if (Id == ID_PLAYLIST_TIMER) { playlist_select = 0; } break; case WM_DELETE: if(hTimerTime != 0) { WM_DeleteTimer(hTimerTime); hTimerTime = 0; } break; default: WM_DefaultProc(pMsg); } }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; char * buffer = rt_malloc(64); static GRAPH_DATA_Handle _ahData[4]; rt_uint8_t major, minor; rt_uint32_t total, used, max_used; switch (pMsg->MsgId) { case WM_TIMER: cpu_usage_get(&major, &minor); rt_memory_info(&total, &used, &max_used); sprintf(buffer, "CPU :%d.%2d%%", major, minor); TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_0), buffer); PROGBAR_SetValue(WM_GetDialogItem(pMsg->hWin, ID_PROGBAR_0), major); sprintf(buffer, "Used mem:%d%%", used*100/total); TEXT_SetText(WM_GetDialogItem(pMsg->hWin, ID_TEXT_1), buffer); PROGBAR_SetValue(WM_GetDialogItem(pMsg->hWin, ID_PROGBAR_1), used*100/total); GRAPH_DATA_YT_AddValue(_ahData[0], major); GRAPH_DATA_YT_AddValue(_ahData[1], used*100/total); rt_device_t dev; enet_phy_data phy_data; dev = rt_device_find("e0"); if(dev) { dev->control(dev, NIOCTL_GET_PHY_DATA, &phy_data); GRAPH_DATA_YT_AddValue(_ahData[2], phy_data.tx_fcnt); GRAPH_DATA_YT_AddValue(_ahData[3], phy_data.rx_fcnt); } WM_RestartTimer(pMsg->Data.v, 20); break; case WM_INIT_DIALOG: WM_CreateTimer(WM_GetClientWindow(pMsg->hWin), 0, 300, 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGBAR_0); PROGBAR_SetBarColor(hItem, 1, GUI_GREEN); PROGBAR_SetBarColor(hItem, 0, GUI_RED); hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGBAR_1); PROGBAR_SetBarColor(hItem, 1, GUI_GREEN); PROGBAR_SetBarColor(hItem, 0, GUI_RED); // GRAPH _ahData[0] = GRAPH_DATA_YT_Create(GUI_DARKGREEN, 500, 0, 0); _ahData[1] = GRAPH_DATA_YT_Create(GUI_BLUE, 500, 0, 0); _ahData[2] = GRAPH_DATA_YT_Create(GUI_YELLOW, 500, 0, 0); _ahData[3] = GRAPH_DATA_YT_Create(GUI_BROWN, 500, 0, 0); WM_HWIN hGRAPH[4]; int i; hGRAPH[0] = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_0); hGRAPH[1] = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_1); hGRAPH[2] = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_2); hGRAPH[3] = WM_GetDialogItem(pMsg->hWin, ID_GRAPH_3); for(i=0;i<GUI_COUNTOF(hGRAPH);i++) { GRAPH_SetBorder(hGRAPH[i], 1, 1, 1, 1); GRAPH_SetGridVis(hGRAPH[i], 1); GRAPH_SetGridDistX(hGRAPH[i], 10); GRAPH_SetGridDistY(hGRAPH[i], 10); GRAPH_AttachData(hGRAPH[i], _ahData[i]); } break; default: WM_DefaultProc(pMsg); break; } rt_free(buffer); }
/** * @brief Callback function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { WM_HWIN hItem; static WM_HTIMER hStatusTimer; static uint8_t prev_sd_status = 0; static uint8_t prev_usb_status = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_sd_status = k_StorageGetStatus(MSD_DISK_UNIT); prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, 0, 500, 0); break; case WM_TIMER: if(prev_sd_status != k_StorageGetStatus(MSD_DISK_UNIT)) { prev_sd_status = k_StorageGetStatus(MSD_DISK_UNIT); if(pWavList->file[file_pos].name[0] == '1') { if(PlayerSettings.b.pause == PAUSE_ACTIVE) { PlayerSettings.b.pause = PLAY_ACTIVE; } AUDIOPLAYER_Stop(); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } } else if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); if(pWavList->file[file_pos].name[0] == '0') { if(PlayerSettings.b.pause == PAUSE_ACTIVE) { PlayerSettings.b.pause = PLAY_ACTIVE; } AUDIOPLAYER_Stop(); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback routine of desktop window status. * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbStatus(WM_MESSAGE * pMsg) { int xSize, ySize; static uint8_t TempStr[50]; static WM_HTIMER hTimerTime; uint8_t res = 0; //static WM_HTIMER hSpriteTime; RTC_TimeTypeDef RTC_Time; RTC_DateTypeDef RTC_DateStructure; uint8_t sec, min, hour, day, month; uint16_t year; WM_HWIN hWin; uint16_t PosDisplay; hWin = pMsg->hWin; switch (pMsg->MsgId) { case WM_CREATE: hTimerTime = WM_CreateTimer(hWin, ID_TIMER_TIME, 1000, 0); break; case WM_DELETE: WM_DeleteTimer(hTimerTime); break; case WM_TIMER: if( WM_GetTimerId(pMsg->Data.v) == ID_TIMER_TIME) { WM_InvalidateWindow(hWin); WM_RestartTimer(pMsg->Data.v, 1000); } break; case WM_PAINT: xSize = WM_GetWindowSizeX(hWin); ySize = WM_GetWindowSizeY(hWin); PosDisplay = xSize; /* Draw background */ //GUI_SetColor(0x808080); //GUI_SetColor(0x742E1B); GUI_SetColor(0x000000); GUI_FillRect(0, 0, xSize - 1, ySize - 1); // status GUI_SetTextMode(GUI_TM_TRANS); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontHZ_Song_16); GUI_DispStringAt( (char *)StatusText, 4, 4); /* Draw time & Date */ GUI_SetTextMode(GUI_TM_TRANS); GUI_SetColor(GUI_WHITE); GUI_SetFont(GUI_FONT_13B_ASCII); //time k_GetTime(&RTC_Time); sec = RTC_Time.Seconds; min = RTC_Time.Minutes; hour = RTC_Time.Hours; sprintf((char *)TempStr, "%02d:%02d:%02d", hour , min, sec); //sprintf((char *)TempStr, "%02d:%02d", hour , min); PosDisplay-=60; GUI_DispStringAt((char *)TempStr, PosDisplay, 0); //date k_GetDate(&RTC_DateStructure); year = RTC_DateStructure.Year + 2014; month = RTC_DateStructure.Month; day = RTC_DateStructure.Date; if((day > 0) && (day <= 31) && (month > 0)&& (month <= 12) && (year >= 1900)) { sprintf((char *)TempStr, "%04d/%s/%02d", year, strMonth[month-1], day); } else { sprintf((char *)TempStr, "2014/01/01"); } PosDisplay-=10; GUI_DispStringAt((char *)TempStr, PosDisplay, 11); /* USB */ if(k_StorageGetStatus(USB_DISK_UNIT)) { PosDisplay-=35; GUI_DrawBitmap(&bmusbdisk, PosDisplay, 3); } /* MSD */ if(k_StorageGetStatus(MSD_DISK_UNIT)) { PosDisplay-=35; GUI_DrawBitmap(&bmmicrosd, PosDisplay, 3); } /* CPU */ sprintf((char *)TempStr, "%d %%", osGetCPUUsage()); if(osGetCPUUsage() > 95 ) { /* waiting for user input when using dialog box*/ sprintf((char *)TempStr, "95 %%"); } PosDisplay-=35; GUI_DispStringAt( (char *)TempStr, PosDisplay, 6); if(WT_Config.Print == 1 && PrintFile.print_status == 4)//本地打印Yes //print_status 0-stop 1-wait, 2-print ok, 3-print run, 4-print error { // WT_PrintFolder_Init(); // res=WT_PrintFiles_Init((char *)PrintFolder.FilesName[WT_Config.Print_ID]);//0-not init, 1-inited, 2-no files, 3-hardware error, 4-no folder // if(res != 1) wt_SetText_Status("打印文件错误"); wt_SetText_Status("打印文件错误"); } break; default: WM_DefaultProc(pMsg); } }
/** * @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: frame = 0; hTimer = WM_CreateTimer(pMsg->hWin, 0, 50, 0); hItem = BUTTON_CreateEx(700, 0, 100, 100, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); /* Initialization of 'Board*/ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Initialization of 'Firmware Version*/ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Initialization of 'Board*/ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Board */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_2); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); 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_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Firmware Version*/ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_COPYRIGHT); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_TITLE); TEXT_SetFont(hItem, &GUI_FontLubalGraph32B); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); break; case WM_PAINT: GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_DrawRoundedRect(30, 140, 200, 340, 30); GUI_AA_DrawRoundedRect(220, 140, 390, 340, 30); GUI_AA_DrawRoundedRect(410, 140, 580, 340, 30); GUI_AA_DrawRoundedRect(600, 140, 770, 340, 30); GUI_DrawBitmap(open_board[frame] , 65, 190); GUI_DrawBitmap(open_mcu[frame] , 255, 190); GUI_DrawBitmap(open_cpu[frame] , 445, 190); GUI_DrawBitmap(open_fversion[frame], 635, 190); break; case WM_TIMER: if(frame < 4) { WM_InvalidateWindow(pMsg->hWin); WM_RestartTimer(pMsg->Data.v, 50); frame++; } else { 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; } }
/** * @brief Callback routine of desktop window status. * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbStatus(WM_MESSAGE * pMsg) { int xSize, ySize; static uint8_t TempStr[50]; static WM_HTIMER hTimerTime; static WM_HTIMER hSpriteTime; RTC_TimeTypeDef RTC_Time; RTC_DateTypeDef RTC_DateStructure; uint8_t sec, min, hour, day, month; uint16_t year; WM_HWIN hWin; hWin = pMsg->hWin; switch (pMsg->MsgId) { case WM_CREATE: hTimerTime = WM_CreateTimer(hWin, ID_TIMER_TIME, 1000, 0); if(settings.b.enable_sprite) { hSpriteTime = WM_CreateTimer(hWin, ID_SPRITE_TIME, 50, 0); } break; case WM_DELETE: WM_DeleteTimer(hTimerTime); if(settings.b.enable_sprite) { WM_DeleteTimer(hSpriteTime); } break; case WM_TIMER: if( WM_GetTimerId(pMsg->Data.v) == ID_TIMER_TIME) { WM_InvalidateWindow(hWin); WM_RestartTimer(pMsg->Data.v, 1000); } else if( WM_GetTimerId(pMsg->Data.v) == ID_SPRITE_TIME) { if(settings.b.enable_sprite) { if(SpriteDisabled == 0) { _MoveSprite(&_aSprite[0]); } } WM_RestartTimer(pMsg->Data.v, 100); } break; case WM_PAINT: xSize = WM_GetWindowSizeX(hWin); ySize = WM_GetWindowSizeY(hWin); /* Draw background */ GUI_SetColor(0x40303030); GUI_FillRect(0, 0, xSize , ySize - 3); GUI_SetColor(0x808080); GUI_DrawHLine(ySize - 2, 0, xSize ); GUI_SetColor(0x404040); GUI_DrawHLine(ySize - 1, 0, xSize ); /* Draw time & Date */ GUI_SetTextMode(GUI_TM_TRANS); GUI_SetColor(GUI_WHITE); GUI_SetFont(GUI_FONT_13B_ASCII); k_GetTime(&RTC_Time); sec = RTC_Time.Seconds; min = RTC_Time.Minutes; hour = RTC_Time.Hours; k_GetDate(&RTC_DateStructure); sprintf((char *)TempStr, "%02d:%02d:%02d", hour , min, sec); GUI_DispStringAt((char *)TempStr, xSize - 50, 4); year = RTC_DateStructure.Year + 2014; month = RTC_DateStructure.Month; day = RTC_DateStructure.Date; if((day > 0) && (day <= 31) && (month > 0)&& (month <= 12) && (year >= 1900)) { sprintf((char *)TempStr, "%02d, %s, %04d", day , strMonth[month-1], year); } else { sprintf((char *)TempStr, "01, January, 2014"); } GUI_DispStringHCenterAt((char *)TempStr, xSize / 2, 4); /* USB */ if(k_StorageGetStatus(USB_DISK_UNIT)) { GUI_DrawBitmap(&bmusbdisk, xSize - 80, 0); } /* MSD */ if(k_StorageGetStatus(MSD_DISK_UNIT)) { GUI_DrawBitmap(&bmmicrosd, xSize - 80 - 35 * k_StorageGetStatus(USB_DISK_UNIT) , 0); } sprintf((char *)TempStr, "CPU : %d %%", osGetCPUUsage()); if(osGetCPUUsage() > 95 ) { /* waiting for user input when using dialog box*/ sprintf((char *)TempStr, "CPU : 95 %%"); } GUI_DispStringAt( (char *)TempStr, 50, 4); break; default: WM_DefaultProc(pMsg); } }
/** * @brief callback for video window * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbplaybackwin(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; char tmp[64]; switch (pMsg->MsgId) { case WM_CREATE: SelLayer = 1; hItem = BUTTON_CreateEx(398 - 160, 442, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_BACK); WM_SetCallback(hItem, _cbButton_back); hItem = BUTTON_CreateEx(449 - 160, 442, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_STOP); WM_SetCallback(hItem, _cbButton_stop); hItem = BUTTON_CreateEx(495 - 160, 441, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, PLAY_VIDEO_ID); WM_SetCallback(hItem, _cbButton_play); hItem = BUTTON_CreateEx(540 - 160, 442, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_FORE); WM_SetCallback(hItem, _cbButton_fore); hItem = SLIDER_CreateEx(72, 420, 510, 13, pMsg->hWin, WM_CF_SHOW, 0, ID_SLIDER_DURATION); SLIDER_SetBkColor(hItem, GUI_TRANSPARENT); SLIDER_SetFocusColor (hItem, 0x00DCA939); SLIDER_SetValue(hItem, 0); SLIDER_SetWidth(hItem, 0); SLIDER_SetSTSkin(hItem); hItem = BUTTON_CreateEx(568, 0, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_MENU); WM_SetCallback(hItem, _cbButton_menu); hItem = BUTTON_CreateEx(0, 410, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT_FROM_VIDEO); WM_SetCallback(hItem, _cbButton_exit1); /* Title Initialization in play list */ hItem = TEXT_CreateEx(10, 20, 100, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_ELAPSED_TIME, "00:00"); TEXT_SetFont(hItem, GUI_FONT_20B_1); TEXT_SetTextColor(hItem, GUI_WHITE); /* Title Initialization in play list */ hItem = TEXT_CreateEx(50, 40, 50, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_TIME, "00:00"); TEXT_SetFont(hItem, GUI_FONT_16B_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(150, 20, 350, 30, pMsg->hWin, WM_CF_SHOW, TEXT_CF_HCENTER, ID_VIDEO_NAME, "File Name"); TEXT_SetFont(hItem, GUI_FONT_20B_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(150, 48, 350, 30, pMsg->hWin, WM_CF_SHOW, TEXT_CF_HCENTER, ID_VIDEO_FORMAT, "Format : MJPEG"); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(548, 200, 260, 20, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FPS, "Rate : 20 fps"); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(548, 220, 260, 20, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_FPU, "FPU : ON"); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(548, 240, 260, 20, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_IC, "I-Cache : ON"); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(548, 260, 260, 20, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_DC, "D-Cache : ON"); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(548, 280, 260, 20, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_CPU, "MCU Load : 0%"); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_WHITE); break; case WM_TIMER: { WM_RestartTimer(pMsg->Data.v, 1000); /* show elapsed time */ hItem = WM_GetDialogItem(pMsg->hWin, ID_ELAPSED_TIME); elapsed_time++; sprintf((char *)tmp , "%02lu:%02lu", elapsed_time/60, elapsed_time%60 ); TEXT_SetText(hItem, tmp); sprintf((char *)tmp , "MCU Load : %d%%", ((osGetCPUUsage() > 90) ? (osGetCPUUsage() - 10) : osGetCPUUsage())); hItem = WM_GetDialogItem(pMsg->hWin, ID_FEATURES_CPU); TEXT_SetText(hItem, tmp); hItem = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_DURATION); SLIDER_SetValue(hItem, (GUI_MOVIE_GetFrameIndex(hvideo)* 100)/ Video_Info.NumFrames); if(step == 0) { step = ((GUI_MOVIE_GetFrameIndex(hvideo)* 100)/ Video_Info.NumFrames); } if(((GUI_MOVIE_GetFrameIndex(hvideo)* 100)/ Video_Info.NumFrames) > (100 - 2*step - 1)) { SLIDER_SetValue(hItem, 100); GUI_Exec(); } } break; case WM_DELETE: if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } case WM_PAINT: GUI_SetColor(0xFF000000 | GUI_BLACK); GUI_SetBkColor(GUI_TRANSPARENT); GUI_Clear(); GUI_SetColor(GUI_BLACK); GUI_DrawHLine(0, 0, 640); GUI_DrawHLine(479, 0, 640); GUI_DrawLine(639, 0, 639, 480); GUI_DrawLine(0, 0, 0, 480); /* Background for total time */ GUI_SetColor(0x00DCA939); GUI_AA_FillRoundedRect((-30), 5, 90, 65, 30); /*Video Information */ GUI_AA_FillRoundedRect(150, 5, 500, 65, 30); /*H/W Information */ GUI_AA_FillRoundedRect(538, 180, 780, 320, 30); 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_FROM_VIDEO: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(&hvideo, &Video_File); } GUI_EndDialog(pMsg->hWin, 0); SelLayer = 0; GUI_SetLayerVisEx (1, 0); GUI_SelectLayer(0); WM_HideWindow(hFrame); WM_Exec(); WM_DeleteWindow(hFrame); WM_InvalidateWindow(VideoWin); break; } break; case ID_BUTTON_MENU: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(&hvideo, &Video_File); } GUI_EndDialog(pMsg->hWin, 0); SelLayer = 0; GUI_SetLayerVisEx (1, 0); GUI_SelectLayer(0); WM_DeleteWindow(hFrame); WM_HideWindow(VideoWin); WM_Exec(); WM_DeleteWindow(VideoWin); break; } break; case ID_BUTTON_STOP: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State != VIDEO_IDLE) { VideoPlayer_State = VIDEO_STOP; _StopPlay(&hvideo, &Video_File); } WM_InvalidateWindow(pMsg->hWin); break; } break; case ID_BUTTON_FORE: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State == VIDEO_PLAY) { if(file_pos < (VideoList.ptr - 1)) { file_pos++; } else { file_pos = 0; } _StopPlay(&hvideo, &Video_File); _StartPlay(&hvideo, (char *)VideoList.file[file_pos].name, &Video_File, 0, 0); } break; } break; /* Notifications sent by 'progress' Slider */ case ID_SLIDER_DURATION: if(NCode == WM_NOTIFICATION_CLICKED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_DURATION); int32_t newpos; if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Pause(hvideo); hItem = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_DURATION); newpos = (SLIDER_GetValue(hItem) * Video_Info.NumFrames)/100; GUI_MOVIE_GotoFrame(hvideo, newpos); GUI_MOVIE_Play(hvideo); elapsed_time = (Video_Info.msPerFrame * newpos)/ 1000; hItem = WM_GetDialogItem(playbackwin, ID_ELAPSED_TIME); sprintf((char *)tmp , "%02lu:%02lu", elapsed_time/60, elapsed_time%60 ); TEXT_SetText(hItem, tmp); WM_InvalidateWindow(hItem); WM_Paint(hItem); } } break; case ID_BUTTON_BACK: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State == VIDEO_PLAY) { if(file_pos > 0) { file_pos--; } else { file_pos = VideoList.ptr - 1; } _StopPlay(&hvideo, &Video_File); _StartPlay(&hvideo, (char *)VideoList.file[file_pos].name, &Video_File, 0, 0); } break; } break; case PLAY_VIDEO_ID: switch(NCode) { case WM_NOTIFICATION_RELEASED: if((VideoPlayer_State == VIDEO_IDLE) || (VideoPlayer_State == VIDEO_PAUSE)) { hTimer = WM_CreateTimer(playbackwin, 0, 1000, 0); GUI_MOVIE_Play(hvideo); VideoPlayer_State = VIDEO_PLAY; } else if(VideoPlayer_State == VIDEO_STOP) { _StartPlay(&hvideo, (char *)VideoList.file[file_pos].name, &Video_File, 0, 0); VideoPlayer_State = VIDEO_PLAY; } else { GUI_MOVIE_Pause(hvideo); VideoPlayer_State = VIDEO_PAUSE; if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback function of the Clock window * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbClockWindow(WM_MESSAGE * pMsg) { WM_HWIN hItem; static WM_HTIMER hTimerTime; RTC_TimeTypeDef RTC_TimeStructure; RTC_DateTypeDef RTC_DateStructure; uint8_t sec, min, hour, day, month; uint16_t year; static uint8_t TempStr[50]; static CALENDAR_DATE current_date; switch (pMsg->MsgId) { case WM_CREATE: RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); current_date.Year = RTC_DateStructure.RTC_Year + 2000; current_date.Month = RTC_DateStructure.RTC_Month; current_date.Day = RTC_DateStructure.RTC_Date; /* Create timer */ hTimerTime = WM_CreateTimer(pMsg->hWin, 0, 1000, 0); break; case WM_TIMER: /* Write date and clock */ RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure); sec = RTC_TimeStructure.RTC_Seconds; min = RTC_TimeStructure.RTC_Minutes; hour = RTC_TimeStructure.RTC_Hours; RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); year = RTC_DateStructure.RTC_Year + 2000; month = RTC_DateStructure.RTC_Month; day = RTC_DateStructure.RTC_Date; if((current_date.Day != day) ||(current_date.Month != month) ||(current_date.Year != year)) { current_date.Year = year = RTC_DateStructure.RTC_Year + 2000; current_date.Month = month = RTC_DateStructure.RTC_Month; current_date.Day = day = RTC_DateStructure.RTC_Date; hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_TEXT_DATE); sprintf((char *)TempStr, "%02d, %s, %04d",day , strMonth[month-1], year); TEXT_SetText(hItem, (char *)TempStr); hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_CALENDAR); CALENDAR_SetDate(hItem, ¤t_date); CALENDAR_SetSel(hItem, ¤t_date); WM_InvalidateWindow(hItem); } hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_TEXT_CLOCK); sprintf((char *)TempStr, "%02d:%02d:%02d",hour , min, sec); TEXT_SetText(hItem, (char *)TempStr); WM_InvalidateWindow(pMsg->hWin); WM_RestartTimer(pMsg->Data.v, 0); break; case WM_DELETE: WM_DeleteTimer(hTimerTime); break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { static WM_HTIMER hStatusTimer; static uint8_t prev_usb_status = 0; WM_HWIN hItem = 0; static char tmp[64]; uint32_t i = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, ID_TIMER_CONNECTION, 500, 0); break; case WM_TIMER: if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); if(prev_usb_status == 0) { if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(&hvideo, &Video_File); } VideoList.ptr = 0; if(playbackwin) { GUI_EndDialog(playbackwin, 0); playbackwin = 0; SelLayer = 0; GUI_SetLayerVisEx (1, 0); GUI_SelectLayer(0); WM_InvalidateWindow(VideoWin); } if(hFrame) { WM_HideWindow(hFrame); WM_Exec(); WM_DeleteWindow(hFrame); hFrame = 0; } if(hPlaylistWin) { hItem = WM_GetDialogItem(hPlaylistWin, ID_VIDEO_LIST); i = LISTVIEW_GetNumRows(hItem); while(i--) { LISTVIEW_DeleteRow(hItem, i); } } } else { VideoList.ptr = 0; _AddEntireFolder("0:"); _AddEntireFolder("0:/Video"); if(hPlaylistWin) { if(VideoList.ptr > 0) { for(i=0; i<VideoList.ptr; i++) { strcpy(FileInfo.pRoot, (char *)VideoList.file[i].name); FILEMGR_GetFileOnly ((char *)tmp, (char *)FileInfo.pRoot); hItem = WM_GetDialogItem(hPlaylistWin, ID_VIDEO_LIST); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, i, (char *)tmp); } WM_InvalidateWindow(hItem); WM_Update(hItem); } } } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
static void _cbDialog(WM_MESSAGE *pMsg) { WM_KEY_INFO *pKEY; CHAR TimeID; switch(pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetFont(&GUI_Font30); GUI_SetColor(GUI_BLACK); if (Language == 0) GUI_DispStringAt("自检中...",100,50); else GUI_DispStringAt("CHECKING...",100,50); break; case WM_KEY: pKEY = (WM_KEY_INFO*)pMsg->Data.p; switch (pKEY->Key) { case GUI_KEY_ESCAPE: WM_BringToTop(mainwin); TimerIndex = 0; WM_DeleteTimer(CheckTimer); WM_SetFocus(mainwin); break; } break; case WM_CREATE: CheckText[0] = TEXT_CreateEx (150, 80, 600, 40, pMsg->hWin,WM_CF_SHOW,0,0,NULL); CheckText[1] = TEXT_CreateEx (150, 120, 600, 40, pMsg->hWin,WM_CF_SHOW,0,0,NULL); CheckText[2] = TEXT_CreateEx (150, 160, 600, 40, pMsg->hWin,WM_CF_SHOW,0,0,NULL); CheckText[3] = TEXT_CreateEx (150, 200, 600, 40, pMsg->hWin,WM_CF_SHOW,0,0,NULL); CheckText[4] = TEXT_CreateEx (150, 240, 600, 40, pMsg->hWin,WM_CF_SHOW,0,0,NULL); CheckText[5] = TEXT_CreateEx (150, 280, 600, 40, pMsg->hWin,WM_CF_SHOW,0,0,NULL); CheckText[6] = TEXT_CreateEx (150, 320, 600, 40, pMsg->hWin,WM_CF_SHOW,0,0,NULL); CheckText[7] = TEXT_CreateEx (150, 360, 600, 40, pMsg->hWin,WM_CF_SHOW,0,0,NULL); break; case WM_TIMER: { pLanguage = &Lgucheckwin[Language]; if (TimerIndex == 0) { //pchecktext = "国际频道 . . . . . . . . . . . . . . . . . . . . . 通过"; TEXT_SetText(CheckText[0],pLanguage->CheckItem[0]); WM_RestartTimer(CheckTimer,2000); TimerIndex++; } else if (TimerIndex == 1) { //pchecktext = "本地频道I. . . . . . . . . . . . . . . . . . . . . 通过"; TEXT_SetText(CheckText[1],pLanguage->CheckItem[1]); WM_RestartTimer(CheckTimer,2000); TimerIndex++; } else if (TimerIndex == 2) { //pchecktext = "本地频道II . . . . . . . . . . . . . . . . . . . . 通过"; TEXT_SetText(CheckText[2],pLanguage->CheckItem[2]); WM_RestartTimer(CheckTimer,2000); TimerIndex++; } else if (TimerIndex == 3) { //pchecktext = "中文频道 . . . . . . . . . . . . . . . . . . . . . 通过"; TEXT_SetText(CheckText[3],pLanguage->CheckItem[3]); WM_RestartTimer(CheckTimer,2000); TimerIndex++; } else if (TimerIndex == 4) { //pchecktext = "数据内存 . . . . . . . . . . . . . . . . . . . . . 通过"; TEXT_SetText(CheckText[4],pLanguage->CheckItem[4]); WM_RestartTimer(CheckTimer,2000); TimerIndex++; } else if (TimerIndex == 5) { //pchecktext = "天线单元 . . . . . . . . . . . . . . . . . . . . . 通过"; TEXT_SetText(CheckText[5],pLanguage->CheckItem[5]); WM_RestartTimer(CheckTimer,2000); TimerIndex++; } else if (TimerIndex == 6) { //pchecktext = "打印端口 . . . . . . . . . . . . . . . . . . . . . 通过"; TEXT_SetText(CheckText[6],pLanguage->CheckItem[6]); WM_RestartTimer(CheckTimer,2000); TimerIndex++; } else if (TimerIndex == 7) { //pchecktext = "报警铃声 . . . . . . . . . . . . . . . . . . . . 已执行"; TEXT_SetText(CheckText[7],pLanguage->CheckItem[7]); WM_RestartTimer(CheckTimer,2000); TimerIndex = 0; WM_DeleteTimer(CheckTimer); } 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; } }
/** * @brief Callback function of the MJPEG frame * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbVideoWindow(WM_MESSAGE * pMsg) { char temp[20]; static WM_HTIMER hTimerTime; WM_HWIN hItem; const GUI_PID_STATE * pState; GUI_RECT r; WM_GetInsideRect(&r); switch (pMsg->MsgId) { case WM_TOUCH: if(VideoPlayer_State == VIDEO_PLAY) { pState = (const GUI_PID_STATE *)pMsg->Data.p; if (pState) { if (pState->Pressed == 1) { VIDEO_Enlarge ^= 1; if(VIDEO_Enlarge) { GUI_SetOrientation(GUI_SWAP_XY | GUI_MIRROR_Y); TS_Orientation = 1; WM_AttachWindowAt(pMsg->hWin, WM_GetDesktopWindowEx(1), 0, 0); WM_SetSize(pMsg->hWin, LCD_GetXSize(), LCD_GetYSize()); } else { WM_AttachWindow(pMsg->hWin, bkparent); GUI_SetOrientation(0); TS_Orientation = 0; WM_InvalidateWindow(bkparent); WM_AttachWindowAt(pMsg->hWin, VIDEO_hWin, 5, 16); WM_SetSize(pMsg->hWin,230, 170); do_clear = 1; } } } } break; case WM_CREATE: /* Create timer */ hTimerTime = WM_CreateTimer(pMsg->hWin, 0, 50, 0); break; case WM_TIMER: WM_InvalidateWindow(pMsg->hWin); WM_RestartTimer(pMsg->Data.v, 0); break; case WM_DELETE: WM_DeleteTimer(hTimerTime); break; case WM_PAINT: if(do_clear) { GUI_ClearRectEx(&r); do_clear = 0; } if(VideoPlayer_State == VIDEO_PLAY) { if(_PlayMJPEG(&Video_File) < 0) { VideoPlayer_State = VIDEO_PLAY; ImageOffset = 0; time_start = GUI_GetTime(); f_close(&Video_File); goto_next_file(); hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_VIDEO_FILE); TEXT_SetText(hItem, (char *)FILEMGR_FileList.file[FILEMGR_FileList.idx].line); } hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_VIDEO_PROGRESS); if (progress_bar == 0) { SLIDER_SetValue(hItem, (ImageOffset * 100 )/ Video_File.fsize); } hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_VIDEO_DURATION); duration = (GUI_GetTime() - time_start )/1000; if(duration < 0) duration = 0; sprintf(temp,"%02d:%02d", duration/60, duration%60); TEXT_SetText(hItem, temp); } else if(VideoPlayer_State == VIDEO_IDLE) { GUI_ClearRectEx(&r); } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { WM_HWIN hItem; static WM_HTIMER hStatusTimer; static uint8_t prev_sd_status = 0; static uint8_t prev_usb_status = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_sd_status = k_StorageGetStatus(MSD_DISK_UNIT); prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, 0, 500, 0); break; case WM_TIMER: if(prev_sd_status != k_StorageGetStatus(MSD_DISK_UNIT)) { prev_sd_status = k_StorageGetStatus(MSD_DISK_UNIT); if(pVideoList->file[file_pos].name[0] == '1') { if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PROGRESS_SLIDER); SLIDER_SetValue(hItem, 0); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); WM_InvalidateWindow(hFrame); } } } else if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); if(pVideoList->file[file_pos].name[0] == '0') { if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PROGRESS_SLIDER); SLIDER_SetValue(hItem, 0); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); WM_InvalidateWindow(hFrame); } } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; int led; static int i; int led_num; switch (pMsg->MsgId) { case WM_TIMER: rt_device_control(dev_led, RT_DEVICE_GET_LED_NUM, &led_num); rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &i); i++; i%= led_num; if(_gMode == LED_WATERLAMP) { WM_RestartTimer(pMsg->Data.v, _gFreq); } break; case WM_INIT_DIALOG: _gMode = 0; _LedInit(); hItem = pMsg->hWin; FRAMEWIN_SetText(hItem, "led"); hItem = WM_GetDialogItem(pMsg->hWin, ID_RADIO_0); RADIO_SetText(hItem, "control", 0); RADIO_SetText(hItem, "Water lamp", 1); RADIO_SetFont(hItem, GUI_FONT_13B_1); hItem = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_0); SLIDER_SetRange(hItem, 50, 1000); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0); BUTTON_SetText(hItem, "led1"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1); BUTTON_SetText(hItem, "led2"); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetText(hItem, "freuqency"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2); BUTTON_SetText(hItem, "led3"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3); BUTTON_SetText(hItem, "led4"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_4); BUTTON_SetText(hItem, "Cancel"); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_SLIDER_0: // Notifications sent by 'Slider' switch(NCode) { case WM_NOTIFICATION_VALUE_CHANGED: _gFreq = SLIDER_GetValue(WM_GetDialogItem(pMsg->hWin, ID_SLIDER_0)); break; } break; case ID_RADIO_0: switch(NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: break; case WM_NOTIFICATION_VALUE_CHANGED: _gMode = RADIO_GetValue(WM_GetDialogItem(pMsg->hWin, ID_RADIO_0)); if(_gMode == LED_WATERLAMP) { WM_CreateTimer(WM_GetClientWindow(pMsg->hWin), 0, 200, 0); } break; } break; case ID_BUTTON_0: switch(NCode) { case WM_NOTIFICATION_CLICKED: if(_gMode == LED_CONTROL) { led = 0; rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &led); } break; } break; case ID_BUTTON_1: switch(NCode) { case WM_NOTIFICATION_CLICKED: if(_gMode == LED_CONTROL) { led = 1; rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &led); } break; } break; case ID_BUTTON_2: switch(NCode) { case WM_NOTIFICATION_CLICKED: if(_gMode == LED_CONTROL) { led = 2; rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &led); } break; } break; case ID_BUTTON_3: switch(NCode) { case WM_NOTIFICATION_CLICKED: if(_gMode == LED_CONTROL) { led = 3; rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &led); } break; } break; case ID_BUTTON_4: // Notifications sent by 'Button' switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/*---------------------------------------------------------------------------* * Routine: _PFMainDialog *---------------------------------------------------------------------------* * Description: * Callback function used by emWin to process events. * Inputs: * WM_MESSAGE *pMsg -- message structure for current dialog. *---------------------------------------------------------------------------*/ static void _PFMainDialog(WM_MESSAGE *pMsg) { int Id, NCode; WM_HWIN hItem; GUI_PID_STATE *p_touchState; T_ImageMessage message; switch (pMsg->MsgId){ case WM_INIT_DIALOG: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; LAFSetup(pMsg->hWin, ID_WINDOW, PFMainLayout); hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &REVERSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &REVERSE_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &PLAY_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &PLAY_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &FORWARD_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &FORWARD_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_UNPRESSED, &SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_PRESSED, &SETTINGS_BUTTON); BUTTON_SetBitmap(hItem, BUTTON_BI_DISABLED, &SETTINGS_BUTTON); G_OverlayTimer = WM_CreateTimer(pMsg->hWin, ID_OVERLAY_TIMER, OVERLAY_TIMEOUT_MS, 0); G_UpdateTimer = WM_CreateTimer(pMsg->hWin, ID_UPDATE_TIMER, UPDATE_TIME_MS, 0); G_PictureChangeTimer = WM_CreateTimer(pMsg->hWin, ID_PICTURECHANGE_TIMER, 0, 0); if (!G_Current) { G_Current = GUI_MEMDEV_Create(0, 0, UEZ_LCD_DISPLAY_WIDTH, UEZ_LCD_DISPLAY_HEIGHT); GUI_MEMDEV_Select(G_Current); GUI_BMP_Draw(G_CurrentImage, 0, 0); GUI_MEMDEV_Select(0); } WM_SetHasTrans(pMsg->hWin); message = IMAGE_INITILIZE; UEZQueueSend(G_ImageLoadQueue, (void*)&message, 50); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; if( !LAFHandleEvent(PFMainLayout, pMsg, NCode, Id)){ //Handle special cases here } break; case WM_TIMER: NCode = pMsg->Data.v; if (G_Active) { if (NCode == G_OverlayTimer) { IHideButtonsAndText(pMsg); //Grab all the touches WM_SetCapture(pMsg->hWin, 0); } else if (NCode == G_PictureChangeTimer) { //put up new picture if(G_AutoPlayOn) { IHandleForward(pMsg, WM_NOTIFICATION_RELEASED, ID_FORWARD_BUTTON); WM_RestartTimer(G_PictureChangeTimer, 5000); } } else if (NCode == G_UpdateTimer) { IUpdateFields(pMsg); WM_RestartTimer(G_UpdateTimer, UPDATE_TIME_MS); } } break; case WM_TOUCH: p_touchState = (GUI_PID_STATE *)(pMsg->Data.p); if (!p_touchState->Pressed) { WM_RestartTimer(G_OverlayTimer, OVERLAY_TIMEOUT_MS); //Show all the hidden text on buttons hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_TEXT); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_SETTINGS_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_REVERSE_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_PAUSE_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_FORWARD_BUTTON); WM_ShowWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_TIMEDATE_TEXT); WM_ShowWindow(hItem); WM_ReleaseCapture(); IUpdateFields(pMsg); } break; case WM_POST_PAINT: GUI_BMP_Draw(G_CurrentImage, 0, 0); break; case WM_APP_GAINED_FOCUS: G_Active = ETrue; WM_SetCapture(pMsg->hWin, 0); IHideButtonsAndText(pMsg); IUpdateFields(pMsg); break; case WM_APP_LOST_FOCUS: G_Active = EFalse; IHideButtonsAndText(pMsg); WM_ReleaseCapture(); G_AutoPlayOn = EFalse; break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief callback for audio process * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbAudioProcess(WM_MESSAGE * pMsg) { uint32_t Id; WM_HWIN hItem; char tmp[] = "00:00"; long progress; uint32_t duration; switch (pMsg->MsgId) { case WM_CREATE: hProcessTimer = WM_CreateTimer(pMsg->hWin, ID_PROCESS_TIMER, 1000, 0); break; case WM_TIMER: Id = WM_GetTimerId(pMsg->Data.v); if(Id == ID_PROCESS_TIMER) { if(AUDIOPLAYER_GetState() == AUDIOPLAYER_PLAY) { progress = AUDIOPLAYER_GetProgress(); /*Set elapsed time */ duration = progress / WavInfo.ByteRate; sprintf((char *)tmp , "%02lu:%02lu", duration/60, duration%60 ); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, tmp); /* Set progress slider position */ hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_DURATION_SLIDER); progress = (long)(progress/(WavInfo.FileSize/100)); SLIDER_SetValue(hItem, progress); WM_Update(hItem); } AUDIOPLAYER_Process(); WM_RestartTimer(pMsg->Data.v, 1000); } else if (Id == ID_PLAYLIST_TIMER) { playlist_select = 0; } break; case WM_DELETE: WM_DeleteTimer(hProcessTimer); if(hPlaylistTimer) { WM_DeleteTimer(hPlaylistTimer); hPlaylistTimer = 0; } break; default: WM_DefaultProc(pMsg); } }