2019-04-30 17:27:23 +01:00
|
|
|
/**
|
|
|
|
******************************************************************************
|
|
|
|
* @file system_win.c
|
|
|
|
* @author MCD Application Team
|
|
|
|
* @brief System information functions
|
|
|
|
******************************************************************************
|
|
|
|
* @attention
|
|
|
|
*
|
2021-03-03 14:55:52 +01:00
|
|
|
* <h2><center>© Copyright (c) 2017 STMicroelectronics.
|
2019-04-30 17:27:23 +01:00
|
|
|
* All rights reserved.</center></h2>
|
|
|
|
*
|
2021-03-03 14:55:52 +01:00
|
|
|
* This software component is licensed by ST under Ultimate Liberty license
|
|
|
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
|
|
|
* the License. You may obtain a copy of the License at:
|
|
|
|
* www.st.com/SLA0044
|
2019-04-30 17:27:23 +01:00
|
|
|
*
|
|
|
|
******************************************************************************
|
|
|
|
*/
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
|
|
#include "DIALOG.h"
|
|
|
|
#include "k_module.h"
|
|
|
|
#include "k_rtc.h"
|
|
|
|
#include "system_res.c"
|
|
|
|
|
|
|
|
|
|
|
|
/** @addtogroup SYSTEM_MODULE
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/** @defgroup SYSTEM
|
|
|
|
* @brief system routines
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/* External variables --------------------------------------------------------*/
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
|
|
static void Startup(WM_HWIN hWin, uint16_t xpos, uint16_t ypos);
|
|
|
|
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
|
|
K_ModuleItem_Typedef system_info =
|
|
|
|
{
|
|
|
|
4,
|
|
|
|
"System",
|
|
|
|
&bminfo,
|
|
|
|
Startup,
|
|
|
|
NULL,
|
|
|
|
}
|
|
|
|
;
|
|
|
|
|
|
|
|
SystemSettingsTypeDef settings;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Private defines -----------------------------------------------------------*/
|
|
|
|
#define ID_FRAMEWIN_INFO (GUI_ID_USER + 0x01)
|
|
|
|
#define ID_TEXT_BOARD (GUI_ID_USER + 0x02)
|
|
|
|
#define ID_TEXT_CORE (GUI_ID_USER + 0x03)
|
|
|
|
#define ID_TEXT_CPU (GUI_ID_USER + 0x04)
|
|
|
|
#define ID_TEXT_VERSION (GUI_ID_USER + 0x05)
|
|
|
|
#define ID_TEXT_COPYRIGHT (GUI_ID_USER + 0x06)
|
|
|
|
#define ID_MULTIPAGE (GUI_ID_USER + 0x07)
|
|
|
|
#define ID_IMAGE_LOGO (GUI_ID_USER + 0x08)
|
|
|
|
|
|
|
|
#define ID_CHECKBOX_SPRITES (GUI_ID_USER + 0x10)
|
|
|
|
#define ID_CHECKBOX_BACKGROUND (GUI_ID_USER + 0x11)
|
|
|
|
#define ID_CHECKBOX_CPU180 (GUI_ID_USER + 0x12)
|
|
|
|
#define ID_CHECKBOX_FLEXSKIN (GUI_ID_USER + 0x13)
|
|
|
|
#define ID_TEXT_WARNING (GUI_ID_USER + 0x15)
|
|
|
|
#define ID_SPINBOX_HOUR (GUI_ID_USER + 0x16)
|
|
|
|
#define ID_TEXT_0 (GUI_ID_USER + 0x17)
|
|
|
|
#define ID_TEXT_1 (GUI_ID_USER + 0x18)
|
|
|
|
#define ID_SPINBOX_MINUTE (GUI_ID_USER + 0x19)
|
|
|
|
#define ID_BUTTON_APPLYSETTINGS (GUI_ID_USER + 0x1A)
|
|
|
|
#define ID_BUTTON_1 (GUI_ID_USER + 0x1B)
|
|
|
|
#define ID_TEXT_2 (GUI_ID_USER + 0x1C)
|
|
|
|
#define ID_CALENDAR (GUI_ID_USER + 0x1D)
|
|
|
|
#define ID_SPINBOX_SEC (GUI_ID_USER + 0x1E)
|
|
|
|
|
|
|
|
#define PI 3.14
|
|
|
|
#define AA_FACTOR 3
|
|
|
|
|
|
|
|
#define X0 49
|
|
|
|
#define Y0 48
|
|
|
|
|
|
|
|
/* Private macros ------------------------------------------------------------*/
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
|
|
/* Dialog resource using a WINDOW widget*/
|
|
|
|
static const GUI_WIDGET_CREATE_INFO _aDialog[] =
|
|
|
|
{
|
|
|
|
|
|
|
|
{ FRAMEWIN_CreateIndirect, "System", ID_FRAMEWIN_INFO, 0, 0, 320, 215, 0, 0x64, 0 },
|
|
|
|
{ MULTIPAGE_CreateIndirect, "Multipage", ID_MULTIPAGE, 10, 10, 300, 180, 0, 0x0, 0 },
|
|
|
|
};
|
|
|
|
|
|
|
|
static const GUI_WIDGET_CREATE_INFO _aDialogSystemInformation[] = {
|
|
|
|
{ WINDOW_CreateIndirect, "System Information", 0, 0, 0, 300, 180, FRAMEWIN_CF_MOVEABLE },
|
|
|
|
{ TEXT_CreateIndirect, "Board : STM324xG-EVAL", ID_TEXT_BOARD, 15, 15, 200, 20, 0, 0x0, 0 },
|
|
|
|
{ TEXT_CreateIndirect, "Core: STM32F-4 Series", ID_TEXT_CORE, 15, 35, 200, 20, 0, 0x0, 0 },
|
|
|
|
{ TEXT_CreateIndirect, "CPU Speed : 168MHz", ID_TEXT_CPU, 15, 55, 200, 20, 0, 0x0, 0 },
|
|
|
|
{ TEXT_CreateIndirect, "Firmware Version : 1.6.0", ID_TEXT_VERSION, 15, 75, 280, 20, 0, 0x0, 0 },
|
|
|
|
{ IMAGE_CreateIndirect, "Image", ID_IMAGE_LOGO, 90, 95, 40, 20, 0, 0, 0 },
|
|
|
|
{ TEXT_CreateIndirect, "Copyright (c) STMicroelectronics 2017", ID_TEXT_COPYRIGHT, 15, 125, 200, 20, 0, 0x0, 0 },
|
|
|
|
};
|
|
|
|
|
|
|
|
static const GUI_WIDGET_CREATE_INFO _aDialogGeneralSettings[] = {
|
|
|
|
{ WINDOW_CreateIndirect, "General Settings", 0, 0, 0, 300, 180, FRAMEWIN_CF_MOVEABLE },
|
|
|
|
{ CHECKBOX_CreateIndirect, "Checkbox", ID_CHECKBOX_SPRITES, 6, 05, 147, 20, 0, 0x0, 0 },
|
|
|
|
{ CHECKBOX_CreateIndirect, "Checkbox", ID_CHECKBOX_BACKGROUND, 6, 35, 227, 20, 0, 0x0, 0 },
|
|
|
|
{ CHECKBOX_CreateIndirect, "Checkbox", ID_CHECKBOX_CPU180, 6, 65, 215, 20, 0, 0x0, 0 },
|
|
|
|
{ CHECKBOX_CreateIndirect, "Checkbox", ID_CHECKBOX_FLEXSKIN, 6, 95, 147, 20, 0, 0x0, 0 },
|
|
|
|
{ TEXT_CreateIndirect, "[!! Restart the demonstration to apply the new settings !!]", ID_TEXT_WARNING, 6, 135, 300, 20, 0, 0x0, 0 },
|
|
|
|
};
|
|
|
|
|
|
|
|
static const GUI_WIDGET_CREATE_INFO _aDialogClockSettings[] = {
|
|
|
|
{ WINDOW_CreateIndirect, "Clock Settings", 0, 0, 0, 300, 180, FRAMEWIN_CF_MOVEABLE },
|
|
|
|
{ SPINBOX_CreateIndirect, "Spinbox", ID_SPINBOX_HOUR, 160, 87, 37, 30, 0, 0x0, 0 },
|
|
|
|
{ SPINBOX_CreateIndirect, "Spinbox", ID_SPINBOX_MINUTE, 200, 87, 36, 30, 0, 0x0, 0 },
|
|
|
|
{ SPINBOX_CreateIndirect, "Spinbox", ID_SPINBOX_SEC, 239, 87, 37, 30, 0, 0x0, 0 },
|
|
|
|
{ BUTTON_CreateIndirect, "Apply settings", ID_BUTTON_APPLYSETTINGS, 160, 122, 116, 37, 0, 0x0, 0 },
|
|
|
|
};
|
|
|
|
|
|
|
|
static const GUI_POINT aPoints[3][4] = {
|
|
|
|
|
|
|
|
/* Hour Needle */
|
|
|
|
{{ 0 * AA_FACTOR, 2 * AA_FACTOR},
|
|
|
|
{-1 * AA_FACTOR,-4 * AA_FACTOR},
|
|
|
|
{ 0 * AA_FACTOR,-6 * AA_FACTOR},
|
|
|
|
{ 1 * AA_FACTOR,-4 * AA_FACTOR}},
|
|
|
|
|
|
|
|
/* Min Needle */
|
|
|
|
{{ 0 * AA_FACTOR, 2 * AA_FACTOR},
|
|
|
|
{-1 * AA_FACTOR,-2 * AA_FACTOR},
|
|
|
|
{ 0 * AA_FACTOR,-8 * AA_FACTOR},
|
|
|
|
{ 1 * AA_FACTOR,-2 * AA_FACTOR}},
|
|
|
|
/* Sec Needle */
|
|
|
|
{{0 * AA_FACTOR, 1 * AA_FACTOR},
|
|
|
|
{ 1 * AA_FACTOR, 1 * AA_FACTOR},
|
|
|
|
{ 1 * AA_FACTOR,-34 * AA_FACTOR},
|
|
|
|
{0 * AA_FACTOR,-34 * AA_FACTOR}},
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
GUI_POINT aPointsDest[3][4];
|
|
|
|
|
|
|
|
/* Private functions ---------------------------------------------------------*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Draw Needle
|
|
|
|
* @param index: Needle index
|
|
|
|
* @param x0: x position
|
|
|
|
* @param y0: y position
|
|
|
|
* @retval None
|
|
|
|
*/
|
|
|
|
static void DrawNeedle(uint32_t index, uint16_t x0, uint16_t y0)
|
|
|
|
{
|
|
|
|
/* draw Needles */
|
|
|
|
if(index == 2)
|
|
|
|
{
|
|
|
|
GUI_SetColor(GUI_RED);
|
|
|
|
GUI_AA_FillPolygon(aPointsDest[index], 4, AA_FACTOR * x0, AA_FACTOR * y0);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GUI_SetColor(GUI_LIGHTBLUE);
|
|
|
|
GUI_AA_FillPolygon(aPointsDest[index], 4, AA_FACTOR * x0, AA_FACTOR * y0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Update clock
|
|
|
|
* @param x0: x position
|
|
|
|
* @param y0: y position
|
|
|
|
* @param hour: updated hour
|
|
|
|
* @param min: updated minute
|
|
|
|
* @param sec: updated second
|
|
|
|
* @retval None
|
|
|
|
*/
|
|
|
|
static void GUI_UpdateClock (uint16_t x0, uint16_t y0, uint8_t hour, uint8_t min, uint8_t sec)
|
|
|
|
{
|
|
|
|
int8_t i = 0;
|
|
|
|
int32_t SinHQ, CosHQ ,a = 0;
|
|
|
|
uint16_t xPos, yPos;
|
|
|
|
|
|
|
|
GUI_AA_EnableHiRes();
|
|
|
|
GUI_AA_SetFactor(AA_FACTOR);
|
|
|
|
|
|
|
|
GUI_SetColor(GUI_LIGHTGRAY);
|
|
|
|
GUI_AA_DrawArc(AA_FACTOR * x0, AA_FACTOR * y0, AA_FACTOR * 39, AA_FACTOR * 39, 0, 360);
|
|
|
|
GUI_SetColor(GUI_GRAY);
|
|
|
|
GUI_AA_DrawArc(AA_FACTOR * x0, AA_FACTOR * y0, AA_FACTOR * 40, AA_FACTOR * 40, 0, 360);
|
|
|
|
GUI_SetColor(GUI_WHITE);
|
|
|
|
GUI_AA_FillCircle(AA_FACTOR * x0, AA_FACTOR * y0, AA_FACTOR * 38);
|
|
|
|
GUI_SetBkColor(GUI_TRANSPARENT);
|
|
|
|
|
|
|
|
GUI_SetBkColor(GUI_WHITE);
|
|
|
|
GUI_SetColor(GUI_GRAY);
|
|
|
|
GUI_DispStringAt("12", x0 - 5, y0 - 38 + 5);
|
|
|
|
GUI_DispStringAt( "6", x0 - 2, y0 + 38 - 13);
|
|
|
|
GUI_DispStringAt( "9", x0 - 38 + 5, y0 - 5);
|
|
|
|
GUI_DispStringAt( "3", x0 + 38 - 10, y0 - 3);
|
|
|
|
|
|
|
|
for (i = 0; i <= 12; i++)
|
|
|
|
{
|
|
|
|
a = i * 30000;
|
|
|
|
SinHQ = GUI__SinHQ(a);
|
|
|
|
CosHQ = GUI__CosHQ(a);
|
|
|
|
|
|
|
|
xPos = x0 + ((36 * CosHQ) >> 16);
|
|
|
|
yPos = y0 - ((36 * SinHQ) >> 16);
|
|
|
|
|
|
|
|
GUI_AA_FillCircle(AA_FACTOR * xPos, AA_FACTOR * yPos, AA_FACTOR * 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
GUI_MagnifyPolygon(aPointsDest[0], aPoints[0], 4, 4);
|
|
|
|
GUI_RotatePolygon(aPointsDest[0], aPointsDest[0], 4, - 2 * PI * (float)((float)hour + (float)min /60) / 12);
|
|
|
|
DrawNeedle(0, x0, y0);
|
|
|
|
|
|
|
|
GUI_MagnifyPolygon(aPointsDest[1], aPoints[1], 4, 4);
|
|
|
|
GUI_RotatePolygon(aPointsDest[1], aPointsDest[1], 4, - 2 * PI * (float)((float)min + (float)sec / 60) / 60);
|
|
|
|
DrawNeedle(1, x0, y0);
|
|
|
|
|
|
|
|
GUI_MagnifyPolygon(aPointsDest[2], aPoints[2], 4, 1);
|
|
|
|
GUI_RotatePolygon(aPointsDest[2], aPointsDest[2], 4, - 2 * PI * sec / 60);
|
|
|
|
DrawNeedle(2, x0, y0);
|
|
|
|
GUI_AA_DisableHiRes();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief callback for System Information
|
|
|
|
* @param pMsg: Pointer to Date structure
|
|
|
|
* @retval None
|
|
|
|
*/
|
|
|
|
static void _cbSystemInformation(WM_MESSAGE * pMsg)
|
|
|
|
{
|
|
|
|
WM_HWIN hItem;
|
|
|
|
char str[40];
|
|
|
|
hItem = pMsg->hWin;
|
|
|
|
switch (pMsg->MsgId) {
|
|
|
|
case WM_INIT_DIALOG:
|
|
|
|
|
|
|
|
/* Initialization of 'Board : STM324xG' */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD);
|
|
|
|
TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII);
|
|
|
|
TEXT_SetTextColor(hItem, GUI_DARKGRAY);
|
|
|
|
|
|
|
|
/* Initialization of 'Core: STM32F-4 Series' */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE);
|
|
|
|
TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII);
|
|
|
|
TEXT_SetTextColor(hItem, GUI_DARKGRAY);
|
|
|
|
|
|
|
|
/* Initialization of 'CPU Speed : 168MHz' */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU);
|
|
|
|
TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII);
|
|
|
|
TEXT_SetTextColor(hItem, GUI_DARKGRAY);
|
|
|
|
|
|
|
|
/* Initialization of 'Firmware Version : 1.0' */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION);
|
|
|
|
TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII);
|
|
|
|
TEXT_SetTextColor(hItem, GUI_DARKGRAY);
|
|
|
|
strcpy(str, "Demo rev: 1.6.0");
|
|
|
|
TEXT_SetText(hItem, str);
|
|
|
|
|
|
|
|
/* ST Copyright */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_COPYRIGHT);
|
|
|
|
TEXT_SetFont(hItem, GUI_FONT_10_ASCII);
|
|
|
|
TEXT_SetTextColor(hItem, GUI_DARKGRAY);
|
|
|
|
|
|
|
|
/* Set ST Logo */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_LOGO);
|
|
|
|
IMAGE_SetBitmap(hItem, &bmSTLogo40x20);
|
|
|
|
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
WM_DefaultProc(pMsg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief callback for General Settings
|
|
|
|
* @param pMsg: Pointer to Date structure
|
|
|
|
* @retval None
|
|
|
|
*/
|
|
|
|
|
|
|
|
static void _cbGeneralSettings(WM_MESSAGE * pMsg) {
|
|
|
|
WM_HWIN hItem;
|
|
|
|
uint32_t tmp = 0;
|
|
|
|
|
|
|
|
hItem = pMsg->hWin;
|
|
|
|
switch (pMsg->MsgId) {
|
|
|
|
|
|
|
|
case WM_INIT_DIALOG:
|
|
|
|
|
|
|
|
settings.d32 = k_BkupRestoreParameter(CALIBRATION_GENERAL_SETTINGS_BKP);
|
|
|
|
|
|
|
|
/* Initialization of 'Checkbox' (sprite field) */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_SPRITES);
|
|
|
|
CHECKBOX_SetFont(hItem, GUI_FONT_8_ASCII);
|
|
|
|
CHECKBOX_SetText(hItem, "Enable Sprites");
|
|
|
|
WM_DisableWindow(hItem);
|
|
|
|
|
|
|
|
/* Initialization of 'Checkbox' (Background field) */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_BACKGROUND);
|
|
|
|
CHECKBOX_SetFont(hItem, GUI_FONT_8_ASCII);
|
|
|
|
CHECKBOX_SetText(hItem, "Enable background mode");
|
|
|
|
CHECKBOX_SetState(hItem, settings.b.enable_background);
|
|
|
|
WM_DisableWindow(hItem);
|
|
|
|
|
|
|
|
/* Initialization of 'Checkbox' (CPU field) */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_CPU180);
|
|
|
|
CHECKBOX_SetFont(hItem, GUI_FONT_8_ASCII);
|
|
|
|
CHECKBOX_SetText(hItem, "Run CPU at 180 MHz");
|
|
|
|
WM_DisableWindow(hItem);
|
|
|
|
|
|
|
|
/* Initialization of 'Checkbox' Flex skin */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_FLEXSKIN);
|
|
|
|
CHECKBOX_SetFont(hItem, GUI_FONT_8_ASCII);
|
|
|
|
CHECKBOX_SetText(hItem, "Disable Flex skin");
|
|
|
|
CHECKBOX_SetState(hItem, settings.b.disable_flex_skin);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_WARNING);
|
|
|
|
TEXT_SetTextColor(hItem, GUI_DARKRED);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case WM_DELETE:
|
|
|
|
/* Save Setting before delete settings frame */
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_SPRITES);
|
|
|
|
settings.b.enable_sprite = CHECKBOX_IsChecked(hItem);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_BACKGROUND);
|
|
|
|
settings.b.enable_background = CHECKBOX_IsChecked(hItem);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_CPU180);
|
|
|
|
settings.b.use_180Mhz = CHECKBOX_IsChecked(hItem);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_FLEXSKIN);
|
|
|
|
settings.b.disable_flex_skin = CHECKBOX_IsChecked(hItem);
|
|
|
|
|
|
|
|
tmp = k_BkupRestoreParameter(CALIBRATION_GENERAL_SETTINGS_BKP);
|
|
|
|
|
|
|
|
/* check if new settings have to be saved */
|
|
|
|
if(settings.d32 != tmp)
|
|
|
|
{
|
|
|
|
k_BkupSaveParameter(CALIBRATION_GENERAL_SETTINGS_BKP, settings.d32);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
WM_DefaultProc(pMsg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief callback for Clock Settings
|
|
|
|
* @param pMsg: Pointer to Date structure
|
|
|
|
* @retval None
|
|
|
|
*/
|
|
|
|
|
|
|
|
static void _cbClockSettings(WM_MESSAGE * pMsg) {
|
|
|
|
WM_HWIN hItem;
|
|
|
|
int Id, NCode;
|
|
|
|
RTC_DateTypeDef Date;
|
|
|
|
RTC_TimeTypeDef Time;
|
|
|
|
static WM_HTIMER hTimerTime;
|
|
|
|
static uint8_t DisableAutoRefresh = 0;
|
|
|
|
static CALENDAR_DATE hDate;
|
|
|
|
|
|
|
|
hItem = pMsg->hWin;
|
|
|
|
switch (pMsg->MsgId) {
|
|
|
|
|
|
|
|
case WM_TIMER:
|
|
|
|
WM_InvalidateWindow(pMsg->hWin);
|
|
|
|
WM_RestartTimer(pMsg->Data.v, 1000);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case WM_DELETE:
|
|
|
|
WM_DeleteTimer(hTimerTime);
|
|
|
|
DisableAutoRefresh = 0;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case WM_INIT_DIALOG:
|
|
|
|
|
|
|
|
k_GetDate(&Date);
|
|
|
|
|
|
|
|
hTimerTime = WM_CreateTimer(pMsg->hWin, 0, 1000, 0);
|
|
|
|
CALENDAR_Create(pMsg->hWin,12, 12, 2015 + Date.Year, Date.Month, Date.Date, 2, ID_CALENDAR, WM_CF_SHOW);
|
|
|
|
CALENDAR_SetDefaultFont(CALENDAR_FI_CONTENT,GUI_FONT_10_1 );
|
|
|
|
CALENDAR_SetDefaultFont(CALENDAR_FI_HEADER, GUI_FONT_10_1);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_HOUR);
|
|
|
|
SPINBOX_SetRange(hItem, 0, 23);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_MINUTE);
|
|
|
|
SPINBOX_SetRange(hItem, 0, 59);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_SEC);
|
|
|
|
SPINBOX_SetRange(hItem, 0, 59);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case WM_PAINT:
|
|
|
|
if(DisableAutoRefresh == 0)
|
|
|
|
{
|
|
|
|
k_GetTime(&Time);
|
|
|
|
GUI_UpdateClock (220, 42, Time.Hours, Time.Minutes, Time.Seconds);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_HOUR);
|
|
|
|
SPINBOX_SetValue(hItem, Time.Hours);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_MINUTE);
|
|
|
|
SPINBOX_SetValue(hItem, Time.Minutes);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_SEC);
|
|
|
|
SPINBOX_SetValue(hItem, Time.Seconds);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_HOUR);
|
|
|
|
Time.Hours = SPINBOX_GetValue(hItem);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_MINUTE);
|
|
|
|
Time.Minutes = SPINBOX_GetValue(hItem);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_SEC);
|
|
|
|
Time.Seconds = SPINBOX_GetValue(hItem);
|
|
|
|
|
|
|
|
GUI_UpdateClock (220, 42, Time.Hours, Time.Minutes, Time.Seconds);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case WM_NOTIFY_PARENT:
|
|
|
|
Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */
|
|
|
|
NCode = pMsg->Data.v; /* Notification code */
|
|
|
|
switch (NCode) {
|
|
|
|
|
|
|
|
case WM_NOTIFICATION_CLICKED: /* React only if released */
|
|
|
|
switch (Id) {
|
|
|
|
case ID_SPINBOX_HOUR:
|
|
|
|
case ID_SPINBOX_MINUTE:
|
|
|
|
case ID_SPINBOX_SEC:
|
|
|
|
if(DisableAutoRefresh == 0)
|
|
|
|
{
|
|
|
|
DisableAutoRefresh = 1;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case WM_NOTIFICATION_RELEASED:
|
|
|
|
switch (Id) {
|
|
|
|
case ID_BUTTON_APPLYSETTINGS:
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_SEC);
|
|
|
|
Time.Seconds = SPINBOX_GetValue(hItem);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_MINUTE);
|
|
|
|
Time.Minutes = SPINBOX_GetValue(hItem);
|
|
|
|
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_HOUR);
|
|
|
|
Time.Hours = SPINBOX_GetValue(hItem);
|
|
|
|
|
|
|
|
k_SetTime(&Time);
|
|
|
|
hItem = WM_GetDialogItem(pMsg->hWin, ID_CALENDAR);
|
|
|
|
CALENDAR_GetSel (hItem, &hDate);
|
|
|
|
|
|
|
|
if((hDate.Day > 0) && (hDate.Day <= 31) &&
|
|
|
|
(hDate.Month > 0)&& (hDate.Month <= 12) &&
|
|
|
|
(hDate.Year >= 1900))
|
|
|
|
{
|
|
|
|
Date.Date = hDate.Day;
|
|
|
|
Date.Month = hDate.Month;
|
|
|
|
Date.Year = hDate.Year - 2015;
|
|
|
|
Date.WeekDay = 0;
|
|
|
|
k_SetDate(&Date);
|
|
|
|
}
|
|
|
|
DisableAutoRefresh = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
WM_DefaultProc(pMsg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @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, hDialog;
|
|
|
|
|
|
|
|
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_MULTIPAGE);
|
|
|
|
|
|
|
|
|
|
|
|
/* Create and attache the MULTIPAGE dialog windows */
|
|
|
|
hDialog = GUI_CreateDialogBox(_aDialogSystemInformation,
|
|
|
|
GUI_COUNTOF(_aDialogSystemInformation),
|
|
|
|
&_cbSystemInformation, WM_UNATTACHED, 0, 0);
|
|
|
|
MULTIPAGE_AddPage(hItem, hDialog, "System Information");
|
|
|
|
|
|
|
|
hDialog = GUI_CreateDialogBox(_aDialogGeneralSettings,
|
|
|
|
GUI_COUNTOF(_aDialogGeneralSettings),
|
|
|
|
&_cbGeneralSettings, WM_UNATTACHED, 0, 0);
|
|
|
|
MULTIPAGE_AddPage(hItem, hDialog, "General Settings");
|
|
|
|
|
|
|
|
hDialog = GUI_CreateDialogBox(_aDialogClockSettings,
|
|
|
|
GUI_COUNTOF(_aDialogClockSettings),
|
|
|
|
&_cbClockSettings, WM_UNATTACHED, 0, 0);
|
|
|
|
MULTIPAGE_AddPage(hItem, hDialog, "Clock Settings");
|
|
|
|
|
|
|
|
MULTIPAGE_SelectPage(hItem, 0);
|
|
|
|
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
WM_DefaultProc(pMsg);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief System info window Startup
|
|
|
|
* @param hWin: pointer to the parent handle.
|
|
|
|
* @param xpos: X position
|
|
|
|
* @param ypos: Y position
|
|
|
|
* @retval None
|
|
|
|
*/
|
|
|
|
static void Startup(WM_HWIN hWin, uint16_t xpos, uint16_t ypos)
|
|
|
|
{
|
|
|
|
GUI_CreateDialogBox(_aDialog, GUI_COUNTOF(_aDialog), _cbDialog, hWin, xpos, ypos);
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
|
|
|