Revision 23437e98 core/src/aos_system.c

View differences:

core/src/aos_system.c
260 260
  aosDbgCheck(stream != NULL);
261 261

  
262 262
  // local variables
263
#if (HAL_USE_RTC == TRUE)
263 264
  struct tm dt;
264 265
  aosSysGetDateTime(&dt);
266
#endif /* HAL_USE_RTC == TRUE */
265 267

  
266 268
  // print static information about module and operating system
267 269
  _printSystemInfoSeparator(stream, '=', SYSTEM_INFO_WIDTH);
......
324 326
    _printSystemInfoLine(stream, "Module ID", SYSTEM_INFO_NAMEWIDTH, "not available");
325 327
  }
326 328
#endif
329
#if (HAL_USE_RTC == TRUE)
327 330
  _printSystemInfoLine(stream, "Date", SYSTEM_INFO_NAMEWIDTH, "%s %02u-%02u-%04u", (dt.tm_wday == 0) ? "Sunday" : (dt.tm_wday == 1) ? "Monday" : (dt.tm_wday == 2) ? "Tuesday" : (dt.tm_wday == 3) ? "Wednesday" : (dt.tm_wday == 4) ? "Thursday" : (dt.tm_wday == 5) ? "Friday" : "Saturday",
328 331
                       dt.tm_mday,
329 332
                       dt.tm_mon + 1,
330 333
                       dt.tm_year + 1900);
331 334
  _printSystemInfoLine(stream, "Time", SYSTEM_INFO_NAMEWIDTH, "%02u:%02u:%02u", dt.tm_hour, dt.tm_min, dt.tm_sec);
335
#endif /* HAL_USE_RTC == TRUE */
332 336

  
333 337
  _printSystemInfoSeparator(stream, '=', SYSTEM_INFO_WIDTH);
334 338

  
......
432 436
        retval = AOS_OK;
433 437
      }
434 438
    }
439
# if (HAL_USE_RTC == TRUE)
435 440
    // if the user wants to configure the date or time
436 441
    else if (strcmp(argv[1], "--date&time") == 0 && argc == 4) {
437 442
      struct tm dt;
438 443
      aosSysGetDateTime(&dt);
439
      unsigned int val = atoi(argv[3]);
440
      if (strcmp(argv[2], "year") == 0) {
444
      int val = atoi(argv[3]);
445
      if (strcmp(argv[2], "year") == 0 && val >= 1900) {
441 446
        dt.tm_year = val - 1900;
442 447
      }
443
      else if (strcmp(argv[2], "month") == 0 && val <= 12) {
448
      else if (strcmp(argv[2], "month") == 0 && val > 0 && val <= 12) {
444 449
        dt.tm_mon = val - 1;
445 450
      }
446
      else if (strcmp(argv[2], "day") == 0 && val <= 31) {
451
      else if (strcmp(argv[2], "day") == 0 && val > 0 && val <= 31) {
447 452
        dt.tm_mday = val;
448 453
      }
449
      else if (strcmp(argv[2], "hour") == 0 && val < 24) {
454
      else if (strcmp(argv[2], "hour") == 0 && val >= 0 && val < 24) {
450 455
        dt.tm_hour = val;
451 456
      }
452
      else if (strcmp(argv[2], "minute") == 0 && val < 60) {
457
      else if (strcmp(argv[2], "minute") == 0 && val >= 0 && val < 60) {
453 458
        dt.tm_min = val;
454 459
      }
455
      else if (strcmp(argv[2], "second") == 0 && val < 60) {
460
      else if (strcmp(argv[2], "second") == 0 && val >= 0 && val < 60) {
456 461
        dt.tm_sec = val;
457 462
      }
458 463
      else {
459
        chprintf(stream, "unknown option '%s' or value '%s'\n", argv[2], argv[3]);
464
        chprintf(stream, "unknown option '%s' or invalid value '%s'\n", argv[2], argv[3]);
460 465
        return AOS_INVALID_ARGUMENTS;
461 466
      }
462 467
      dt.tm_wday = aosTimeDayOfWeekFromDate(dt.tm_mday, dt.tm_mon+1, dt.tm_year+1900) % 7;
......
470 475

  
471 476
      retval = AOS_OK;
472 477
    }
478
#endif /* HAL_USE_RTC == TRUE */
473 479
  }
474 480

  
475 481
  // print help, if required
......
485 491
    chprintf(stream, "        Configures the prompt.\n");
486 492
    chprintf(stream, "      match casesensitive|caseinsenitive\n");
487 493
    chprintf(stream, "        Configures string matching.\n");
494
#if (HAL_USE_RTC == TRUE)
488 495
    chprintf(stream, "  --date&time OPT VAL\n");
489 496
    chprintf(stream, "    Set the date/time value of OPT to VAL.\n");
490 497
    chprintf(stream, "    Possible OPTs are:\n");
......
494 501
    chprintf(stream, "      hour\n");
495 502
    chprintf(stream, "      minute\n");
496 503
    chprintf(stream, "      second\n");
504
#endif /* HAL_USE_RTC == TRUE */
497 505
  }
498 506

  
499 507
  return (argc > 1 && strcmp(argv[1], "--help") == 0) ? AOS_OK : retval;
......
976 984
  return;
977 985
}
978 986

  
987
#if (HAL_USE_RTC == TRUE) || defined(__DOXYGEN__)
988

  
979 989
/**
980 990
 * @brief   retrieves the date and time from the MCU clock.
981 991
 *
......
1008 1018
  return;
1009 1019
}
1010 1020

  
1021
#endif /* HAL_USE_RTC == TRUE */
1022

  
1011 1023
/**
1012 1024
 * @brief   Initializes/Acknowledges a system shutdown/restart request.
1013 1025
 * @note    This functions should be called from the thread with highest priority.

Also available in: Unified diff