[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) { | ||||
|     RTC_DateTypeDef date; | ||||
|     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
 | ||||
|         // READ ORDER MATTERS! Time then date.
 | ||||
|         HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BIN); | ||||
|         HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BIN); | ||||
| 
 | ||||
|     string_t datetime_str; | ||||
|     string_init(datetime_str); | ||||
| 
 | ||||
|     string_cat_printf(datetime_str, "%.2d:%.2d:%.2d ", time.Hours, time.Minutes, time.Seconds); | ||||
|     string_cat_printf(datetime_str, "%.2d-%.2d-%.2d", date.Month, date.Date, 2000 + date.Year); | ||||
| 
 | ||||
|     printf(string_get_cstr(datetime_str)); | ||||
| 
 | ||||
|     string_clear(datetime_str); | ||||
|         printf( | ||||
|             "%.2d:%.2d:%.2d %.2d-%.2d-%.2d %d", | ||||
|             time.Hours, | ||||
|             time.Minutes, | ||||
|             time.Seconds, | ||||
|             date.Month, | ||||
|             date.Date, | ||||
|             2000 + date.Year, | ||||
|             date.WeekDay); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void cli_command_log(Cli* cli, string_t args, void* context) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく