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
- Committer:
- the_sz
- Date:
- 2016-02-21
- Revision:
- 14:2044ad5cd3fe
- Parent:
- 12:a89096944f20
File content as of revision 14:2044ad5cd3fe:
#include "WakeupLight.h" extern BYTE ic_notifications_none_white_48dp_1x[]; #include "Images/ic_add_alert_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; uiWakeupAdjust.data.valueAdjust.isTime=true; 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)); uiWakeupItems[index].image=ic_notifications_none_white_48dp_1x; uiWakeup.data.boxList.count++; } else { // alarm disabled if ((*addAdded)==false) { snprintf(uiWakeupItems[index].name,ALARM_NAME_LENGTH,"New"); uiWakeupItems[index].image=ic_add_alert_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); }