Wakeup Light with touch user interface, anti-aliased Font, SD card access and RTC usage on STM32F746NG-DISCO board

Dependencies:   BSP_DISCO_F746NG_patch_fixed LCD_DISCO_F746NG TS_DISCO_F746NG FATFileSystem TinyJpgDec_interwork mbed-src

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers UI_Wakup.cpp Source File

UI_Wakup.cpp

00001 #include "WakeupLight.h"
00002 
00003 extern BYTE ic_notifications_none_white_48dp_1x[];
00004 #include "Images/ic_add_alert_white_48dp_1x.h"
00005 
00006 #define ALARM_NAME_LENGTH       20
00007 
00008 char                            alarm1[ALARM_NAME_LENGTH];
00009 char                            alarm2[ALARM_NAME_LENGTH];
00010 char                            alarm3[ALARM_NAME_LENGTH];
00011 char                            alarm4[ALARM_NAME_LENGTH];
00012 char                            alarm5[ALARM_NAME_LENGTH];
00013 char                            alarm6[ALARM_NAME_LENGTH];
00014 CONFIG_TYPE_ENUM                currentConfigTime;
00015 CONFIG_TYPE_ENUM                currentConfigMask;
00016 UI_STRUCT                       uiWakeupAdjust;
00017 UI_BOX_LIST_ITEM_STRUCT         uiWakeupItems[]=
00018 {
00019     { alarm1, NULL }, { alarm2, NULL }, { alarm3, NULL }, { alarm4, NULL }, { alarm5, NULL }, { alarm6, NULL }
00020 };
00021 
00022 void UI_WakeupAdjustHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui)
00023 {
00024     switch (reason)
00025     {
00026         case UR_CLICK:
00027             DPrintf_("UI_WakeupAdjustHandler: %u.\r\n",index);
00028             if (index==-1)
00029             {
00030                 uint32_t                    value;
00031 
00032                 Config_Set(currentConfigTime,((uiWakeupAdjust.data.valueAdjust.values[0] << 8) | ((uiWakeupAdjust.data.valueAdjust.values[1] * 10) + uiWakeupAdjust.data.valueAdjust.values[2])));
00033 
00034                 value=0;
00035                 if (uiWakeupAdjust.data.valueAdjust.values[3]!=0)
00036                     value|=CONFIG_ALARM_MASK_MONDAY;
00037                 if (uiWakeupAdjust.data.valueAdjust.values[4]!=0)
00038                     value|=CONFIG_ALARM_MASK_TUESDAY;
00039                 if (uiWakeupAdjust.data.valueAdjust.values[5]!=0)
00040                     value|=CONFIG_ALARM_MASK_WEDNESDAY;
00041                 if (uiWakeupAdjust.data.valueAdjust.values[6]!=0)
00042                     value|=CONFIG_ALARM_MASK_THURSDAY;
00043                 if (uiWakeupAdjust.data.valueAdjust.values[7]!=0)
00044                     value|=CONFIG_ALARM_MASK_FRIDAY;
00045                 if (uiWakeupAdjust.data.valueAdjust.values[8]!=0)
00046                     value|=CONFIG_ALARM_MASK_SATURDAY;
00047                 if (uiWakeupAdjust.data.valueAdjust.values[9]!=0)
00048                     value|=CONFIG_ALARM_MASK_SUNDAY;
00049                 Config_Set(currentConfigMask,value);
00050 
00051                 UI_WakeupShow();
00052                 break;
00053             }
00054             else if (index==0)
00055             {
00056                 uiWakeupAdjust.data.valueAdjust.values[0]++;
00057                 if (uiWakeupAdjust.data.valueAdjust.values[0]>=23)
00058                     uiWakeupAdjust.data.valueAdjust.values[0]=0;
00059             }   
00060             else if (index==1)
00061             {
00062                 uiWakeupAdjust.data.valueAdjust.values[1]++;
00063                 if (uiWakeupAdjust.data.valueAdjust.values[1]>=6)
00064                     uiWakeupAdjust.data.valueAdjust.values[1]=0;
00065             }
00066             else if (index==2)
00067             {
00068                 uiWakeupAdjust.data.valueAdjust.values[2]++;
00069                 if (uiWakeupAdjust.data.valueAdjust.values[2]>=10)
00070                     uiWakeupAdjust.data.valueAdjust.values[2]=0;
00071             }
00072             else if (index==3)
00073             {
00074                 uiWakeupAdjust.data.valueAdjust.values[0]--;
00075                 if (uiWakeupAdjust.data.valueAdjust.values[0]<0)
00076                     uiWakeupAdjust.data.valueAdjust.values[0]=23;
00077             }
00078             else if (index==4)
00079             {
00080                 uiWakeupAdjust.data.valueAdjust.values[1]--;
00081                 if (uiWakeupAdjust.data.valueAdjust.values[1]<0)
00082                     uiWakeupAdjust.data.valueAdjust.values[1]=5;
00083             }
00084             else if (index==5)
00085             {
00086                 uiWakeupAdjust.data.valueAdjust.values[2]--;
00087                 if (uiWakeupAdjust.data.valueAdjust.values[2]<0)
00088                     uiWakeupAdjust.data.valueAdjust.values[2]=9;
00089             }
00090             else if ((index>=6) && (index<=12))
00091             {
00092                 if (uiWakeupAdjust.data.valueAdjust.values[index-3]==0)
00093                     uiWakeupAdjust.data.valueAdjust.values[index-3]=1;
00094                 else
00095                     uiWakeupAdjust.data.valueAdjust.values[index-3]=0;
00096             }
00097             break;
00098 
00099         case UR_SHOW:
00100             break;
00101     }
00102 }
00103 
00104 void UI_WakeupHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui)
00105 {
00106     switch (reason)
00107     {
00108         case UR_CLICK:
00109             if (index==-1)
00110             {
00111                 // back button
00112                 UI_Show(&uiMain);
00113             }
00114             else
00115             {
00116                 // adjust timer
00117                 uint32_t                value;
00118 
00119                 switch (index)
00120                 {
00121                     case 0:             currentConfigTime=CT_ALARM_1_TIME;      currentConfigMask=CT_ALARM_1_MASK;          break;
00122                     case 1:             currentConfigTime=CT_ALARM_2_TIME;      currentConfigMask=CT_ALARM_2_MASK;          break;
00123                     case 2:             currentConfigTime=CT_ALARM_3_TIME;      currentConfigMask=CT_ALARM_3_MASK;          break;
00124                     case 3:             currentConfigTime=CT_ALARM_4_TIME;      currentConfigMask=CT_ALARM_4_MASK;          break;
00125                     case 4:             currentConfigTime=CT_ALARM_5_TIME;      currentConfigMask=CT_ALARM_5_MASK;          break;
00126                     case 5:             currentConfigTime=CT_ALARM_6_TIME;      currentConfigMask=CT_ALARM_6_MASK;          break;
00127                 }
00128 
00129                 memset(&uiWakeupAdjust,0,sizeof(uiWakeupAdjust));
00130                 uiWakeupAdjust.flags=UI_FLAG_TYPE_VALUE_ADJUST;
00131                 uiWakeupAdjust.handler=UI_WakeupAdjustHandler;
00132                 uiWakeupAdjust.data.valueAdjust.count=10;
00133                 uiWakeupAdjust.data.valueAdjust.isTime=true;
00134 
00135                 value=Config_Get(currentConfigTime);
00136                 uiWakeupAdjust.data.valueAdjust.values[0]=((value >> 8) & 0xFF);
00137                 uiWakeupAdjust.data.valueAdjust.values[1]=((value & 0xFF) / 10);
00138                 uiWakeupAdjust.data.valueAdjust.values[2]=((value & 0xFF) % 10);
00139 
00140                 value=Config_Get(currentConfigMask);
00141                 if (value==0)
00142                     value=CONFIG_ALARM_MASK_MONDAY | CONFIG_ALARM_MASK_TUESDAY | CONFIG_ALARM_MASK_WEDNESDAY | CONFIG_ALARM_MASK_THURSDAY | CONFIG_ALARM_MASK_FRIDAY;
00143                 if ((value & CONFIG_ALARM_MASK_MONDAY)!=0)
00144                     uiWakeupAdjust.data.valueAdjust.values[3]=1;
00145                 if ((value & CONFIG_ALARM_MASK_TUESDAY)!=0)
00146                     uiWakeupAdjust.data.valueAdjust.values[4]=1;
00147                 if ((value & CONFIG_ALARM_MASK_WEDNESDAY)!=0)
00148                     uiWakeupAdjust.data.valueAdjust.values[5]=1;
00149                 if ((value & CONFIG_ALARM_MASK_THURSDAY)!=0)
00150                     uiWakeupAdjust.data.valueAdjust.values[6]=1;
00151                 if ((value & CONFIG_ALARM_MASK_FRIDAY)!=0)
00152                     uiWakeupAdjust.data.valueAdjust.values[7]=1;
00153                 if ((value & CONFIG_ALARM_MASK_SATURDAY)!=0)
00154                     uiWakeupAdjust.data.valueAdjust.values[8]=1;
00155                 if ((value & CONFIG_ALARM_MASK_SUNDAY)!=0)
00156                     uiWakeupAdjust.data.valueAdjust.values[9]=1;
00157 
00158                 UI_Show(&uiWakeupAdjust);
00159             }
00160             break;
00161 
00162         case UR_TIMER:
00163             break;
00164     }
00165 }
00166 
00167 void UI_WakeupAddAlarm(uint32_t index,CONFIG_TYPE_ENUM configTime,CONFIG_TYPE_ENUM configMask,bool *addAdded)
00168 {
00169     uint32_t                    alarmTime;
00170 
00171     if ((Config_Get(configMask) & CONFIG_ALARM_MASK_DAYS)!=0)
00172     {
00173         // alarm enabled
00174         alarmTime=Config_Get(configTime);
00175         snprintf(uiWakeupItems[index].name,ALARM_NAME_LENGTH,"%u:%02u",((alarmTime >> 8) & 0xFF),(alarmTime & 0xFF));
00176         uiWakeupItems[index].image=ic_notifications_none_white_48dp_1x;
00177         uiWakeup.data.boxList.count++;
00178     }
00179     else
00180     {
00181         // alarm disabled
00182         if ((*addAdded)==false)
00183         {
00184             snprintf(uiWakeupItems[index].name,ALARM_NAME_LENGTH,"New");
00185             uiWakeupItems[index].image=ic_add_alert_white_48dp_1x;
00186             uiWakeup.data.boxList.count++;
00187             (*addAdded)=true;
00188         }
00189     }
00190 }
00191 
00192 void UI_WakeupShow(void)
00193 {
00194     bool                addAdded;
00195 
00196     uiWakeup.flags=UI_FLAG_TYPE_BOX_LIST | UI_FLAG_HAS_BACK_BUTTON;
00197     uiWakeup.handler=UI_WakeupHandler;
00198     uiWakeup.data.boxList.items=uiWakeupItems;
00199     uiWakeup.data.boxList.count=0;
00200 
00201     addAdded=false;
00202     UI_WakeupAddAlarm(0,CT_ALARM_1_TIME,CT_ALARM_1_MASK,&addAdded);
00203     UI_WakeupAddAlarm(1,CT_ALARM_2_TIME,CT_ALARM_2_MASK,&addAdded);
00204     UI_WakeupAddAlarm(2,CT_ALARM_3_TIME,CT_ALARM_3_MASK,&addAdded);
00205     UI_WakeupAddAlarm(3,CT_ALARM_4_TIME,CT_ALARM_4_MASK,&addAdded);
00206     UI_WakeupAddAlarm(4,CT_ALARM_5_TIME,CT_ALARM_5_MASK,&addAdded);
00207     UI_WakeupAddAlarm(5,CT_ALARM_6_TIME,CT_ALARM_6_MASK,&addAdded);
00208 
00209     UI_Show(&uiWakeup);
00210 }