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@14:2044ad5cd3fe, 2016-02-21 (annotated)
- Committer:
- the_sz
- Date:
- Sun Feb 21 04:26:17 2016 +0000
- Revision:
- 14:2044ad5cd3fe
- Parent:
- 12:a89096944f20
all fonts are working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
the_sz | 3:ecf7f1f8d749 | 1 | #include "WakeupLight.h" |
the_sz | 3:ecf7f1f8d749 | 2 | |
the_sz | 12:a89096944f20 | 3 | extern BYTE ic_notifications_none_white_48dp_1x[]; |
the_sz | 12:a89096944f20 | 4 | #include "Images/ic_add_alert_white_48dp_1x.h" |
the_sz | 7:dc29f6647486 | 5 | |
the_sz | 7:dc29f6647486 | 6 | #define ALARM_NAME_LENGTH 20 |
the_sz | 7:dc29f6647486 | 7 | |
the_sz | 7:dc29f6647486 | 8 | char alarm1[ALARM_NAME_LENGTH]; |
the_sz | 7:dc29f6647486 | 9 | char alarm2[ALARM_NAME_LENGTH]; |
the_sz | 7:dc29f6647486 | 10 | char alarm3[ALARM_NAME_LENGTH]; |
the_sz | 7:dc29f6647486 | 11 | char alarm4[ALARM_NAME_LENGTH]; |
the_sz | 7:dc29f6647486 | 12 | char alarm5[ALARM_NAME_LENGTH]; |
the_sz | 7:dc29f6647486 | 13 | char alarm6[ALARM_NAME_LENGTH]; |
the_sz | 7:dc29f6647486 | 14 | CONFIG_TYPE_ENUM currentConfigTime; |
the_sz | 7:dc29f6647486 | 15 | CONFIG_TYPE_ENUM currentConfigMask; |
the_sz | 7:dc29f6647486 | 16 | UI_STRUCT uiWakeupAdjust; |
the_sz | 7:dc29f6647486 | 17 | UI_BOX_LIST_ITEM_STRUCT uiWakeupItems[]= |
the_sz | 7:dc29f6647486 | 18 | { |
the_sz | 7:dc29f6647486 | 19 | { alarm1, NULL }, { alarm2, NULL }, { alarm3, NULL }, { alarm4, NULL }, { alarm5, NULL }, { alarm6, NULL } |
the_sz | 7:dc29f6647486 | 20 | }; |
the_sz | 7:dc29f6647486 | 21 | |
the_sz | 7:dc29f6647486 | 22 | void UI_WakeupAdjustHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui) |
the_sz | 7:dc29f6647486 | 23 | { |
the_sz | 7:dc29f6647486 | 24 | switch (reason) |
the_sz | 7:dc29f6647486 | 25 | { |
the_sz | 7:dc29f6647486 | 26 | case UR_CLICK: |
the_sz | 7:dc29f6647486 | 27 | DPrintf_("UI_WakeupAdjustHandler: %u.\r\n",index); |
the_sz | 7:dc29f6647486 | 28 | if (index==-1) |
the_sz | 7:dc29f6647486 | 29 | { |
the_sz | 7:dc29f6647486 | 30 | uint32_t value; |
the_sz | 7:dc29f6647486 | 31 | |
the_sz | 7:dc29f6647486 | 32 | Config_Set(currentConfigTime,((uiWakeupAdjust.data.valueAdjust.values[0] << 8) | ((uiWakeupAdjust.data.valueAdjust.values[1] * 10) + uiWakeupAdjust.data.valueAdjust.values[2]))); |
the_sz | 7:dc29f6647486 | 33 | |
the_sz | 7:dc29f6647486 | 34 | value=0; |
the_sz | 7:dc29f6647486 | 35 | if (uiWakeupAdjust.data.valueAdjust.values[3]!=0) |
the_sz | 7:dc29f6647486 | 36 | value|=CONFIG_ALARM_MASK_MONDAY; |
the_sz | 7:dc29f6647486 | 37 | if (uiWakeupAdjust.data.valueAdjust.values[4]!=0) |
the_sz | 7:dc29f6647486 | 38 | value|=CONFIG_ALARM_MASK_TUESDAY; |
the_sz | 7:dc29f6647486 | 39 | if (uiWakeupAdjust.data.valueAdjust.values[5]!=0) |
the_sz | 7:dc29f6647486 | 40 | value|=CONFIG_ALARM_MASK_WEDNESDAY; |
the_sz | 7:dc29f6647486 | 41 | if (uiWakeupAdjust.data.valueAdjust.values[6]!=0) |
the_sz | 7:dc29f6647486 | 42 | value|=CONFIG_ALARM_MASK_THURSDAY; |
the_sz | 7:dc29f6647486 | 43 | if (uiWakeupAdjust.data.valueAdjust.values[7]!=0) |
the_sz | 7:dc29f6647486 | 44 | value|=CONFIG_ALARM_MASK_FRIDAY; |
the_sz | 7:dc29f6647486 | 45 | if (uiWakeupAdjust.data.valueAdjust.values[8]!=0) |
the_sz | 7:dc29f6647486 | 46 | value|=CONFIG_ALARM_MASK_SATURDAY; |
the_sz | 7:dc29f6647486 | 47 | if (uiWakeupAdjust.data.valueAdjust.values[9]!=0) |
the_sz | 7:dc29f6647486 | 48 | value|=CONFIG_ALARM_MASK_SUNDAY; |
the_sz | 7:dc29f6647486 | 49 | Config_Set(currentConfigMask,value); |
the_sz | 7:dc29f6647486 | 50 | |
the_sz | 7:dc29f6647486 | 51 | UI_WakeupShow(); |
the_sz | 7:dc29f6647486 | 52 | break; |
the_sz | 7:dc29f6647486 | 53 | } |
the_sz | 7:dc29f6647486 | 54 | else if (index==0) |
the_sz | 7:dc29f6647486 | 55 | { |
the_sz | 7:dc29f6647486 | 56 | uiWakeupAdjust.data.valueAdjust.values[0]++; |
the_sz | 7:dc29f6647486 | 57 | if (uiWakeupAdjust.data.valueAdjust.values[0]>=23) |
the_sz | 7:dc29f6647486 | 58 | uiWakeupAdjust.data.valueAdjust.values[0]=0; |
the_sz | 7:dc29f6647486 | 59 | } |
the_sz | 7:dc29f6647486 | 60 | else if (index==1) |
the_sz | 7:dc29f6647486 | 61 | { |
the_sz | 7:dc29f6647486 | 62 | uiWakeupAdjust.data.valueAdjust.values[1]++; |
the_sz | 7:dc29f6647486 | 63 | if (uiWakeupAdjust.data.valueAdjust.values[1]>=6) |
the_sz | 7:dc29f6647486 | 64 | uiWakeupAdjust.data.valueAdjust.values[1]=0; |
the_sz | 7:dc29f6647486 | 65 | } |
the_sz | 7:dc29f6647486 | 66 | else if (index==2) |
the_sz | 7:dc29f6647486 | 67 | { |
the_sz | 7:dc29f6647486 | 68 | uiWakeupAdjust.data.valueAdjust.values[2]++; |
the_sz | 7:dc29f6647486 | 69 | if (uiWakeupAdjust.data.valueAdjust.values[2]>=10) |
the_sz | 7:dc29f6647486 | 70 | uiWakeupAdjust.data.valueAdjust.values[2]=0; |
the_sz | 7:dc29f6647486 | 71 | } |
the_sz | 7:dc29f6647486 | 72 | else if (index==3) |
the_sz | 7:dc29f6647486 | 73 | { |
the_sz | 7:dc29f6647486 | 74 | uiWakeupAdjust.data.valueAdjust.values[0]--; |
the_sz | 7:dc29f6647486 | 75 | if (uiWakeupAdjust.data.valueAdjust.values[0]<0) |
the_sz | 7:dc29f6647486 | 76 | uiWakeupAdjust.data.valueAdjust.values[0]=23; |
the_sz | 7:dc29f6647486 | 77 | } |
the_sz | 7:dc29f6647486 | 78 | else if (index==4) |
the_sz | 7:dc29f6647486 | 79 | { |
the_sz | 7:dc29f6647486 | 80 | uiWakeupAdjust.data.valueAdjust.values[1]--; |
the_sz | 7:dc29f6647486 | 81 | if (uiWakeupAdjust.data.valueAdjust.values[1]<0) |
the_sz | 7:dc29f6647486 | 82 | uiWakeupAdjust.data.valueAdjust.values[1]=5; |
the_sz | 7:dc29f6647486 | 83 | } |
the_sz | 7:dc29f6647486 | 84 | else if (index==5) |
the_sz | 7:dc29f6647486 | 85 | { |
the_sz | 7:dc29f6647486 | 86 | uiWakeupAdjust.data.valueAdjust.values[2]--; |
the_sz | 7:dc29f6647486 | 87 | if (uiWakeupAdjust.data.valueAdjust.values[2]<0) |
the_sz | 7:dc29f6647486 | 88 | uiWakeupAdjust.data.valueAdjust.values[2]=9; |
the_sz | 7:dc29f6647486 | 89 | } |
the_sz | 7:dc29f6647486 | 90 | else if ((index>=6) && (index<=12)) |
the_sz | 7:dc29f6647486 | 91 | { |
the_sz | 7:dc29f6647486 | 92 | if (uiWakeupAdjust.data.valueAdjust.values[index-3]==0) |
the_sz | 7:dc29f6647486 | 93 | uiWakeupAdjust.data.valueAdjust.values[index-3]=1; |
the_sz | 7:dc29f6647486 | 94 | else |
the_sz | 7:dc29f6647486 | 95 | uiWakeupAdjust.data.valueAdjust.values[index-3]=0; |
the_sz | 7:dc29f6647486 | 96 | } |
the_sz | 7:dc29f6647486 | 97 | break; |
the_sz | 7:dc29f6647486 | 98 | |
the_sz | 7:dc29f6647486 | 99 | case UR_SHOW: |
the_sz | 7:dc29f6647486 | 100 | break; |
the_sz | 7:dc29f6647486 | 101 | } |
the_sz | 7:dc29f6647486 | 102 | } |
the_sz | 7:dc29f6647486 | 103 | |
the_sz | 5:13c70bcde7f6 | 104 | void UI_WakeupHandler(UI_REASON_ENUM reason,int32_t index,UI_STRUCT *ui) |
the_sz | 3:ecf7f1f8d749 | 105 | { |
the_sz | 3:ecf7f1f8d749 | 106 | switch (reason) |
the_sz | 3:ecf7f1f8d749 | 107 | { |
the_sz | 3:ecf7f1f8d749 | 108 | case UR_CLICK: |
the_sz | 7:dc29f6647486 | 109 | if (index==-1) |
the_sz | 7:dc29f6647486 | 110 | { |
the_sz | 7:dc29f6647486 | 111 | // back button |
the_sz | 7:dc29f6647486 | 112 | UI_Show(&uiMain); |
the_sz | 7:dc29f6647486 | 113 | } |
the_sz | 7:dc29f6647486 | 114 | else |
the_sz | 7:dc29f6647486 | 115 | { |
the_sz | 7:dc29f6647486 | 116 | // adjust timer |
the_sz | 7:dc29f6647486 | 117 | uint32_t value; |
the_sz | 7:dc29f6647486 | 118 | |
the_sz | 7:dc29f6647486 | 119 | switch (index) |
the_sz | 7:dc29f6647486 | 120 | { |
the_sz | 7:dc29f6647486 | 121 | case 0: currentConfigTime=CT_ALARM_1_TIME; currentConfigMask=CT_ALARM_1_MASK; break; |
the_sz | 7:dc29f6647486 | 122 | case 1: currentConfigTime=CT_ALARM_2_TIME; currentConfigMask=CT_ALARM_2_MASK; break; |
the_sz | 7:dc29f6647486 | 123 | case 2: currentConfigTime=CT_ALARM_3_TIME; currentConfigMask=CT_ALARM_3_MASK; break; |
the_sz | 7:dc29f6647486 | 124 | case 3: currentConfigTime=CT_ALARM_4_TIME; currentConfigMask=CT_ALARM_4_MASK; break; |
the_sz | 7:dc29f6647486 | 125 | case 4: currentConfigTime=CT_ALARM_5_TIME; currentConfigMask=CT_ALARM_5_MASK; break; |
the_sz | 7:dc29f6647486 | 126 | case 5: currentConfigTime=CT_ALARM_6_TIME; currentConfigMask=CT_ALARM_6_MASK; break; |
the_sz | 7:dc29f6647486 | 127 | } |
the_sz | 7:dc29f6647486 | 128 | |
the_sz | 7:dc29f6647486 | 129 | memset(&uiWakeupAdjust,0,sizeof(uiWakeupAdjust)); |
the_sz | 7:dc29f6647486 | 130 | uiWakeupAdjust.flags=UI_FLAG_TYPE_VALUE_ADJUST; |
the_sz | 7:dc29f6647486 | 131 | uiWakeupAdjust.handler=UI_WakeupAdjustHandler; |
the_sz | 7:dc29f6647486 | 132 | uiWakeupAdjust.data.valueAdjust.count=10; |
the_sz | 12:a89096944f20 | 133 | uiWakeupAdjust.data.valueAdjust.isTime=true; |
the_sz | 7:dc29f6647486 | 134 | |
the_sz | 7:dc29f6647486 | 135 | value=Config_Get(currentConfigTime); |
the_sz | 7:dc29f6647486 | 136 | uiWakeupAdjust.data.valueAdjust.values[0]=((value >> 8) & 0xFF); |
the_sz | 7:dc29f6647486 | 137 | uiWakeupAdjust.data.valueAdjust.values[1]=((value & 0xFF) / 10); |
the_sz | 7:dc29f6647486 | 138 | uiWakeupAdjust.data.valueAdjust.values[2]=((value & 0xFF) % 10); |
the_sz | 7:dc29f6647486 | 139 | |
the_sz | 7:dc29f6647486 | 140 | value=Config_Get(currentConfigMask); |
the_sz | 7:dc29f6647486 | 141 | if (value==0) |
the_sz | 7:dc29f6647486 | 142 | value=CONFIG_ALARM_MASK_MONDAY | CONFIG_ALARM_MASK_TUESDAY | CONFIG_ALARM_MASK_WEDNESDAY | CONFIG_ALARM_MASK_THURSDAY | CONFIG_ALARM_MASK_FRIDAY; |
the_sz | 7:dc29f6647486 | 143 | if ((value & CONFIG_ALARM_MASK_MONDAY)!=0) |
the_sz | 7:dc29f6647486 | 144 | uiWakeupAdjust.data.valueAdjust.values[3]=1; |
the_sz | 7:dc29f6647486 | 145 | if ((value & CONFIG_ALARM_MASK_TUESDAY)!=0) |
the_sz | 7:dc29f6647486 | 146 | uiWakeupAdjust.data.valueAdjust.values[4]=1; |
the_sz | 7:dc29f6647486 | 147 | if ((value & CONFIG_ALARM_MASK_WEDNESDAY)!=0) |
the_sz | 7:dc29f6647486 | 148 | uiWakeupAdjust.data.valueAdjust.values[5]=1; |
the_sz | 7:dc29f6647486 | 149 | if ((value & CONFIG_ALARM_MASK_THURSDAY)!=0) |
the_sz | 7:dc29f6647486 | 150 | uiWakeupAdjust.data.valueAdjust.values[6]=1; |
the_sz | 7:dc29f6647486 | 151 | if ((value & CONFIG_ALARM_MASK_FRIDAY)!=0) |
the_sz | 7:dc29f6647486 | 152 | uiWakeupAdjust.data.valueAdjust.values[7]=1; |
the_sz | 7:dc29f6647486 | 153 | if ((value & CONFIG_ALARM_MASK_SATURDAY)!=0) |
the_sz | 7:dc29f6647486 | 154 | uiWakeupAdjust.data.valueAdjust.values[8]=1; |
the_sz | 7:dc29f6647486 | 155 | if ((value & CONFIG_ALARM_MASK_SUNDAY)!=0) |
the_sz | 7:dc29f6647486 | 156 | uiWakeupAdjust.data.valueAdjust.values[9]=1; |
the_sz | 7:dc29f6647486 | 157 | |
the_sz | 7:dc29f6647486 | 158 | UI_Show(&uiWakeupAdjust); |
the_sz | 7:dc29f6647486 | 159 | } |
the_sz | 3:ecf7f1f8d749 | 160 | break; |
the_sz | 3:ecf7f1f8d749 | 161 | |
the_sz | 3:ecf7f1f8d749 | 162 | case UR_TIMER: |
the_sz | 3:ecf7f1f8d749 | 163 | break; |
the_sz | 3:ecf7f1f8d749 | 164 | } |
the_sz | 3:ecf7f1f8d749 | 165 | } |
the_sz | 7:dc29f6647486 | 166 | |
the_sz | 7:dc29f6647486 | 167 | void UI_WakeupAddAlarm(uint32_t index,CONFIG_TYPE_ENUM configTime,CONFIG_TYPE_ENUM configMask,bool *addAdded) |
the_sz | 7:dc29f6647486 | 168 | { |
the_sz | 7:dc29f6647486 | 169 | uint32_t alarmTime; |
the_sz | 7:dc29f6647486 | 170 | |
the_sz | 7:dc29f6647486 | 171 | if ((Config_Get(configMask) & CONFIG_ALARM_MASK_DAYS)!=0) |
the_sz | 7:dc29f6647486 | 172 | { |
the_sz | 7:dc29f6647486 | 173 | // alarm enabled |
the_sz | 7:dc29f6647486 | 174 | alarmTime=Config_Get(configTime); |
the_sz | 7:dc29f6647486 | 175 | snprintf(uiWakeupItems[index].name,ALARM_NAME_LENGTH,"%u:%02u",((alarmTime >> 8) & 0xFF),(alarmTime & 0xFF)); |
the_sz | 12:a89096944f20 | 176 | uiWakeupItems[index].image=ic_notifications_none_white_48dp_1x; |
the_sz | 7:dc29f6647486 | 177 | uiWakeup.data.boxList.count++; |
the_sz | 7:dc29f6647486 | 178 | } |
the_sz | 7:dc29f6647486 | 179 | else |
the_sz | 7:dc29f6647486 | 180 | { |
the_sz | 7:dc29f6647486 | 181 | // alarm disabled |
the_sz | 7:dc29f6647486 | 182 | if ((*addAdded)==false) |
the_sz | 7:dc29f6647486 | 183 | { |
the_sz | 7:dc29f6647486 | 184 | snprintf(uiWakeupItems[index].name,ALARM_NAME_LENGTH,"New"); |
the_sz | 12:a89096944f20 | 185 | uiWakeupItems[index].image=ic_add_alert_white_48dp_1x; |
the_sz | 7:dc29f6647486 | 186 | uiWakeup.data.boxList.count++; |
the_sz | 7:dc29f6647486 | 187 | (*addAdded)=true; |
the_sz | 7:dc29f6647486 | 188 | } |
the_sz | 7:dc29f6647486 | 189 | } |
the_sz | 7:dc29f6647486 | 190 | } |
the_sz | 7:dc29f6647486 | 191 | |
the_sz | 7:dc29f6647486 | 192 | void UI_WakeupShow(void) |
the_sz | 7:dc29f6647486 | 193 | { |
the_sz | 7:dc29f6647486 | 194 | bool addAdded; |
the_sz | 7:dc29f6647486 | 195 | |
the_sz | 7:dc29f6647486 | 196 | uiWakeup.flags=UI_FLAG_TYPE_BOX_LIST | UI_FLAG_HAS_BACK_BUTTON; |
the_sz | 7:dc29f6647486 | 197 | uiWakeup.handler=UI_WakeupHandler; |
the_sz | 7:dc29f6647486 | 198 | uiWakeup.data.boxList.items=uiWakeupItems; |
the_sz | 7:dc29f6647486 | 199 | uiWakeup.data.boxList.count=0; |
the_sz | 7:dc29f6647486 | 200 | |
the_sz | 7:dc29f6647486 | 201 | addAdded=false; |
the_sz | 7:dc29f6647486 | 202 | UI_WakeupAddAlarm(0,CT_ALARM_1_TIME,CT_ALARM_1_MASK,&addAdded); |
the_sz | 7:dc29f6647486 | 203 | UI_WakeupAddAlarm(1,CT_ALARM_2_TIME,CT_ALARM_2_MASK,&addAdded); |
the_sz | 7:dc29f6647486 | 204 | UI_WakeupAddAlarm(2,CT_ALARM_3_TIME,CT_ALARM_3_MASK,&addAdded); |
the_sz | 7:dc29f6647486 | 205 | UI_WakeupAddAlarm(3,CT_ALARM_4_TIME,CT_ALARM_4_MASK,&addAdded); |
the_sz | 7:dc29f6647486 | 206 | UI_WakeupAddAlarm(4,CT_ALARM_5_TIME,CT_ALARM_5_MASK,&addAdded); |
the_sz | 7:dc29f6647486 | 207 | UI_WakeupAddAlarm(5,CT_ALARM_6_TIME,CT_ALARM_6_MASK,&addAdded); |
the_sz | 7:dc29f6647486 | 208 | |
the_sz | 7:dc29f6647486 | 209 | UI_Show(&uiWakeup); |
the_sz | 7:dc29f6647486 | 210 | } |