Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BSP_DISCO_F746NG_patch_fixed LCD_DISCO_F746NG TS_DISCO_F746NG FATFileSystem TinyJpgDec_interwork mbed-src
Revision 7:dc29f6647486, committed 2015-11-12
- Comitter:
- the_sz
- Date:
- Thu Nov 12 21:21:48 2015 +0000
- Parent:
- 6:aa51cc3b9f90
- Child:
- 8:51e0f01d5c74
- Commit message:
- f746 patch used
Changed in this revision
--- a/BSP_DISCO_F746NG.lib Tue Nov 10 22:39:50 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -http://mbed.org/teams/ST/code/BSP_DISCO_F746NG/#1dacf9397f42
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BSP_DISCO_F746NG_patch.lib Thu Nov 12 21:21:48 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/NirT/code/BSP_DISCO_F746NG_patch/#bf157336ad2b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Config.cpp Thu Nov 12 21:21:48 2015 +0000
@@ -0,0 +1,82 @@
+#include "WakeupLight.h"
+
+//#define USE_RTC
+
+#define CT_MAGIC_VALUE 0x546865DF // 'Theß'
+
+#ifdef USE_RTC
+ uint32_t *rtcBackupRegisters;
+#else
+ uint32_t configSpace[CT_MAX];
+#endif
+
+void Config_Init(void)
+{
+ uint32_t index;
+
+ #ifdef USE_RTC
+
+ RTC_TypeDef *rtc;
+
+ rtc=(RTC_TypeDef *)RTC_BASE;
+ rtcBackupRegisters=(uint32_t *)&rtc->BKP0R;
+
+ if (rtcBackupRegisters[CT_MAGIC]!=CT_MAGIC_VALUE)
+ {
+ DPrintf("Config_Init: Reset config because of 0x%08X.\r\n",rtcBackupRegisters[CT_MAGIC]);
+
+ for (index=0;index<=CT_MAX;index++)
+ rtcBackupRegisters[index]=0;
+
+ rtcBackupRegisters[CT_MAGIC]=CT_MAGIC_VALUE;
+ }
+
+ #else
+
+ for (index=0;index<=CT_MAX;index++)
+ configSpace[index]=0;
+
+ configSpace[CT_MAGIC]=CT_MAGIC_VALUE;
+
+ #endif
+}
+
+uint32_t Config_Get(CONFIG_TYPE_ENUM type)
+{
+ if (type>CT_MAX)
+ return 0;
+
+ DPrintf_("Config_Get: %u -> 0x%X.\r\n",type,configSpace[type]);
+
+ #ifdef USE_RTC
+ return rtcBackupRegisters[type];
+ #else
+ return configSpace[type];
+ #endif
+}
+
+void Config_Set(CONFIG_TYPE_ENUM type,uint32_t value)
+{
+ if (type>CT_MAX)
+ return;
+
+ DPrintf_("Config_Set: %u -> 0x%X.\r\n",type,value);
+
+ #ifdef USE_RTC
+
+ RTC_TypeDef *rtc;
+
+ rtc=(RTC_TypeDef *)RTC_BASE;
+ rtc->WPR=0xCA;
+ rtc->WPR=0x53;
+
+ rtcBackupRegisters[type]=value;
+
+ rtc->WPR=0xFF;
+
+ #else
+
+ configSpace[type]=value;
+
+ #endif
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Config.h Thu Nov 12 21:21:48 2015 +0000
@@ -0,0 +1,43 @@
+#ifndef __Config_h
+#define __Config_h
+
+#define CONFIG_ALARM_MASK_MONDAY 0x0001
+#define CONFIG_ALARM_MASK_TUESDAY 0x0002
+#define CONFIG_ALARM_MASK_WEDNESDAY 0x0004
+#define CONFIG_ALARM_MASK_THURSDAY 0x0008
+#define CONFIG_ALARM_MASK_FRIDAY 0x0010
+#define CONFIG_ALARM_MASK_SATURDAY 0x0020
+#define CONFIG_ALARM_MASK_SUNDAY 0x0040
+#define CONFIG_ALARM_MASK_DAYS (CONFIG_ALARM_MASK_MONDAY | CONFIG_ALARM_MASK_TUESDAY | CONFIG_ALARM_MASK_WEDNESDAY | CONFIG_ALARM_MASK_THURSDAY | CONFIG_ALARM_MASK_FRIDAY | CONFIG_ALARM_MASK_SATURDAY | CONFIG_ALARM_MASK_SUNDAY)
+
+typedef enum
+{
+ CT_MAGIC,
+
+ CT_ALARM_1_TIME,
+ CT_ALARM_1_MASK,
+
+ CT_ALARM_2_TIME,
+ CT_ALARM_2_MASK,
+
+ CT_ALARM_3_TIME,
+ CT_ALARM_3_MASK,
+
+ CT_ALARM_4_TIME,
+ CT_ALARM_4_MASK,
+
+ CT_ALARM_5_TIME,
+ CT_ALARM_5_MASK,
+
+ CT_ALARM_6_TIME,
+ CT_ALARM_6_MASK,
+
+ CT_MAX=RTC_BKP_DR31
+
+} CONFIG_TYPE_ENUM;
+
+void Config_Init(void);
+uint32_t Config_Get(CONFIG_TYPE_ENUM type);
+void Config_Set(CONFIG_TYPE_ENUM type,uint32_t value);
+
+#endif
--- a/Images/ic_alarm_white_48dp_1x.h Tue Nov 10 22:39:50 2015 +0000
+++ b/Images/ic_alarm_white_48dp_1x.h Thu Nov 12 21:21:48 2015 +0000
@@ -3,6 +3,7 @@
// generated by BIN 2 Header
+// alarm clock
BYTE ic_alarm_white_48dp_1x[]=
{
0x42, 0x4D, 0x8A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x7C, 0x00,
--- a/Images/ic_navigate_before_white_24dp_1x.h Tue Nov 10 22:39:50 2015 +0000
+++ b/Images/ic_navigate_before_white_24dp_1x.h Thu Nov 12 21:21:48 2015 +0000
@@ -3,6 +3,7 @@
// generated by BIN 2 Header
+// back
BYTE ic_navigate_before_white_24dp_1x[]=
{
0x42, 0x4D, 0x8A, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x7C, 0x00,
--- a/Images/ic_notifications_none_white_48dp_1x.h Tue Nov 10 22:39:50 2015 +0000
+++ b/Images/ic_notifications_none_white_48dp_1x.h Thu Nov 12 21:21:48 2015 +0000
@@ -3,6 +3,7 @@
// generated by BIN 2 Header
+// bell
BYTE ic_notifications_none_white_48dp_1x[]=
{
0x42, 0x4D, 0x8A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x7C, 0x00,
--- a/Images/ic_query_builder_white_48dp_1x.h Tue Nov 10 22:39:50 2015 +0000
+++ b/Images/ic_query_builder_white_48dp_1x.h Thu Nov 12 21:21:48 2015 +0000
@@ -3,6 +3,7 @@
// generated by BIN 2 Header
+// clock
BYTE ic_query_builder_white_48dp_1x[]=
{
0x42, 0x4D, 0x8A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x7C, 0x00,
--- a/UI.cpp Tue Nov 10 22:39:50 2015 +0000
+++ b/UI.cpp Thu Nov 12 21:21:48 2015 +0000
@@ -1,48 +1,51 @@
#include "WakeupLight.h"
-#include "Images/ic_alarm_white_48dp_1x.h"
#include "Images/ic_navigate_before_white_24dp_1x.h"
#include "Images/ic_notifications_none_white_48dp_1x.h"
#include "Images/ic_query_builder_white_48dp_1x.h"
-#define CLIENT_COLOR_BG ((uint32_t)0xFF000000)
-#define CLIENT_COLOR_FG ((uint32_t)0xFFD0D0D0)
+#define CLIENT_COLOR_BG ((uint32_t)0xFF000000)
+#define CLIENT_COLOR_FG ((uint32_t)0xFFD0D0D0)
-#define HEADER_HEIGHT 25
-#define HEADER_COLOR_BG ((uint32_t)0xFF404040)
-#define HEADER_COLOR_FG ((uint32_t)0xFFD3D3D3)
+#define HEADER_HEIGHT 25
+#define HEADER_COLOR_BG ((uint32_t)0xFF404040)
+#define HEADER_COLOR_FG ((uint32_t)0xFFD3D3D3)
+
+#define CLOCK_COLOR_BG ((uint32_t)0xFF000000)
+#define CLOCK_COLOR_FG ((uint32_t)0xFF707070)
-#define CLOCK_COLOR_BG ((uint32_t)0xFF000000)
-#define CLOCK_COLOR_FG ((uint32_t)0xFF707070)
-
-#define BUTTON_WIDTH 100
-#define BUTTON_HEIGHT 60
-#define BUTTON_COLOR_BG ((uint32_t)0x00000000)
-#define BUTTON_COLOR_FG CLIENT_COLOR_FG
-#define BUTTON_COLOR_BG_START 0x0C2696
-#define BUTTON_COLOR_BG_END 0x07185E
-
-#define COLOR_BG ((uint32_t)0xFF000000)
+#define BUTTON_WIDTH 100
+#define BUTTON_HEIGHT 60
+#define BUTTON_SMALL_WIDTH 50
+#define BUTTON_SMALL_HEIGHT 40
+#define BUTTON_COLOR_BG ((uint32_t)0x00000000)
+#define BUTTON_COLOR_FG CLIENT_COLOR_FG
+#define BUTTON_COLOR_BG_START 0x0C2696
+#define BUTTON_COLOR_BG_END 0x07185E
+#define BUTTON_COLOR_BG_START_INACTIVE 0x515151
+#define BUTTON_COLOR_BG_END_INACTIVE 0x333333
-#define MAX_BOXES_PER_LINE 3
-#define BOX_SPACING 10
-#define BOX_TEXT_SPACING 10
-#define BOX_COLOR_BG BUTTON_COLOR_BG
-#define BOX_COLOR_FG CLIENT_COLOR_FG
-#define BOX_COLOR_BG_START BUTTON_COLOR_BG_START
-#define BOX_COLOR_BG_END BUTTON_COLOR_BG_END
+#define COLOR_BG ((uint32_t)0xFF000000)
+
+#define MAX_BOXES_PER_LINE 3
+#define BOX_SPACING 10
+#define BOX_TEXT_SPACING 10
+#define BOX_COLOR_BG BUTTON_COLOR_BG
+#define BOX_COLOR_FG CLIENT_COLOR_FG
+#define BOX_COLOR_BG_START BUTTON_COLOR_BG_START
+#define BOX_COLOR_BG_END BUTTON_COLOR_BG_END
-LCD_DISCO_F746NG uiLcd;
-TS_DISCO_F746NG uiTs;
-uint16_t uiLastTouchX;
-uint16_t uiLastTouchY;
-UI_STRUCT *uiCurrent=NULL;
-UI_STRUCT uiClock;
-UI_STRUCT uiClockInWords;
-UI_STRUCT uiColorTest;
-UI_STRUCT uiWakeup;
-UI_STRUCT uiMain;
-UI_BOX_LIST_ITEM_STRUCT uiMainItems[]=
+LCD_DISCO_F746NG uiLcd;
+TS_DISCO_F746NG uiTs;
+uint16_t uiLastTouchX;
+uint16_t uiLastTouchY;
+UI_STRUCT *uiCurrent=NULL;
+UI_STRUCT uiClock;
+UI_STRUCT uiClockInWords;
+UI_STRUCT uiColorTest;
+UI_STRUCT uiWakeup;
+UI_STRUCT uiMain;
+static UI_BOX_LIST_ITEM_STRUCT uiMainItems[]=
{
{ "Clock", ic_query_builder_white_48dp_1x }, { "Clock\nWith Words", ic_query_builder_white_48dp_1x }, { "Adjust\nTimers", ic_notifications_none_white_48dp_1x }, { "Lights On", NULL }, { "Lights Off", NULL }, { "Color Test", NULL }
};
@@ -92,7 +95,7 @@
charWidth=uiLcd.GetFont()->Width;
x+=((width-(strlen(text)*charWidth))/2);
- y+=((height-charHeight)/2);
+ y+=(((height-charHeight)/2)+3); // +3 to have it more centered
while ((*text)!='\0')
{
@@ -138,17 +141,25 @@
}
}
-void UI_ShowDrawButton(uint16_t x,uint16_t y,char *text)
+void UI_ShowDrawButtonEx(uint16_t x,uint16_t y,uint16_t width,uint16_t height,char *text,bool active)
{
// paint button background
- UI_ShowDrawGradientButton(x,y,BUTTON_WIDTH,BUTTON_HEIGHT,BUTTON_COLOR_BG_START,BUTTON_COLOR_BG_END);
+ if (active==true)
+ UI_ShowDrawGradientButton(x,y,width,height,BUTTON_COLOR_BG_START,BUTTON_COLOR_BG_END);
+ else
+ UI_ShowDrawGradientButton(x,y,width,height,BUTTON_COLOR_BG_START_INACTIVE,BUTTON_COLOR_BG_END_INACTIVE);
// paint button text
uiLcd.SetFont(&display_font_12x22);
uiLcd.SetBackColor(BUTTON_COLOR_BG);
uiLcd.SetTextColor(BUTTON_COLOR_FG);
- UI_ShowDisplayTextCenter(x,y,BUTTON_WIDTH,BUTTON_HEIGHT,text);
+ UI_ShowDisplayTextCenter(x,y,width,height,text);
+}
+
+void UI_ShowDrawButton(uint16_t x,uint16_t y,uint16_t width,uint16_t height,char *text)
+{
+ UI_ShowDrawButtonEx(x,y,width,height,text,true);
}
void UI_DrawBitmapWithAlpha(uint32_t Xpos,uint32_t Ypos,uint8_t *pbmp)
@@ -272,8 +283,6 @@
// draw icon
if (uiCurrent->data.boxList.items[box].image!=NULL)
UI_DrawBitmapWithAlpha(startX+width-BOX_SPACING-48,startY+height-BOX_SPACING-48,uiCurrent->data.boxList.items[box].image);
-// uiLcd.DrawBitmap(0,0,uiCurrent->data.boxList.items[box].image);
-// uiLcd.DrawBitmap(startX+width-BOX_SPACING-48,startY+height-BOX_SPACING-48,uiCurrent->data.boxList.items[box].image);
}
}
}
@@ -418,24 +427,82 @@
// fill background
UI_ShowClearClientRect();
- if (uiCurrent->data.valueAdjust.count==4)
+ if (uiCurrent->data.valueAdjust.count==10)
{
- UI_ShowDrawButton(17+(0*(BUTTON_WIDTH+15)),40,"+");
- UI_ShowDrawButton(17+(1*(BUTTON_WIDTH+15)),40,"+");
- UI_ShowDrawButton(17+(2*(BUTTON_WIDTH+15)),40,"+");
- UI_ShowDrawButton(17+(3*(BUTTON_WIDTH+15)),40,"+");
+ UI_ShowDrawButton(60+(0*(BUTTON_WIDTH+15)),40,BUTTON_WIDTH,BUTTON_HEIGHT,"+");
+ UI_ShowDrawButton(205+(0*(BUTTON_WIDTH+15)),40,BUTTON_WIDTH,BUTTON_HEIGHT,"+");
+ UI_ShowDrawButton(205+(1*(BUTTON_WIDTH+15)),40,BUTTON_WIDTH,BUTTON_HEIGHT,"+");
+
+ UI_ShowDisplayTextCenter(132,92,BUTTON_WIDTH,BUTTON_HEIGHT,":");
- UI_ShowDrawButton(17+(0*(BUTTON_WIDTH+15)),205,"-");
- UI_ShowDrawButton(17+(1*(BUTTON_WIDTH+15)),205,"-");
- UI_ShowDrawButton(17+(2*(BUTTON_WIDTH+15)),205,"-");
- UI_ShowDrawButton(17+(3*(BUTTON_WIDTH+15)),205,"-");
+ UI_ShowDrawButton(60+(0*(BUTTON_WIDTH+15)),140,BUTTON_WIDTH,BUTTON_HEIGHT,"-");
+ UI_ShowDrawButton(205+(0*(BUTTON_WIDTH+15)),140,BUTTON_WIDTH,BUTTON_HEIGHT,"-");
+ UI_ShowDrawButton(205+(1*(BUTTON_WIDTH+15)),140,BUTTON_WIDTH,BUTTON_HEIGHT,"-");
+ }
+ else if (uiCurrent->data.valueAdjust.count==4)
+ {
+ UI_ShowDrawButton(17+(0*(BUTTON_WIDTH+15)),40,BUTTON_WIDTH,BUTTON_HEIGHT,"+");
+ UI_ShowDrawButton(17+(1*(BUTTON_WIDTH+15)),40,BUTTON_WIDTH,BUTTON_HEIGHT,"+");
+ UI_ShowDrawButton(17+(2*(BUTTON_WIDTH+15)),40,BUTTON_WIDTH,BUTTON_HEIGHT,"+");
+ UI_ShowDrawButton(17+(3*(BUTTON_WIDTH+15)),40,BUTTON_WIDTH,BUTTON_HEIGHT,"+");
+
+ UI_ShowDrawButton(17+(0*(BUTTON_WIDTH+15)),205,BUTTON_WIDTH,BUTTON_HEIGHT,"-");
+ UI_ShowDrawButton(17+(1*(BUTTON_WIDTH+15)),205,BUTTON_WIDTH,BUTTON_HEIGHT,"-");
+ UI_ShowDrawButton(17+(2*(BUTTON_WIDTH+15)),205,BUTTON_WIDTH,BUTTON_HEIGHT,"-");
+ UI_ShowDrawButton(17+(3*(BUTTON_WIDTH+15)),205,BUTTON_WIDTH,BUTTON_HEIGHT,"-");
}
}
uiLcd.SetBackColor(CLIENT_COLOR_BG);
uiLcd.SetTextColor(CLIENT_COLOR_FG);
- if (uiCurrent->data.valueAdjust.count==4)
+ if (uiCurrent->data.valueAdjust.count==10)
+ {
+ snprintf(buffer,sizeof(buffer),"% 2u",uiCurrent->data.valueAdjust.values[0]);
+ UI_ShowDisplayTextCenter(60+(0*(BUTTON_WIDTH+15)),92,BUTTON_WIDTH,BUTTON_HEIGHT,buffer);
+
+ snprintf(buffer,sizeof(buffer),"%u",uiCurrent->data.valueAdjust.values[1]);
+ UI_ShowDisplayTextCenter(205+(0*(BUTTON_WIDTH+15)),92,BUTTON_WIDTH,BUTTON_HEIGHT,buffer);
+
+ snprintf(buffer,sizeof(buffer),"%u",uiCurrent->data.valueAdjust.values[2]);
+ UI_ShowDisplayTextCenter(205+(1*(BUTTON_WIDTH+15)),92,BUTTON_WIDTH,BUTTON_HEIGHT,buffer);
+
+ if (uiCurrent->data.valueAdjust.values[3]==1)
+ UI_ShowDrawButton(17+(0*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Mo");
+ else
+ UI_ShowDrawButtonEx(17+(0*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Mo",false);
+
+ if (uiCurrent->data.valueAdjust.values[4]==1)
+ UI_ShowDrawButton(17+(1*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Di");
+ else
+ UI_ShowDrawButtonEx(17+(1*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Di",false);
+
+ if (uiCurrent->data.valueAdjust.values[5]==1)
+ UI_ShowDrawButton(17+(2*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Mi");
+ else
+ UI_ShowDrawButtonEx(17+(2*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Mi",false);
+
+ if (uiCurrent->data.valueAdjust.values[6]==1)
+ UI_ShowDrawButton(17+(3*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Do");
+ else
+ UI_ShowDrawButtonEx(17+(3*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Do",false);
+
+ if (uiCurrent->data.valueAdjust.values[7]==1)
+ UI_ShowDrawButton(17+(4*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Fr");
+ else
+ UI_ShowDrawButtonEx(17+(4*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Fr",false);
+
+ if (uiCurrent->data.valueAdjust.values[8]==1)
+ UI_ShowDrawButton(17+(5*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Sa");
+ else
+ UI_ShowDrawButtonEx(17+(5*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"Sa",false);
+
+ if (uiCurrent->data.valueAdjust.values[9]==1)
+ UI_ShowDrawButton(17+(6*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"So");
+ else
+ UI_ShowDrawButtonEx(17+(6*(BUTTON_SMALL_WIDTH+15)),215,BUTTON_SMALL_WIDTH,BUTTON_SMALL_HEIGHT,"So",false);
+ }
+ else if (uiCurrent->data.valueAdjust.count==4)
{
snprintf(buffer,sizeof(buffer),"0x%02X",uiCurrent->data.valueAdjust.values[0]);
UI_ShowDisplayTextCenter(17+(0*(BUTTON_WIDTH+15)),125,BUTTON_WIDTH,BUTTON_HEIGHT,buffer);
@@ -458,7 +525,45 @@
// detect at which button was clicked
index=-1;
- if (uiCurrent->data.valueAdjust.count==4)
+ if (uiCurrent->data.valueAdjust.count==10)
+ {
+ if ((y>=40) && (y<(40+BUTTON_HEIGHT)))
+ {
+ if ((x>=(60+(0*(BUTTON_WIDTH+15)))) && (x<(17+(0*(BUTTON_WIDTH+15))+BUTTON_WIDTH)))
+ index=0;
+ else if ((x>=(205+(0*(BUTTON_WIDTH+15)))) && (x<(205+(0*(BUTTON_WIDTH+15))+BUTTON_WIDTH)))
+ index=1;
+ else if ((x>=(205+(1*(BUTTON_WIDTH+15)))) && (x<(205+(1*(BUTTON_WIDTH+15))+BUTTON_WIDTH)))
+ index=2;
+ }
+ else if ((y>=140) && (y<(140+BUTTON_HEIGHT)))
+ {
+ if ((x>=(60+(0*(BUTTON_WIDTH+15)))) && (x<(60+(0*(BUTTON_WIDTH+15))+BUTTON_WIDTH)))
+ index=3;
+ else if ((x>=(205+(0*(BUTTON_WIDTH+15)))) && (x<(205+(0*(BUTTON_WIDTH+15))+BUTTON_WIDTH)))
+ index=4;
+ else if ((x>=(205+(1*(BUTTON_WIDTH+15)))) && (x<(205+(1*(BUTTON_WIDTH+15))+BUTTON_WIDTH)))
+ index=5;
+ }
+ else if ((y>=215) && (y<(215+BUTTON_SMALL_HEIGHT)))
+ {
+ if ((x>=(17+(0*(BUTTON_SMALL_WIDTH+15)))) && (x<(17+(0*(BUTTON_SMALL_WIDTH+15))+BUTTON_SMALL_WIDTH)))
+ index=6;
+ else if ((x>=(17+(1*(BUTTON_SMALL_WIDTH+15)))) && (x<(17+(1*(BUTTON_SMALL_WIDTH+15))+BUTTON_SMALL_WIDTH)))
+ index=7;
+ else if ((x>=(17+(2*(BUTTON_SMALL_WIDTH+15)))) && (x<(17+(2*(BUTTON_SMALL_WIDTH+15))+BUTTON_SMALL_WIDTH)))
+ index=8;
+ else if ((x>=(17+(3*(BUTTON_SMALL_WIDTH+15)))) && (x<(17+(3*(BUTTON_SMALL_WIDTH+15))+BUTTON_SMALL_WIDTH)))
+ index=9;
+ else if ((x>=(17+(4*(BUTTON_SMALL_WIDTH+15)))) && (x<(17+(4*(BUTTON_SMALL_WIDTH+15))+BUTTON_SMALL_WIDTH)))
+ index=10;
+ else if ((x>=(17+(5*(BUTTON_SMALL_WIDTH+15)))) && (x<(17+(5*(BUTTON_SMALL_WIDTH+15))+BUTTON_SMALL_WIDTH)))
+ index=11;
+ else if ((x>=(17+(6*(BUTTON_SMALL_WIDTH+15)))) && (x<(17+(6*(BUTTON_SMALL_WIDTH+15))+BUTTON_SMALL_WIDTH)))
+ index=12;
+ }
+ }
+ else if (uiCurrent->data.valueAdjust.count==4)
{
if ((y>=40) && (y<(40+BUTTON_HEIGHT)))
{
@@ -513,9 +618,6 @@
uiClockInWords.flags=UI_FLAG_TYPE_CLOCK_IN_WORDS;
uiClockInWords.handler=NULL;
- uiWakeup.flags=UI_FLAG_TYPE_BOX_LIST;
- uiWakeup.handler=UI_WakeupHandler;
-
uiColorTest.flags=UI_FLAG_TYPE_VALUE_ADJUST;
uiColorTest.handler=UI_ColorTestHandler;
uiColorTest.data.valueAdjust.count=4;
--- a/UI.h Tue Nov 10 22:39:50 2015 +0000
+++ b/UI.h Thu Nov 12 21:21:48 2015 +0000
@@ -48,7 +48,7 @@
struct
{
uint8_t count;
- uint32_t values[4];
+ int32_t values[10];
} valueAdjust;
@@ -69,6 +69,8 @@
void UI_MainHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui);
void UI_WakeupHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui);
+void UI_WakeupShow(void);
+
void UI_ColorTestHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui);
#endif
--- a/UI_ColorTest.cpp Tue Nov 10 22:39:50 2015 +0000
+++ b/UI_ColorTest.cpp Thu Nov 12 21:21:48 2015 +0000
@@ -10,11 +10,9 @@
DPrintf_("UI_ColorTestHandler: %u.\r\n",index);
if (index==-1)
{
+ LED_SetColor(0x00000000);
UI_Show(&uiMain);
- uiColorTest.data.valueAdjust.values[0]=0;
- uiColorTest.data.valueAdjust.values[1]=0;
- uiColorTest.data.valueAdjust.values[2]=0;
- uiColorTest.data.valueAdjust.values[3]=0;
+ break;
}
else if (index==0)
uiColorTest.data.valueAdjust.values[0]=(uiColorTest.data.valueAdjust.values[0]+0x10) & 0xFF;
@@ -32,12 +30,14 @@
uiColorTest.data.valueAdjust.values[2]=(uiColorTest.data.valueAdjust.values[2]-0x10) & 0xFF;
else if (index==7)
uiColorTest.data.valueAdjust.values[3]=(uiColorTest.data.valueAdjust.values[3]-0x10) & 0xFF;
- // fall through
-
- case UR_SHOW:
color=COLOR_CREATE(uiColorTest.data.valueAdjust.values[0],uiColorTest.data.valueAdjust.values[1],uiColorTest.data.valueAdjust.values[2],uiColorTest.data.valueAdjust.values[3]);
DPrintf_("UI_ColorTestHandler: Color: 0x%08X.\r\n",color);
LED_SetColor(color);
break;
+
+ case UR_SHOW:
+ color=COLOR_CREATE(uiColorTest.data.valueAdjust.values[0],uiColorTest.data.valueAdjust.values[1],uiColorTest.data.valueAdjust.values[2],uiColorTest.data.valueAdjust.values[3]);
+ LED_SetColor(color);
+ break;
}
}
--- a/UI_Main.cpp Tue Nov 10 22:39:50 2015 +0000
+++ b/UI_Main.cpp Thu Nov 12 21:21:48 2015 +0000
@@ -1,6 +1,14 @@
#include "WakeupLight.h"
+typedef enum
+{
+ LUS_CLOCK,
+ LUS_CLOCK_IN_WORDS,
+
+} LAST_USED_SCREENSAVER_ENUM;
+
int32_t timeOut;
+LAST_USED_SCREENSAVER_ENUM lastUsedScreensaver=LUS_CLOCK;
void UI_MainHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui)
{
@@ -8,11 +16,17 @@
{
case UR_CLICK:
if (index==0)
+ {
+ lastUsedScreensaver=LUS_CLOCK;
UI_Show(&uiClock);
+ }
else if (index==1)
+ {
+ lastUsedScreensaver=LUS_CLOCK_IN_WORDS;
UI_Show(&uiClockInWords);
+ }
else if (index==2)
- UI_Show(&uiWakeup);
+ UI_WakeupShow();
else if (index==3)
LED_StartAnimation(LAE_WAKEUP);
else if (index==4)
@@ -23,7 +37,13 @@
case UR_TIMER:
if ((time(NULL)-timeOut)>10)
- UI_Show(&uiClock);
+ {
+ switch (lastUsedScreensaver)
+ {
+ case LUS_CLOCK: UI_Show(&uiClock); break;
+ case LUS_CLOCK_IN_WORDS: UI_Show(&uiClockInWords); break;
+ }
+ }
break;
case UR_SHOW:
--- a/UI_Wakup.cpp Tue Nov 10 22:39:50 2015 +0000
+++ b/UI_Wakup.cpp Thu Nov 12 21:21:48 2015 +0000
@@ -1,13 +1,207 @@
#include "WakeupLight.h"
+#include "Images/ic_alarm_white_48dp_1x.h"
+
+#define ALARM_NAME_LENGTH 20
+
+char alarm1[ALARM_NAME_LENGTH];
+char alarm2[ALARM_NAME_LENGTH];
+char alarm3[ALARM_NAME_LENGTH];
+char alarm4[ALARM_NAME_LENGTH];
+char alarm5[ALARM_NAME_LENGTH];
+char alarm6[ALARM_NAME_LENGTH];
+CONFIG_TYPE_ENUM currentConfigTime;
+CONFIG_TYPE_ENUM currentConfigMask;
+UI_STRUCT uiWakeupAdjust;
+UI_BOX_LIST_ITEM_STRUCT uiWakeupItems[]=
+{
+ { alarm1, NULL }, { alarm2, NULL }, { alarm3, NULL }, { alarm4, NULL }, { alarm5, NULL }, { alarm6, NULL }
+};
+
+void UI_WakeupAdjustHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui)
+{
+ switch (reason)
+ {
+ case UR_CLICK:
+ DPrintf_("UI_WakeupAdjustHandler: %u.\r\n",index);
+ if (index==-1)
+ {
+ uint32_t value;
+
+ Config_Set(currentConfigTime,((uiWakeupAdjust.data.valueAdjust.values[0] << 8) | ((uiWakeupAdjust.data.valueAdjust.values[1] * 10) + uiWakeupAdjust.data.valueAdjust.values[2])));
+
+ value=0;
+ if (uiWakeupAdjust.data.valueAdjust.values[3]!=0)
+ value|=CONFIG_ALARM_MASK_MONDAY;
+ if (uiWakeupAdjust.data.valueAdjust.values[4]!=0)
+ value|=CONFIG_ALARM_MASK_TUESDAY;
+ if (uiWakeupAdjust.data.valueAdjust.values[5]!=0)
+ value|=CONFIG_ALARM_MASK_WEDNESDAY;
+ if (uiWakeupAdjust.data.valueAdjust.values[6]!=0)
+ value|=CONFIG_ALARM_MASK_THURSDAY;
+ if (uiWakeupAdjust.data.valueAdjust.values[7]!=0)
+ value|=CONFIG_ALARM_MASK_FRIDAY;
+ if (uiWakeupAdjust.data.valueAdjust.values[8]!=0)
+ value|=CONFIG_ALARM_MASK_SATURDAY;
+ if (uiWakeupAdjust.data.valueAdjust.values[9]!=0)
+ value|=CONFIG_ALARM_MASK_SUNDAY;
+ Config_Set(currentConfigMask,value);
+
+ UI_WakeupShow();
+ break;
+ }
+ else if (index==0)
+ {
+ uiWakeupAdjust.data.valueAdjust.values[0]++;
+ if (uiWakeupAdjust.data.valueAdjust.values[0]>=23)
+ uiWakeupAdjust.data.valueAdjust.values[0]=0;
+ }
+ else if (index==1)
+ {
+ uiWakeupAdjust.data.valueAdjust.values[1]++;
+ if (uiWakeupAdjust.data.valueAdjust.values[1]>=6)
+ uiWakeupAdjust.data.valueAdjust.values[1]=0;
+ }
+ else if (index==2)
+ {
+ uiWakeupAdjust.data.valueAdjust.values[2]++;
+ if (uiWakeupAdjust.data.valueAdjust.values[2]>=10)
+ uiWakeupAdjust.data.valueAdjust.values[2]=0;
+ }
+ else if (index==3)
+ {
+ uiWakeupAdjust.data.valueAdjust.values[0]--;
+ if (uiWakeupAdjust.data.valueAdjust.values[0]<0)
+ uiWakeupAdjust.data.valueAdjust.values[0]=23;
+ }
+ else if (index==4)
+ {
+ uiWakeupAdjust.data.valueAdjust.values[1]--;
+ if (uiWakeupAdjust.data.valueAdjust.values[1]<0)
+ uiWakeupAdjust.data.valueAdjust.values[1]=5;
+ }
+ else if (index==5)
+ {
+ uiWakeupAdjust.data.valueAdjust.values[2]--;
+ if (uiWakeupAdjust.data.valueAdjust.values[2]<0)
+ uiWakeupAdjust.data.valueAdjust.values[2]=9;
+ }
+ else if ((index>=6) && (index<=12))
+ {
+ if (uiWakeupAdjust.data.valueAdjust.values[index-3]==0)
+ uiWakeupAdjust.data.valueAdjust.values[index-3]=1;
+ else
+ uiWakeupAdjust.data.valueAdjust.values[index-3]=0;
+ }
+ break;
+
+ case UR_SHOW:
+ break;
+ }
+}
+
void UI_WakeupHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui)
{
switch (reason)
{
case UR_CLICK:
+ if (index==-1)
+ {
+ // back button
+ UI_Show(&uiMain);
+ }
+ else
+ {
+ // adjust timer
+ uint32_t value;
+
+ switch (index)
+ {
+ case 0: currentConfigTime=CT_ALARM_1_TIME; currentConfigMask=CT_ALARM_1_MASK; break;
+ case 1: currentConfigTime=CT_ALARM_2_TIME; currentConfigMask=CT_ALARM_2_MASK; break;
+ case 2: currentConfigTime=CT_ALARM_3_TIME; currentConfigMask=CT_ALARM_3_MASK; break;
+ case 3: currentConfigTime=CT_ALARM_4_TIME; currentConfigMask=CT_ALARM_4_MASK; break;
+ case 4: currentConfigTime=CT_ALARM_5_TIME; currentConfigMask=CT_ALARM_5_MASK; break;
+ case 5: currentConfigTime=CT_ALARM_6_TIME; currentConfigMask=CT_ALARM_6_MASK; break;
+ }
+
+ memset(&uiWakeupAdjust,0,sizeof(uiWakeupAdjust));
+ uiWakeupAdjust.flags=UI_FLAG_TYPE_VALUE_ADJUST;
+ uiWakeupAdjust.handler=UI_WakeupAdjustHandler;
+ uiWakeupAdjust.data.valueAdjust.count=10;
+
+ value=Config_Get(currentConfigTime);
+ uiWakeupAdjust.data.valueAdjust.values[0]=((value >> 8) & 0xFF);
+ uiWakeupAdjust.data.valueAdjust.values[1]=((value & 0xFF) / 10);
+ uiWakeupAdjust.data.valueAdjust.values[2]=((value & 0xFF) % 10);
+
+ value=Config_Get(currentConfigMask);
+ if (value==0)
+ value=CONFIG_ALARM_MASK_MONDAY | CONFIG_ALARM_MASK_TUESDAY | CONFIG_ALARM_MASK_WEDNESDAY | CONFIG_ALARM_MASK_THURSDAY | CONFIG_ALARM_MASK_FRIDAY;
+ if ((value & CONFIG_ALARM_MASK_MONDAY)!=0)
+ uiWakeupAdjust.data.valueAdjust.values[3]=1;
+ if ((value & CONFIG_ALARM_MASK_TUESDAY)!=0)
+ uiWakeupAdjust.data.valueAdjust.values[4]=1;
+ if ((value & CONFIG_ALARM_MASK_WEDNESDAY)!=0)
+ uiWakeupAdjust.data.valueAdjust.values[5]=1;
+ if ((value & CONFIG_ALARM_MASK_THURSDAY)!=0)
+ uiWakeupAdjust.data.valueAdjust.values[6]=1;
+ if ((value & CONFIG_ALARM_MASK_FRIDAY)!=0)
+ uiWakeupAdjust.data.valueAdjust.values[7]=1;
+ if ((value & CONFIG_ALARM_MASK_SATURDAY)!=0)
+ uiWakeupAdjust.data.valueAdjust.values[8]=1;
+ if ((value & CONFIG_ALARM_MASK_SUNDAY)!=0)
+ uiWakeupAdjust.data.valueAdjust.values[9]=1;
+
+ UI_Show(&uiWakeupAdjust);
+ }
break;
case UR_TIMER:
break;
}
}
+
+void UI_WakeupAddAlarm(uint32_t index,CONFIG_TYPE_ENUM configTime,CONFIG_TYPE_ENUM configMask,bool *addAdded)
+{
+ uint32_t alarmTime;
+
+ if ((Config_Get(configMask) & CONFIG_ALARM_MASK_DAYS)!=0)
+ {
+ // alarm enabled
+ alarmTime=Config_Get(configTime);
+ snprintf(uiWakeupItems[index].name,ALARM_NAME_LENGTH,"%u:%02u",((alarmTime >> 8) & 0xFF),(alarmTime & 0xFF));
+ uiWakeup.data.boxList.count++;
+ }
+ else
+ {
+ // alarm disabled
+ if ((*addAdded)==false)
+ {
+ snprintf(uiWakeupItems[index].name,ALARM_NAME_LENGTH,"New");
+ uiWakeupItems[index].image=ic_alarm_white_48dp_1x;
+ uiWakeup.data.boxList.count++;
+ (*addAdded)=true;
+ }
+ }
+}
+
+void UI_WakeupShow(void)
+{
+ bool addAdded;
+
+ uiWakeup.flags=UI_FLAG_TYPE_BOX_LIST | UI_FLAG_HAS_BACK_BUTTON;
+ uiWakeup.handler=UI_WakeupHandler;
+ uiWakeup.data.boxList.items=uiWakeupItems;
+ uiWakeup.data.boxList.count=0;
+
+ addAdded=false;
+ UI_WakeupAddAlarm(0,CT_ALARM_1_TIME,CT_ALARM_1_MASK,&addAdded);
+ UI_WakeupAddAlarm(1,CT_ALARM_2_TIME,CT_ALARM_2_MASK,&addAdded);
+ UI_WakeupAddAlarm(2,CT_ALARM_3_TIME,CT_ALARM_3_MASK,&addAdded);
+ UI_WakeupAddAlarm(3,CT_ALARM_4_TIME,CT_ALARM_4_MASK,&addAdded);
+ UI_WakeupAddAlarm(4,CT_ALARM_5_TIME,CT_ALARM_5_MASK,&addAdded);
+ UI_WakeupAddAlarm(5,CT_ALARM_6_TIME,CT_ALARM_6_MASK,&addAdded);
+
+ UI_Show(&uiWakeup);
+}
--- a/WakeupLight.h Tue Nov 10 22:39:50 2015 +0000 +++ b/WakeupLight.h Thu Nov 12 21:21:48 2015 +0000 @@ -16,6 +16,7 @@ #include "OnBoardLED.h" #include "LED.h" #include "UI.h" +#include "Config.h" #include "Fonts/display_fonts.h" #include "debug.h"
--- a/main.cpp Tue Nov 10 22:39:50 2015 +0000
+++ b/main.cpp Thu Nov 12 21:21:48 2015 +0000
@@ -1,5 +1,68 @@
#include "WakeupLight.h"
+int lastCheckedMinute=-1;
+
+void checkForAlarmSpecified(struct tm *tmStruct,CONFIG_TYPE_ENUM typeTime,CONFIG_TYPE_ENUM typeFlags)
+{
+ uint32_t value;
+ bool checkTime;
+
+ value=Config_Get(typeFlags);
+ if (value!=0)
+ {
+ checkTime=false;
+
+ DPrintf("checkForAlarmSpecified: %u.\r\n",tmStruct->tm_wday);
+
+ if (((value & CONFIG_ALARM_MASK_MONDAY)!=0) && (tmStruct->tm_wday==1))
+ checkTime=true;
+ if (((value & CONFIG_ALARM_MASK_TUESDAY)!=0) && (tmStruct->tm_wday==2))
+ checkTime=true;
+ if (((value & CONFIG_ALARM_MASK_WEDNESDAY)!=0) && (tmStruct->tm_wday==3))
+ checkTime=true;
+ if (((value & CONFIG_ALARM_MASK_THURSDAY)!=0) && (tmStruct->tm_wday==4))
+ checkTime=true;
+ if (((value & CONFIG_ALARM_MASK_FRIDAY)!=0) && (tmStruct->tm_wday==5))
+ checkTime=true;
+ if (((value & CONFIG_ALARM_MASK_SATURDAY)!=0) && (tmStruct->tm_wday==6))
+ checkTime=true;
+ if (((value & CONFIG_ALARM_MASK_SUNDAY)!=0) && (tmStruct->tm_wday==0))
+ checkTime=true;
+
+ if (checkTime==true)
+ {
+ value=Config_Get(typeTime);
+ if (value==((tmStruct->tm_hour << 8) | (tmStruct->tm_min)))
+ {
+ DPrintf("checkForAlarmSpecified: Alarm detecetd.\r\n");
+ LED_StartAnimation(LAE_WAKEUP);
+ }
+ }
+ }
+}
+
+void checkForAlarm(void)
+{
+ struct tm *tmStruct;
+ time_t timeValue;
+
+ timeValue=time(NULL);
+ tmStruct=localtime(&timeValue);
+
+ if (tmStruct->tm_min!=lastCheckedMinute)
+ {
+ lastCheckedMinute=tmStruct->tm_min;
+
+ // check all alarm against current time
+ checkForAlarmSpecified(tmStruct,CT_ALARM_1_TIME,CT_ALARM_1_MASK);
+ checkForAlarmSpecified(tmStruct,CT_ALARM_2_TIME,CT_ALARM_2_MASK);
+ checkForAlarmSpecified(tmStruct,CT_ALARM_3_TIME,CT_ALARM_3_MASK);
+ checkForAlarmSpecified(tmStruct,CT_ALARM_4_TIME,CT_ALARM_4_MASK);
+ checkForAlarmSpecified(tmStruct,CT_ALARM_5_TIME,CT_ALARM_5_MASK);
+ checkForAlarmSpecified(tmStruct,CT_ALARM_6_TIME,CT_ALARM_6_MASK);
+ }
+}
+
int main()
{
debug_Init();
@@ -12,6 +75,9 @@
UI_Init();
+ Config_Init();
+
+//BSP_AUDIO_OUT_Play(NULL,28);
/*
#include "SDFileSystem.h"
SDFileSystem sd(PD_2, PC_8, PC_12, PC_11, "sd"); // MOSI, MISO, SCLK, SSEL
@@ -24,6 +90,8 @@
for (;;)
{
+ checkForAlarm();
+
UI_Poll();
}
}