Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-STM32F103C8T6 mbed
Fork of STM32F103C8T6_GPRS_TCP by
Time.cpp@13:bf9a5ca067bf, 2018-07-13 (annotated)
- Committer:
- shivanandgowdakr
- Date:
- Fri Jul 13 08:22:41 2018 +0000
- Revision:
- 13:bf9a5ca067bf
STM32F103C8T6 BLUE PILL Internal RTC ;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| shivanandgowdakr | 13:bf9a5ca067bf | 1 | #include "mbed.h" |
| shivanandgowdakr | 13:bf9a5ca067bf | 2 | #include "Time.h" |
| shivanandgowdakr | 13:bf9a5ca067bf | 3 | #include <string> |
| shivanandgowdakr | 13:bf9a5ca067bf | 4 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 5 | int Date_Time_Setting(struct tm curt,char *str) |
| shivanandgowdakr | 13:bf9a5ca067bf | 6 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 7 | int len=0; |
| shivanandgowdakr | 13:bf9a5ca067bf | 8 | len= strlen(str); |
| shivanandgowdakr | 13:bf9a5ca067bf | 9 | // printf("len = %d",len); |
| shivanandgowdakr | 13:bf9a5ca067bf | 10 | if(len < 14) |
| shivanandgowdakr | 13:bf9a5ca067bf | 11 | return 0; |
| shivanandgowdakr | 13:bf9a5ca067bf | 12 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 13 | curt.tm_mday = ( str[0]-0x30)*10+(str[1]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 14 | curt.tm_mon = ( str[2]-0x30)*10+(str[3]-0x30) -1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 15 | curt.tm_year = (( str[4]-0x30)*1000 + (str[5]-0x30)*100 + (str[6]-0x30)*10 + (str[7]-0x30)) -1900 ; |
| shivanandgowdakr | 13:bf9a5ca067bf | 16 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 17 | curt.tm_hour=(str[8]-0x30)*10+(str[9]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 18 | curt.tm_min=(str[10]-0x30)*10+(str[11]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 19 | curt.tm_sec=(str[12]-0x30)*10+(str[13]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 20 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 21 | time_t epoch = mktime(&curt); |
| shivanandgowdakr | 13:bf9a5ca067bf | 22 | if (epoch == (time_t) -1) { |
| shivanandgowdakr | 13:bf9a5ca067bf | 23 | error("Error in clock setting\n"); |
| shivanandgowdakr | 13:bf9a5ca067bf | 24 | // Stop here |
| shivanandgowdakr | 13:bf9a5ca067bf | 25 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 26 | set_time(epoch); |
| shivanandgowdakr | 13:bf9a5ca067bf | 27 | return 1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 28 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 29 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 30 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 31 | int iSetTerminalTime(char *tstring) |
| shivanandgowdakr | 13:bf9a5ca067bf | 32 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 33 | int ret=0; |
| shivanandgowdakr | 13:bf9a5ca067bf | 34 | struct tm curt; |
| shivanandgowdakr | 13:bf9a5ca067bf | 35 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 36 | ret = Date_Time_Setting(curt,tstring); |
| shivanandgowdakr | 13:bf9a5ca067bf | 37 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 38 | if(ret == 1) { |
| shivanandgowdakr | 13:bf9a5ca067bf | 39 | wait(1); |
| shivanandgowdakr | 13:bf9a5ca067bf | 40 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 41 | printf("Date Time Set succesfully\r\n"); |
| shivanandgowdakr | 13:bf9a5ca067bf | 42 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 43 | } else { |
| shivanandgowdakr | 13:bf9a5ca067bf | 44 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 45 | printf("Date Time Set Failure \r\n"); |
| shivanandgowdakr | 13:bf9a5ca067bf | 46 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 47 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 48 | wait(2); |
| shivanandgowdakr | 13:bf9a5ca067bf | 49 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 50 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 51 | return ret; |
| shivanandgowdakr | 13:bf9a5ca067bf | 52 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 53 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 54 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 55 | int chk_time (char *str) |
| shivanandgowdakr | 13:bf9a5ca067bf | 56 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 57 | int HH,MM,SS; |
| shivanandgowdakr | 13:bf9a5ca067bf | 58 | HH=(str[0]-0x30)*10+(str[1]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 59 | MM=(str[2]-0x30)*10+(str[3]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 60 | SS=(str[4]-0x30)*10+(str[5]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 61 | if ( HH < 0 || HH > 23 || MM < 0 || MM > 59 || SS < 0 || SS > 59 ) |
| shivanandgowdakr | 13:bf9a5ca067bf | 62 | return -1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 63 | return 1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 64 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 65 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 66 | int chk_date (char *str) |
| shivanandgowdakr | 13:bf9a5ca067bf | 67 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 68 | int epos_date=0,epos_month=0,epos_year=0; |
| shivanandgowdakr | 13:bf9a5ca067bf | 69 | epos_date = ( str[0]-0x30)*10+(str[1]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 70 | epos_month = ( str[2]-0x30)*10+(str[3]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 71 | epos_year = ( str[4]-0x30)*1000+ (str[5]-0x30)*100 + (str[6]-0x30)*10 + (str[7]-0x30); |
| shivanandgowdakr | 13:bf9a5ca067bf | 72 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 73 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 74 | if ( epos_month < 1 || epos_date < 1 || epos_date > 31 || epos_month > 12 || epos_year < 2008 ) return ERROR ; |
| shivanandgowdakr | 13:bf9a5ca067bf | 75 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 76 | else if(epos_month == 1 || epos_month == 3 || epos_month == 5 || epos_month == 7 || epos_month == 8 || epos_month ==10 ||epos_month == 12) { |
| shivanandgowdakr | 13:bf9a5ca067bf | 77 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 78 | if (epos_date > 31) |
| shivanandgowdakr | 13:bf9a5ca067bf | 79 | return -1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 80 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 81 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 82 | else if (epos_month == 4 || epos_month == 6 || epos_month == 9 || epos_month == 11) { |
| shivanandgowdakr | 13:bf9a5ca067bf | 83 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 84 | if (epos_date > 30) |
| shivanandgowdakr | 13:bf9a5ca067bf | 85 | return -1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 86 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 87 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 88 | else if (epos_month == 2 ) |
| shivanandgowdakr | 13:bf9a5ca067bf | 89 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 90 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 91 | if ( !(epos_year%400) || (epos_year%100 != 0 && epos_year%4==0 ) ) { |
| shivanandgowdakr | 13:bf9a5ca067bf | 92 | if (epos_date > 29 ) return -1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 93 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 94 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 95 | else if( epos_date > 28 ) return -1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 96 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 97 | return 1; |
| shivanandgowdakr | 13:bf9a5ca067bf | 98 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 99 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 100 | void Get_Date_Time(char *date_string,char *time_string, char *DTSTRING) |
| shivanandgowdakr | 13:bf9a5ca067bf | 101 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 102 | time_t curr_time; |
| shivanandgowdakr | 13:bf9a5ca067bf | 103 | tm * curr_tm; |
| shivanandgowdakr | 13:bf9a5ca067bf | 104 | time(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 105 | curr_tm = localtime(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 106 | strftime(date_string,10,"%Y%m%d",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 107 | strftime(time_string,10,"%H%M%S",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 108 | strftime(DTSTRING,20,"%Y%m%d%H%M%S",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 109 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 110 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 111 | void Get_Date_Time(char *date_string,char *time_string) |
| shivanandgowdakr | 13:bf9a5ca067bf | 112 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 113 | time_t curr_time; |
| shivanandgowdakr | 13:bf9a5ca067bf | 114 | tm * curr_tm; |
| shivanandgowdakr | 13:bf9a5ca067bf | 115 | time(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 116 | curr_tm = localtime(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 117 | strftime(date_string,10,"%Y/%m/%d",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 118 | strftime(time_string,10,"%H:%M:%S",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 119 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 120 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 121 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 122 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 123 | void Get_Date_Time() |
| shivanandgowdakr | 13:bf9a5ca067bf | 124 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 125 | time_t curr_time; |
| shivanandgowdakr | 13:bf9a5ca067bf | 126 | tm * curr_tm; |
| shivanandgowdakr | 13:bf9a5ca067bf | 127 | time(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 128 | char date_string[12]={'\0'}; |
| shivanandgowdakr | 13:bf9a5ca067bf | 129 | char time_string[12]={'\0'}; |
| shivanandgowdakr | 13:bf9a5ca067bf | 130 | curr_tm = localtime(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 131 | strftime(date_string,10,"%Y/%m/%d",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 132 | strftime(time_string,10,"%H:%M:%S",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 133 | printf("Date : %s\r\n",date_string); |
| shivanandgowdakr | 13:bf9a5ca067bf | 134 | printf("Time : %s\r\n",time_string); |
| shivanandgowdakr | 13:bf9a5ca067bf | 135 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 136 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 137 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 138 | void Get_Date_Time( char *DTSTRING) |
| shivanandgowdakr | 13:bf9a5ca067bf | 139 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 140 | time_t curr_time; |
| shivanandgowdakr | 13:bf9a5ca067bf | 141 | tm * curr_tm; |
| shivanandgowdakr | 13:bf9a5ca067bf | 142 | time(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 143 | curr_tm = localtime(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 144 | strftime(DTSTRING,20,"%Y%m%d%H%M%S",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 145 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 146 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 147 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 148 | void Get_Date_Time_Trns( char *DTSTRING) |
| shivanandgowdakr | 13:bf9a5ca067bf | 149 | { |
| shivanandgowdakr | 13:bf9a5ca067bf | 150 | time_t curr_time; |
| shivanandgowdakr | 13:bf9a5ca067bf | 151 | tm * curr_tm; |
| shivanandgowdakr | 13:bf9a5ca067bf | 152 | time(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 153 | curr_tm = localtime(&curr_time); |
| shivanandgowdakr | 13:bf9a5ca067bf | 154 | strftime(DTSTRING,20,"%d%m%Y%H%M%S",curr_tm); |
| shivanandgowdakr | 13:bf9a5ca067bf | 155 | } |
| shivanandgowdakr | 13:bf9a5ca067bf | 156 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 157 | |
| shivanandgowdakr | 13:bf9a5ca067bf | 158 |
