Project
Dependencies: Hotboards_keypad TextLCD eeprom
Time.cpp@1:1894419d5def, 2019-09-16 (annotated)
- Committer:
- shivanandgowdakr
- Date:
- Mon Sep 16 14:05:54 2019 +0000
- Revision:
- 1:1894419d5def
- Parent:
- 0:194ff03a2e6a
Time Controlled Switch Display
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shivanandgowdakr | 0:194ff03a2e6a | 1 | #include "mbed.h" |
shivanandgowdakr | 0:194ff03a2e6a | 2 | #include "Time.h" |
shivanandgowdakr | 0:194ff03a2e6a | 3 | #include "LCDDisplay.h" |
shivanandgowdakr | 0:194ff03a2e6a | 4 | #include <string> |
shivanandgowdakr | 0:194ff03a2e6a | 5 | |
shivanandgowdakr | 0:194ff03a2e6a | 6 | int Date_Time_Setting(struct tm curt,char *str) |
shivanandgowdakr | 0:194ff03a2e6a | 7 | { |
shivanandgowdakr | 0:194ff03a2e6a | 8 | int len=0; |
shivanandgowdakr | 0:194ff03a2e6a | 9 | len= strlen(str); |
shivanandgowdakr | 0:194ff03a2e6a | 10 | // printf("len = %d",len); |
shivanandgowdakr | 0:194ff03a2e6a | 11 | if(len < 14) |
shivanandgowdakr | 0:194ff03a2e6a | 12 | return 0; |
shivanandgowdakr | 0:194ff03a2e6a | 13 | |
shivanandgowdakr | 0:194ff03a2e6a | 14 | curt.tm_mday = ( str[0]-0x30)*10+(str[1]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 15 | curt.tm_mon = ( str[2]-0x30)*10+(str[3]-0x30) -1; |
shivanandgowdakr | 0:194ff03a2e6a | 16 | curt.tm_year = (( str[4]-0x30)*1000 + (str[5]-0x30)*100 + (str[6]-0x30)*10 + (str[7]-0x30)) -1900 ; |
shivanandgowdakr | 0:194ff03a2e6a | 17 | |
shivanandgowdakr | 0:194ff03a2e6a | 18 | curt.tm_hour=(str[8]-0x30)*10+(str[9]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 19 | curt.tm_min=(str[10]-0x30)*10+(str[11]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 20 | curt.tm_sec=(str[12]-0x30)*10+(str[13]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 21 | |
shivanandgowdakr | 0:194ff03a2e6a | 22 | time_t epoch = mktime(&curt); |
shivanandgowdakr | 0:194ff03a2e6a | 23 | if (epoch == (time_t) -1) { |
shivanandgowdakr | 0:194ff03a2e6a | 24 | error("Error in clock setting\n"); |
shivanandgowdakr | 0:194ff03a2e6a | 25 | // Stop here |
shivanandgowdakr | 0:194ff03a2e6a | 26 | } |
shivanandgowdakr | 0:194ff03a2e6a | 27 | set_time(epoch); |
shivanandgowdakr | 0:194ff03a2e6a | 28 | return 1; |
shivanandgowdakr | 0:194ff03a2e6a | 29 | } |
shivanandgowdakr | 0:194ff03a2e6a | 30 | |
shivanandgowdakr | 0:194ff03a2e6a | 31 | |
shivanandgowdakr | 0:194ff03a2e6a | 32 | int iSetTerminalTime(char *tstring) |
shivanandgowdakr | 0:194ff03a2e6a | 33 | { |
shivanandgowdakr | 0:194ff03a2e6a | 34 | int ret=0; |
shivanandgowdakr | 0:194ff03a2e6a | 35 | struct tm curt; |
shivanandgowdakr | 0:194ff03a2e6a | 36 | |
shivanandgowdakr | 0:194ff03a2e6a | 37 | ret = Date_Time_Setting(curt,tstring); |
shivanandgowdakr | 0:194ff03a2e6a | 38 | |
shivanandgowdakr | 0:194ff03a2e6a | 39 | if(ret == 1) { |
shivanandgowdakr | 0:194ff03a2e6a | 40 | wait(1); |
shivanandgowdakr | 0:194ff03a2e6a | 41 | |
shivanandgowdakr | 0:194ff03a2e6a | 42 | Display_LCD(0,0," DATE-TIME "); |
shivanandgowdakr | 0:194ff03a2e6a | 43 | Display_LCD(0,1," SET SUCCESS "); |
shivanandgowdakr | 0:194ff03a2e6a | 44 | printf("Date Time Set succesfully\r\n"); |
shivanandgowdakr | 0:194ff03a2e6a | 45 | |
shivanandgowdakr | 0:194ff03a2e6a | 46 | } else { |
shivanandgowdakr | 0:194ff03a2e6a | 47 | Display_LCD(0,0," DATE-TIME "); |
shivanandgowdakr | 0:194ff03a2e6a | 48 | Display_LCD(0,1," SET FAILURE "); |
shivanandgowdakr | 0:194ff03a2e6a | 49 | printf("Date Time Set Failure \r\n"); |
shivanandgowdakr | 0:194ff03a2e6a | 50 | |
shivanandgowdakr | 0:194ff03a2e6a | 51 | } |
shivanandgowdakr | 0:194ff03a2e6a | 52 | wait(1); |
shivanandgowdakr | 0:194ff03a2e6a | 53 | // Clear_LCD(); |
shivanandgowdakr | 0:194ff03a2e6a | 54 | |
shivanandgowdakr | 0:194ff03a2e6a | 55 | return ret; |
shivanandgowdakr | 0:194ff03a2e6a | 56 | } |
shivanandgowdakr | 0:194ff03a2e6a | 57 | |
shivanandgowdakr | 0:194ff03a2e6a | 58 | |
shivanandgowdakr | 0:194ff03a2e6a | 59 | int chk_time (char *str) |
shivanandgowdakr | 0:194ff03a2e6a | 60 | { |
shivanandgowdakr | 0:194ff03a2e6a | 61 | int HH,MM,SS; |
shivanandgowdakr | 0:194ff03a2e6a | 62 | HH=(str[0]-0x30)*10+(str[1]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 63 | MM=(str[2]-0x30)*10+(str[3]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 64 | SS=(str[4]-0x30)*10+(str[5]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 65 | if ( HH < 0 || HH > 23 || MM < 0 || MM > 59 || SS < 0 || SS > 59 ) |
shivanandgowdakr | 0:194ff03a2e6a | 66 | return -1; |
shivanandgowdakr | 0:194ff03a2e6a | 67 | return 1; |
shivanandgowdakr | 0:194ff03a2e6a | 68 | } |
shivanandgowdakr | 0:194ff03a2e6a | 69 | |
shivanandgowdakr | 0:194ff03a2e6a | 70 | int chk_date (char *str) |
shivanandgowdakr | 0:194ff03a2e6a | 71 | { |
shivanandgowdakr | 0:194ff03a2e6a | 72 | int epos_date=0,epos_month=0,epos_year=0; |
shivanandgowdakr | 0:194ff03a2e6a | 73 | epos_date = ( str[0]-0x30)*10+(str[1]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 74 | epos_month = ( str[2]-0x30)*10+(str[3]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 75 | epos_year = ( str[4]-0x30)*1000+ (str[5]-0x30)*100 + (str[6]-0x30)*10 + (str[7]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 76 | |
shivanandgowdakr | 0:194ff03a2e6a | 77 | |
shivanandgowdakr | 0:194ff03a2e6a | 78 | if ( epos_month < 1 || epos_date < 1 || epos_date > 31 || epos_month > 12 || epos_year < 2008 ) return ERROR ; |
shivanandgowdakr | 0:194ff03a2e6a | 79 | |
shivanandgowdakr | 0:194ff03a2e6a | 80 | else if(epos_month == 1 || epos_month == 3 || epos_month == 5 || epos_month == 7 || epos_month == 8 || epos_month ==10 ||epos_month == 12) { |
shivanandgowdakr | 0:194ff03a2e6a | 81 | |
shivanandgowdakr | 0:194ff03a2e6a | 82 | if (epos_date > 31) |
shivanandgowdakr | 0:194ff03a2e6a | 83 | return -1; |
shivanandgowdakr | 0:194ff03a2e6a | 84 | } |
shivanandgowdakr | 0:194ff03a2e6a | 85 | |
shivanandgowdakr | 0:194ff03a2e6a | 86 | else if (epos_month == 4 || epos_month == 6 || epos_month == 9 || epos_month == 11) { |
shivanandgowdakr | 0:194ff03a2e6a | 87 | |
shivanandgowdakr | 0:194ff03a2e6a | 88 | if (epos_date > 30) |
shivanandgowdakr | 0:194ff03a2e6a | 89 | return -1; |
shivanandgowdakr | 0:194ff03a2e6a | 90 | } |
shivanandgowdakr | 0:194ff03a2e6a | 91 | |
shivanandgowdakr | 0:194ff03a2e6a | 92 | else if (epos_month == 2 ) |
shivanandgowdakr | 0:194ff03a2e6a | 93 | |
shivanandgowdakr | 0:194ff03a2e6a | 94 | { |
shivanandgowdakr | 0:194ff03a2e6a | 95 | if ( !(epos_year%400) || (epos_year%100 != 0 && epos_year%4==0 ) ) { |
shivanandgowdakr | 0:194ff03a2e6a | 96 | if (epos_date > 29 ) return -1; |
shivanandgowdakr | 0:194ff03a2e6a | 97 | } |
shivanandgowdakr | 0:194ff03a2e6a | 98 | |
shivanandgowdakr | 0:194ff03a2e6a | 99 | else if( epos_date > 28 ) return -1; |
shivanandgowdakr | 0:194ff03a2e6a | 100 | } |
shivanandgowdakr | 0:194ff03a2e6a | 101 | return 1; |
shivanandgowdakr | 0:194ff03a2e6a | 102 | } |
shivanandgowdakr | 0:194ff03a2e6a | 103 | |
shivanandgowdakr | 0:194ff03a2e6a | 104 | void Get_Date_Time(char *date_string,char *time_string, char *DTSTRING) |
shivanandgowdakr | 0:194ff03a2e6a | 105 | { |
shivanandgowdakr | 0:194ff03a2e6a | 106 | time_t curr_time; |
shivanandgowdakr | 0:194ff03a2e6a | 107 | tm * curr_tm; |
shivanandgowdakr | 0:194ff03a2e6a | 108 | time(&curr_time); |
shivanandgowdakr | 0:194ff03a2e6a | 109 | curr_tm = localtime(&curr_time); |
shivanandgowdakr | 0:194ff03a2e6a | 110 | strftime(date_string,10,"%Y%m%d",curr_tm); |
shivanandgowdakr | 0:194ff03a2e6a | 111 | strftime(time_string,10,"%H%M%S",curr_tm); |
shivanandgowdakr | 0:194ff03a2e6a | 112 | strftime(DTSTRING,20,"%Y%m%d%H%M%S",curr_tm); |
shivanandgowdakr | 0:194ff03a2e6a | 113 | } |
shivanandgowdakr | 0:194ff03a2e6a | 114 | |
shivanandgowdakr | 0:194ff03a2e6a | 115 | void Get_Date_Time(char *date_string,char *time_string) |
shivanandgowdakr | 0:194ff03a2e6a | 116 | { |
shivanandgowdakr | 0:194ff03a2e6a | 117 | time_t curr_time; |
shivanandgowdakr | 0:194ff03a2e6a | 118 | tm * curr_tm; |
shivanandgowdakr | 0:194ff03a2e6a | 119 | time(&curr_time); |
shivanandgowdakr | 0:194ff03a2e6a | 120 | curr_tm = localtime(&curr_time); |
shivanandgowdakr | 0:194ff03a2e6a | 121 | strftime(date_string,10,"%Y%m%d",curr_tm); |
shivanandgowdakr | 0:194ff03a2e6a | 122 | strftime(time_string,10,"%H%M%S",curr_tm); |
shivanandgowdakr | 0:194ff03a2e6a | 123 | |
shivanandgowdakr | 0:194ff03a2e6a | 124 | } |
shivanandgowdakr | 0:194ff03a2e6a | 125 | |
shivanandgowdakr | 0:194ff03a2e6a | 126 | |
shivanandgowdakr | 0:194ff03a2e6a | 127 | void Get_Date_Time( char *DTSTRING) |
shivanandgowdakr | 0:194ff03a2e6a | 128 | { |
shivanandgowdakr | 0:194ff03a2e6a | 129 | time_t curr_time; |
shivanandgowdakr | 0:194ff03a2e6a | 130 | tm * curr_tm; |
shivanandgowdakr | 0:194ff03a2e6a | 131 | time(&curr_time); |
shivanandgowdakr | 0:194ff03a2e6a | 132 | curr_tm = localtime(&curr_time); |
shivanandgowdakr | 0:194ff03a2e6a | 133 | strftime(DTSTRING,20,"%Y%m%d%H%M%S",curr_tm); |
shivanandgowdakr | 0:194ff03a2e6a | 134 | } |
shivanandgowdakr | 0:194ff03a2e6a | 135 | |
shivanandgowdakr | 0:194ff03a2e6a | 136 | void Get_Date_Time_Trns( char *DTSTRING) |
shivanandgowdakr | 0:194ff03a2e6a | 137 | { |
shivanandgowdakr | 0:194ff03a2e6a | 138 | time_t curr_time; |
shivanandgowdakr | 0:194ff03a2e6a | 139 | tm * curr_tm; |
shivanandgowdakr | 0:194ff03a2e6a | 140 | time(&curr_time); |
shivanandgowdakr | 0:194ff03a2e6a | 141 | curr_tm = localtime(&curr_time); |
shivanandgowdakr | 0:194ff03a2e6a | 142 | strftime(DTSTRING,20,"%d%m%Y%H%M%S",curr_tm); |
shivanandgowdakr | 0:194ff03a2e6a | 143 | } |
shivanandgowdakr | 0:194ff03a2e6a | 144 | |
shivanandgowdakr | 0:194ff03a2e6a | 145 | |
shivanandgowdakr | 0:194ff03a2e6a | 146 | |
shivanandgowdakr | 0:194ff03a2e6a | 147 | int is_12_O_Clock_Night(void) |
shivanandgowdakr | 0:194ff03a2e6a | 148 | { |
shivanandgowdakr | 0:194ff03a2e6a | 149 | char dat[9]={'\0'}; |
shivanandgowdakr | 0:194ff03a2e6a | 150 | char tim[9]={'\0'}; |
shivanandgowdakr | 0:194ff03a2e6a | 151 | int HH,MM; |
shivanandgowdakr | 0:194ff03a2e6a | 152 | Get_Date_Time(dat,tim); |
shivanandgowdakr | 0:194ff03a2e6a | 153 | HH=(tim[0]-0x30)*10+(tim[1]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 154 | MM=(tim[2]-0x30)*10+(tim[3]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 155 | |
shivanandgowdakr | 0:194ff03a2e6a | 156 | if((HH==0) &&(MM <59)) |
shivanandgowdakr | 0:194ff03a2e6a | 157 | { |
shivanandgowdakr | 0:194ff03a2e6a | 158 | return 1; |
shivanandgowdakr | 0:194ff03a2e6a | 159 | } |
shivanandgowdakr | 0:194ff03a2e6a | 160 | else |
shivanandgowdakr | 0:194ff03a2e6a | 161 | { |
shivanandgowdakr | 0:194ff03a2e6a | 162 | return 0; |
shivanandgowdakr | 0:194ff03a2e6a | 163 | } |
shivanandgowdakr | 0:194ff03a2e6a | 164 | } |
shivanandgowdakr | 0:194ff03a2e6a | 165 | |
shivanandgowdakr | 0:194ff03a2e6a | 166 | |
shivanandgowdakr | 0:194ff03a2e6a | 167 | int is_6_O_Clock(void) |
shivanandgowdakr | 0:194ff03a2e6a | 168 | { |
shivanandgowdakr | 0:194ff03a2e6a | 169 | char dat[9]={'\0'}; |
shivanandgowdakr | 0:194ff03a2e6a | 170 | char tim[9]={'\0'}; |
shivanandgowdakr | 0:194ff03a2e6a | 171 | int HH,MM; |
shivanandgowdakr | 0:194ff03a2e6a | 172 | Get_Date_Time(dat,tim); |
shivanandgowdakr | 0:194ff03a2e6a | 173 | HH=(tim[0]-0x30)*10+(tim[1]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 174 | MM=(tim[2]-0x30)*10+(tim[3]-0x30); |
shivanandgowdakr | 0:194ff03a2e6a | 175 | |
shivanandgowdakr | 0:194ff03a2e6a | 176 | if((HH==6) &&(MM <30)) |
shivanandgowdakr | 0:194ff03a2e6a | 177 | { |
shivanandgowdakr | 0:194ff03a2e6a | 178 | return 1; |
shivanandgowdakr | 0:194ff03a2e6a | 179 | } |
shivanandgowdakr | 0:194ff03a2e6a | 180 | else |
shivanandgowdakr | 0:194ff03a2e6a | 181 | { |
shivanandgowdakr | 0:194ff03a2e6a | 182 | return 0; |
shivanandgowdakr | 0:194ff03a2e6a | 183 | } |
shivanandgowdakr | 0:194ff03a2e6a | 184 | } |