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