[FL-1483] Cli: add time set feature to time command (#536)
* Cli: add time set feature to time command * Cli: better time set function feedback
This commit is contained in:
		
							parent
							
								
									961d61807c
								
							
						
					
					
						commit
						ed75bc2c39
					
				| @ -66,23 +66,68 @@ void cli_command_uuid(Cli* cli, string_t args, void* context) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void cli_command_date(Cli* cli, string_t args, void* context) { | void cli_command_date(Cli* cli, string_t args, void* context) { | ||||||
|     RTC_DateTypeDef date; |  | ||||||
|     RTC_TimeTypeDef time; |     RTC_TimeTypeDef time; | ||||||
|  |     RTC_DateTypeDef date; | ||||||
| 
 | 
 | ||||||
|  |     if(string_size(args) > 0) { | ||||||
|  |         uint16_t Hours, Minutes, Seconds, Month, Date, Year, WeekDay; | ||||||
|  |         int ret = sscanf( | ||||||
|  |             string_get_cstr(args), | ||||||
|  |             "%hu:%hu:%hu %hu-%hu-%hu %hu", | ||||||
|  |             &Hours, | ||||||
|  |             &Minutes, | ||||||
|  |             &Seconds, | ||||||
|  |             &Month, | ||||||
|  |             &Date, | ||||||
|  |             &Year, | ||||||
|  |             &WeekDay); | ||||||
|  |         if(ret == 7) { | ||||||
|  |             time.Hours = Hours; | ||||||
|  |             time.Minutes = Minutes; | ||||||
|  |             time.Seconds = Seconds; | ||||||
|  |             time.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; | ||||||
|  |             time.StoreOperation = RTC_STOREOPERATION_RESET; | ||||||
|  |             date.WeekDay = WeekDay; | ||||||
|  |             date.Month = Month; | ||||||
|  |             date.Date = Date; | ||||||
|  |             date.Year = Year - 2000; | ||||||
|  |             HAL_RTC_SetTime(&hrtc, &time, RTC_FORMAT_BIN); | ||||||
|  |             HAL_RTC_SetDate(&hrtc, &date, RTC_FORMAT_BIN); | ||||||
|  | 
 | ||||||
|  |             // Verification
 | ||||||
|  |             HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BIN); | ||||||
|  |             HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BIN); | ||||||
|  |             printf( | ||||||
|  |                 "New time is: %.2d:%.2d:%.2d %.2d-%.2d-%.2d %d", | ||||||
|  |                 time.Hours, | ||||||
|  |                 time.Minutes, | ||||||
|  |                 time.Seconds, | ||||||
|  |                 date.Month, | ||||||
|  |                 date.Date, | ||||||
|  |                 2000 + date.Year, | ||||||
|  |                 date.WeekDay); | ||||||
|  |         } else { | ||||||
|  |             printf( | ||||||
|  |                 "Invalid time format, use `hh:mm:ss MM-DD-YYYY WD`. sscanf %d %s", | ||||||
|  |                 ret, | ||||||
|  |                 string_get_cstr(args)); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |     } else { | ||||||
|         // TODO add get_datetime to core, not use HAL here
 |         // TODO add get_datetime to core, not use HAL here
 | ||||||
|         // READ ORDER MATTERS! Time then date.
 |         // READ ORDER MATTERS! Time then date.
 | ||||||
|         HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BIN); |         HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BIN); | ||||||
|         HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BIN); |         HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BIN); | ||||||
| 
 |         printf( | ||||||
|     string_t datetime_str; |             "%.2d:%.2d:%.2d %.2d-%.2d-%.2d %d", | ||||||
|     string_init(datetime_str); |             time.Hours, | ||||||
| 
 |             time.Minutes, | ||||||
|     string_cat_printf(datetime_str, "%.2d:%.2d:%.2d ", time.Hours, time.Minutes, time.Seconds); |             time.Seconds, | ||||||
|     string_cat_printf(datetime_str, "%.2d-%.2d-%.2d", date.Month, date.Date, 2000 + date.Year); |             date.Month, | ||||||
| 
 |             date.Date, | ||||||
|     printf(string_get_cstr(datetime_str)); |             2000 + date.Year, | ||||||
| 
 |             date.WeekDay); | ||||||
|     string_clear(datetime_str); |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void cli_command_log(Cli* cli, string_t args, void* context) { | void cli_command_log(Cli* cli, string_t args, void* context) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく