Internal RTC Nucleo F767ZI
RTC.cpp@0:d8084da95aff, 2018-06-06 (annotated)
- Committer:
- shivanandgowdakr
- Date:
- Wed Jun 06 06:54:18 2018 +0000
- Revision:
- 0:d8084da95aff
- Child:
- 1:12b099f1e8da
Internal RTC Nucleo F767ZI
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shivanandgowdakr | 0:d8084da95aff | 1 | #include "mbed.h" |
shivanandgowdakr | 0:d8084da95aff | 2 | #include "RTC.h" |
shivanandgowdakr | 0:d8084da95aff | 3 | #include <string> |
shivanandgowdakr | 0:d8084da95aff | 4 | |
shivanandgowdakr | 0:d8084da95aff | 5 | |
shivanandgowdakr | 0:d8084da95aff | 6 | |
shivanandgowdakr | 0:d8084da95aff | 7 | int Date_Time_Setting(struct tm curt,char *str) |
shivanandgowdakr | 0:d8084da95aff | 8 | { |
shivanandgowdakr | 0:d8084da95aff | 9 | int len=0; |
shivanandgowdakr | 0:d8084da95aff | 10 | len= strlen(str); |
shivanandgowdakr | 0:d8084da95aff | 11 | printf("len = %d",len); |
shivanandgowdakr | 0:d8084da95aff | 12 | if(len < 14) |
shivanandgowdakr | 0:d8084da95aff | 13 | return 0; |
shivanandgowdakr | 0:d8084da95aff | 14 | |
shivanandgowdakr | 0:d8084da95aff | 15 | curt.tm_mday = ( str[0]-0x30)*10+(str[1]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 16 | curt.tm_mon = ( str[2]-0x30)*10+(str[3]-0x30) -1; |
shivanandgowdakr | 0:d8084da95aff | 17 | curt.tm_year = (( str[4]-0x30)*1000 + (str[5]-0x30)*100 + (str[6]-0x30)*10 + (str[7]-0x30)) -1900 ; |
shivanandgowdakr | 0:d8084da95aff | 18 | |
shivanandgowdakr | 0:d8084da95aff | 19 | curt.tm_hour=(str[8]-0x30)*10+(str[9]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 20 | curt.tm_min=(str[10]-0x30)*10+(str[11]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 21 | curt.tm_sec=(str[12]-0x30)*10+(str[13]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 22 | |
shivanandgowdakr | 0:d8084da95aff | 23 | time_t epoch = mktime(&curt); |
shivanandgowdakr | 0:d8084da95aff | 24 | if (epoch == (time_t) -1) { |
shivanandgowdakr | 0:d8084da95aff | 25 | error("Error in clock setting\n"); |
shivanandgowdakr | 0:d8084da95aff | 26 | // Stop here |
shivanandgowdakr | 0:d8084da95aff | 27 | } |
shivanandgowdakr | 0:d8084da95aff | 28 | set_time(epoch); |
shivanandgowdakr | 0:d8084da95aff | 29 | return 1; |
shivanandgowdakr | 0:d8084da95aff | 30 | } |
shivanandgowdakr | 0:d8084da95aff | 31 | |
shivanandgowdakr | 0:d8084da95aff | 32 | |
shivanandgowdakr | 0:d8084da95aff | 33 | int iSetTerminalTime(char *tstring) |
shivanandgowdakr | 0:d8084da95aff | 34 | { |
shivanandgowdakr | 0:d8084da95aff | 35 | int ret=0; |
shivanandgowdakr | 0:d8084da95aff | 36 | struct tm curt; |
shivanandgowdakr | 0:d8084da95aff | 37 | |
shivanandgowdakr | 0:d8084da95aff | 38 | ret = Date_Time_Setting(curt,tstring); |
shivanandgowdakr | 0:d8084da95aff | 39 | |
shivanandgowdakr | 0:d8084da95aff | 40 | if(ret == 1) { |
shivanandgowdakr | 0:d8084da95aff | 41 | wait(1); |
shivanandgowdakr | 0:d8084da95aff | 42 | |
shivanandgowdakr | 0:d8084da95aff | 43 | // printf(" DATE-TIME SET SUCCESS "); |
shivanandgowdakr | 0:d8084da95aff | 44 | printf("Date Time Set succesfully\r\n"); |
shivanandgowdakr | 0:d8084da95aff | 45 | |
shivanandgowdakr | 0:d8084da95aff | 46 | } else { |
shivanandgowdakr | 0:d8084da95aff | 47 | |
shivanandgowdakr | 0:d8084da95aff | 48 | printf("Date Time Set Failure \r\n"); |
shivanandgowdakr | 0:d8084da95aff | 49 | |
shivanandgowdakr | 0:d8084da95aff | 50 | } |
shivanandgowdakr | 0:d8084da95aff | 51 | wait(2); |
shivanandgowdakr | 0:d8084da95aff | 52 | // Clear_LCD(); |
shivanandgowdakr | 0:d8084da95aff | 53 | |
shivanandgowdakr | 0:d8084da95aff | 54 | return ret; |
shivanandgowdakr | 0:d8084da95aff | 55 | } |
shivanandgowdakr | 0:d8084da95aff | 56 | |
shivanandgowdakr | 0:d8084da95aff | 57 | |
shivanandgowdakr | 0:d8084da95aff | 58 | int chk_time (char *str) |
shivanandgowdakr | 0:d8084da95aff | 59 | { |
shivanandgowdakr | 0:d8084da95aff | 60 | int HH,MM,SS; |
shivanandgowdakr | 0:d8084da95aff | 61 | HH=(str[0]-0x30)*10+(str[1]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 62 | MM=(str[2]-0x30)*10+(str[3]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 63 | SS=(str[4]-0x30)*10+(str[5]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 64 | |
shivanandgowdakr | 0:d8084da95aff | 65 | if ( HH < 0 || HH > 23 || MM < 0 || MM > 59 || SS < 0 || SS > 59 ) |
shivanandgowdakr | 0:d8084da95aff | 66 | return -1; |
shivanandgowdakr | 0:d8084da95aff | 67 | |
shivanandgowdakr | 0:d8084da95aff | 68 | return 1; |
shivanandgowdakr | 0:d8084da95aff | 69 | } |
shivanandgowdakr | 0:d8084da95aff | 70 | |
shivanandgowdakr | 0:d8084da95aff | 71 | int chk_date (char *str) |
shivanandgowdakr | 0:d8084da95aff | 72 | { |
shivanandgowdakr | 0:d8084da95aff | 73 | int epos_date=0,epos_month=0,epos_year=0; |
shivanandgowdakr | 0:d8084da95aff | 74 | |
shivanandgowdakr | 0:d8084da95aff | 75 | epos_date = ( str[0]-0x30)*10+(str[1]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 76 | epos_month = ( str[2]-0x30)*10+(str[3]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 77 | epos_year = ( str[4]-0x30)*1000+ (str[5]-0x30)*100 + (str[6]-0x30)*10 + (str[7]-0x30); |
shivanandgowdakr | 0:d8084da95aff | 78 | |
shivanandgowdakr | 0:d8084da95aff | 79 | |
shivanandgowdakr | 0:d8084da95aff | 80 | if ( epos_month < 1 || epos_date < 1 || epos_date > 31 || epos_month > 12 || epos_year < 2008 ) return ERROR ; |
shivanandgowdakr | 0:d8084da95aff | 81 | |
shivanandgowdakr | 0:d8084da95aff | 82 | 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:d8084da95aff | 83 | |
shivanandgowdakr | 0:d8084da95aff | 84 | if (epos_date > 31) |
shivanandgowdakr | 0:d8084da95aff | 85 | return -1; |
shivanandgowdakr | 0:d8084da95aff | 86 | } |
shivanandgowdakr | 0:d8084da95aff | 87 | |
shivanandgowdakr | 0:d8084da95aff | 88 | else if (epos_month == 4 || epos_month == 6 || epos_month == 9 || epos_month == 11) { |
shivanandgowdakr | 0:d8084da95aff | 89 | |
shivanandgowdakr | 0:d8084da95aff | 90 | if (epos_date > 30) |
shivanandgowdakr | 0:d8084da95aff | 91 | return -1; |
shivanandgowdakr | 0:d8084da95aff | 92 | } |
shivanandgowdakr | 0:d8084da95aff | 93 | |
shivanandgowdakr | 0:d8084da95aff | 94 | else if (epos_month == 2 ) |
shivanandgowdakr | 0:d8084da95aff | 95 | |
shivanandgowdakr | 0:d8084da95aff | 96 | { |
shivanandgowdakr | 0:d8084da95aff | 97 | if ( !(epos_year%400) || (epos_year%100 != 0 && epos_year%4==0 ) ) { |
shivanandgowdakr | 0:d8084da95aff | 98 | if (epos_date > 29 ) return -1; |
shivanandgowdakr | 0:d8084da95aff | 99 | } |
shivanandgowdakr | 0:d8084da95aff | 100 | |
shivanandgowdakr | 0:d8084da95aff | 101 | else if( epos_date > 28 ) return -1; |
shivanandgowdakr | 0:d8084da95aff | 102 | } |
shivanandgowdakr | 0:d8084da95aff | 103 | |
shivanandgowdakr | 0:d8084da95aff | 104 | |
shivanandgowdakr | 0:d8084da95aff | 105 | return 1; |
shivanandgowdakr | 0:d8084da95aff | 106 | } |
shivanandgowdakr | 0:d8084da95aff | 107 | |
shivanandgowdakr | 0:d8084da95aff | 108 | void Get_Date_Time(char *date_string,char *time_string, char *DTSTRING) |
shivanandgowdakr | 0:d8084da95aff | 109 | { |
shivanandgowdakr | 0:d8084da95aff | 110 | |
shivanandgowdakr | 0:d8084da95aff | 111 | time_t curr_time; |
shivanandgowdakr | 0:d8084da95aff | 112 | tm * curr_tm; |
shivanandgowdakr | 0:d8084da95aff | 113 | time(&curr_time); |
shivanandgowdakr | 0:d8084da95aff | 114 | curr_tm = localtime(&curr_time); |
shivanandgowdakr | 0:d8084da95aff | 115 | strftime(date_string,10,"%Y%m%d",curr_tm); |
shivanandgowdakr | 0:d8084da95aff | 116 | } |
shivanandgowdakr | 0:d8084da95aff | 117 | |
shivanandgowdakr | 0:d8084da95aff | 118 | |
shivanandgowdakr | 0:d8084da95aff | 119 | void Get_Date_Time( char *DTSTRING) |
shivanandgowdakr | 0:d8084da95aff | 120 | { |
shivanandgowdakr | 0:d8084da95aff | 121 | |
shivanandgowdakr | 0:d8084da95aff | 122 | time_t curr_time; |
shivanandgowdakr | 0:d8084da95aff | 123 | tm * curr_tm; |
shivanandgowdakr | 0:d8084da95aff | 124 | time(&curr_time); |
shivanandgowdakr | 0:d8084da95aff | 125 | curr_tm = localtime(&curr_time); |
shivanandgowdakr | 0:d8084da95aff | 126 | strftime(DTSTRING,20,"%Y%m%d%H%M%S",curr_tm); |
shivanandgowdakr | 0:d8084da95aff | 127 | // printf("Time is : %s",DTSTRING); |
shivanandgowdakr | 0:d8084da95aff | 128 | |
shivanandgowdakr | 0:d8084da95aff | 129 | } |