Nirvana Jay / Mbed 2 deprecated F7DISCO_Demo

Dependencies:   BSP_DISCO_F746NG_patch mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers k_menu.c Source File

k_menu.c

Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    k_menu.c
00004   * @author  MCD Application Team
00005   * @version V1.1.0
00006   * @date    21-September-2015
00007   * @brief   This file provides the kernel menu functions 
00008   ******************************************************************************
00009   * @attention
00010   *
00011   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
00012   *
00013   * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
00014   * You may not use this file except in compliance with the License.
00015   * You may obtain a copy of the License at:
00016   *
00017   *        http://www.st.com/software_license_agreement_liberty_v2
00018   *
00019   * Unless required by applicable law or agreed to in writing, software 
00020   * distributed under the License is distributed on an "AS IS" BASIS, 
00021   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00022   * See the License for the specific language governing permissions and
00023   * limitations under the License.
00024   *
00025   ******************************************************************************
00026   */
00027   
00028 /* Includes ------------------------------------------------------------------*/
00029 
00030 #include "main.h"
00031 
00032 /** @addtogroup CORE
00033   * @{
00034   */
00035 
00036 /** @defgroup KERNEL_MENU
00037   * @brief Kernel menu routines
00038   * @{
00039   */
00040 
00041 /* Private defines -----------------------------------------------------------*/
00042 #define ID_ICONVIEW_MENU               (GUI_ID_USER + 0x00)
00043 #define ID_FEATURES_FPU                (GUI_ID_USER + 0x44)
00044 #define ID_FEATURES_IC                 (GUI_ID_USER + 0x45)
00045 #define ID_FEATURES_DC                 (GUI_ID_USER + 0x46)
00046 #define ID_FEATURES_CPU                (GUI_ID_USER + 0x47)
00047 #define ID_FEATURES_FREQ               (GUI_ID_USER + 0x48)
00048 
00049 /* External variables --------------------------------------------------------*/
00050 uint32_t module_active = 0;
00051 ICONVIEW_Handle hIcon ;
00052 WM_HWIN         hCPULoad;
00053 WM_HTIMER       hRefreshTimer;  
00054 extern GUI_CONST_STORAGE GUI_BITMAP bmF7Logo;
00055 /* Private typedef -----------------------------------------------------------*/
00056 /* Private macros ------------------------------------------------------------*/
00057 /* Private function prototypes -----------------------------------------------*/
00058 /* Private functions ---------------------------------------------------------*/
00059 
00060 /**
00061   * @brief  Callback routine of desktop window.
00062   * @param  pMsg: pointer to data structure of type WM_MESSAGE
00063   * @retval None
00064   */
00065 static void _cbBk(WM_MESSAGE * pMsg) {
00066   
00067   uint32_t NCode, Id;
00068   static uint8_t sel;
00069   WM_HWIN   hItem;
00070   char tmp[16];
00071   
00072   switch (pMsg->MsgId) 
00073   {
00074   case WM_PAINT:
00075     GUI_SetBkColor(GUI_WHITE);
00076     GUI_Clear();
00077 
00078     /*H/W Information */
00079     GUI_SetColor(0x007C18CC);
00080     GUI_AA_FillRoundedRect(400, 31, 780, 238, 15);
00081     GUI_DrawBitmap(&bmF7Logo, 400, 47); 
00082     break;
00083        
00084     
00085   case WM_TIMER:
00086     
00087     hItem = WM_GetDialogItem(pMsg->hWin, ID_FEATURES_CPU);
00088     
00089     sprintf((char *)tmp , "MCU Load : %d%%",  osGetCPUUsage());
00090     TEXT_SetText(hItem, tmp);
00091     
00092     WM_InvalidateWindow(hItem);
00093     WM_Update(hItem); 
00094     WM_RestartTimer(pMsg->Data.v, 1000);
00095     break;
00096   
00097   
00098   case WM_NOTIFY_PARENT:
00099     Id    = WM_GetId(pMsg->hWinSrc);     
00100     NCode = pMsg->Data.v;  
00101     
00102     switch (NCode) 
00103     {  
00104       
00105     case WM_NOTIFICATION_RELEASED:
00106       if (Id == ID_ICONVIEW_MENU)
00107       {
00108         sel = ST_AnimatedIconView_GetSel(pMsg->hWinSrc);
00109         
00110         if(sel < k_ModuleGetNumber())
00111         {
00112           ST_AnimatedIconView_SetSel(pMsg->hWinSrc, -1);
00113           if(module_prop[sel].in_use == 0)
00114           {
00115             module_prop[sel].module->startup(pMsg->hWin, 0, 0);
00116             module_prop[sel].in_use = 1;
00117           }
00118           
00119           else if(module_prop[sel].win_state == 1)
00120           {
00121             module_prop[sel].module->startup(pMsg->hWin, 0, 0);
00122           }          
00123         }
00124         else
00125         {
00126           WM_InvalidateWindow (pMsg->hWinSrc);
00127         }
00128       }
00129       break;
00130 
00131     case WM_NOTIFICATION_CHILD_DELETED:
00132         module_prop[sel].in_use = 0;
00133         module_prop[sel].win_state = 0;
00134         break;
00135       
00136     default:
00137       break;
00138     }
00139     break;
00140   default:
00141     WM_DefaultProc(pMsg);
00142   }
00143 }
00144 
00145 /**
00146   * @brief  set the GUI profile
00147   * @param  None.
00148   * @retval None.
00149   */
00150 void k_SetGuiProfile(void) 
00151 {
00152   BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
00153   DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
00154   
00155   FRAMEWIN_SetDefaultTextColor(0, GUI_WHITE);
00156   FRAMEWIN_SetDefaultTextColor(1, GUI_WHITE);      
00157   
00158   FRAMEWIN_SetDefaultBarColor(0, GUI_STCOLOR_LIGHTBLUE);
00159   FRAMEWIN_SetDefaultBarColor(1, GUI_STCOLOR_LIGHTBLUE);
00160   
00161   FRAMEWIN_SetDefaultFont(&GUI_FontAvantGarde20B);
00162   
00163   FRAMEWIN_SetDefaultClientColor(GUI_WHITE);  
00164   FRAMEWIN_SetDefaultTitleHeight(25);
00165   
00166   
00167   WINDOW_SetDefaultBkColor(GUI_WHITE);
00168   
00169   LISTVIEW_SetDefaultGridColor(GUI_WHITE);
00170   LISTVIEW_SetDefaultBkColor(LISTVIEW_CI_SEL, GUI_STCOLOR_LIGHTBLUE);
00171   DROPDOWN_SetDefaultColor(DROPDOWN_CI_SEL, GUI_STCOLOR_LIGHTBLUE);
00172   LISTVIEW_SetDefaultBkColor(LISTVIEW_CI_SELFOCUS, GUI_STCOLOR_LIGHTBLUE);
00173   DROPDOWN_SetDefaultColor(DROPDOWN_CI_SELFOCUS, GUI_STCOLOR_LIGHTBLUE);
00174   SCROLLBAR_SetDefaultWidth(8);
00175   SCROLLBAR_SetDefaultSTSkin();
00176   
00177   HEADER_SetDefaultBkColor(GUI_STCOLOR_LIGHTBLUE);
00178   HEADER_SetDefaultTextColor(GUI_WHITE);
00179   HEADER_SetDefaultFont(GUI_FONT_16_1);
00180   HEADER_SetDefaultSTSkin();
00181   SCROLLBAR_SetDefaultColor(GUI_STCOLOR_LIGHTBLUE, SCROLLBAR_CI_THUMB);  
00182   SCROLLBAR_SetDefaultColor(GUI_STCOLOR_LIGHTBLUE, SCROLLBAR_CI_SHAFT);  
00183   SCROLLBAR_SetDefaultColor(GUI_STCOLOR_LIGHTBLUE, SCROLLBAR_CI_ARROW);    
00184   CHOOSEFILE_SetDelim('/');
00185   GUI_SetDefaultFont(GUI_FONT_20_ASCII);
00186   
00187   TEXT_SetDefaultTextColor(GUI_STCOLOR_LIGHTBLUE);
00188   TEXT_SetDefaultFont(&GUI_FontLubalGraph20);
00189 }
00190 
00191 /**
00192   * @brief  Initializes the menu.
00193   * @param  None.
00194   * @retval None.
00195   */
00196 void k_InitMenu(void) 
00197 {
00198   uint8_t i = 0;
00199   WM_HWIN   hItem;
00200 
00201   
00202   WM_SetCallback(WM_GetDesktopWindowEx(0), _cbBk);
00203   
00204   hIcon = ST_AnimatedIconView_CreateEx(0, 
00205                                        0, 
00206                                        LCD_GetXSize() - 80, 
00207                                        LCD_GetYSize() - 0, 
00208                                        WM_GetDesktopWindowEx(0), 
00209                                        WM_CF_SHOW | WM_CF_HASTRANS ,
00210                                        0,
00211                                        ID_ICONVIEW_MENU, 
00212                                        100, 
00213                                        120, 40, 5);
00214   
00215   ST_AnimatedIconView_SetDualFont(hIcon, &GUI_FontLubalGraph16, &GUI_FontLubalGraph16);
00216   
00217   ST_AnimatedIconView_SetSpace(hIcon, GUI_COORD_Y, 0);
00218   ST_AnimatedIconView_SetSpace(hIcon, GUI_COORD_X, 0);
00219   ST_AnimatedIconView_SetFrame(hIcon, GUI_COORD_Y, 0);
00220   ST_AnimatedIconView_SetFrame(hIcon, GUI_COORD_X, 0);
00221   
00222   ST_AnimatedIconView_SetTextColor(hIcon, ICONVIEW_CI_UNSEL, GUI_STCOLOR_LIGHTBLUE);
00223   ST_AnimatedIconView_SetBkColor(hIcon, ICONVIEW_CI_UNSEL, GUI_WHITE);
00224   ST_AnimatedIconView_SetBkColor(hIcon, ICONVIEW_CI_SEL, GUI_WHITE);
00225   ST_AnimatedIconView_SetSel(hIcon, -1);
00226   ST_AnimatedIconView_SetDualTextColor(hIcon, ICONVIEW_CI_SEL, GUI_STCOLOR_LIGHTBLUE, GUI_STCOLOR_DARKBLUE    );  
00227   
00228   for (i = 0; i < k_ModuleGetNumber(); i++)
00229   {   
00230     ST_AnimatedIconView_AddIcon(hIcon, module_prop[i].module->open_icon, module_prop[i].module->close_icon, (char *)module_prop[i].module->name);
00231   } 
00232   
00233   hItem = TEXT_CreateEx(407, 152, 260, 20, WM_GetDesktopWindowEx(0), WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_FPU, "FPU : ON");
00234   TEXT_SetFont(hItem, GUI_FONT_8_1);
00235   TEXT_SetTextColor(hItem, GUI_WHITE); 
00236   
00237   hItem = TEXT_CreateEx(407, 167, 260, 20, WM_GetDesktopWindowEx(0), WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_IC, "I-Cache : ON");
00238   TEXT_SetFont(hItem, GUI_FONT_8_1);
00239   TEXT_SetTextColor(hItem, GUI_WHITE);     
00240   
00241   hItem = TEXT_CreateEx(407, 182, 260, 20, WM_GetDesktopWindowEx(0), WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_DC, "D-Cache : ON");
00242   TEXT_SetFont(hItem, GUI_FONT_8_1);
00243   TEXT_SetTextColor(hItem, GUI_WHITE);  
00244   
00245   hCPULoad = TEXT_CreateEx(407, 198, 260, 20, WM_GetDesktopWindowEx(0), WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_CPU, "MCU Load : --%");
00246   TEXT_SetFont(hCPULoad, GUI_FONT_8_1);
00247   TEXT_SetTextColor(hCPULoad, GUI_WHITE);  
00248   
00249   hItem = TEXT_CreateEx(407, 212, 260, 20, WM_GetDesktopWindowEx(0), WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_FREQ, "Clk : 200 MHz");
00250   TEXT_SetFont(hItem, GUI_FONT_8_1);
00251   TEXT_SetTextColor(hItem, GUI_WHITE);    
00252   
00253   hRefreshTimer = WM_CreateTimer(WM_GetDesktopWindowEx(0), 0, 500, 0);    
00254 }
00255 
00256 /**
00257   * @}
00258   */
00259 
00260 /**
00261   * @}
00262   */
00263 
00264 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/