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
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 }
Generated on Tue Jul 12 2022 21:40:04 by 1.7.2